From 06f25c3cb5b018671acea414e77646acd5ef566c Mon Sep 17 00:00:00 2001 From: l4check Date: Sun, 12 Aug 2012 09:22:32 +0000 Subject: [PATCH] update: sync git-svn-id: http://svn.tudos.org/repos/oc/tudos/trunk@39 d050ee49-bd90-4346-b210-929a50b99cfc --- .../fiasco/src/boot/amd64/kernel_multiboot.h | 247 - kernel/fiasco/src/jdb/jdb_semaphore.cpp | 71 - .../kern/arm/bsp/config-arm-pxa_sa1100.cpp | 19 - .../src/kern/arm/bsp/pic-arm-pxa_sa1100.cpp | 189 - .../src/kern/arm/bsp/timer-arm-pxa_sa1100.cpp | 134 - kernel/fiasco/src/kern/arm/dirq-arm.cpp | 77 - kernel/fiasco/src/kern/arm/pic-arm.cpp | 11 - kernel/fiasco/src/kern/dirq.cpp | 8 - kernel/fiasco/src/kern/dirq_io_apic.cpp | 254 - kernel/fiasco/src/kern/dirq_pic_pin.cpp | 115 - kernel/fiasco/src/kern/ia32/cpu_lock-pic.cpp | 78 - .../src/kern/ia32/dirq_pic_pin-ia32-ux.cpp | 297 - kernel/fiasco/src/kern/ia32/multiboot.h | 259 - kernel/fiasco/src/kern/ia32/profile.cpp | 203 - kernel/fiasco/src/kern/io_apic.cpp | 340 - kernel/fiasco/src/kern/io_space_sigma0.cpp | 32 - kernel/fiasco/src/kern/irq_pin.cpp | 165 - kernel/fiasco/src/kern/kmem_slab_simple.cpp | 152 - kernel/fiasco/src/kern/mapped_alloc.cpp | 168 - kernel/fiasco/src/kern/mem_space_sigma0.cpp | 48 - kernel/fiasco/src/kern/pages.cpp | 5 - .../src/kern/ppc32/mem_space-user-ppc32.cpp | 86 - kernel/fiasco/src/kern/thread-ulock.cpp | 49 - kernel/fiasco/src/kern/u_lock.cpp | 116 - kernel/fiasco/src/kern/u_semaphore.cpp | 588 - kernel/fiasco/src/lib/disasm/disasm.c | 242 - kernel/fiasco/src/lib/libk/dlist.cpp | 53 - kernel/fiasco/src/lib/libk/ia32/gmon.cpp | 434 - .../fiasco/src/lib/libk/slab_cache_anon.cpp | 509 - kernel/fiasco/src/lib/minilibc/construction.c | 35 - .../src/lib/minilibc/include/initfini.h | 14 - kernel/fiasco/src/lib/uart/arm/uart_imx.cc | 176 - kernel/fiasco/src/lib/uart/arm/uart_imx.h | 62 - .../fiasco/src/lib/uart/arm/uart_omap35x.cc | 113 - kernel/fiasco/src/lib/uart/arm/uart_omap35x.h | 31 - kernel/fiasco/src/lib/uart/arm/uart_pl011.cc | 148 - kernel/fiasco/src/lib/uart/arm/uart_pl011.h | 31 - .../fiasco/src/lib/uart/arm/uart_s3c2410.cc | 117 - kernel/fiasco/src/lib/uart/arm/uart_s3c2410.h | 31 - kernel/fiasco/src/lib/uart/ppc32/of1275.h | 109 - .../fiasco/src/lib/uart/ppc32/uart_mpc52xx.cc | 153 - .../fiasco/src/lib/uart/ppc32/uart_mpc52xx.h | 71 - kernel/fiasco/src/lib/uart/ppc32/uart_of.cc | 59 - kernel/fiasco/src/lib/uart/ppc32/uart_of.h | 32 - kernel/fiasco/tool/autocheck | 212 - .../kconfig/scripts/kconfig/kconfig_load.c | 35 - .../scripts/kconfig/lex.zconf.c_shipped | 2435 - l4/pkg/ankh/lib/libc_be_socket/Makefile | 15 - l4/pkg/ankh/lib/libc_be_socket/be.c | 163 - l4/pkg/ankh/lib/libc_be_socket/sock_fs.cc | 129 - l4/pkg/ankh/lib/libc_be_socket/sock_fs.h | 24 - l4/pkg/ankh/lib/lwip/Makefile | 8 - l4/pkg/ankh/lib/lwip/WTF | 3 - l4/pkg/ankh/lib/lwip/include/Makefile | 8 - l4/pkg/ankh/lib/lwip/lib/Makefile | 57 - l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c | 475 - l4/pkg/ankh/lib/lwip/lib/arch/cc.h | 118 - l4/pkg/ankh/lib/lwip/lib/arch/perf.c | 65 - l4/pkg/ankh/lib/lwip/lib/arch/perf.h | 63 - l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.c | 598 - l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.h | 25 - l4/pkg/ankh/lib/lwip/lib/contrib/CHANGELOG | 2248 - l4/pkg/ankh/lib/lwip/lib/contrib/COPYING | 33 - l4/pkg/ankh/lib/lwip/lib/contrib/FILES | 4 - l4/pkg/ankh/lib/lwip/lib/contrib/README | 89 - l4/pkg/ankh/lib/lwip/lib/contrib/doc/FILES | 6 - .../ankh/lib/lwip/lib/contrib/doc/contrib.txt | 63 - .../ankh/lib/lwip/lib/contrib/doc/rawapi.txt | 478 - .../lib/lwip/lib/contrib/doc/savannah.txt | 135 - .../lib/lwip/lib/contrib/doc/snmp_agent.txt | 181 - .../lib/lwip/lib/contrib/doc/sys_arch.txt | 228 - .../ankh/lib/lwip/lib/contrib/src/.hgignore | 26 - l4/pkg/ankh/lib/lwip/lib/contrib/src/FILES | 13 - .../lib/lwip/lib/contrib/src/api/api_lib.c | 757 - .../lib/lwip/lib/contrib/src/api/api_msg.c | 1563 - .../ankh/lib/lwip/lib/contrib/src/api/err.c | 75 - .../lib/lwip/lib/contrib/src/api/netbuf.c | 245 - .../ankh/lib/lwip/lib/contrib/src/api/netdb.c | 352 - .../lib/lwip/lib/contrib/src/api/netifapi.c | 160 - .../lib/lwip/lib/contrib/src/api/sockets.c | 2435 - .../ankh/lib/lwip/lib/contrib/src/api/tcpip.c | 516 - .../ankh/lib/lwip/lib/contrib/src/core/def.c | 108 - .../ankh/lib/lwip/lib/contrib/src/core/dhcp.c | 1747 - .../ankh/lib/lwip/lib/contrib/src/core/dns.c | 970 - .../lwip/lib/contrib/src/core/inet_chksum.c | 545 - .../ankh/lib/lwip/lib/contrib/src/core/init.c | 330 - .../lwip/lib/contrib/src/core/ipv4/autoip.c | 528 - .../lib/lwip/lib/contrib/src/core/ipv4/icmp.c | 334 - .../lib/lwip/lib/contrib/src/core/ipv4/igmp.c | 803 - .../lib/lwip/lib/contrib/src/core/ipv4/ip4.c | 906 - .../lwip/lib/contrib/src/core/ipv4/ip4_addr.c | 312 - .../lwip/lib/contrib/src/core/ipv4/ip_frag.c | 863 - .../lib/lwip/lib/contrib/src/core/ipv6/README | 1 - .../lwip/lib/contrib/src/core/ipv6/dhcp6.c | 50 - .../lwip/lib/contrib/src/core/ipv6/ethip6.c | 195 - .../lwip/lib/contrib/src/core/ipv6/icmp6.c | 301 - .../lwip/lib/contrib/src/core/ipv6/inet6.c | 51 - .../lib/lwip/lib/contrib/src/core/ipv6/ip6.c | 986 - .../lwip/lib/contrib/src/core/ipv6/ip6_addr.c | 244 - .../lwip/lib/contrib/src/core/ipv6/ip6_frag.c | 689 - .../lib/lwip/lib/contrib/src/core/ipv6/mld6.c | 578 - .../lib/lwip/lib/contrib/src/core/ipv6/nd6.c | 1732 - .../ankh/lib/lwip/lib/contrib/src/core/mem.c | 645 - .../ankh/lib/lwip/lib/contrib/src/core/memp.c | 472 - .../lib/lwip/lib/contrib/src/core/netif.c | 858 - .../ankh/lib/lwip/lib/contrib/src/core/pbuf.c | 1178 - .../ankh/lib/lwip/lib/contrib/src/core/raw.c | 415 - .../lwip/lib/contrib/src/core/snmp/asn1_dec.c | 657 - .../lwip/lib/contrib/src/core/snmp/asn1_enc.c | 611 - .../lib/lwip/lib/contrib/src/core/snmp/mib2.c | 4146 - .../lib/contrib/src/core/snmp/mib_structs.c | 1174 - .../lwip/lib/contrib/src/core/snmp/msg_in.c | 1437 - .../lwip/lib/contrib/src/core/snmp/msg_out.c | 681 - .../lib/lwip/lib/contrib/src/core/stats.c | 181 - .../ankh/lib/lwip/lib/contrib/src/core/sys.c | 66 - .../ankh/lib/lwip/lib/contrib/src/core/tcp.c | 1716 - .../lib/lwip/lib/contrib/src/core/tcp_in.c | 1589 - .../lib/lwip/lib/contrib/src/core/tcp_out.c | 1476 - .../lib/lwip/lib/contrib/src/core/timers.c | 546 - .../ankh/lib/lwip/lib/contrib/src/core/udp.c | 1094 - .../contrib/src/include/ipv4/lwip/autoip.h | 118 - .../lib/contrib/src/include/ipv4/lwip/icmp.h | 125 - .../lib/contrib/src/include/ipv4/lwip/igmp.h | 106 - .../lib/contrib/src/include/ipv4/lwip/inet.h | 107 - .../src/include/ipv4/lwip/inet_chksum.h | 90 - .../lib/contrib/src/include/ipv4/lwip/ip4.h | 155 - .../contrib/src/include/ipv4/lwip/ip4_addr.h | 244 - .../contrib/src/include/ipv4/lwip/ip_frag.h | 91 - .../lib/contrib/src/include/ipv6/lwip/dhcp6.h | 58 - .../contrib/src/include/ipv6/lwip/ethip6.h | 68 - .../lib/contrib/src/include/ipv6/lwip/icmp6.h | 152 - .../lib/contrib/src/include/ipv6/lwip/inet6.h | 89 - .../lib/contrib/src/include/ipv6/lwip/ip6.h | 197 - .../contrib/src/include/ipv6/lwip/ip6_addr.h | 282 - .../contrib/src/include/ipv6/lwip/ip6_frag.h | 102 - .../lib/contrib/src/include/ipv6/lwip/mld6.h | 118 - .../lib/contrib/src/include/ipv6/lwip/nd6.h | 368 - .../lwip/lib/contrib/src/include/lwip/api.h | 321 - .../lib/contrib/src/include/lwip/api_msg.h | 174 - .../lwip/lib/contrib/src/include/lwip/arch.h | 241 - .../lwip/lib/contrib/src/include/lwip/debug.h | 99 - .../lwip/lib/contrib/src/include/lwip/def.h | 127 - .../lwip/lib/contrib/src/include/lwip/dhcp.h | 242 - .../lwip/lib/contrib/src/include/lwip/dns.h | 124 - .../lwip/lib/contrib/src/include/lwip/err.h | 85 - .../contrib/src/include/lwip/inet_chksum.h | 112 - .../lwip/lib/contrib/src/include/lwip/init.h | 72 - .../lwip/lib/contrib/src/include/lwip/ip.h | 247 - .../lib/contrib/src/include/lwip/ip_addr.h | 130 - .../lwip/lib/contrib/src/include/lwip/mem.h | 122 - .../lwip/lib/contrib/src/include/lwip/memp.h | 116 - .../lib/contrib/src/include/lwip/memp_std.h | 135 - .../lib/contrib/src/include/lwip/netbuf.h | 112 - .../lwip/lib/contrib/src/include/lwip/netdb.h | 124 - .../lwip/lib/contrib/src/include/lwip/netif.h | 380 - .../lib/contrib/src/include/lwip/netifapi.h | 108 - .../lwip/lib/contrib/src/include/lwip/opt.h | 2368 - .../lwip/lib/contrib/src/include/lwip/pbuf.h | 183 - .../lwip/lib/contrib/src/include/lwip/raw.h | 131 - .../lwip/lib/contrib/src/include/lwip/sio.h | 141 - .../lwip/lib/contrib/src/include/lwip/snmp.h | 367 - .../lib/contrib/src/include/lwip/snmp_asn1.h | 101 - .../lib/contrib/src/include/lwip/snmp_msg.h | 315 - .../contrib/src/include/lwip/snmp_structs.h | 268 - .../lib/contrib/src/include/lwip/sockets.h | 398 - .../lwip/lib/contrib/src/include/lwip/stats.h | 347 - .../lwip/lib/contrib/src/include/lwip/sys.h | 331 - .../lwip/lib/contrib/src/include/lwip/tcp.h | 395 - .../lib/contrib/src/include/lwip/tcp_impl.h | 492 - .../lwip/lib/contrib/src/include/lwip/tcpip.h | 167 - .../lib/contrib/src/include/lwip/timers.h | 100 - .../lwip/lib/contrib/src/include/lwip/udp.h | 215 - .../lib/contrib/src/include/netif/etharp.h | 222 - .../lib/contrib/src/include/netif/ppp_oe.h | 190 - .../lib/contrib/src/include/netif/slipif.h | 51 - .../ankh/lib/lwip/lib/contrib/src/netif/FILES | 29 - .../lib/lwip/lib/contrib/src/netif/etharp.c | 1400 - .../lwip/lib/contrib/src/netif/ethernetif.c | 322 - .../lib/lwip/lib/contrib/src/netif/ppp/auth.c | 1334 - .../lib/lwip/lib/contrib/src/netif/ppp/auth.h | 111 - .../lib/lwip/lib/contrib/src/netif/ppp/chap.c | 908 - .../lib/lwip/lib/contrib/src/netif/ppp/chap.h | 150 - .../lwip/lib/contrib/src/netif/ppp/chpms.c | 396 - .../lwip/lib/contrib/src/netif/ppp/chpms.h | 64 - .../lib/lwip/lib/contrib/src/netif/ppp/fsm.c | 890 - .../lib/lwip/lib/contrib/src/netif/ppp/fsm.h | 157 - .../lib/lwip/lib/contrib/src/netif/ppp/ipcp.c | 1411 - .../lib/lwip/lib/contrib/src/netif/ppp/ipcp.h | 106 - .../lib/lwip/lib/contrib/src/netif/ppp/lcp.c | 2066 - .../lib/lwip/lib/contrib/src/netif/ppp/lcp.h | 151 - .../lwip/lib/contrib/src/netif/ppp/magic.c | 80 - .../lwip/lib/contrib/src/netif/ppp/magic.h | 63 - .../lib/lwip/lib/contrib/src/netif/ppp/md5.c | 320 - .../lib/lwip/lib/contrib/src/netif/ppp/md5.h | 55 - .../lib/lwip/lib/contrib/src/netif/ppp/pap.c | 628 - .../lib/lwip/lib/contrib/src/netif/ppp/pap.h | 118 - .../lib/lwip/lib/contrib/src/netif/ppp/ppp.c | 2020 - .../lib/lwip/lib/contrib/src/netif/ppp/ppp.h | 483 - .../lwip/lib/contrib/src/netif/ppp/ppp_oe.c | 1132 - .../lwip/lib/contrib/src/netif/ppp/pppdebug.h | 73 - .../lwip/lib/contrib/src/netif/ppp/randm.c | 249 - .../lwip/lib/contrib/src/netif/ppp/randm.h | 81 - .../lib/lwip/lib/contrib/src/netif/ppp/vj.c | 652 - .../lib/lwip/lib/contrib/src/netif/ppp/vj.h | 156 - .../lib/lwip/lib/contrib/src/netif/slipif.c | 371 - l4/pkg/ankh/lib/lwip/lib/lwipopts.h | 594 - .../bootstrap/server/src/ARCH-x86/serial.cc | 213 - l4/pkg/bootstrap/server/src/ARCH-x86/serial.h | 28 - l4/pkg/dde/include/ddekit/__usem_wrap.h | 210 - l4/pkg/l4sys/doc/Makefile | 6 - l4/pkg/l4sys/doc/l4sys-l4f-footer.html | 9 - l4/pkg/l4sys/doc/l4sys-l4f-header.html | 14 - l4/pkg/l4sys/doc/l4sys-l4f.cfg | 1294 - l4/pkg/l4sys/doc/l4sys-l4f.dox | 16 - .../ARCH-amd64/L4API-l4f/__semaphore_impl.h | 89 - .../l4sys/include/ARCH-arm/__semaphore_impl.h | 116 - .../include/ARCH-ppc32/__semaphore_impl.h | 103 - .../include/ARCH-sparc/__semaphore_impl.h | 45 - .../ARCH-x86/L4API-l4f/__semaphore_impl.h | 89 - l4/pkg/l4sys/include/semaphore | 155 - l4/pkg/l4sys/include/semaphore.h | 171 - l4/pkg/libkproxy/lib/src/scheduler_svr.cc | 90 - l4/pkg/libpng/lib/dist/pngvalid.c | 8619 -- l4/pkg/libpng/lib/dist/scripts/list | 23 - .../libpng/lib/dist/scripts/makefile.watcom | 122 - .../libstdc++-headers/include-4.1.0/Makefile | 8 - .../include-4.1.0/bits/c++config.h | 293 - .../libstdc++-headers/include-4.3.3/Makefile | 8 - .../include-4.3.3/bits/c++config.h | 1400 - l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 | 6 - l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 | 16 - .../contrib/gcc-4.1.0/coretypes.h | 76 - .../contrib/gcc-4.1.0/unwind-pe.h | 291 - .../contrib/gcc-4.3.3/coretypes.h | 93 - .../contrib/gcc-4.3.3/unwind-pe.h | 305 - .../contrib/libstdc++-v3-4.1.0/ChangeLog | 5101 - .../contrib/libstdc++-v3-4.1.0/ChangeLog-1998 | 942 - .../contrib/libstdc++-v3-4.1.0/ChangeLog-1999 | 3545 - .../contrib/libstdc++-v3-4.1.0/ChangeLog-2000 | 5644 - .../contrib/libstdc++-v3-4.1.0/ChangeLog-2001 | 6067 - .../contrib/libstdc++-v3-4.1.0/ChangeLog-2002 | 5590 - .../contrib/libstdc++-v3-4.1.0/ChangeLog-2003 | 8619 -- .../contrib/libstdc++-v3-4.1.0/ChangeLog-2004 | 6707 - .../contrib/libstdc++-v3-4.1.0/Makefile.am | 112 - .../contrib/libstdc++-v3-4.1.0/Makefile.in | 785 - .../contrib/libstdc++-v3-4.1.0/README | 96 - .../contrib/libstdc++-v3-4.1.0/acinclude.m4 | 1896 - .../contrib/libstdc++-v3-4.1.0/aclocal.m4 | 647 - .../contrib/libstdc++-v3-4.1.0/config.h.in | 1032 - .../abi/alpha-linux-gnu/baseline_symbols.txt | 3169 - .../config/abi/compatibility.h | 214 - .../abi/hppa-linux-gnu/baseline_symbols.txt | 3169 - .../abi/i386-linux-gnu/baseline_symbols.txt | 3147 - .../abi/i486-linux-gnu/baseline_symbols.txt | 3147 - .../abi/ia64-linux-gnu/baseline_symbols.txt | 3147 - .../abi/mips-linux-gnu/baseline_symbols.txt | 3169 - .../powerpc-linux-gnu/baseline_symbols.txt | 3169 - .../32/baseline_symbols.txt | 3169 - .../powerpc64-linux-gnu/baseline_symbols.txt | 3169 - .../abi/s390-linux-gnu/baseline_symbols.txt | 3169 - .../abi/s390x-linux-gnu/baseline_symbols.txt | 3169 - .../abi/sparc-linux-gnu/baseline_symbols.txt | 3169 - .../x86_64-linux-gnu/32/baseline_symbols.txt | 3147 - .../abi/x86_64-linux-gnu/baseline_symbols.txt | 3147 - .../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 | 38 - .../config/cpu/alpha/atomicity.h | 45 - .../config/cpu/arm/cxxabi_tweaks.h | 73 - .../config/cpu/cris/atomic_word.h | 36 - .../config/cpu/cris/atomicity.h | 77 - .../config/cpu/generic/atomic_word.h | 48 - .../config/cpu/generic/atomicity.h | 56 - .../config/cpu/generic/cpu_defines.h | 33 - .../config/cpu/generic/cxxabi_tweaks.h | 53 - .../config/cpu/hppa/atomicity.h | 97 - .../config/cpu/i386/atomicity.h | 74 - .../config/cpu/i486/atomicity.h | 53 - .../config/cpu/ia64/atomic_word.h | 69 - .../config/cpu/ia64/atomicity.h | 44 - .../config/cpu/m68k/atomicity.h | 133 - .../config/cpu/mips/atomicity.h | 83 - .../config/cpu/powerpc/atomic_word.h | 38 - .../config/cpu/powerpc/atomicity.h | 44 - .../config/cpu/powerpc/cpu_defines.h | 36 - .../config/cpu/s390/atomicity.h | 43 - .../config/cpu/sh/atomicity.h | 107 - .../config/cpu/sparc/atomic_word.h | 53 - .../config/cpu/sparc/atomicity.h | 125 - .../config/io/basic_file_stdio.cc | 373 - .../config/io/basic_file_stdio.h | 110 - .../libstdc++-v3-4.1.0/config/io/c_io_stdio.h | 86 - .../config/linker-map.dummy | 7 - .../libstdc++-v3-4.1.0/config/linker-map.gnu | 702 - .../config/locale/darwin/ctype_members.cc | 171 - .../locale/generic/c++locale_internal.h | 30 - .../config/locale/generic/c_locale.cc | 170 - .../config/locale/generic/c_locale.h | 86 - .../config/locale/generic/codecvt_members.cc | 217 - .../config/locale/generic/collate_members.cc | 72 - .../config/locale/generic/ctype_members.cc | 267 - .../config/locale/generic/messages_members.cc | 52 - .../config/locale/generic/messages_members.h | 84 - .../config/locale/generic/monetary_members.cc | 171 - .../config/locale/generic/numeric_members.cc | 106 - .../config/locale/generic/time_members.cc | 204 - .../config/locale/generic/time_members.h | 79 - .../config/locale/gnu/c++locale_internal.h | 59 - .../config/locale/gnu/c_locale.cc | 134 - .../config/locale/gnu/c_locale.h | 101 - .../config/locale/gnu/codecvt_members.cc | 306 - .../config/locale/gnu/collate_members.cc | 73 - .../config/locale/gnu/ctype_members.cc | 303 - .../config/locale/gnu/messages_members.cc | 81 - .../config/locale/gnu/messages_members.h | 107 - .../config/locale/gnu/monetary_members.cc | 655 - .../config/locale/gnu/numeric_members.cc | 151 - .../config/locale/gnu/time_members.cc | 395 - .../config/locale/gnu/time_members.h | 76 - .../locale/ieee_1003.1-2001/c_locale.cc | 112 - .../config/locale/ieee_1003.1-2001/c_locale.h | 44 - .../ieee_1003.1-2001/messages_members.cc | 61 - .../ieee_1003.1-2001/messages_members.h | 70 - .../config/os/aix/atomic_word.h | 43 - .../config/os/aix/atomicity.h | 61 - .../config/os/aix/ctype_base.h | 55 - .../config/os/aix/ctype_inline.h | 76 - .../config/os/aix/ctype_noninline.h | 92 - .../config/os/aix/os_defines.h | 46 - .../config/os/bsd/darwin/ctype_base.h | 74 - .../config/os/bsd/darwin/ctype_inline.h | 143 - .../config/os/bsd/darwin/ctype_noninline.h | 91 - .../config/os/bsd/darwin/os_defines.h | 47 - .../config/os/bsd/darwin/ppc-extra.ver | 1 - .../config/os/bsd/freebsd/ctype_base.h | 76 - .../config/os/bsd/freebsd/ctype_inline.h | 143 - .../config/os/bsd/freebsd/ctype_noninline.h | 91 - .../config/os/bsd/freebsd/os_defines.h | 44 - .../config/os/bsd/netbsd/ctype_base.h | 58 - .../config/os/bsd/netbsd/ctype_inline.h | 73 - .../config/os/bsd/netbsd/ctype_noninline.h | 93 - .../config/os/bsd/netbsd/os_defines.h | 38 - .../config/os/djgpp/ctype_base.h | 57 - .../config/os/djgpp/ctype_inline.h | 69 - .../config/os/djgpp/ctype_noninline.h | 91 - .../config/os/djgpp/os_defines.h | 41 - .../config/os/generic/ctype_base.h | 58 - .../config/os/generic/ctype_inline.h | 161 - .../config/os/generic/ctype_noninline.h | 92 - .../config/os/generic/os_defines.h | 37 - .../config/os/gnu-linux/ctype_base.h | 62 - .../config/os/gnu-linux/ctype_inline.h | 69 - .../config/os/gnu-linux/ctype_noninline.h | 159 - .../config/os/gnu-linux/os_defines.h | 46 - .../config/os/hpux/ctype_base.h | 55 - .../config/os/hpux/ctype_inline.h | 69 - .../config/os/hpux/ctype_noninline.h | 92 - .../config/os/hpux/os_defines.h | 95 - .../config/os/irix/atomic_word.h | 35 - .../config/os/irix/atomicity.h | 42 - .../config/os/irix/irix5.2/ctype_base.h | 55 - .../config/os/irix/irix5.2/ctype_inline.h | 67 - .../config/os/irix/irix5.2/ctype_noninline.h | 93 - .../config/os/irix/irix5.2/os_defines.h | 51 - .../config/os/irix/irix6.5/ctype_base.h | 55 - .../config/os/irix/irix6.5/ctype_inline.h | 67 - .../config/os/irix/irix6.5/ctype_noninline.h | 94 - .../config/os/irix/irix6.5/os_defines.h | 54 - .../config/os/mingw32/ctype_base.h | 58 - .../config/os/mingw32/ctype_inline.h | 71 - .../config/os/mingw32/ctype_noninline.h | 99 - .../config/os/mingw32/os_defines.h | 51 - .../config/os/newlib/ctype_base.h | 57 - .../config/os/newlib/ctype_inline.h | 67 - .../config/os/newlib/ctype_noninline.h | 98 - .../config/os/newlib/os_defines.h | 43 - .../config/os/qnx/qnx6.1/ctype_base.h | 55 - .../config/os/qnx/qnx6.1/ctype_inline.h | 67 - .../config/os/qnx/qnx6.1/ctype_noninline.h | 89 - .../config/os/qnx/qnx6.1/os_defines.h | 36 - .../config/os/solaris/solaris2.5/ctype_base.h | 55 - .../os/solaris/solaris2.5/ctype_inline.h | 69 - .../os/solaris/solaris2.5/ctype_noninline.h | 91 - .../config/os/solaris/solaris2.5/os_defines.h | 36 - .../config/os/solaris/solaris2.6/ctype_base.h | 56 - .../os/solaris/solaris2.6/ctype_inline.h | 76 - .../os/solaris/solaris2.6/ctype_noninline.h | 91 - .../config/os/solaris/solaris2.6/os_defines.h | 36 - .../config/os/solaris/solaris2.7/ctype_base.h | 57 - .../os/solaris/solaris2.7/ctype_inline.h | 69 - .../os/solaris/solaris2.7/ctype_noninline.h | 92 - .../config/os/solaris/solaris2.7/os_defines.h | 37 - .../config/os/tpf/ctype_base.h | 55 - .../config/os/tpf/ctype_inline.h | 69 - .../config/os/tpf/ctype_noninline.h | 103 - .../config/os/tpf/os_defines.h | 45 - .../config/os/vxworks/ctype_base.h | 59 - .../config/os/vxworks/ctype_inline.h | 71 - .../config/os/vxworks/ctype_noninline.h | 91 - .../config/os/vxworks/os_defines.h | 37 - .../config/os/windiss/ctype_base.h | 55 - .../config/os/windiss/ctype_inline.h | 125 - .../config/os/windiss/ctype_noninline.h | 92 - .../config/os/windiss/os_defines.h | 38 - .../contrib/libstdc++-v3-4.1.0/configure | 90445 ----------- .../contrib/libstdc++-v3-4.1.0/configure.ac | 374 - .../contrib/libstdc++-v3-4.1.0/configure.host | 303 - .../contrib/libstdc++-v3-4.1.0/crossconfig.m4 | 484 - .../libstdc++-v3-4.1.0/docs/doxygen/Intro.3 | 141 - .../libstdc++-v3-4.1.0/docs/doxygen/TODO | 70 - .../docs/doxygen/doxygroups.cc | 224 - .../docs/doxygen/guide.html | 112 - .../docs/doxygen/mainpage.html | 101 - .../docs/doxygen/run_doxygen | 327 - .../docs/doxygen/stdheader.cc | 170 - .../libstdc++-v3-4.1.0/docs/doxygen/style.css | 74 - .../docs/doxygen/tables.html | 645 - .../docs/doxygen/user.cfg.in | 1307 - .../docs/html/17_intro/BADNAMES | 182 - .../docs/html/17_intro/BUGS | 28 - .../docs/html/17_intro/C++STYLE | 386 - .../docs/html/17_intro/CHECKLIST | 6002 - .../docs/html/17_intro/COPYING | 340 - .../docs/html/17_intro/COPYING.DOC | 355 - .../docs/html/17_intro/DESIGN | 859 - .../docs/html/17_intro/HEADER_POLICY | 164 - .../docs/html/17_intro/PROBLEMS | 8 - .../docs/html/17_intro/RELEASE-NOTES | 83 - .../docs/html/17_intro/TODO | 174 - .../docs/html/17_intro/concept_check.diff | 382 - .../docs/html/17_intro/confdeps.dot | 14 - .../docs/html/17_intro/confdeps.png | Bin 3486 -> 0 bytes .../docs/html/17_intro/configury.html | 289 - .../docs/html/17_intro/contribute.html | 132 - .../docs/html/17_intro/headers_cc.txt | 83 - .../docs/html/17_intro/howto.html | 385 - .../docs/html/17_intro/license.html | 113 - .../docs/html/17_intro/porting-howto.html | 764 - .../docs/html/17_intro/porting-howto.xml | 785 - .../docs/html/17_intro/porting.html | 992 - .../docs/html/17_intro/porting.texi | 570 - .../docs/html/18_support/howto.html | 432 - .../docs/html/19_diagnostics/howto.html | 137 - .../docs/html/20_util/allocator.html | 528 - .../docs/html/20_util/howto.html | 242 - .../docs/html/21_strings/gotw29a.txt | 159 - .../docs/html/21_strings/howto.html | 478 - .../docs/html/21_strings/stringtok_h.txt | 102 - .../docs/html/21_strings/stringtok_std_h.txt | 39 - .../docs/html/22_locale/codecvt.html | 595 - .../docs/html/22_locale/ctype.html | 166 - .../docs/html/22_locale/howto.html | 240 - .../docs/html/22_locale/locale.html | 543 - .../docs/html/22_locale/messages.html | 461 - .../docs/html/23_containers/howto.html | 459 - .../docs/html/23_containers/wrappers_h.txt | 48 - .../docs/html/24_iterators/howto.html | 200 - .../docs/html/25_algorithms/howto.html | 116 - .../docs/html/26_numerics/howto.html | 179 - .../html/27_io/binary_iostreams_kanze.txt | 51 - .../html/27_io/binary_iostreams_kuehl.txt | 89 - .../docs/html/27_io/howto.html | 779 - .../libstdc++-v3-4.1.0/docs/html/Makefile | 41 - .../libstdc++-v3-4.1.0/docs/html/abi.html | 902 - .../docs/html/configopts.html | 326 - .../libstdc++-v3-4.1.0/docs/html/debug.html | 445 - .../docs/html/debug_mode.html | 590 - .../docs/html/documentation.html | 273 - .../docs/html/explanations.html | 86 - .../docs/html/ext/ballocator_doc.html | 426 - .../docs/html/ext/howto.html | 562 - .../docs/html/ext/lwg-active.html | 5467 - .../docs/html/ext/lwg-defects.html | 13890 -- .../docs/html/ext/mt_allocator.html | 558 - .../html/ext/pb_assoc/Std_hash_set_impl.jpg | Bin 51488 -> 0 bytes .../docs/html/ext/pb_assoc/acks.html | 46 - .../docs/html/ext/pb_assoc/balls_and_bins.jpg | Bin 18512 -> 0 bytes .../html/ext/pb_assoc/basic_assoc_cntnr.html | 1229 - .../basic_assoc_cntnr_compound_data.html | 1244 - .../pb_assoc/basic_assoc_cntnr_no_data.html | 1046 - .../docs/html/ext/pb_assoc/basic_ds_tag.html | 41 - .../ext/pb_assoc/basic_hash_assoc_cntnr.html | 609 - .../html/ext/pb_assoc/basic_hash_ds_tag.html | 74 - .../basic_invalidation_guarantee.html | 41 - .../docs/html/ext/pb_assoc/basic_ms_tag.html | 41 - .../ext/pb_assoc/basic_tree_assoc_cntnr.html | 940 - ..._tree_assoc_cntnr_const_node_iterator.html | 488 - .../basic_tree_assoc_cntnr_node_iterator.html | 250 - .../pb_assoc/basic_tree_assoc_cntnr_rev.html | 771 - .../basic_tree_assoc_cntnr_rev_it.html | 771 - .../html/ext/pb_assoc/basic_tree_ds_tag.html | 74 - .../ext/pb_assoc/cc_hash_assoc_cntnr.html | 679 - .../html/ext/pb_assoc/cc_hash_ds_tag.html | 74 - ...sh_max_collision_check_resize_trigger.html | 701 - .../html/ext/pb_assoc/cc_hash_policy_cd.jpg | Bin 27118 -> 0 bytes .../docs/html/ext/pb_assoc/cd.jpg | Bin 58234 -> 0 bytes .../ext/pb_assoc/component_requirements.html | 51 - .../compound_data_enabled_ms_tag.html | 41 - .../html/ext/pb_assoc/compound_data_type.html | 128 - .../html/ext/pb_assoc/compound_ds_tag.html | 77 - .../docs/html/ext/pb_assoc/concepts.html | 124 - .../docs/html/ext/pb_assoc/contact.html | 19 - .../ext/pb_assoc/counter_update_metadata.html | 101 - .../ext/pb_assoc/counter_update_policy.html | 380 - .../ext/pb_assoc/data_enabled_ms_tag.html | 41 - .../docs/html/ext/pb_assoc/design.html | 23 - .../ext/pb_assoc/different_underlying_dss.jpg | Bin 34944 -> 0 bytes .../pb_assoc/direct_mask_range_hashing.html | 251 - .../pb_assoc/direct_mod_range_hashing.html | 228 - .../docs/html/ext/pb_assoc/disclaimer.html | 25 - .../docs/html/ext/pb_assoc/ds_gen.html | 368 - .../docs/html/ext/pb_assoc/ds_tag_cd.jpg | Bin 54661 -> 0 bytes .../docs/html/ext/pb_assoc/ds_traits.html | 41 - .../html/ext/pb_assoc/embedded_lists_1.jpg | Bin 24191 -> 0 bytes .../html/ext/pb_assoc/embedded_lists_2.jpg | Bin 23766 -> 0 bytes .../docs/html/ext/pb_assoc/examples.html | 185 - .../exception_guarantees_specifics.html | 31 - .../pb_assoc/find_invalidation_guarantee.html | 74 - .../html/ext/pb_assoc/find_iterators_cd.jpg | Bin 48752 -> 0 bytes .../pb_assoc/find_iterators_range_ops_1.jpg | Bin 18521 -> 0 bytes .../pb_assoc/find_iterators_range_ops_2.jpg | Bin 25683 -> 0 bytes .../docs/html/ext/pb_assoc/generics.html | 25 - .../ext/pb_assoc/gp_hash_assoc_cntnr.html | 816 - .../html/ext/pb_assoc/gp_hash_ds_tag.html | 74 - .../html/ext/pb_assoc/gp_hash_policy_cd.jpg | Bin 39817 -> 0 bytes .../ext/pb_assoc/hash_and_probe_general.html | 45 - .../ext/pb_assoc/hash_based_containers.html | 1056 - .../docs/html/ext/pb_assoc/hash_cd.jpg | Bin 54780 -> 0 bytes .../hash_exponential_size_policy.html | 267 - .../docs/html/ext/pb_assoc/hash_fn.html | 25 - .../hash_load_check_resize_trigger.html | 744 - .../docs/html/ext/pb_assoc/hash_policies.html | 375 - .../docs/html/ext/pb_assoc/hash_policy_cd.jpg | Bin 59739 -> 0 bytes .../ext/pb_assoc/hash_prime_size_policy.html | 211 - .../hash_range_hashing_seq_diagram.jpg | Bin 30271 -> 0 bytes .../hash_range_hashing_seq_diagram2.jpg | Bin 20756 -> 0 bytes .../hash_ranged_hash_range_hashing_fns.jpg | Bin 35579 -> 0 bytes .../pb_assoc/hash_standard_resize_policy.html | 986 - .../docs/html/ext/pb_assoc/home.html | 56 - .../docs/html/ext/pb_assoc/index.html | 12 - .../insert_resize_sequence_diagram1.jpg | Bin 66060 -> 0 bytes .../insert_resize_sequence_diagram2.jpg | Bin 43557 -> 0 bytes .../insert_resize_sequence_diagram3.jpg | Bin 39549 -> 0 bytes .../ext/pb_assoc/insert_type_methods.html | 42 - .../docs/html/ext/pb_assoc/interface.html | 342 - .../ext/pb_assoc/interval_node_invariants.jpg | Bin 31555 -> 0 bytes .../docs/html/ext/pb_assoc/introduction.html | 31 - .../pb_assoc/invalidation_guarantee_cd.jpg | Bin 23162 -> 0 bytes .../pb_assoc/invalidation_guarantee_erase.jpg | Bin 56109 -> 0 bytes .../docs/html/ext/pb_assoc/lib_download.html | 47 - .../html/ext/pb_assoc/linear_probe_fn.html | 238 - .../docs/html/ext/pb_assoc/list_updates.html | 138 - .../html/ext/pb_assoc/lu_assoc_cntnr.html | 570 - .../ext/pb_assoc/lu_based_containers.html | 225 - .../docs/html/ext/pb_assoc/lu_cd.jpg | Bin 60906 -> 0 bytes .../docs/html/ext/pb_assoc/lu_ds_tag.html | 74 - .../docs/html/ext/pb_assoc/lu_ops.jpg | Bin 36112 -> 0 bytes .../html/ext/pb_assoc/mmap_value_utils.html | 128 - .../docs/html/ext/pb_assoc/motivation.html | 281 - .../move_to_front_update_metadata.html | 41 - .../pb_assoc/move_to_front_update_policy.html | 256 - .../docs/html/ext/pb_assoc/ms_cd.jpg | Bin 61973 -> 0 bytes .../docs/html/ext/pb_assoc/ms_gen.html | 440 - .../docs/html/ext/pb_assoc/ms_tag_cd.jpg | Bin 21009 -> 0 bytes .../docs/html/ext/pb_assoc/ms_traits.html | 131 - .../pb_assoc/node_invariant_invalidations.jpg | Bin 43521 -> 0 bytes .../html/ext/pb_assoc/node_invariants.html | 154 - .../html/ext/pb_assoc/node_invariants.jpg | Bin 32622 -> 0 bytes .../html/ext/pb_assoc/non_unique_mapping.html | 404 - .../non_unique_mapping_containers.jpg | Bin 19257 -> 0 bytes .../html/ext/pb_assoc/null_data_type.html | 41 - .../docs/html/ext/pb_assoc/null_hash_fn.html | 44 - .../docs/html/ext/pb_assoc/null_probe_fn.html | 44 - .../docs/html/ext/pb_assoc/order_by_key.html | 254 - .../ext/pb_assoc/order_statistics_key.html | 373 - .../pb_assoc/order_statistics_key_cmp.html | 422 - .../order_statistics_node_updator.html | 278 - .../html/ext/pb_assoc/ov_tree_ds_tag.html | 74 - .../docs/html/ext/pb_assoc/overview.html | 139 - .../docs/html/ext/pb_assoc/pb_assoc_ex.html | 74 - .../docs/html/ext/pb_assoc/portability.html | 26 - .../html/ext/pb_assoc/quadratic_probe_fn.html | 238 - .../range_invalidation_guarantee.html | 74 - .../ext/pb_assoc/rank_node_invariants.jpg | Bin 28798 -> 0 bytes .../pb_assoc/rationale_null_node_updator.jpg | Bin 27057 -> 0 bytes .../html/ext/pb_assoc/rb_tree_ds_tag.html | 74 - .../html/ext/pb_assoc/reference_iterator.jpg | Bin 32467 -> 0 bytes .../docs/html/ext/pb_assoc/references.html | 94 - .../html/ext/pb_assoc/regression_tests.html | 25 - .../html/ext/pb_assoc/resize_general.html | 28 - .../html/ext/pb_assoc/resize_policies.html | 487 - .../html/ext/pb_assoc/resize_policy_cd.jpg | Bin 58948 -> 0 bytes .../pb_assoc/restoring_node_invariants.jpg | Bin 26335 -> 0 bytes .../html/ext/pb_assoc/sample_node_updator.hpp | 116 - .../html/ext/pb_assoc/sample_probe_fn.hpp | 121 - .../html/ext/pb_assoc/sample_probe_fn.html | 177 - .../ext/pb_assoc/sample_range_hashing.hpp | 147 - .../ext/pb_assoc/sample_range_hashing.html | 213 - .../ext/pb_assoc/sample_ranged_hash_fn.hpp | 141 - .../ext/pb_assoc/sample_ranged_hash_fn.html | 129 - .../ext/pb_assoc/sample_ranged_probe_fn.hpp | 143 - .../ext/pb_assoc/sample_ranged_probe_fn.html | 129 - .../ext/pb_assoc/sample_resize_policy.hpp | 310 - .../ext/pb_assoc/sample_resize_policy.html | 536 - .../ext/pb_assoc/sample_resize_trigger.hpp | 341 - .../html/ext/pb_assoc/sample_size_policy.hpp | 140 - .../ext/pb_assoc/sample_update_policy.hpp | 171 - .../ext/pb_assoc/size_policies_general.html | 22 - .../html/ext/pb_assoc/splay_tree_ds_tag.html | 74 - .../docs/html/ext/pb_assoc/timing_tests.html | 60 - .../docs/html/ext/pb_assoc/toc.html | 35 - .../html/ext/pb_assoc/tree_assoc_cntnr.html | 493 - .../tree_assoc_cntnr_const_node_iterator.html | 488 - .../tree_assoc_cntnr_node_iterator.html | 250 - .../ext/pb_assoc/tree_based_containers.html | 246 - .../docs/html/ext/pb_assoc/tree_cd.jpg | Bin 60672 -> 0 bytes .../pb_assoc/trigger_policies_general.html | 23 - .../docs/html/ext/pb_assoc/tutorial.html | 66 - .../html/ext/pb_assoc/update_seq_diagram.jpg | Bin 23396 -> 0 bytes .../docs/html/ext/sgiexts.html | 253 - .../libstdc++-v3-4.1.0/docs/html/ext/tr1.html | 2321 - .../docs/html/faq/index.html | 1201 - .../docs/html/faq/index.txt | 1111 - .../libstdc++-v3-4.1.0/docs/html/install.html | 239 - .../docs/html/lib3styles.css | 6 - .../libstdc++-v3-4.1.0/docs/html/makedoc.awk | 69 - .../libstdc++-v3-4.1.0/docs/html/test.html | 718 - .../contrib/libstdc++-v3-4.1.0/fragment.am | 25 - .../libstdc++-v3-4.1.0/include/Makefile.am | 992 - .../libstdc++-v3-4.1.0/include/Makefile.in | 1364 - .../include/backward/algo.h | 149 - .../include/backward/algobase.h | 95 - .../include/backward/alloc.h | 52 - .../include/backward/backward_warning.h | 39 - .../include/backward/bvector.h | 68 - .../include/backward/complex.h | 43 - .../include/backward/defalloc.h | 117 - .../include/backward/deque.h | 70 - .../include/backward/fstream.h | 52 - .../include/backward/function.h | 130 - .../include/backward/hash_map.h | 72 - .../include/backward/hash_set.h | 69 - .../include/backward/hashtable.h | 76 - .../include/backward/heap.h | 71 - .../include/backward/iomanip.h | 70 - .../include/backward/iostream.h | 60 - .../include/backward/istream.h | 43 - .../include/backward/iterator.h | 191 - .../include/backward/list.h | 70 - .../libstdc++-v3-4.1.0/include/backward/map.h | 69 - .../include/backward/multimap.h | 69 - .../include/backward/multiset.h | 69 - .../libstdc++-v3-4.1.0/include/backward/new.h | 42 - .../include/backward/ostream.h | 38 - .../include/backward/pair.h | 70 - .../include/backward/queue.h | 41 - .../include/backward/rope.h | 60 - .../libstdc++-v3-4.1.0/include/backward/set.h | 69 - .../include/backward/slist.h | 56 - .../include/backward/stack.h | 72 - .../include/backward/stream.h | 38 - .../include/backward/streambuf.h | 40 - .../include/backward/strstream | 179 - .../include/backward/tempbuf.h | 78 - .../include/backward/tree.h | 55 - .../include/backward/vector.h | 70 - .../include/bits/allocator.h | 132 - .../include/bits/atomicity.h | 60 - .../include/bits/basic_ios.h | 467 - .../include/bits/basic_ios.tcc | 200 - .../include/bits/basic_string.h | 2445 - .../include/bits/basic_string.tcc | 998 - .../include/bits/boost_concept_check.h | 932 - .../libstdc++-v3-4.1.0/include/bits/c++config | 105 - .../include/bits/char_traits.h | 366 - .../libstdc++-v3-4.1.0/include/bits/codecvt.h | 470 - .../include/bits/concept_check.h | 85 - .../include/bits/concurrence.h | 100 - .../include/bits/cpp_type_traits.h | 389 - .../libstdc++-v3-4.1.0/include/bits/deque.tcc | 767 - .../include/bits/fstream.tcc | 904 - .../include/bits/functexcept.h | 93 - .../libstdc++-v3-4.1.0/include/bits/gslice.h | 174 - .../include/bits/gslice_array.h | 218 - .../include/bits/indirect_array.h | 212 - .../include/bits/ios_base.h | 967 - .../include/bits/istream.tcc | 1286 - .../libstdc++-v3-4.1.0/include/bits/list.tcc | 379 - .../include/bits/locale_classes.h | 582 - .../include/bits/locale_facets.h | 4578 - .../include/bits/locale_facets.tcc | 2766 - .../include/bits/localefwd.h | 192 - .../include/bits/mask_array.h | 208 - .../include/bits/ostream.tcc | 823 - .../include/bits/postypes.h | 215 - .../include/bits/slice_array.h | 273 - .../include/bits/sstream.tcc | 238 - .../include/bits/stl_algo.h | 5307 - .../include/bits/stl_algobase.h | 912 - .../include/bits/stl_bvector.h | 958 - .../include/bits/stl_construct.h | 189 - .../include/bits/stl_deque.h | 1531 - .../include/bits/stl_function.h | 759 - .../include/bits/stl_heap.h | 467 - .../include/bits/stl_iterator.h | 822 - .../include/bits/stl_iterator_base_funcs.h | 179 - .../include/bits/stl_iterator_base_types.h | 170 - .../include/bits/stl_list.h | 1231 - .../libstdc++-v3-4.1.0/include/bits/stl_map.h | 731 - .../include/bits/stl_multimap.h | 684 - .../include/bits/stl_multiset.h | 580 - .../include/bits/stl_numeric.h | 340 - .../include/bits/stl_pair.h | 148 - .../include/bits/stl_queue.h | 470 - .../include/bits/stl_raw_storage_iter.h | 113 - .../include/bits/stl_relops.h | 137 - .../libstdc++-v3-4.1.0/include/bits/stl_set.h | 592 - .../include/bits/stl_stack.h | 272 - .../include/bits/stl_tempbuf.h | 170 - .../include/bits/stl_tree.h | 1497 - .../include/bits/stl_uninitialized.h | 397 - .../include/bits/stl_vector.h | 984 - .../include/bits/stream_iterator.h | 214 - .../include/bits/streambuf.tcc | 154 - .../include/bits/streambuf_iterator.h | 258 - .../include/bits/stringfwd.h | 69 - .../include/bits/valarray_after.h | 558 - .../include/bits/valarray_array.h | 691 - .../include/bits/valarray_array.tcc | 245 - .../include/bits/valarray_before.h | 739 - .../include/bits/vector.tcc | 494 - .../include/c/std_cassert.h | 38 - .../libstdc++-v3-4.1.0/include/c/std_cctype.h | 41 - .../libstdc++-v3-4.1.0/include/c/std_cerrno.h | 55 - .../libstdc++-v3-4.1.0/include/c/std_cfloat.h | 41 - .../include/c/std_ciso646.h | 37 - .../include/c/std_climits.h | 41 - .../include/c/std_clocale.h | 41 - .../libstdc++-v3-4.1.0/include/c/std_cmath.h | 124 - .../include/c/std_csetjmp.h | 49 - .../include/c/std_csignal.h | 41 - .../include/c/std_cstdarg.h | 42 - .../include/c/std_cstddef.h | 45 - .../libstdc++-v3-4.1.0/include/c/std_cstdio.h | 84 - .../include/c/std_cstdlib.h | 41 - .../include/c/std_cstring.h | 41 - .../libstdc++-v3-4.1.0/include/c/std_ctime.h | 41 - .../libstdc++-v3-4.1.0/include/c/std_cwchar.h | 62 - .../include/c/std_cwctype.h | 45 - .../include/c_compatibility/assert.h | 30 - .../include/c_compatibility/ctype.h | 49 - .../include/c_compatibility/errno.h | 35 - .../include/c_compatibility/float.h | 35 - .../include/c_compatibility/iso646.h | 35 - .../include/c_compatibility/limits.h | 35 - .../include/c_compatibility/locale.h | 39 - .../include/c_compatibility/math.h | 74 - .../include/c_compatibility/setjmp.h | 38 - .../include/c_compatibility/signal.h | 40 - .../include/c_compatibility/stdarg.h | 37 - .../include/c_compatibility/stddef.h | 38 - .../include/c_compatibility/stdio.h | 85 - .../include/c_compatibility/stdlib.h | 67 - .../include/c_compatibility/string.h | 58 - .../include/c_compatibility/time.h | 60 - .../include/c_compatibility/wchar.h | 114 - .../include/c_compatibility/wctype.h | 55 - .../include/c_std/cmath.tcc | 54 - .../include/c_std/std_cassert.h | 49 - .../include/c_std/std_cctype.h | 85 - .../include/c_std/std_cerrno.h | 57 - .../include/c_std/std_cfloat.h | 52 - .../include/c_std/std_ciso646.h | 38 - .../include/c_std/std_climits.h | 52 - .../include/c_std/std_clocale.h | 63 - .../include/c_std/std_cmath.h | 578 - .../include/c_std/std_csetjmp.h | 66 - .../include/c_std/std_csignal.h | 62 - .../include/c_std/std_cstdarg.h | 62 - .../include/c_std/std_cstddef.h | 58 - .../include/c_std/std_cstdio.h | 187 - .../include/c_std/std_cstdlib.h | 223 - .../include/c_std/std_cstring.h | 129 - .../include/c_std/std_ctime.h | 82 - .../include/c_std/std_cwchar.h | 274 - .../include/c_std/std_cwctype.h | 109 - .../libstdc++-v3-4.1.0/include/debug/bitset | 321 - .../libstdc++-v3-4.1.0/include/debug/debug.h | 116 - .../libstdc++-v3-4.1.0/include/debug/deque | 386 - .../include/debug/formatter.h | 390 - .../include/debug/functions.h | 288 - .../libstdc++-v3-4.1.0/include/debug/hash_map | 38 - .../include/debug/hash_map.h | 270 - .../include/debug/hash_multimap.h | 261 - .../include/debug/hash_multiset.h | 236 - .../libstdc++-v3-4.1.0/include/debug/hash_set | 38 - .../include/debug/hash_set.h | 245 - .../libstdc++-v3-4.1.0/include/debug/list | 505 - .../libstdc++-v3-4.1.0/include/debug/macros.h | 219 - .../libstdc++-v3-4.1.0/include/debug/map | 38 - .../libstdc++-v3-4.1.0/include/debug/map.h | 327 - .../include/debug/multimap.h | 314 - .../include/debug/multiset.h | 320 - .../include/debug/safe_base.h | 207 - .../include/debug/safe_iterator.h | 621 - .../include/debug/safe_iterator.tcc | 140 - .../include/debug/safe_sequence.h | 182 - .../libstdc++-v3-4.1.0/include/debug/set | 38 - .../libstdc++-v3-4.1.0/include/debug/set.h | 325 - .../libstdc++-v3-4.1.0/include/debug/string | 1018 - .../libstdc++-v3-4.1.0/include/debug/vector | 416 - .../libstdc++-v3-4.1.0/include/ext/algorithm | 526 - .../include/ext/array_allocator.h | 145 - .../include/ext/bitmap_allocator.h | 1294 - .../include/ext/codecvt_specializations.h | 505 - .../include/ext/debug_allocator.h | 125 - .../libstdc++-v3-4.1.0/include/ext/functional | 425 - .../libstdc++-v3-4.1.0/include/ext/hash_fun.h | 171 - .../libstdc++-v3-4.1.0/include/ext/hash_map | 625 - .../libstdc++-v3-4.1.0/include/ext/hash_set | 591 - .../include/ext/hashtable.h | 1130 - .../libstdc++-v3-4.1.0/include/ext/iterator | 117 - .../include/ext/malloc_allocator.h | 125 - .../libstdc++-v3-4.1.0/include/ext/memory | 199 - .../include/ext/mt_allocator.h | 734 - .../include/ext/new_allocator.h | 121 - .../libstdc++-v3-4.1.0/include/ext/numeric | 150 - .../include/ext/pb_assoc/assoc_cntnr.hpp | 1590 - .../include/ext/pb_assoc/data_type.hpp | 60 - .../ext/pb_assoc/detail/assoc_cntnr_base.hpp | 346 - .../constructor_destructor_fn_imps.hpp | 164 - .../constructors_destructor_fn_imps.hpp | 48 - .../basic_assoc_cntnr/d_extract_key.hpp | 51 - .../basic_assoc_cntnr/d_find_fn_imps.hpp | 51 - .../basic_assoc_cntnr/d_insert_fn_imps.hpp | 51 - .../basic_assoc_cntnr/erase_fn_imps.hpp | 68 - .../detail/basic_assoc_cntnr/extract_key.hpp | 51 - .../detail/basic_assoc_cntnr/info_fn_imps.hpp | 67 - .../basic_assoc_cntnr/insert_fn_imps.hpp | 51 - .../basic_assoc_cntnr/iterators_fn_imps.hpp | 76 - .../constructor_destructor_fn_imps.hpp | 50 - .../constructors_destructor_fn_imps.hpp | 50 - .../basic_hash_assoc_cntnr/resize_fn_imps.hpp | 51 - .../constructor_destructor_fn_imps.hpp | 50 - .../constructors_destructor_fn_imps.hpp | 50 - .../basic_tree_assoc_cntnr/erase_fn_imps.hpp | 60 - .../node_iteration_fn_imps.hpp | 44 - .../policy_access_fn_imps.hpp | 76 - .../r_erase_fn_imps.hpp | 44 - .../r_range_iteration_fn_imps.hpp | 43 - .../range_iteration_fn_imps.hpp | 43 - .../split_join_fn_imps.hpp | 60 - .../bin_search_tree_/bin_search_tree_.hpp | 525 - .../cond_dtor_entry_dealtor.hpp | 74 - .../cond_key_dtor_entry_dealtor.hpp | 85 - .../constructors_destructor_fn_imps.hpp | 258 - .../detail/bin_search_tree_/debug_fn_imps.hpp | 278 - .../detail/bin_search_tree_/erase_fn_imps.hpp | 124 - .../detail/bin_search_tree_/find_fn_imps.hpp | 184 - .../bin_search_tree_/find_iterators.hpp | 391 - .../detail/bin_search_tree_/info_fn_imps.hpp | 87 - .../bin_search_tree_/insert_fn_imps.hpp | 215 - .../bin_search_tree_/iterators_fn_imps.hpp | 164 - .../bin_search_tree_/node_iterators.hpp | 144 - .../bin_search_tree_/r_erase_fn_imps.hpp | 124 - .../bin_search_tree_/rotate_fn_imps.hpp | 163 - .../bin_search_tree_/split_join_fn_imps.hpp | 192 - .../constructor_destructor_fn_imps.hpp | 153 - .../pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp | 602 - .../detail/cc_ht_map_/cmp_fn_imps.hpp | 92 - .../cond_key_dtor_entry_dealtor.hpp | 138 - .../constructor_destructor_fn_imps.hpp | 227 - ...uctor_destructor_no_store_hash_fn_imps.hpp | 61 - ...structor_destructor_store_hash_fn_imps.hpp | 63 - .../detail/cc_ht_map_/debug_fn_imps.hpp | 83 - .../debug_no_store_hash_fn_imps.hpp | 54 - .../cc_ht_map_/debug_store_hash_fn_imps.hpp | 59 - .../detail/cc_ht_map_/entry_list_fn_imps.hpp | 111 - .../detail/cc_ht_map_/erase_fn_imps.hpp | 114 - .../erase_no_store_hash_fn_imps.hpp | 159 - .../cc_ht_map_/erase_store_hash_fn_imps.hpp | 159 - .../detail/cc_ht_map_/find_fn_imps.hpp | 83 - .../cc_ht_map_/find_no_store_hash_fn_imps.hpp | 86 - .../cc_ht_map_/find_store_hash_fn_imps.hpp | 88 - .../detail/cc_ht_map_/info_fn_imps.hpp | 68 - .../detail/cc_ht_map_/insert_fn_imps.hpp | 63 - .../insert_no_store_hash_fn_imps.hpp | 148 - .../cc_ht_map_/insert_store_hash_fn_imps.hpp | 157 - .../detail/cc_ht_map_/iterators_fn_imps.hpp | 153 - .../cc_ht_map_/policy_access_fn_imps.hpp | 108 - .../detail/cc_ht_map_/resize_fn_imps.hpp | 146 - .../resize_no_store_hash_fn_imps.hpp | 61 - .../cc_ht_map_/resize_store_hash_fn_imps.hpp | 63 - .../detail/cc_ht_map_/size_fn_imps.hpp | 69 - .../detail/cc_ht_map_/standard_policies.hpp | 50 - .../ext/pb_assoc/detail/cond_dealtor.hpp | 129 - .../constructors_destructor_fn_imps.hpp | 126 - .../ext/pb_assoc/detail/ds_trait_imp.hpp | 336 - .../ext/pb_assoc/detail/eq_fn/eq_by_less.hpp | 78 - .../ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp | 211 - .../constructor_destructor_fn_imps.hpp | 166 - .../constructor_destructor_fn_imps.hpp | 255 - ...uctor_destructor_no_store_hash_fn_imps.hpp | 61 - ...structor_destructor_store_hash_fn_imps.hpp | 64 - .../detail/gp_ht_map_/debug_fn_imps.hpp | 60 - .../debug_no_store_hash_fn_imps.hpp | 81 - .../gp_ht_map_/debug_store_hash_fn_imps.hpp | 86 - .../detail/gp_ht_map_/erase_fn_imps.hpp | 110 - .../erase_no_store_hash_fn_imps.hpp | 104 - .../gp_ht_map_/erase_store_hash_fn_imps.hpp | 109 - .../detail/gp_ht_map_/find_fn_imps.hpp | 94 - .../gp_ht_map_/find_no_store_hash_fn_imps.hpp | 116 - .../gp_ht_map_/find_store_hash_fn_imps.hpp | 118 - .../pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp | 602 - .../detail/gp_ht_map_/info_fn_imps.hpp | 68 - .../detail/gp_ht_map_/insert_fn_imps.hpp | 67 - .../insert_no_store_hash_fn_imps.hpp | 184 - .../gp_ht_map_/insert_store_hash_fn_imps.hpp | 195 - .../detail/gp_ht_map_/iterator_fn_imps.hpp | 181 - .../gp_ht_map_/policy_access_fn_imps.hpp | 124 - .../detail/gp_ht_map_/resize_fn_imps.hpp | 158 - .../resize_no_store_hash_fn_imps.hpp | 84 - .../gp_ht_map_/resize_store_hash_fn_imps.hpp | 93 - .../hash_fn/direct_mask_range_hashing_imp.hpp | 67 - .../hash_fn/direct_mod_range_hashing_imp.hpp | 67 - .../detail/hash_fn/linear_probe_fn_imp.hpp | 58 - .../hash_fn/mask_based_range_hashing.hpp | 141 - .../hash_fn/mod_based_range_hashing.hpp | 112 - .../pb_assoc/detail/hash_fn/probe_fn_base.hpp | 96 - .../detail/hash_fn/quadratic_probe_fn_imp.hpp | 57 - .../detail/hash_fn/ranged_hash_fn.hpp | 459 - .../detail/hash_fn/ranged_probe_fn.hpp | 473 - .../ext/pb_assoc/detail/hash_types_traits.hpp | 94 - .../constructor_destructor_fn_imps.hpp | 121 - .../lu_assoc_cntnr/policy_access_fn_imps.hpp | 77 - .../constructor_destructor_fn_imps.hpp | 178 - .../pb_assoc/detail/lu_map_/debug_fn_imps.hpp | 66 - .../pb_assoc/detail/lu_map_/erase_fn_imps.hpp | 129 - .../pb_assoc/detail/lu_map_/find_fn_imps.hpp | 136 - .../pb_assoc/detail/lu_map_/info_fn_imps.hpp | 67 - .../detail/lu_map_/insert_fn_imps.hpp | 148 - .../detail/lu_map_/iterators_fn_imps.hpp | 106 - .../ext/pb_assoc/detail/lu_map_/lu_map_.hpp | 464 - .../detail/lu_map_/policy_access_fn_imps.hpp | 60 - .../lu_policy/counter_lu_metadata_imp.hpp | 66 - .../lu_policy/counter_lu_policy_imp.hpp | 74 - .../detail/lu_policy/mtf_lu_policy_imp.hpp | 65 - .../ext/pb_assoc/detail/map_debug_base.hpp | 248 - .../ext/pb_assoc/detail/mapping_level_imp.hpp | 90 - .../ext/pb_assoc/detail/ms_category_imp.hpp | 81 - .../ext/pb_assoc/detail/ms_trait_imp.hpp | 136 - .../pb_assoc/detail/order_statistics_imp.hpp | 436 - .../detail/ov_tree_map_/cond_dtor.hpp | 88 - .../constructors_destructor_fn_imps.hpp | 278 - .../detail/ov_tree_map_/debug_fn_imps.hpp | 101 - .../detail/ov_tree_map_/erase_fn_imps.hpp | 234 - .../detail/ov_tree_map_/find_fn_imps.hpp | 44 - .../detail/ov_tree_map_/info_fn_imps.hpp | 95 - .../detail/ov_tree_map_/insert_fn_imps.hpp | 44 - .../detail/ov_tree_map_/iterators_fn_imps.hpp | 44 - .../detail/ov_tree_map_/node_iterators.hpp | 178 - .../detail/ov_tree_map_/ov_tree_map_.hpp | 628 - .../ov_tree_map_/split_join_fn_imps.hpp | 189 - .../constructors_destructor_fn_imps.hpp | 116 - .../detail/rb_tree_map_/debug_fn_imps.hpp | 87 - .../detail/rb_tree_map_/erase_fn_imps.hpp | 403 - .../detail/rb_tree_map_/find_fn_imps.hpp | 44 - .../detail/rb_tree_map_/info_fn_imps.hpp | 52 - .../detail/rb_tree_map_/insert_fn_imps.hpp | 176 - .../ext/pb_assoc/detail/rb_tree_map_/node.hpp | 89 - .../pb_assoc/detail/rb_tree_map_/rb_tree_.hpp | 360 - .../rb_tree_map_/split_join_fn_imps.hpp | 381 - ..._hash_max_collision_resize_trigger_imp.hpp | 227 - .../hash_exponential_size_policy_imp.hpp | 123 - .../hash_load_check_resize_trigger_imp.hpp | 352 - .../hash_prime_size_policy_imp.hpp | 150 - .../hash_standard_resize_policy_imp.hpp | 342 - .../ht_prime_size_policy_imp.hpp | 97 - .../detail/resize_policy/size_base.hpp | 170 - .../constructors_destructor_fn_imps.hpp | 112 - .../detail/splay_tree_/debug_fn_imps.hpp | 73 - .../detail/splay_tree_/erase_fn_imps.hpp | 245 - .../detail/splay_tree_/find_fn_imps.hpp | 122 - .../detail/splay_tree_/info_fn_imps.hpp | 43 - .../detail/splay_tree_/insert_fn_imps.hpp | 89 - .../ext/pb_assoc/detail/splay_tree_/node.hpp | 89 - .../detail/splay_tree_/splay_fn_imps.hpp | 289 - .../detail/splay_tree_/splay_tree_.hpp | 342 - .../detail/splay_tree_/split_join_fn_imps.hpp | 125 - .../ext/pb_assoc/detail/standard_policies.hpp | 188 - .../ext/pb_assoc/detail/standard_sizes.hpp | 65 - .../constructor_destructor_fn_imps.hpp | 130 - .../tree_policy/null_node_updator_imp.hpp | 49 - .../tree_policy/order_statistics_imp.hpp | 436 - .../ext/pb_assoc/detail/type_utils.hpp | 449 - .../include/ext/pb_assoc/detail/typelist.hpp | 220 - .../detail/typelist/typelist_append.hpp | 84 - .../detail/typelist/typelist_apply.hpp | 90 - .../detail/typelist/typelist_at_index.hpp | 80 - .../detail/typelist/typelist_contains.hpp | 99 - .../detail/typelist/typelist_filter.hpp | 97 - .../detail/typelist/typelist_transform.hpp | 87 - .../typelist/typelist_typelist_append.hpp | 89 - .../ext/pb_assoc/detail/types_traits.hpp | 295 - .../const_find_iterator.hpp | 138 - .../unordered_iterator/const_iterator.hpp | 122 - .../unordered_iterator/find_iterator.hpp | 147 - .../detail/unordered_iterator/iterator.hpp | 139 - .../constructor_destructor_and_related.hpp | 183 - .../value_type_adapter/erase_fn_imps.hpp | 43 - .../value_type_adapter/erase_if_pred.hpp | 72 - .../value_type_adapter/find_fn_imps.hpp | 43 - .../value_type_adapter/info_fn_imps.hpp | 68 - .../value_type_adapter/insert_fn_imps.hpp | 44 - .../invalidation_guarantee_selector.hpp | 128 - .../it_value_type_traits.hpp | 218 - .../detail/value_type_adapter/iterator.hpp | 196 - .../value_type_adapter/iterator_fn_imps.hpp | 44 - .../detail/value_type_adapter/ref_pair.hpp | 73 - .../value_type_adapter/value_type_adapter.hpp | 601 - .../value_type_adapter/value_type_traits.hpp | 102 - .../include/ext/pb_assoc/ds_trait.hpp | 125 - .../include/ext/pb_assoc/exception.hpp | 69 - .../include/ext/pb_assoc/hash_policy.hpp | 717 - .../include/ext/pb_assoc/lu_policy.hpp | 181 - .../include/ext/pb_assoc/ms_trait.hpp | 82 - .../include/ext/pb_assoc/tree_policy.hpp | 215 - .../ext/pb_assoc/trivial_iterator_def.hpp | 58 - .../include/ext/pod_char_traits.h | 185 - .../include/ext/pool_allocator.h | 255 - .../libstdc++-v3-4.1.0/include/ext/rb_tree | 97 - .../include/ext/rc_string_base.h | 702 - .../libstdc++-v3-4.1.0/include/ext/rope | 2901 - .../libstdc++-v3-4.1.0/include/ext/ropeimpl.h | 1706 - .../libstdc++-v3-4.1.0/include/ext/slist | 1079 - .../include/ext/sso_string_base.h | 573 - .../include/ext/stdio_filebuf.h | 161 - .../include/ext/stdio_sync_filebuf.h | 282 - .../libstdc++-v3-4.1.0/include/ext/typelist.h | 368 - .../libstdc++-v3-4.1.0/include/ext/vstring.h | 2192 - .../include/ext/vstring.tcc | 719 - .../include/ext/vstring_fwd.h | 74 - .../include/ext/vstring_util.h | 195 - .../include/std/std_algorithm.h | 70 - .../include/std/std_bitset.h | 1303 - .../include/std/std_complex.h | 1488 - .../include/std/std_deque.h | 80 - .../include/std/std_fstream.h | 785 - .../include/std/std_functional.h | 57 - .../include/std/std_iomanip.h | 299 - .../libstdc++-v3-4.1.0/include/std/std_ios.h | 52 - .../include/std/std_iosfwd.h | 167 - .../include/std/std_iostream.h | 79 - .../include/std/std_istream.h | 822 - .../include/std/std_iterator.h | 75 - .../include/std/std_limits.h | 1159 - .../libstdc++-v3-4.1.0/include/std/std_list.h | 81 - .../include/std/std_locale.h | 48 - .../libstdc++-v3-4.1.0/include/std/std_map.h | 73 - .../include/std/std_memory.h | 373 - .../include/std/std_numeric.h | 71 - .../include/std/std_ostream.h | 528 - .../include/std/std_queue.h | 77 - .../libstdc++-v3-4.1.0/include/std/std_set.h | 73 - .../include/std/std_sstream.h | 617 - .../include/std/std_stack.h | 72 - .../include/std/std_stdexcept.h | 147 - .../include/std/std_streambuf.h | 809 - .../include/std/std_string.h | 59 - .../include/std/std_utility.h | 69 - .../include/std/std_valarray.h | 1010 - .../include/std/std_vector.h | 82 - .../libstdc++-v3-4.1.0/include/stdc++.h | 82 - .../libstdc++-v3-4.1.0/include/tr1/array | 234 - .../include/tr1/bind_iterate.h | 78 - .../include/tr1/bind_repeat.h | 192 - .../include/tr1/boost_shared_ptr.h | 983 - .../libstdc++-v3-4.1.0/include/tr1/functional | 1280 - .../include/tr1/functional_iterate.h | 923 - .../libstdc++-v3-4.1.0/include/tr1/hashtable | 1869 - .../libstdc++-v3-4.1.0/include/tr1/memory | 51 - .../include/tr1/mu_iterate.h | 51 - .../libstdc++-v3-4.1.0/include/tr1/ref_fwd.h | 59 - .../include/tr1/ref_wrap_iterate.h | 44 - .../libstdc++-v3-4.1.0/include/tr1/repeat.h | 636 - .../libstdc++-v3-4.1.0/include/tr1/tuple | 275 - .../include/tr1/tuple_iterate.h | 166 - .../include/tr1/type_traits | 693 - .../include/tr1/type_traits_fwd.h | 225 - .../include/tr1/unordered_map | 170 - .../include/tr1/unordered_set | 165 - .../libstdc++-v3-4.1.0/include/tr1/utility | 98 - .../libstdc++-v3-4.1.0/libmath/Makefile.am | 41 - .../libstdc++-v3-4.1.0/libmath/Makefile.in | 482 - .../libstdc++-v3-4.1.0/libmath/copysignf.c | 39 - .../libstdc++-v3-4.1.0/libmath/mathconf.h | 309 - .../libstdc++-v3-4.1.0/libmath/signbit.c | 41 - .../libstdc++-v3-4.1.0/libmath/signbitf.c | 41 - .../libstdc++-v3-4.1.0/libmath/signbitl.c | 48 - .../libstdc++-v3-4.1.0/libmath/stubs.c | 455 - .../libstdc++-v3-4.1.0/libsupc++/Makefile.am | 168 - .../libstdc++-v3-4.1.0/libsupc++/Makefile.in | 720 - .../libstdc++-v3-4.1.0/libsupc++/cxxabi.h | 537 - .../libstdc++-v3-4.1.0/libsupc++/del_op.cc | 50 - .../libstdc++-v3-4.1.0/libsupc++/del_opnt.cc | 41 - .../libstdc++-v3-4.1.0/libsupc++/del_opv.cc | 38 - .../libstdc++-v3-4.1.0/libsupc++/del_opvnt.cc | 38 - .../libstdc++-v3-4.1.0/libsupc++/eh_alloc.cc | 183 - .../libstdc++-v3-4.1.0/libsupc++/eh_arm.cc | 170 - .../libsupc++/eh_aux_runtime.cc | 56 - .../libstdc++-v3-4.1.0/libsupc++/eh_call.cc | 162 - .../libstdc++-v3-4.1.0/libsupc++/eh_catch.cc | 144 - .../libsupc++/eh_exception.cc | 44 - .../libsupc++/eh_globals.cc | 164 - .../libsupc++/eh_personality.cc | 748 - .../libsupc++/eh_term_handler.cc | 51 - .../libsupc++/eh_terminate.cc | 83 - .../libstdc++-v3-4.1.0/libsupc++/eh_throw.cc | 111 - .../libstdc++-v3-4.1.0/libsupc++/eh_type.cc | 51 - .../libsupc++/eh_unex_handler.cc | 34 - .../libstdc++-v3-4.1.0/libsupc++/exception | 124 - .../libsupc++/exception_defines.h | 47 - .../libstdc++-v3-4.1.0/libsupc++/guard.cc | 230 - .../contrib/libstdc++-v3-4.1.0/libsupc++/new | 105 - .../libsupc++/new_handler.cc | 47 - .../libstdc++-v3-4.1.0/libsupc++/new_op.cc | 72 - .../libstdc++-v3-4.1.0/libsupc++/new_opnt.cc | 67 - .../libstdc++-v3-4.1.0/libsupc++/new_opv.cc | 38 - .../libstdc++-v3-4.1.0/libsupc++/new_opvnt.cc | 38 - .../libstdc++-v3-4.1.0/libsupc++/pure.cc | 56 - .../libstdc++-v3-4.1.0/libsupc++/tinfo.cc | 743 - .../libstdc++-v3-4.1.0/libsupc++/tinfo.h | 36 - .../libstdc++-v3-4.1.0/libsupc++/tinfo2.cc | 167 - .../libstdc++-v3-4.1.0/libsupc++/typeinfo | 162 - .../libstdc++-v3-4.1.0/libsupc++/unwind-cxx.h | 251 - .../libstdc++-v3-4.1.0/libsupc++/vec.cc | 512 - .../libsupc++/vterminate.cc | 100 - .../contrib/libstdc++-v3-4.1.0/linkage.m4 | 542 - .../contrib/libstdc++-v3-4.1.0/po/Makefile.am | 86 - .../contrib/libstdc++-v3-4.1.0/po/Makefile.in | 466 - .../contrib/libstdc++-v3-4.1.0/po/POTFILES.in | 25 - .../contrib/libstdc++-v3-4.1.0/po/de.po | 31 - .../contrib/libstdc++-v3-4.1.0/po/fr.po | 31 - .../libstdc++-v3-4.1.0/po/libstdc++.pot | 56 - .../libstdc++-v3-4.1.0/po/string_literals.cc | 38 - .../libstdc++-v3-4.1.0/scripts/check_compile | 53 - .../scripts/check_performance | 82 - .../scripts/create_testsuite_files | 56 - .../scripts/extract_symvers | 67 - .../scripts/gen_bind_includers.pl | 30 - .../scripts/gen_includers.pl | 108 - .../scripts/make_exports.pl | 144 - .../scripts/testsuite_flags.in | 64 - .../libstdc++-v3-4.1.0/src/Makefile.am | 268 - .../libstdc++-v3-4.1.0/src/Makefile.in | 765 - .../libstdc++-v3-4.1.0/src/allocator-inst.cc | 40 - .../src/bitmap_allocator.cc | 127 - .../contrib/libstdc++-v3-4.1.0/src/codecvt.cc | 152 - .../libstdc++-v3-4.1.0/src/compatibility.cc | 388 - .../libstdc++-v3-4.1.0/src/complex_io.cc | 93 - .../libstdc++-v3-4.1.0/src/concept-inst.cc | 112 - .../contrib/libstdc++-v3-4.1.0/src/ctype.cc | 114 - .../contrib/libstdc++-v3-4.1.0/src/debug.cc | 670 - .../libstdc++-v3-4.1.0/src/debug_list.cc | 34 - .../libstdc++-v3-4.1.0/src/ext-inst.cc | 69 - .../libstdc++-v3-4.1.0/src/fstream-inst.cc | 62 - .../libstdc++-v3-4.1.0/src/functexcept.cc | 157 - .../libstdc++-v3-4.1.0/src/globals_io.cc | 129 - .../libstdc++-v3-4.1.0/src/globals_locale.cc | 210 - .../libstdc++-v3-4.1.0/src/ios-inst.cc | 44 - .../contrib/libstdc++-v3-4.1.0/src/ios.cc | 228 - .../libstdc++-v3-4.1.0/src/ios_failure.cc | 48 - .../libstdc++-v3-4.1.0/src/ios_init.cc | 199 - .../libstdc++-v3-4.1.0/src/ios_locale.cc | 60 - .../libstdc++-v3-4.1.0/src/iostream-inst.cc | 49 - .../libstdc++-v3-4.1.0/src/istream-inst.cc | 70 - .../contrib/libstdc++-v3-4.1.0/src/istream.cc | 646 - .../contrib/libstdc++-v3-4.1.0/src/limits.cc | 449 - .../contrib/libstdc++-v3-4.1.0/src/list.cc | 141 - .../libstdc++-v3-4.1.0/src/locale-inst.cc | 316 - .../src/locale-misc-inst.cc | 47 - .../contrib/libstdc++-v3-4.1.0/src/locale.cc | 406 - .../libstdc++-v3-4.1.0/src/locale_facets.cc | 93 - .../libstdc++-v3-4.1.0/src/locale_init.cc | 347 - .../libstdc++-v3-4.1.0/src/localename.cc | 302 - .../libstdc++-v3-4.1.0/src/misc-inst.cc | 79 - .../libstdc++-v3-4.1.0/src/mt_allocator.cc | 784 - .../libstdc++-v3-4.1.0/src/ostream-inst.cc | 76 - .../libstdc++-v3-4.1.0/src/pool_allocator.cc | 173 - .../libstdc++-v3-4.1.0/src/sstream-inst.cc | 62 - .../libstdc++-v3-4.1.0/src/stdexcept.cc | 78 - .../libstdc++-v3-4.1.0/src/streambuf-inst.cc | 56 - .../libstdc++-v3-4.1.0/src/streambuf.cc | 103 - .../libstdc++-v3-4.1.0/src/string-inst.cc | 91 - .../libstdc++-v3-4.1.0/src/strstream.cc | 416 - .../contrib/libstdc++-v3-4.1.0/src/tree.cc | 431 - .../libstdc++-v3-4.1.0/src/valarray-inst.cc | 115 - .../libstdc++-v3-4.1.0/src/wlocale-inst.cc | 39 - .../libstdc++-v3-4.1.0/src/wstring-inst.cc | 39 - .../contrib/libstdc++-v3-4.3.3/ChangeLog | 1301 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-1998 | 942 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-1999 | 3545 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-2000 | 5644 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-2001 | 6067 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-2002 | 5590 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-2003 | 8619 -- .../contrib/libstdc++-v3-4.3.3/ChangeLog-2004 | 6707 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-2005 | 5468 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-2006 | 5851 - .../contrib/libstdc++-v3-4.3.3/ChangeLog-2007 | 8243 - .../contrib/libstdc++-v3-4.3.3/Makefile.am | 95 - .../contrib/libstdc++-v3-4.3.3/Makefile.in | 803 - .../contrib/libstdc++-v3-4.3.3/README | 6 - .../contrib/libstdc++-v3-4.3.3/acinclude.m4 | 2439 - .../contrib/libstdc++-v3-4.3.3/aclocal.m4 | 599 - .../contrib/libstdc++-v3-4.3.3/config.h.in | 1104 - .../config/abi/compatibility.h | 219 - .../post/alpha-linux-gnu/baseline_symbols.txt | 3169 - .../post/hppa-linux-gnu/baseline_symbols.txt | 3169 - .../post/i386-linux-gnu/baseline_symbols.txt | 3268 - .../post/i486-linux-gnu/baseline_symbols.txt | 3268 - .../post/ia64-linux-gnu/baseline_symbols.txt | 3268 - .../post/mips-linux-gnu/baseline_symbols.txt | 3290 - .../powerpc-linux-gnu/baseline_symbols.txt | 3573 - .../32/baseline_symbols.txt | 3573 - .../powerpc64-linux-gnu/baseline_symbols.txt | 3573 - .../post/s390-linux-gnu/baseline_symbols.txt | 3573 - .../post/s390x-linux-gnu/baseline_symbols.txt | 3169 - .../post/sparc-linux-gnu/baseline_symbols.txt | 3573 - .../x86_64-linux-gnu/32/baseline_symbols.txt | 3268 - .../x86_64-linux-gnu/baseline_symbols.txt | 3268 - .../abi/pre/gnu-versioned-namespace.ver | 239 - .../libstdc++-v3-4.3.3/config/abi/pre/gnu.ver | 911 - .../config/abi/pre/none.ver | 7 - .../config/allocator/bitmap_allocator_base.h | 42 - .../config/allocator/malloc_allocator_base.h | 42 - .../config/allocator/mt_allocator_base.h | 42 - .../config/allocator/new_allocator_base.h | 42 - .../config/allocator/pool_allocator_base.h | 42 - .../config/cpu/alpha/atomic_word.h | 38 - .../config/cpu/arm/cxxabi_tweaks.h | 86 - .../config/cpu/cris/atomic_word.h | 36 - .../config/cpu/cris/atomicity.h | 91 - .../config/cpu/generic/atomic_word.h | 52 - .../generic/atomicity_builtins/atomicity.h | 50 - .../cpu/generic/atomicity_mutex/atomicity.h | 66 - .../config/cpu/generic/cpu_defines.h | 38 - .../config/cpu/generic/cxxabi_tweaks.h | 63 - .../config/cpu/hppa/atomicity.h | 96 - .../config/cpu/i386/atomicity.h | 75 - .../config/cpu/i486/atomicity.h | 54 - .../config/cpu/ia64/atomic_word.h | 69 - .../config/cpu/m68k/atomicity.h | 134 - .../config/cpu/mips/atomicity.h | 86 - .../config/cpu/powerpc/atomic_word.h | 42 - .../config/cpu/powerpc/cpu_defines.h | 41 - .../config/cpu/sh/atomicity.h | 107 - .../config/cpu/sparc/atomic_word.h | 53 - .../config/cpu/sparc/atomicity.h | 127 - .../config/io/basic_file_stdio.cc | 385 - .../config/io/basic_file_stdio.h | 113 - .../libstdc++-v3-4.3.3/config/io/c_io_stdio.h | 54 - .../config/locale/darwin/ctype_members.cc | 177 - .../locale/generic/c++locale_internal.h | 30 - .../config/locale/generic/c_locale.cc | 232 - .../config/locale/generic/c_locale.h | 96 - .../config/locale/generic/codecvt_members.cc | 222 - .../config/locale/generic/collate_members.cc | 75 - .../config/locale/generic/ctype_members.cc | 273 - .../config/locale/generic/messages_members.cc | 53 - .../config/locale/generic/messages_members.h | 95 - .../config/locale/generic/monetary_members.cc | 172 - .../config/locale/generic/numeric_members.cc | 108 - .../config/locale/generic/time_members.cc | 214 - .../config/locale/generic/time_members.h | 95 - .../config/locale/gnu/c++locale_internal.h | 69 - .../config/locale/gnu/c_locale.cc | 149 - .../config/locale/gnu/c_locale.h | 115 - .../config/locale/gnu/codecvt_members.cc | 310 - .../config/locale/gnu/collate_members.cc | 74 - .../config/locale/gnu/ctype_members.cc | 307 - .../config/locale/gnu/messages_members.cc | 88 - .../config/locale/gnu/messages_members.h | 133 - .../config/locale/gnu/monetary_members.cc | 662 - .../config/locale/gnu/numeric_members.cc | 152 - .../config/locale/gnu/time_members.cc | 403 - .../config/locale/gnu/time_members.h | 92 - .../locale/ieee_1003.1-2001/c_locale.cc | 112 - .../config/locale/ieee_1003.1-2001/c_locale.h | 51 - .../ieee_1003.1-2001/messages_members.cc | 61 - .../ieee_1003.1-2001/messages_members.h | 77 - .../config/os/aix/atomic_word.h | 43 - .../config/os/aix/atomicity.h | 58 - .../config/os/aix/ctype_base.h | 60 - .../config/os/aix/ctype_inline.h | 76 - .../config/os/aix/ctype_noninline.h | 97 - .../config/os/aix/os_defines.h | 56 - .../config/os/bsd/darwin/ctype_base.h | 76 - .../config/os/bsd/darwin/ctype_inline.h | 152 - .../config/os/bsd/darwin/ctype_noninline.h | 96 - .../config/os/bsd/darwin/os_defines.h | 47 - .../config/os/bsd/darwin/ppc-extra.ver | 1 - .../config/os/bsd/freebsd/ctype_base.h | 78 - .../config/os/bsd/freebsd/ctype_inline.h | 152 - .../config/os/bsd/freebsd/ctype_noninline.h | 96 - .../config/os/bsd/freebsd/os_defines.h | 44 - .../config/os/bsd/netbsd/ctype_base.h | 63 - .../config/os/bsd/netbsd/ctype_inline.h | 80 - .../config/os/bsd/netbsd/ctype_noninline.h | 98 - .../config/os/bsd/netbsd/os_defines.h | 38 - .../config/os/djgpp/ctype_base.h | 59 - .../config/os/djgpp/ctype_inline.h | 78 - .../config/os/djgpp/ctype_noninline.h | 96 - .../config/os/djgpp/os_defines.h | 45 - .../config/os/generic/ctype_base.h | 60 - .../config/os/generic/ctype_inline.h | 170 - .../config/os/generic/ctype_noninline.h | 97 - .../config/os/generic/os_defines.h | 41 - .../config/os/gnu-linux/ctype_base.h | 66 - .../config/os/gnu-linux/ctype_inline.h | 78 - .../config/os/gnu-linux/ctype_noninline.h | 195 - .../config/os/gnu-linux/ldbl-extra.ver | 32 - .../config/os/gnu-linux/os_defines.h | 51 - .../config/os/hpux/ctype_base.h | 60 - .../config/os/hpux/ctype_inline.h | 78 - .../config/os/hpux/ctype_noninline.h | 97 - .../config/os/hpux/os_defines.h | 108 - .../config/os/irix/atomic_word.h | 35 - .../config/os/irix/atomicity.h | 43 - .../config/os/irix/irix5.2/ctype_base.h | 60 - .../config/os/irix/irix5.2/ctype_inline.h | 76 - .../config/os/irix/irix5.2/ctype_noninline.h | 98 - .../config/os/irix/irix5.2/os_defines.h | 51 - .../config/os/irix/irix6.5/ctype_base.h | 60 - .../config/os/irix/irix6.5/ctype_inline.h | 76 - .../config/os/irix/irix6.5/ctype_noninline.h | 99 - .../config/os/irix/irix6.5/os_defines.h | 54 - .../config/os/mingw32/ctype_base.h | 66 - .../config/os/mingw32/ctype_inline.h | 77 - .../config/os/mingw32/ctype_noninline.h | 245 - .../config/os/mingw32/os_defines.h | 55 - .../config/os/newlib/ctype_base.h | 62 - .../config/os/newlib/ctype_inline.h | 76 - .../config/os/newlib/ctype_noninline.h | 103 - .../config/os/newlib/os_defines.h | 48 - .../config/os/qnx/qnx6.1/ctype_base.h | 60 - .../config/os/qnx/qnx6.1/ctype_inline.h | 76 - .../config/os/qnx/qnx6.1/ctype_noninline.h | 94 - .../config/os/qnx/qnx6.1/os_defines.h | 36 - .../config/os/solaris/solaris2.5/ctype_base.h | 60 - .../os/solaris/solaris2.5/ctype_inline.h | 78 - .../os/solaris/solaris2.5/ctype_noninline.h | 96 - .../config/os/solaris/solaris2.5/os_defines.h | 36 - .../config/os/solaris/solaris2.6/ctype_base.h | 61 - .../os/solaris/solaris2.6/ctype_inline.h | 85 - .../os/solaris/solaris2.6/ctype_noninline.h | 96 - .../config/os/solaris/solaris2.6/os_defines.h | 36 - .../config/os/solaris/solaris2.7/ctype_base.h | 62 - .../os/solaris/solaris2.7/ctype_inline.h | 78 - .../os/solaris/solaris2.7/ctype_noninline.h | 97 - .../config/os/solaris/solaris2.7/os_defines.h | 37 - .../config/os/tpf/ctype_base.h | 60 - .../config/os/tpf/ctype_inline.h | 78 - .../config/os/tpf/ctype_noninline.h | 117 - .../config/os/tpf/os_defines.h | 50 - .../config/os/uclibc/ctype_base.h | 68 - .../config/os/uclibc/ctype_inline.h | 78 - .../config/os/uclibc/ctype_noninline.h | 97 - .../config/os/uclibc/os_defines.h | 49 - .../config/os/vxworks/ctype_base.h | 61 - .../config/os/vxworks/ctype_inline.h | 80 - .../config/os/vxworks/ctype_noninline.h | 97 - .../config/os/vxworks/os_defines.h | 41 - .../config/os/windiss/ctype_base.h | 60 - .../config/os/windiss/ctype_inline.h | 134 - .../config/os/windiss/ctype_noninline.h | 97 - .../config/os/windiss/os_defines.h | 42 - .../contrib/libstdc++-v3-4.3.3/configure | 118971 --------------- .../contrib/libstdc++-v3-4.3.3/configure.ac | 420 - .../contrib/libstdc++-v3-4.3.3/configure.host | 336 - .../contrib/libstdc++-v3-4.3.3/crossconfig.m4 | 470 - .../libstdc++-v3-4.3.3/doc/Makefile.am | 236 - .../libstdc++-v3-4.3.3/doc/Makefile.in | 646 - .../libstdc++-v3-4.3.3/doc/doxygen/Intro.3 | 132 - .../libstdc++-v3-4.3.3/doc/doxygen/TODO | 70 - .../doc/doxygen/doxygroups.cc | 236 - .../doc/doxygen/mainpage.html | 108 - .../doc/doxygen/stdheader.cc | 170 - .../doc/doxygen/tables.html | 644 - .../doc/doxygen/user.cfg.in | 1420 - .../libstdc++-v3-4.3.3/doc/html/README | 3 - .../libstdc++-v3-4.3.3/doc/html/api.html | 51 - .../libstdc++-v3-4.3.3/doc/html/bk02.html | 3 - .../libstdc++-v3-4.3.3/doc/html/bk03.html | 3 - .../doc/html/ext/lwg-active.html | 14696 -- .../doc/html/ext/lwg-closed.html | 10627 -- .../doc/html/ext/lwg-defects.html | 24284 --- .../doc/html/ext/pb_ds/PythonPoweredSmall.gif | Bin 361 -> 0 bytes .../doc/html/ext/pb_ds/acks.html | 65 - .../html/ext/pb_ds/assoc_container_tag_cd.png | Bin 21668 -> 0 bytes .../html/ext/pb_ds/assoc_container_tag_cd.svg | 491 - .../ext/pb_ds/assoc_container_traits.html | 170 - .../doc/html/ext/pb_ds/assoc_design.html | 46 - .../doc/html/ext/pb_ds/assoc_examples.html | 174 - .../ext/pb_ds/assoc_performance_tests.html | 345 - .../ext/pb_ds/assoc_regression_tests.html | 96 - .../doc/html/ext/pb_ds/assoc_tests.html | 24 - .../ext/pb_ds/associative_container_tag.html | 47 - .../doc/html/ext/pb_ds/balls_and_bins.png | Bin 10139 -> 0 bytes .../doc/html/ext/pb_ds/basic_hash_table.html | 436 - .../doc/html/ext/pb_ds/basic_hash_tag.html | 47 - .../pb_ds/basic_invalidation_guarantee.html | 26 - .../doc/html/ext/pb_ds/basic_tree.html | 660 - ...e_assoc_container_const_node_iterator.html | 383 - .../doc/html/ext/pb_ds/basic_tree_tag.html | 47 - .../doc/html/ext/pb_ds/binary_heap_tag.html | 47 - ..._queue_random_int_push_timing_test_gcc.png | Bin 5357 -> 0 bytes ...ueue_random_int_push_timing_test_local.png | Bin 6710 -> 0 bytes ...queue_random_int_push_timing_test_msvc.png | Bin 5373 -> 0 bytes .../doc/html/ext/pb_ds/binomial_heap_tag.html | 47 - ...sh_max_collision_check_resize_trigger.html | 532 - ...c_hash_random_int_find_timing_test_gcc.png | Bin 7074 -> 0 bytes ...hash_random_int_find_timing_test_local.png | Bin 8534 -> 0 bytes ..._hash_random_int_find_timing_test_msvc.png | Bin 7235 -> 0 bytes ...dom_int_subscript_timing_test_find_gcc.png | Bin 6811 -> 0 bytes ...m_int_subscript_timing_test_find_local.png | Bin 8445 -> 0 bytes ...om_int_subscript_timing_test_find_msvc.png | Bin 7230 -> 0 bytes ...m_int_subscript_timing_test_insert_gcc.png | Bin 7636 -> 0 bytes ...int_subscript_timing_test_insert_local.png | Bin 9396 -> 0 bytes ..._int_subscript_timing_test_insert_msvc.png | Bin 6840 -> 0 bytes .../doc/html/ext/pb_ds/cc_hash_table.html | 724 - .../doc/html/ext/pb_ds/cc_hash_tag.html | 47 - ...m_int_subscript_timing_test_insert_gcc.png | Bin 7355 -> 0 bytes ...int_subscript_timing_test_insert_local.png | Bin 9557 -> 0 bytes ..._int_subscript_timing_test_insert_msvc.png | Bin 7572 -> 0 bytes .../doc/html/ext/pb_ds/checked_by_tidy.gif | Bin 1367 -> 0 bytes .../doc/html/ext/pb_ds/concepts.html | 118 - .../doc/html/ext/pb_ds/contact.html | 22 - .../doc/html/ext/pb_ds/container_base.html | 1063 - .../doc/html/ext/pb_ds/container_cd.png | Bin 11884 -> 0 bytes .../doc/html/ext/pb_ds/container_cd.svg | 418 - .../doc/html/ext/pb_ds/container_tag.html | 24 - .../doc/html/ext/pb_ds/counter_lu_policy.html | 259 - .../doc/html/ext/pb_ds/design.html | 96 - .../ext/pb_ds/different_underlying_dss.png | Bin 31858 -> 0 bytes .../ext/pb_ds/direct_mask_range_hashing.html | 167 - .../ext/pb_ds/direct_mod_range_hashing.html | 144 - .../doc/html/ext/pb_ds/disclaimer.html | 34 - .../doc/html/ext/pb_ds/ds_gen.html | 344 - .../doc/html/ext/pb_ds/embedded_lists_1.png | Bin 16350 -> 0 bytes .../doc/html/ext/pb_ds/embedded_lists_2.png | Bin 18206 -> 0 bytes .../doc/html/ext/pb_ds/embedded_lists_3.png | Bin 5612 -> 0 bytes .../doc/html/ext/pb_ds/examples.html | 24 - .../doc/html/ext/pb_ds/exceptions.html | 46 - ...p_hash_random_int_find_timing_test_gcc.png | Bin 6194 -> 0 bytes ...hash_random_int_find_timing_test_local.png | Bin 7916 -> 0 bytes ..._hash_random_int_find_timing_test_msvc.png | Bin 6140 -> 0 bytes ...dom_int_subscript_timing_test_find_gcc.png | Bin 6110 -> 0 bytes ...m_int_subscript_timing_test_find_local.png | Bin 7570 -> 0 bytes ...om_int_subscript_timing_test_find_msvc.png | Bin 6314 -> 0 bytes ...m_int_subscript_timing_test_insert_gcc.png | Bin 6763 -> 0 bytes ...int_subscript_timing_test_insert_local.png | Bin 8499 -> 0 bytes ..._int_subscript_timing_test_insert_msvc.png | Bin 6721 -> 0 bytes .../doc/html/ext/pb_ds/gp_hash_table.html | 891 - .../doc/html/ext/pb_ds/gp_hash_tag.html | 47 - .../html/ext/pb_ds/hash_based_containers.html | 835 - .../pb_ds/hash_exponential_size_policy.html | 183 - .../pb_ds/hash_load_check_resize_trigger.html | 583 - .../doc/html/ext/pb_ds/hash_policy_cd.png | Bin 25302 -> 0 bytes .../ext/pb_ds/hash_prime_size_policy.html | 149 - .../hash_random_int_erase_mem_usage_test.html | 173 - ...sh_random_int_erase_mem_usage_test_gcc.png | Bin 6356 -> 0 bytes ..._random_int_erase_mem_usage_test_local.png | Bin 7405 -> 0 bytes ...h_random_int_erase_mem_usage_test_msvc.png | Bin 6401 -> 0 bytes ...hash_random_int_find_find_timing_test.html | 247 - ...random_int_subscript_find_timing_test.html | 220 - ...ndom_int_subscript_insert_timing_test.html | 365 - .../pb_ds/hash_range_hashing_seq_diagram.png | Bin 12962 -> 0 bytes .../pb_ds/hash_range_hashing_seq_diagram2.png | Bin 8918 -> 0 bytes .../hash_ranged_hash_range_hashing_fns.png | Bin 19773 -> 0 bytes .../pb_ds/hash_standard_resize_policy.html | 795 - .../hash_text_find_find_timing_test.html | 164 - ...zlob_random_int_find_find_timing_test.html | 163 - ...h_zlob_random_int_find_timing_test_gcc.png | Bin 6910 -> 0 bytes ...zlob_random_int_find_timing_test_local.png | Bin 8436 -> 0 bytes ..._zlob_random_int_find_timing_test_msvc.png | Bin 7204 -> 0 bytes .../doc/html/ext/pb_ds/index.html | 146 - .../doc/html/ext/pb_ds/insert_error.html | 53 - .../pb_ds/insert_resize_sequence_diagram1.png | Bin 25834 -> 0 bytes .../pb_ds/insert_resize_sequence_diagram2.png | Bin 25522 -> 0 bytes .../pb_ds/insert_resize_sequence_diagram3.png | Bin 24542 -> 0 bytes .../doc/html/ext/pb_ds/interface.html | 446 - .../doc/html/ext/pb_ds/introduction.html | 120 - .../ext/pb_ds/invalidation_guarantee_cd.png | Bin 8331 -> 0 bytes .../pb_ds/invalidation_guarantee_erase.png | Bin 25884 -> 0 bytes .../doc/html/ext/pb_ds/join_error.html | 48 - .../doc/html/ext/pb_ds/linear_probe_fn.html | 140 - .../doc/html/ext/pb_ds/list_update.html | 316 - .../doc/html/ext/pb_ds/list_update_tag.html | 47 - .../doc/html/ext/pb_ds/lu.png | Bin 20987 -> 0 bytes .../html/ext/pb_ds/lu_based_containers.html | 229 - .../doc/html/ext/pb_ds/misc.html | 26 - .../doc/html/ext/pb_ds/motivation.html | 993 - .../ext/pb_ds/move_to_front_lu_policy.html | 194 - .../multimap_text_find_timing_test_large.html | 215 - ...xt_find_timing_test_large_s2p_hash_gcc.png | Bin 6323 -> 0 bytes ..._find_timing_test_large_s2p_hash_local.png | Bin 7299 -> 0 bytes ...t_find_timing_test_large_s2p_hash_msvc.png | Bin 6490 -> 0 bytes ...xt_find_timing_test_large_s2p_tree_gcc.png | Bin 6284 -> 0 bytes ..._find_timing_test_large_s2p_tree_local.png | Bin 6706 -> 0 bytes ...t_find_timing_test_large_s2p_tree_msvc.png | Bin 6204 -> 0 bytes .../multimap_text_find_timing_test_small.html | 215 - ...xt_find_timing_test_small_s2p_hash_gcc.png | Bin 6237 -> 0 bytes ..._find_timing_test_small_s2p_hash_local.png | Bin 6732 -> 0 bytes ...t_find_timing_test_small_s2p_hash_msvc.png | Bin 6268 -> 0 bytes ...xt_find_timing_test_small_s2p_tree_gcc.png | Bin 6064 -> 0 bytes ..._find_timing_test_small_s2p_tree_local.png | Bin 6396 -> 0 bytes ...t_find_timing_test_small_s2p_tree_msvc.png | Bin 6012 -> 0 bytes ...imap_text_insert_mem_usage_test_large.html | 210 - ...sert_mem_usage_test_large_s2p_hash_gcc.png | Bin 6835 -> 0 bytes ...rt_mem_usage_test_large_s2p_hash_local.png | Bin 7275 -> 0 bytes ...ert_mem_usage_test_large_s2p_hash_msvc.png | Bin 6588 -> 0 bytes ...sert_mem_usage_test_large_s2p_tree_gcc.png | Bin 6778 -> 0 bytes ...rt_mem_usage_test_large_s2p_tree_local.png | Bin 7191 -> 0 bytes ...ert_mem_usage_test_large_s2p_tree_msvc.png | Bin 6535 -> 0 bytes ...imap_text_insert_mem_usage_test_small.html | 212 - ...sert_mem_usage_test_small_s2p_hash_gcc.png | Bin 6449 -> 0 bytes ...rt_mem_usage_test_small_s2p_hash_local.png | Bin 6845 -> 0 bytes ...ert_mem_usage_test_small_s2p_hash_msvc.png | Bin 6570 -> 0 bytes ...sert_mem_usage_test_small_s2p_tree_gcc.png | Bin 6419 -> 0 bytes ...rt_mem_usage_test_small_s2p_tree_local.png | Bin 6925 -> 0 bytes ...ert_mem_usage_test_small_s2p_tree_msvc.png | Bin 6569 -> 0 bytes ...ultimap_text_insert_timing_test_large.html | 212 - ..._insert_timing_test_large_s2p_hash_gcc.png | Bin 6380 -> 0 bytes ...nsert_timing_test_large_s2p_hash_local.png | Bin 7000 -> 0 bytes ...insert_timing_test_large_s2p_hash_msvc.png | Bin 6460 -> 0 bytes ..._insert_timing_test_large_s2p_tree_gcc.png | Bin 6204 -> 0 bytes ...nsert_timing_test_large_s2p_tree_local.png | Bin 6764 -> 0 bytes ...insert_timing_test_large_s2p_tree_msvc.png | Bin 6357 -> 0 bytes ...ultimap_text_insert_timing_test_small.html | 217 - ..._insert_timing_test_small_s2p_hash_gcc.png | Bin 6456 -> 0 bytes ...nsert_timing_test_small_s2p_hash_local.png | Bin 7035 -> 0 bytes ...insert_timing_test_small_s2p_hash_msvc.png | Bin 6547 -> 0 bytes ..._insert_timing_test_small_s2p_tree_gcc.png | Bin 6111 -> 0 bytes ...nsert_timing_test_small_s2p_tree_local.png | Bin 6853 -> 0 bytes ...insert_timing_test_small_s2p_tree_msvc.png | Bin 6430 -> 0 bytes .../pb_ds/node_invariant_invalidations.png | Bin 32276 -> 0 bytes .../doc/html/ext/pb_ds/node_invariants.png | Bin 16553 -> 0 bytes .../doc/html/ext/pb_ds/null_hash_fn.html | 32 - .../doc/html/ext/pb_ds/null_lu_metadata.html | 25 - .../doc/html/ext/pb_ds/null_mapped_type.html | 25 - .../doc/html/ext/pb_ds/null_probe_fn.html | 29 - .../html/ext/pb_ds/null_tree_node_update.html | 101 - .../html/ext/pb_ds/null_trie_node_update.html | 102 - .../doc/html/ext/pb_ds/ov_tree_tag.html | 47 - .../doc/html/ext/pb_ds/pairing_heap_tag.html | 47 - ...ty_queue_text_push_pop_timing_test_gcc.png | Bin 5395 -> 0 bytes ..._queue_text_push_pop_timing_test_local.png | Bin 6892 -> 0 bytes ...y_queue_text_push_pop_timing_test_msvc.png | Bin 5514 -> 0 bytes ...iority_queue_text_push_timing_test_gcc.png | Bin 5678 -> 0 bytes ...rity_queue_text_push_timing_test_local.png | Bin 6760 -> 0 bytes ...ority_queue_text_push_timing_test_msvc.png | Bin 5878 -> 0 bytes .../doc/html/ext/pb_ds/pat_trie.png | Bin 26182 -> 0 bytes .../doc/html/ext/pb_ds/pat_trie_tag.html | 47 - .../pb_ds/point_invalidation_guarantee.html | 51 - .../doc/html/ext/pb_ds/point_iterators_cd.png | Bin 20307 -> 0 bytes .../ext/pb_ds/point_iterators_range_ops_1.png | Bin 14206 -> 0 bytes .../ext/pb_ds/point_iterators_range_ops_2.png | Bin 12876 -> 0 bytes .../html/ext/pb_ds/pq_container_traits.html | 132 - .../doc/html/ext/pb_ds/pq_design.html | 381 - .../ext/pb_ds/pq_different_underlying_dss.png | Bin 15660 -> 0 bytes .../doc/html/ext/pb_ds/pq_examples.html | 60 - .../html/ext/pb_ds/pq_performance_tests.html | 332 - .../html/ext/pb_ds/pq_regression_tests.html | 52 - .../doc/html/ext/pb_ds/pq_tests.html | 24 - .../doc/html/ext/pb_ds/prerequisites.html | 46 - .../doc/html/ext/pb_ds/priority_queue.html | 995 - ...queue_random_int_push_pop_timing_test.html | 161 - ...ue_random_int_push_pop_timing_test_gcc.png | Bin 7350 -> 0 bytes ..._random_int_push_pop_timing_test_local.png | Bin 9275 -> 0 bytes ...e_random_int_push_pop_timing_test_msvc.png | Bin 7065 -> 0 bytes ...ity_queue_random_int_push_timing_test.html | 200 - ..._queue_random_int_push_timing_test_gcc.png | Bin 7021 -> 0 bytes ...ueue_random_int_push_timing_test_local.png | Bin 8986 -> 0 bytes ...queue_random_int_push_timing_test_msvc.png | Bin 7100 -> 0 bytes .../html/ext/pb_ds/priority_queue_tag.html | 47 - .../html/ext/pb_ds/priority_queue_tag_cd.png | Bin 10845 -> 0 bytes .../html/ext/pb_ds/priority_queue_tag_cd.svg | 368 - .../priority_queue_text_join_timing_test.html | 141 - ...iority_queue_text_join_timing_test_gcc.png | Bin 6458 -> 0 bytes ...rity_queue_text_join_timing_test_local.png | Bin 7989 -> 0 bytes ...ority_queue_text_join_timing_test_msvc.png | Bin 6461 -> 0 bytes ...ty_queue_text_modify_down_timing_test.html | 204 - ...queue_text_modify_down_timing_test_gcc.png | Bin 6788 -> 0 bytes ...eue_text_modify_down_timing_test_local.png | Bin 7633 -> 0 bytes ...ueue_text_modify_down_timing_test_msvc.png | Bin 6956 -> 0 bytes ...dify_down_timing_test_pairing_thin_gcc.png | Bin 5007 -> 0 bytes ...fy_down_timing_test_pairing_thin_local.png | Bin 5878 -> 0 bytes ...ify_down_timing_test_pairing_thin_msvc.png | Bin 4996 -> 0 bytes ...rity_queue_text_modify_up_timing_test.html | 222 - ...y_queue_text_modify_up_timing_test_gcc.png | Bin 6950 -> 0 bytes ...queue_text_modify_up_timing_test_local.png | Bin 7748 -> 0 bytes ..._queue_text_modify_up_timing_test_msvc.png | Bin 6983 -> 0 bytes ...modify_up_timing_test_pairing_thin_gcc.png | Bin 4867 -> 0 bytes ...dify_up_timing_test_pairing_thin_local.png | Bin 6105 -> 0 bytes ...odify_up_timing_test_pairing_thin_msvc.png | Bin 5216 -> 0 bytes ...riority_queue_text_pop_mem_usage_test.html | 143 - ...rity_queue_text_pop_mem_usage_test_gcc.png | Bin 6582 -> 0 bytes ...ty_queue_text_pop_mem_usage_test_local.png | Bin 7424 -> 0 bytes ...ity_queue_text_pop_mem_usage_test_msvc.png | Bin 6849 -> 0 bytes ...ority_queue_text_push_pop_timing_test.html | 209 - ...ty_queue_text_push_pop_timing_test_gcc.png | Bin 7072 -> 0 bytes ..._queue_text_push_pop_timing_test_local.png | Bin 9006 -> 0 bytes ...y_queue_text_push_pop_timing_test_msvc.png | Bin 7289 -> 0 bytes .../priority_queue_text_push_timing_test.html | 219 - ...iority_queue_text_push_timing_test_gcc.png | Bin 6832 -> 0 bytes ...rity_queue_text_push_timing_test_local.png | Bin 8477 -> 0 bytes ...ority_queue_text_push_timing_test_msvc.png | Bin 7266 -> 0 bytes .../html/ext/pb_ds/quadratic_probe_fn.html | 141 - ...dom_int_find_find_timing_test_tree_gcc.png | Bin 5960 -> 0 bytes ...m_int_find_find_timing_test_tree_local.png | Bin 7377 -> 0 bytes ...om_int_find_find_timing_test_tree_msvc.png | Bin 5636 -> 0 bytes .../pb_ds/range_invalidation_guarantee.html | 52 - .../ext/pb_ds/rationale_null_node_updator.png | Bin 25097 -> 0 bytes .../doc/html/ext/pb_ds/rb_tree_tag.html | 47 - .../html/ext/pb_ds/rc_binomial_heap_tag.html | 47 - .../doc/html/ext/pb_ds/references.html | 258 - .../doc/html/ext/pb_ds/resize_error.html | 50 - .../doc/html/ext/pb_ds/resize_policy_cd.png | Bin 20806 -> 0 bytes .../ext/pb_ds/restoring_node_invariants.png | Bin 14432 -> 0 bytes .../doc/html/ext/pb_ds/sample_probe_fn.html | 152 - .../html/ext/pb_ds/sample_range_hashing.html | 172 - .../html/ext/pb_ds/sample_ranged_hash_fn.html | 171 - .../ext/pb_ds/sample_ranged_probe_fn.html | 178 - .../html/ext/pb_ds/sample_resize_policy.html | 413 - .../html/ext/pb_ds/sample_resize_trigger.html | 462 - .../html/ext/pb_ds/sample_size_policy.html | 163 - .../ext/pb_ds/sample_tree_node_update.html | 193 - .../pb_ds/sample_trie_e_access_traits.html | 231 - .../ext/pb_ds/sample_trie_node_update.html | 194 - .../html/ext/pb_ds/sample_update_policy.html | 178 - .../doc/html/ext/pb_ds/simple_list.png | Bin 4299 -> 0 bytes .../doc/html/ext/pb_ds/splay_tree_tag.html | 47 - .../pb_ds/string_trie_e_access_traits.html | 400 - .../doc/html/ext/pb_ds/tests.html | 24 - .../pb_ds/text_find_timing_test_hash_gcc.png | Bin 7013 -> 0 bytes .../text_find_timing_test_hash_local.png | Bin 9361 -> 0 bytes .../pb_ds/text_find_timing_test_hash_msvc.png | Bin 6932 -> 0 bytes .../text_find_timing_test_tree_like_gcc.png | Bin 6207 -> 0 bytes .../text_find_timing_test_tree_like_local.png | Bin 7650 -> 0 bytes .../text_find_timing_test_tree_like_msvc.png | Bin 6059 -> 0 bytes .../doc/html/ext/pb_ds/thin_heap_tag.html | 47 - .../doc/html/ext/pb_ds/tree.html | 516 - .../html/ext/pb_ds/tree_based_containers.html | 358 - .../html/ext/pb_ds/tree_node_iterator.html | 143 - .../ext/pb_ds/tree_node_updator_policy_cd.png | Bin 9236 -> 0 bytes .../tree_order_statistics_node_update.html | 678 - .../tree_order_statistics_timing_test.html | 118 - .../tree_order_statistics_timing_test_gcc.png | Bin 5698 -> 0 bytes ...ree_order_statistics_timing_test_local.png | Bin 6739 -> 0 bytes ...tree_order_statistics_timing_test_msvc.png | Bin 5684 -> 0 bytes ...tree_random_int_find_find_timing_test.html | 160 - .../pb_ds/tree_split_join_timing_test.html | 143 - .../pb_ds/tree_split_join_timing_test_gcc.png | Bin 5649 -> 0 bytes .../tree_split_join_timing_test_local.png | Bin 6734 -> 0 bytes .../tree_split_join_timing_test_msvc.png | Bin 5675 -> 0 bytes .../doc/html/ext/pb_ds/tree_tag.html | 47 - .../tree_text_find_find_timing_test.html | 162 - .../pb_ds/tree_text_insert_timing_test.html | 226 - ..._text_insert_timing_test_node_tree_gcc.png | Bin 5373 -> 0 bytes ...ext_insert_timing_test_node_tree_local.png | Bin 6690 -> 0 bytes ...text_insert_timing_test_node_tree_msvc.png | Bin 5212 -> 0 bytes ...e_text_insert_timing_test_pat_trie_gcc.png | Bin 4895 -> 0 bytes ...text_insert_timing_test_pat_trie_local.png | Bin 6011 -> 0 bytes ..._text_insert_timing_test_pat_trie_msvc.png | Bin 4881 -> 0 bytes ...ext_insert_timing_test_vector_tree_gcc.png | Bin 5140 -> 0 bytes ...t_insert_timing_test_vector_tree_local.png | Bin 6270 -> 0 bytes ...xt_insert_timing_test_vector_tree_msvc.png | Bin 5131 -> 0 bytes .../tree_text_lor_find_find_timing_test.html | 126 - .../tree_text_lor_find_timing_test_gcc.png | Bin 6162 -> 0 bytes .../tree_text_lor_find_timing_test_local.png | Bin 7796 -> 0 bytes .../tree_text_lor_find_timing_test_msvc.png | Bin 5831 -> 0 bytes .../doc/html/ext/pb_ds/trie.html | 489 - .../html/ext/pb_ds/trie_based_containers.html | 241 - .../ext/pb_ds/trie_const_node_iterator.html | 478 - .../html/ext/pb_ds/trie_node_iterator.html | 235 - .../ext/pb_ds/trie_node_updator_policy_cd.png | Bin 12126 -> 0 bytes .../trie_order_statistics_node_update.html | 770 - .../pb_ds/trie_prefix_search_node_update.html | 628 - .../doc/html/ext/pb_ds/trie_tag.html | 47 - .../html/ext/pb_ds/trivial_iterator_tag.html | 25 - .../doc/html/ext/pb_ds/tutorial.html | 670 - .../doc/html/ext/pb_ds/update_policy_cd.png | Bin 8570 -> 0 bytes .../doc/html/ext/pb_ds/update_seq_diagram.png | Bin 10789 -> 0 bytes .../libstdc++-v3-4.3.3/doc/html/faq.html | 873 - .../libstdc++-v3-4.3.3/doc/html/index.html | 43 - .../doc/html/manual/abi.html | 493 - .../doc/html/manual/algorithms.html | 3 - .../doc/html/manual/api.html | 151 - .../html/manual/appendix_contributing.html | 107 - .../doc/html/manual/appendix_free.html | 116 - .../doc/html/manual/appendix_porting.html | 224 - .../doc/html/manual/auto_ptr.html | 90 - .../doc/html/manual/backwards.html | 926 - .../doc/html/manual/bitmap_allocator.html | 340 - .../doc/html/manual/bk01apas02.html | 96 - .../doc/html/manual/bk01apas03.html | 582 - .../doc/html/manual/bk01apas04.html | 263 - .../doc/html/manual/bk01apas05.html | 857 - .../doc/html/manual/bk01apd.html | 41 - .../doc/html/manual/bk01apds02.html | 129 - .../doc/html/manual/bk01apds03.html | 32 - .../doc/html/manual/bk01ape.html | 393 - .../doc/html/manual/bk01pt01ch01.html | 6131 - .../doc/html/manual/bk01pt01ch01s02.html | 40 - .../doc/html/manual/bk01pt01ch01s03.html | 287 - .../doc/html/manual/bk01pt01ch02.html | 181 - .../doc/html/manual/bk01pt01ch03s02.html | 99 - .../doc/html/manual/bk01pt01ch03s03.html | 61 - .../doc/html/manual/bk01pt01ch03s04.html | 70 - .../doc/html/manual/bk01pt01ch03s05.html | 219 - .../doc/html/manual/bk01pt01ch03s06.html | 3 - .../doc/html/manual/bk01pt02ch04.html | 40 - .../doc/html/manual/bk01pt02ch04s02.html | 49 - .../doc/html/manual/bk01pt02ch04s03.html | 29 - .../doc/html/manual/bk01pt02ch05.html | 66 - .../doc/html/manual/bk01pt02ch06.html | 45 - .../doc/html/manual/bk01pt02ch06s02.html | 76 - .../doc/html/manual/bk01pt02pr01.html | 11 - .../doc/html/manual/bk01pt03ch07.html | 16 - .../doc/html/manual/bk01pt03ch07s02.html | 20 - .../doc/html/manual/bk01pt03ch07s03.html | 4 - .../doc/html/manual/bk01pt03ch08.html | 39 - .../doc/html/manual/bk01pt04ch09.html | 9 - .../doc/html/manual/bk01pt04ch10.html | 39 - .../doc/html/manual/bk01pt04ch11.html | 346 - .../doc/html/manual/bk01pt04ch12.html | 4 - .../doc/html/manual/bk01pt05ch13.html | 89 - .../doc/html/manual/bk01pt05ch13s02.html | 40 - .../doc/html/manual/bk01pt05ch13s03.html | 57 - .../doc/html/manual/bk01pt05ch13s04.html | 85 - .../doc/html/manual/bk01pt05ch13s05.html | 15 - .../doc/html/manual/bk01pt05ch13s06.html | 91 - .../doc/html/manual/bk01pt06ch14.html | 422 - .../doc/html/manual/bk01pt06ch15.html | 74 - .../doc/html/manual/bk01pt07ch16.html | 37 - .../doc/html/manual/bk01pt07ch16s02.html | 16 - .../doc/html/manual/bk01pt07ch17.html | 84 - .../doc/html/manual/bk01pt07ch17s02.html | 105 - .../doc/html/manual/bk01pt07ch18.html | 60 - .../doc/html/manual/bk01pt08ch19.html | 30 - .../doc/html/manual/bk01pt08ch19s02.html | 83 - .../doc/html/manual/bk01pt09ch20.html | 13 - .../doc/html/manual/bk01pt09pr02.html | 35 - .../doc/html/manual/bk01pt10ch21.html | 19 - .../doc/html/manual/bk01pt10ch22.html | 26 - .../doc/html/manual/bk01pt10ch23.html | 18 - .../doc/html/manual/bk01pt10ch23s02.html | 16 - .../doc/html/manual/bk01pt11ch24.html | 113 - .../doc/html/manual/bk01pt11ch25.html | 57 - .../doc/html/manual/bk01pt11ch25s02.html | 77 - .../doc/html/manual/bk01pt11ch26.html | 34 - .../doc/html/manual/bk01pt11ch27.html | 49 - .../doc/html/manual/bk01pt11ch27s02.html | 95 - .../doc/html/manual/bk01pt11ch27s03.html | 22 - .../doc/html/manual/bk01pt11ch28.html | 8 - .../doc/html/manual/bk01pt11ch28s02.html | 46 - .../doc/html/manual/bk01pt12ch29.html | 37 - .../doc/html/manual/bk01pt12ch30s02.html | 55 - .../doc/html/manual/bk01pt12ch30s03.html | 24 - .../doc/html/manual/bk01pt12ch30s04.html | 409 - .../doc/html/manual/bk01pt12ch31s02.html | 9 - .../doc/html/manual/bk01pt12ch31s03.html | 28 - .../doc/html/manual/bk01pt12ch31s04.html | 184 - .../doc/html/manual/bk01pt12ch31s05.html | 26 - .../doc/html/manual/bk01pt12ch32.html | 394 - .../doc/html/manual/bk01pt12ch33.html | 6 - .../doc/html/manual/bk01pt12ch33s02.html | 43 - .../doc/html/manual/bk01pt12ch33s03.html | 50 - .../doc/html/manual/bk01pt12ch34.html | 38 - .../doc/html/manual/bk01pt12ch35.html | 20 - .../doc/html/manual/bk01pt12ch36.html | 17 - .../doc/html/manual/bk01pt12ch37.html | 11 - .../doc/html/manual/bk01pt12ch38.html | 48 - .../doc/html/manual/bk01pt12ch39.html | 71 - .../doc/html/manual/bk01pt12ch40s02.html | 38 - .../doc/html/manual/bk01pt12ch40s03.html | 34 - .../doc/html/manual/bk01pt12pr03.html | 21 - .../doc/html/manual/build.html | 95 - .../doc/html/manual/codecvt.html | 379 - .../doc/html/manual/concurrency.html | 88 - .../doc/html/manual/containers.html | 3 - .../doc/html/manual/debug.html | 148 - .../doc/html/manual/debug_mode.html | 34 - .../doc/html/manual/diagnostics.html | 3 - .../doc/html/manual/extensions.html | 3 - .../doc/html/manual/internals.html | 368 - .../doc/html/manual/intro.html | 3 - .../doc/html/manual/io.html | 3 - .../doc/html/manual/iterators.html | 3 - .../doc/html/manual/localization.html | 3 - .../doc/html/manual/messages.html | 281 - .../doc/html/manual/numerics.html | 3 - .../doc/html/manual/parallel_mode.html | 21 - .../doc/html/manual/shared_ptr.html | 304 - .../doc/html/manual/spine.html | 7 - .../doc/html/manual/strings.html | 3 - .../doc/html/manual/support.html | 3 - .../doc/html/manual/test.html | 504 - .../doc/html/manual/using.html | 41 - .../doc/html/manual/utilities.html | 3 - .../libstdc++-v3-4.3.3/doc/html/spine.html | 5 - .../libstdc++-v3-4.3.3/doc/xml/api.xml | 100 - .../libstdc++-v3-4.3.3/doc/xml/authors.xml | 174 - .../libstdc++-v3-4.3.3/doc/xml/book.txml | 33 - .../libstdc++-v3-4.3.3/doc/xml/chapter.txml | 54 - .../libstdc++-v3-4.3.3/doc/xml/class.txml | 154 - .../libstdc++-v3-4.3.3/doc/xml/faq.xml | 1254 - .../doc/xml/gnu/fdl-1.2.xml | 502 - .../doc/xml/gnu/gpl-2.0.xml | 366 - .../doc/xml/gnu/gpl-3.0.xml | 836 - .../doc/xml/images/confdeps.dot | 14 - .../doc/xml/images/confdeps.png | Bin 3486 -> 0 bytes .../libstdc++-v3-4.3.3/doc/xml/manual/abi.xml | 1130 - .../doc/xml/manual/algorithms.xml | 104 - .../doc/xml/manual/allocator.xml | 659 - .../doc/xml/manual/appendix_contributing.xml | 2146 - .../doc/xml/manual/appendix_free.xml | 176 - .../doc/xml/manual/appendix_porting.xml | 47 - .../doc/xml/manual/auto_ptr.xml | 133 - .../xml/manual/backwards_compatibility.xml | 1315 - .../doc/xml/manual/bitmap_allocator.xml | 559 - .../doc/xml/manual/build.xml | 182 - .../doc/xml/manual/build_hacking.xml | 354 - .../doc/xml/manual/codecvt.xml | 730 - .../doc/xml/manual/concurrency.xml | 334 - .../doc/xml/manual/configure.xml | 318 - .../doc/xml/manual/containers.xml | 441 - .../doc/xml/manual/ctype.xml | 259 - .../doc/xml/manual/debug.xml | 245 - .../doc/xml/manual/debug_mode.xml | 888 - .../doc/xml/manual/diagnostics.xml | 126 - .../doc/xml/manual/evolution.xml | 452 - .../doc/xml/manual/extensions.xml | 577 - .../doc/xml/manual/internals.xml | 548 - .../doc/xml/manual/intro.xml | 664 - .../libstdc++-v3-4.3.3/doc/xml/manual/io.xml | 665 - .../doc/xml/manual/iterators.xml | 177 - .../doc/xml/manual/locale.xml | 653 - .../doc/xml/manual/localization.xml | 54 - .../doc/xml/manual/messages.xml | 604 - .../doc/xml/manual/mt_allocator.xml | 554 - .../doc/xml/manual/numerics.xml | 143 - .../doc/xml/manual/parallel_mode.xml | 809 - .../doc/xml/manual/shared_ptr.xml | 580 - .../doc/xml/manual/spine.xml | 111 - .../doc/xml/manual/status_cxx1998.xml | 6153 - .../doc/xml/manual/status_cxx200x.xml | 2241 - .../doc/xml/manual/status_cxxtr1.xml | 2273 - .../doc/xml/manual/strings.xml | 495 - .../doc/xml/manual/support.xml | 448 - .../doc/xml/manual/test.xml | 823 - .../doc/xml/manual/using.xml | 1024 - .../doc/xml/manual/utilities.xml | 125 - .../libstdc++-v3-4.3.3/doc/xml/spine.xml | 47 - .../contrib/libstdc++-v3-4.3.3/fragment.am | 25 - .../libstdc++-v3-4.3.3/include/Makefile.am | 1215 - .../libstdc++-v3-4.3.3/include/Makefile.in | 1603 - .../include/backward/auto_ptr.h | 297 - .../include/backward/backward_warning.h | 61 - .../include/backward/binders.h | 171 - .../include/backward/hash_fun.h | 172 - .../include/backward/hash_map | 595 - .../include/backward/hash_set | 563 - .../include/backward/hashtable.h | 1130 - .../include/backward/strstream | 181 - .../include/bits/algorithmfwd.h | 653 - .../include/bits/allocator.h | 178 - .../include/bits/basic_ios.h | 478 - .../include/bits/basic_ios.tcc | 192 - .../include/bits/basic_string.h | 2478 - .../include/bits/basic_string.tcc | 1141 - .../include/bits/boost_concept_check.h | 792 - .../include/bits/boost_sp_shared_count.h | 378 - .../libstdc++-v3-4.3.3/include/bits/c++config | 298 - .../include/bits/char_traits.h | 371 - .../libstdc++-v3-4.3.3/include/bits/codecvt.h | 502 - .../include/bits/concept_check.h | 85 - .../include/bits/cpp_type_traits.h | 417 - .../libstdc++-v3-4.3.3/include/bits/deque.tcc | 833 - .../include/bits/fstream.tcc | 929 - .../include/bits/functexcept.h | 95 - .../include/bits/functional_hash.h | 63 - .../libstdc++-v3-4.3.3/include/bits/gslice.h | 180 - .../include/bits/gslice_array.h | 214 - .../include/bits/hashtable.h | 63 - .../include/bits/indirect_array.h | 208 - .../include/bits/ios_base.h | 971 - .../include/bits/istream.tcc | 1027 - .../libstdc++-v3-4.3.3/include/bits/list.tcc | 417 - .../include/bits/locale_classes.h | 817 - .../include/bits/locale_classes.tcc | 276 - .../include/bits/locale_facets.h | 2638 - .../include/bits/locale_facets.tcc | 1353 - .../include/bits/locale_facets_nonio.h | 1919 - .../include/bits/locale_facets_nonio.tcc | 1331 - .../include/bits/localefwd.h | 188 - .../include/bits/mask_array.h | 204 - .../include/bits/ostream.tcc | 412 - .../include/bits/ostream_insert.h | 132 - .../include/bits/postypes.h | 213 - .../include/bits/slice_array.h | 270 - .../include/bits/sstream.tcc | 278 - .../include/bits/stl_algo.h | 5636 - .../include/bits/stl_algobase.h | 1140 - .../include/bits/stl_bvector.h | 1002 - .../include/bits/stl_construct.h | 134 - .../include/bits/stl_deque.h | 1770 - .../include/bits/stl_function.h | 707 - .../include/bits/stl_heap.h | 570 - .../include/bits/stl_iterator.h | 1028 - .../include/bits/stl_iterator_base_funcs.h | 182 - .../include/bits/stl_iterator_base_types.h | 172 - .../include/bits/stl_list.h | 1463 - .../libstdc++-v3-4.3.3/include/bits/stl_map.h | 827 - .../include/bits/stl_move.h | 92 - .../include/bits/stl_multimap.h | 757 - .../include/bits/stl_multiset.h | 654 - .../include/bits/stl_numeric.h | 341 - .../include/bits/stl_pair.h | 264 - .../include/bits/stl_queue.h | 584 - .../include/bits/stl_raw_storage_iter.h | 111 - .../include/bits/stl_relops.h | 136 - .../libstdc++-v3-4.3.3/include/bits/stl_set.h | 665 - .../include/bits/stl_stack.h | 302 - .../include/bits/stl_tempbuf.h | 211 - .../include/bits/stl_tree.h | 1466 - .../include/bits/stl_uninitialized.h | 436 - .../include/bits/stl_vector.h | 1174 - .../include/bits/stream_iterator.h | 216 - .../include/bits/streambuf.tcc | 179 - .../include/bits/streambuf_iterator.h | 397 - .../include/bits/stringfwd.h | 70 - .../include/bits/valarray_after.h | 554 - .../include/bits/valarray_array.h | 704 - .../include/bits/valarray_array.tcc | 246 - .../include/bits/valarray_before.h | 735 - .../include/bits/vector.tcc | 656 - .../libstdc++-v3-4.3.3/include/c/cassert | 38 - .../libstdc++-v3-4.3.3/include/c/cctype | 41 - .../libstdc++-v3-4.3.3/include/c/cerrno | 55 - .../libstdc++-v3-4.3.3/include/c/cfloat | 41 - .../libstdc++-v3-4.3.3/include/c/ciso646 | 37 - .../libstdc++-v3-4.3.3/include/c/climits | 41 - .../libstdc++-v3-4.3.3/include/c/clocale | 41 - .../libstdc++-v3-4.3.3/include/c/cmath | 124 - .../libstdc++-v3-4.3.3/include/c/csetjmp | 49 - .../libstdc++-v3-4.3.3/include/c/csignal | 41 - .../libstdc++-v3-4.3.3/include/c/cstdarg | 42 - .../libstdc++-v3-4.3.3/include/c/cstddef | 45 - .../libstdc++-v3-4.3.3/include/c/cstdio | 84 - .../libstdc++-v3-4.3.3/include/c/cstdlib | 41 - .../libstdc++-v3-4.3.3/include/c/cstring | 41 - .../libstdc++-v3-4.3.3/include/c/ctime | 41 - .../libstdc++-v3-4.3.3/include/c/cwchar | 62 - .../libstdc++-v3-4.3.3/include/c/cwctype | 45 - .../include/c_compatibility/assert.h | 34 - .../include/c_compatibility/complex.h | 47 - .../include/c_compatibility/ctype.h | 55 - .../include/c_compatibility/errno.h | 39 - .../include/c_compatibility/fenv.h | 63 - .../include/c_compatibility/float.h | 39 - .../include/c_compatibility/inttypes.h | 81 - .../include/c_compatibility/iso646.h | 39 - .../include/c_compatibility/limits.h | 39 - .../include/c_compatibility/locale.h | 45 - .../include/c_compatibility/math.h | 82 - .../include/c_compatibility/setjmp.h | 44 - .../include/c_compatibility/signal.h | 45 - .../include/c_compatibility/stdarg.h | 43 - .../include/c_compatibility/stdbool.h | 47 - .../include/c_compatibility/stddef.h | 44 - .../include/c_compatibility/stdint.h | 89 - .../include/c_compatibility/stdio.h | 91 - .../include/c_compatibility/stdlib.h | 73 - .../include/c_compatibility/string.h | 64 - .../include/c_compatibility/tgmath.h | 47 - .../include/c_compatibility/time.h | 66 - .../include/c_compatibility/wchar.h | 121 - .../include/c_compatibility/wctype.h | 61 - .../include/c_global/cassert | 50 - .../include/c_global/ccomplex | 49 - .../include/c_global/cctype | 106 - .../include/c_global/cerrno | 58 - .../libstdc++-v3-4.3.3/include/c_global/cfenv | 66 - .../include/c_global/cfloat | 65 - .../include/c_global/cinttypes | 76 - .../include/c_global/ciso646 | 38 - .../include/c_global/climits | 65 - .../include/c_global/clocale | 66 - .../libstdc++-v3-4.3.3/include/c_global/cmath | 643 - .../include/c_global/cmath.tcc | 60 - .../include/c_global/csetjmp | 69 - .../include/c_global/csignal | 65 - .../include/c_global/cstdarg | 65 - .../include/c_global/cstdbool | 49 - .../include/c_global/cstddef | 61 - .../include/c_global/cstdint | 84 - .../include/c_global/cstdio | 210 - .../include/c_global/cstdlib | 247 - .../include/c_global/cstring | 130 - .../include/c_global/ctgmath | 46 - .../libstdc++-v3-4.3.3/include/c_global/ctime | 83 - .../include/c_global/cwchar | 299 - .../include/c_global/cwctype | 131 - .../libstdc++-v3-4.3.3/include/c_std/cassert | 49 - .../libstdc++-v3-4.3.3/include/c_std/cctype | 86 - .../libstdc++-v3-4.3.3/include/c_std/cerrno | 57 - .../libstdc++-v3-4.3.3/include/c_std/cfloat | 52 - .../libstdc++-v3-4.3.3/include/c_std/ciso646 | 38 - .../libstdc++-v3-4.3.3/include/c_std/climits | 52 - .../libstdc++-v3-4.3.3/include/c_std/clocale | 65 - .../libstdc++-v3-4.3.3/include/c_std/cmath | 607 - .../include/c_std/cmath.tcc | 60 - .../libstdc++-v3-4.3.3/include/c_std/csetjmp | 68 - .../libstdc++-v3-4.3.3/include/c_std/csignal | 64 - .../libstdc++-v3-4.3.3/include/c_std/cstdarg | 64 - .../libstdc++-v3-4.3.3/include/c_std/cstddef | 60 - .../libstdc++-v3-4.3.3/include/c_std/cstdio | 191 - .../libstdc++-v3-4.3.3/include/c_std/cstdlib | 227 - .../libstdc++-v3-4.3.3/include/c_std/cstring | 130 - .../libstdc++-v3-4.3.3/include/c_std/ctime | 82 - .../libstdc++-v3-4.3.3/include/c_std/cwchar | 280 - .../libstdc++-v3-4.3.3/include/c_std/cwctype | 112 - .../libstdc++-v3-4.3.3/include/debug/bitset | 328 - .../libstdc++-v3-4.3.3/include/debug/debug.h | 159 - .../libstdc++-v3-4.3.3/include/debug/deque | 484 - .../include/debug/formatter.h | 397 - .../include/debug/functions.h | 388 - .../libstdc++-v3-4.3.3/include/debug/list | 640 - .../libstdc++-v3-4.3.3/include/debug/macros.h | 251 - .../libstdc++-v3-4.3.3/include/debug/map | 42 - .../libstdc++-v3-4.3.3/include/debug/map.h | 398 - .../include/debug/multimap.h | 386 - .../include/debug/multiset.h | 382 - .../include/debug/safe_association.h | 210 - .../include/debug/safe_base.h | 225 - .../include/debug/safe_iterator.h | 648 - .../include/debug/safe_iterator.tcc | 148 - .../include/debug/safe_sequence.h | 188 - .../libstdc++-v3-4.3.3/include/debug/set | 42 - .../libstdc++-v3-4.3.3/include/debug/set.h | 387 - .../libstdc++-v3-4.3.3/include/debug/string | 1023 - .../include/debug/unordered_map | 254 - .../include/debug/unordered_set | 249 - .../libstdc++-v3-4.3.3/include/debug/vector | 517 - .../libstdc++-v3-4.3.3/include/ext/algorithm | 534 - .../include/ext/array_allocator.h | 157 - .../include/ext/atomicity.h | 118 - .../include/ext/bitmap_allocator.h | 1146 - .../include/ext/codecvt_specializations.h | 512 - .../include/ext/concurrence.h | 327 - .../include/ext/debug_allocator.h | 128 - .../include/ext/enc_filebuf.h | 67 - .../libstdc++-v3-4.3.3/include/ext/functional | 430 - .../libstdc++-v3-4.3.3/include/ext/iterator | 118 - .../include/ext/malloc_allocator.h | 138 - .../libstdc++-v3-4.3.3/include/ext/memory | 199 - .../include/ext/mt_allocator.h | 754 - .../include/ext/new_allocator.h | 133 - .../libstdc++-v3-4.3.3/include/ext/numeric | 151 - .../include/ext/numeric_traits.h | 141 - .../include/ext/pb_ds/assoc_container.hpp | 689 - .../basic_tree_policy_base.hpp | 179 - .../basic_tree_policy/null_node_metadata.hpp | 73 - .../pb_ds/detail/basic_tree_policy/traits.hpp | 91 - .../include/ext/pb_ds/detail/basic_types.hpp | 217 - .../bin_search_tree_/bin_search_tree_.hpp | 503 - .../cond_dtor_entry_dealtor.hpp | 76 - .../cond_key_dtor_entry_dealtor.hpp | 87 - .../constructors_destructor_fn_imps.hpp | 224 - .../detail/bin_search_tree_/debug_fn_imps.hpp | 278 - .../detail/bin_search_tree_/erase_fn_imps.hpp | 126 - .../detail/bin_search_tree_/find_fn_imps.hpp | 188 - .../detail/bin_search_tree_/info_fn_imps.hpp | 70 - .../bin_search_tree_/insert_fn_imps.hpp | 217 - .../bin_search_tree_/iterators_fn_imps.hpp | 142 - .../bin_search_tree_/node_iterators.hpp | 243 - .../bin_search_tree_/point_iterators.hpp | 387 - .../policy_access_fn_imps.hpp | 62 - .../bin_search_tree_/r_erase_fn_imps.hpp | 126 - .../bin_search_tree_/rotate_fn_imps.hpp | 162 - .../bin_search_tree_/split_join_fn_imps.hpp | 152 - .../pb_ds/detail/bin_search_tree_/traits.hpp | 256 - .../detail/binary_heap_/binary_heap_.hpp | 363 - .../detail/binary_heap_/const_iterator.hpp | 158 - .../binary_heap_/const_point_iterator.hpp | 150 - .../constructors_destructor_fn_imps.hpp | 165 - .../detail/binary_heap_/debug_fn_imps.hpp | 78 - .../pb_ds/detail/binary_heap_/entry_cmp.hpp | 99 - .../pb_ds/detail/binary_heap_/entry_pred.hpp | 99 - .../detail/binary_heap_/erase_fn_imps.hpp | 252 - .../detail/binary_heap_/find_fn_imps.hpp | 97 - .../detail/binary_heap_/info_fn_imps.hpp | 70 - .../detail/binary_heap_/insert_fn_imps.hpp | 220 - .../detail/binary_heap_/iterators_fn_imps.hpp | 78 - .../binary_heap_/policy_access_fn_imps.hpp | 62 - .../detail/binary_heap_/resize_policy.hpp | 259 - .../binary_heap_/split_join_fn_imps.hpp | 178 - .../detail/binary_heap_/trace_fn_imps.hpp | 84 - .../detail/binomial_heap_/binomial_heap_.hpp | 122 - .../constructors_destructor_fn_imps.hpp | 67 - .../detail/binomial_heap_/debug_fn_imps.hpp | 55 - .../binomial_heap_base_.hpp | 240 - .../constructors_destructor_fn_imps.hpp | 103 - .../binomial_heap_base_/debug_fn_imps.hpp | 97 - .../binomial_heap_base_/erase_fn_imps.hpp | 198 - .../binomial_heap_base_/find_fn_imps.hpp | 79 - .../binomial_heap_base_/insert_fn_imps.hpp | 222 - .../split_join_fn_imps.hpp | 238 - .../detail/cc_hash_table_map_/cc_ht_map_.hpp | 642 - .../detail/cc_hash_table_map_/cmp_fn_imps.hpp | 89 - .../cond_key_dtor_entry_dealtor.hpp | 123 - .../constructor_destructor_fn_imps.hpp | 197 - ...uctor_destructor_no_store_hash_fn_imps.hpp | 61 - ...structor_destructor_store_hash_fn_imps.hpp | 62 - .../cc_hash_table_map_/debug_fn_imps.hpp | 80 - .../debug_no_store_hash_fn_imps.hpp | 55 - .../debug_store_hash_fn_imps.hpp | 59 - .../cc_hash_table_map_/entry_list_fn_imps.hpp | 97 - .../cc_hash_table_map_/erase_fn_imps.hpp | 109 - .../erase_no_store_hash_fn_imps.hpp | 107 - .../erase_store_hash_fn_imps.hpp | 101 - .../cc_hash_table_map_/find_fn_imps.hpp | 77 - .../find_store_hash_fn_imps.hpp | 47 - .../cc_hash_table_map_/info_fn_imps.hpp | 106 - .../cc_hash_table_map_/insert_fn_imps.hpp | 49 - .../insert_no_store_hash_fn_imps.hpp | 76 - .../insert_store_hash_fn_imps.hpp | 77 - .../cc_hash_table_map_/iterators_fn_imps.hpp | 89 - .../policy_access_fn_imps.hpp | 94 - .../cc_hash_table_map_/resize_fn_imps.hpp | 139 - .../resize_no_store_hash_fn_imps.hpp | 60 - .../resize_store_hash_fn_imps.hpp | 60 - .../cc_hash_table_map_/size_fn_imps.hpp | 65 - .../cc_hash_table_map_/standard_policies.hpp | 52 - .../cc_hash_table_map_/trace_fn_imps.hpp | 78 - .../include/ext/pb_ds/detail/cond_dealtor.hpp | 131 - .../constructors_destructor_fn_imps.hpp | 109 - .../pb_ds/detail/container_base_dispatch.hpp | 338 - .../ext/pb_ds/detail/debug_map_base.hpp | 365 - .../ext/pb_ds/detail/eq_fn/eq_by_less.hpp | 74 - .../ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp | 185 - .../constructor_destructor_fn_imps.hpp | 229 - ...uctor_destructor_no_store_hash_fn_imps.hpp | 59 - ...structor_destructor_store_hash_fn_imps.hpp | 60 - .../gp_hash_table_map_/debug_fn_imps.hpp | 61 - .../debug_no_store_hash_fn_imps.hpp | 77 - .../debug_store_hash_fn_imps.hpp | 83 - .../gp_hash_table_map_/erase_fn_imps.hpp | 106 - .../erase_no_store_hash_fn_imps.hpp | 91 - .../erase_store_hash_fn_imps.hpp | 92 - .../gp_hash_table_map_/find_fn_imps.hpp | 76 - .../find_no_store_hash_fn_imps.hpp | 52 - .../find_store_hash_fn_imps.hpp | 46 - .../detail/gp_hash_table_map_/gp_ht_map_.hpp | 683 - .../gp_hash_table_map_/info_fn_imps.hpp | 64 - .../gp_hash_table_map_/insert_fn_imps.hpp | 49 - .../insert_no_store_hash_fn_imps.hpp | 117 - .../insert_store_hash_fn_imps.hpp | 124 - .../gp_hash_table_map_/iterator_fn_imps.hpp | 89 - .../policy_access_fn_imps.hpp | 106 - .../gp_hash_table_map_/resize_fn_imps.hpp | 143 - .../resize_no_store_hash_fn_imps.hpp | 78 - .../resize_store_hash_fn_imps.hpp | 80 - .../gp_hash_table_map_/standard_policies.hpp | 80 - .../gp_hash_table_map_/trace_fn_imps.hpp | 80 - .../hash_fn/direct_mask_range_hashing_imp.hpp | 64 - .../hash_fn/direct_mod_range_hashing_imp.hpp | 64 - .../detail/hash_fn/linear_probe_fn_imp.hpp | 59 - .../hash_fn/mask_based_range_hashing.hpp | 113 - .../hash_fn/mod_based_range_hashing.hpp | 114 - .../pb_ds/detail/hash_fn/probe_fn_base.hpp | 65 - .../detail/hash_fn/quadratic_probe_fn_imp.hpp | 59 - .../pb_ds/detail/hash_fn/ranged_hash_fn.hpp | 365 - .../pb_ds/detail/hash_fn/ranged_probe_fn.hpp | 333 - .../pb_ds/detail/hash_fn/sample_probe_fn.hpp | 79 - .../detail/hash_fn/sample_range_hashing.hpp | 83 - .../detail/hash_fn/sample_ranged_hash_fn.hpp | 83 - .../detail/hash_fn/sample_ranged_probe_fn.hpp | 83 - .../const_iterator.hpp | 168 - .../const_point_iterator.hpp | 160 - .../constructors_destructor_fn_imps.hpp | 158 - .../debug_fn_imps.hpp | 147 - .../erase_fn_imps.hpp | 156 - .../info_fn_imps.hpp | 70 - .../insert_fn_imps.hpp | 181 - .../iterators_fn_imps.hpp | 94 - .../left_child_next_sibling_heap_.hpp | 355 - .../left_child_next_sibling_heap_/node.hpp | 129 - .../null_metadata.hpp | 61 - .../policy_access_fn_imps.hpp | 62 - .../trace_fn_imps.hpp | 101 - .../constructor_destructor_fn_imps.hpp | 147 - .../detail/list_update_map_/debug_fn_imps.hpp | 63 - .../list_update_map_/entry_metadata_base.hpp | 66 - .../detail/list_update_map_/erase_fn_imps.hpp | 141 - .../detail/list_update_map_/find_fn_imps.hpp | 96 - .../detail/list_update_map_/info_fn_imps.hpp | 63 - .../list_update_map_/insert_fn_imps.hpp | 112 - .../list_update_map_/iterators_fn_imps.hpp | 86 - .../pb_ds/detail/list_update_map_/lu_map_.hpp | 365 - .../detail/list_update_map_/trace_fn_imps.hpp | 65 - .../counter_lu_metadata.hpp | 92 - .../counter_lu_policy_imp.hpp | 57 - .../list_update_policy/mtf_lu_policy_imp.hpp | 61 - .../sample_update_policy.hpp | 80 - .../pb_ds/detail/ov_tree_map_/cond_dtor.hpp | 80 - .../constructors_destructor_fn_imps.hpp | 279 - .../detail/ov_tree_map_/debug_fn_imps.hpp | 90 - .../detail/ov_tree_map_/erase_fn_imps.hpp | 199 - .../detail/ov_tree_map_/info_fn_imps.hpp | 66 - .../detail/ov_tree_map_/insert_fn_imps.hpp | 69 - .../detail/ov_tree_map_/iterators_fn_imps.hpp | 109 - .../detail/ov_tree_map_/node_iterators.hpp | 298 - .../detail/ov_tree_map_/ov_tree_map_.hpp | 528 - .../ov_tree_map_/policy_access_fn_imps.hpp | 57 - .../ov_tree_map_/split_join_fn_imps.hpp | 143 - .../ext/pb_ds/detail/ov_tree_map_/traits.hpp | 189 - .../constructors_destructor_fn_imps.hpp | 97 - .../detail/pairing_heap_/debug_fn_imps.hpp | 59 - .../detail/pairing_heap_/erase_fn_imps.hpp | 242 - .../detail/pairing_heap_/find_fn_imps.hpp | 56 - .../detail/pairing_heap_/insert_fn_imps.hpp | 107 - .../detail/pairing_heap_/pairing_heap_.hpp | 222 - .../pairing_heap_/split_join_fn_imps.hpp | 146 - .../pb_ds/detail/pat_trie_/child_iterator.hpp | 99 - .../pat_trie_/cond_dtor_entry_dealtor.hpp | 85 - .../detail/pat_trie_/const_child_iterator.hpp | 117 - .../constructors_destructor_fn_imps.hpp | 220 - .../pb_ds/detail/pat_trie_/debug_fn_imps.hpp | 123 - .../pb_ds/detail/pat_trie_/erase_fn_imps.hpp | 325 - .../pb_ds/detail/pat_trie_/find_fn_imps.hpp | 275 - .../ext/pb_ds/detail/pat_trie_/head.hpp | 130 - .../pb_ds/detail/pat_trie_/info_fn_imps.hpp | 64 - .../detail/pat_trie_/insert_join_fn_imps.hpp | 471 - .../pb_ds/detail/pat_trie_/internal_node.hpp | 605 - .../detail/pat_trie_/iterators_fn_imps.hpp | 126 - .../ext/pb_ds/detail/pat_trie_/leaf.hpp | 177 - .../ext/pb_ds/detail/pat_trie_/node_base.hpp | 134 - .../pb_ds/detail/pat_trie_/node_iterators.hpp | 344 - .../detail/pat_trie_/node_metadata_base.hpp | 92 - .../ext/pb_ds/detail/pat_trie_/pat_trie_.hpp | 521 - .../detail/pat_trie_/point_iterators.hpp | 490 - .../pat_trie_/policy_access_fn_imps.hpp | 69 - .../detail/pat_trie_/r_erase_fn_imps.hpp | 109 - .../pb_ds/detail/pat_trie_/rotate_fn_imps.hpp | 156 - .../pb_ds/detail/pat_trie_/split_fn_imps.hpp | 260 - .../pat_trie_/split_join_branch_bag.hpp | 99 - .../pat_trie_/synth_e_access_traits.hpp | 235 - .../pb_ds/detail/pat_trie_/trace_fn_imps.hpp | 119 - .../ext/pb_ds/detail/pat_trie_/traits.hpp | 356 - .../pb_ds/detail/pat_trie_/update_fn_imps.hpp | 61 - .../detail/priority_queue_base_dispatch.hpp | 97 - .../constructors_destructor_fn_imps.hpp | 106 - .../detail/rb_tree_map_/debug_fn_imps.hpp | 84 - .../detail/rb_tree_map_/erase_fn_imps.hpp | 295 - .../detail/rb_tree_map_/find_fn_imps.hpp | 45 - .../detail/rb_tree_map_/info_fn_imps.hpp | 52 - .../detail/rb_tree_map_/insert_fn_imps.hpp | 121 - .../ext/pb_ds/detail/rb_tree_map_/node.hpp | 144 - .../pb_ds/detail/rb_tree_map_/rb_tree_.hpp | 286 - .../rb_tree_map_/split_join_fn_imps.hpp | 319 - .../ext/pb_ds/detail/rb_tree_map_/traits.hpp | 130 - .../constructors_destructor_fn_imps.hpp | 94 - .../rc_binomial_heap_/debug_fn_imps.hpp | 127 - .../rc_binomial_heap_/erase_fn_imps.hpp | 113 - .../rc_binomial_heap_/insert_fn_imps.hpp | 160 - .../ext/pb_ds/detail/rc_binomial_heap_/rc.hpp | 268 - .../rc_binomial_heap_/rc_binomial_heap_.hpp | 204 - .../rc_binomial_heap_/split_join_fn_imps.hpp | 87 - .../rc_binomial_heap_/trace_fn_imps.hpp | 59 - ...max_collision_check_resize_trigger_imp.hpp | 217 - .../hash_exponential_size_policy_imp.hpp | 96 - .../hash_load_check_resize_trigger_imp.hpp | 295 - ...sh_load_check_resize_trigger_size_base.hpp | 100 - .../hash_prime_size_policy_imp.hpp | 167 - .../hash_standard_resize_policy_imp.hpp | 255 - .../resize_policy/sample_resize_policy.hpp | 131 - .../resize_policy/sample_resize_trigger.hpp | 145 - .../resize_policy/sample_size_policy.hpp | 79 - .../constructors_destructor_fn_imps.hpp | 108 - .../detail/splay_tree_/debug_fn_imps.hpp | 80 - .../detail/splay_tree_/erase_fn_imps.hpp | 163 - .../pb_ds/detail/splay_tree_/find_fn_imps.hpp | 105 - .../pb_ds/detail/splay_tree_/info_fn_imps.hpp | 45 - .../detail/splay_tree_/insert_fn_imps.hpp | 99 - .../ext/pb_ds/detail/splay_tree_/node.hpp | 131 - .../detail/splay_tree_/splay_fn_imps.hpp | 289 - .../pb_ds/detail/splay_tree_/splay_tree_.hpp | 304 - .../detail/splay_tree_/split_join_fn_imps.hpp | 118 - .../ext/pb_ds/detail/splay_tree_/traits.hpp | 119 - .../ext/pb_ds/detail/standard_policies.hpp | 142 - .../constructors_destructor_fn_imps.hpp | 112 - .../pb_ds/detail/thin_heap_/debug_fn_imps.hpp | 118 - .../pb_ds/detail/thin_heap_/erase_fn_imps.hpp | 302 - .../pb_ds/detail/thin_heap_/find_fn_imps.hpp | 57 - .../detail/thin_heap_/insert_fn_imps.hpp | 332 - .../detail/thin_heap_/split_join_fn_imps.hpp | 132 - .../pb_ds/detail/thin_heap_/thin_heap_.hpp | 357 - .../pb_ds/detail/thin_heap_/trace_fn_imps.hpp | 61 - .../tree_policy/node_metadata_selector.hpp | 122 - .../tree_policy/null_node_update_imp.hpp | 56 - .../tree_policy/order_statistics_imp.hpp | 147 - .../tree_policy/sample_tree_node_update.hpp | 78 - .../ext/pb_ds/detail/tree_trace_base.hpp | 215 - .../trie_policy/node_metadata_selector.hpp | 122 - .../trie_policy/null_node_update_imp.hpp | 56 - .../trie_policy/order_statistics_imp.hpp | 189 - .../prefix_search_node_update_imp.hpp | 157 - .../sample_trie_e_access_traits.hpp | 95 - .../trie_policy/sample_trie_node_update.hpp | 78 - .../string_trie_e_access_traits_imp.hpp | 105 - .../detail/trie_policy/trie_policy_base.hpp | 255 - .../include/ext/pb_ds/detail/type_utils.hpp | 173 - .../include/ext/pb_ds/detail/types_traits.hpp | 88 - .../unordered_iterator/const_iterator.hpp | 135 - .../const_point_iterator.hpp | 157 - .../detail/unordered_iterator/iterator.hpp | 156 - .../unordered_iterator/point_iterator.hpp | 149 - .../include/ext/pb_ds/exception.hpp | 109 - .../include/ext/pb_ds/hash_policy.hpp | 610 - .../include/ext/pb_ds/list_update_policy.hpp | 142 - .../include/ext/pb_ds/priority_queue.hpp | 131 - .../include/ext/pb_ds/tag_and_trait.hpp | 361 - .../include/ext/pb_ds/tree_policy.hpp | 168 - .../include/ext/pb_ds/trie_policy.hpp | 361 - .../include/ext/pod_char_traits.h | 187 - .../include/ext/pool_allocator.h | 265 - .../libstdc++-v3-4.3.3/include/ext/rb_tree | 98 - .../include/ext/rc_string_base.h | 723 - .../libstdc++-v3-4.3.3/include/ext/rope | 2963 - .../libstdc++-v3-4.3.3/include/ext/ropeimpl.h | 1706 - .../libstdc++-v3-4.3.3/include/ext/slist | 1081 - .../include/ext/sso_string_base.h | 573 - .../include/ext/stdio_filebuf.h | 162 - .../include/ext/stdio_sync_filebuf.h | 284 - .../include/ext/throw_allocator.h | 452 - .../include/ext/type_traits.h | 210 - .../libstdc++-v3-4.3.3/include/ext/typelist.h | 476 - .../libstdc++-v3-4.3.3/include/ext/vstring.h | 2328 - .../include/ext/vstring.tcc | 701 - .../include/ext/vstring_fwd.h | 75 - .../include/ext/vstring_util.h | 185 - .../include/parallel/algo.h | 2156 - .../include/parallel/algobase.h | 287 - .../include/parallel/algorithm | 45 - .../include/parallel/algorithmfwd.h | 895 - .../include/parallel/balanced_quicksort.h | 483 - .../include/parallel/base.h | 495 - .../include/parallel/basic_iterator.h | 48 - .../include/parallel/checkers.h | 160 - .../include/parallel/compatibility.h | 356 - .../include/parallel/compiletime_settings.h | 81 - .../include/parallel/equally_split.h | 93 - .../include/parallel/features.h | 110 - .../include/parallel/find.h | 407 - .../include/parallel/find_selectors.h | 198 - .../include/parallel/for_each.h | 103 - .../include/parallel/for_each_selectors.h | 366 - .../include/parallel/iterator.h | 205 - .../include/parallel/list_partition.h | 182 - .../include/parallel/losertree.h | 1027 - .../include/parallel/merge.h | 267 - .../include/parallel/multiseq_selection.h | 640 - .../include/parallel/multiway_merge.h | 2016 - .../include/parallel/multiway_mergesort.h | 481 - .../include/parallel/numeric | 506 - .../include/parallel/numericfwd.h | 206 - .../include/parallel/omp_loop.h | 124 - .../include/parallel/omp_loop_static.h | 123 - .../include/parallel/par_loop.h | 131 - .../include/parallel/parallel.h | 48 - .../include/parallel/partial_sum.h | 226 - .../include/parallel/partition.h | 435 - .../include/parallel/queue.h | 155 - .../include/parallel/quicksort.h | 187 - .../include/parallel/random_number.h | 130 - .../include/parallel/random_shuffle.h | 525 - .../include/parallel/search.h | 178 - .../include/parallel/set_operations.h | 544 - .../include/parallel/settings.h | 287 - .../include/parallel/sort.h | 122 - .../include/parallel/tags.h | 85 - .../include/parallel/types.h | 161 - .../include/parallel/unique_copy.h | 198 - .../include/parallel/workstealing.h | 312 - .../include/precompiled/extc++.h | 71 - .../include/precompiled/stdc++.h | 107 - .../include/precompiled/stdtr1c++.h | 58 - .../libstdc++-v3-4.3.3/include/std/algorithm | 73 - .../libstdc++-v3-4.3.3/include/std/array | 63 - .../libstdc++-v3-4.3.3/include/std/bitset | 1327 - .../include/std/c++0x_warning.h | 41 - .../libstdc++-v3-4.3.3/include/std/complex | 1557 - .../libstdc++-v3-4.3.3/include/std/deque | 80 - .../libstdc++-v3-4.3.3/include/std/fstream | 786 - .../libstdc++-v3-4.3.3/include/std/functional | 83 - .../libstdc++-v3-4.3.3/include/std/iomanip | 301 - .../libstdc++-v3-4.3.3/include/std/ios | 52 - .../libstdc++-v3-4.3.3/include/std/iosfwd | 165 - .../libstdc++-v3-4.3.3/include/std/iostream | 81 - .../libstdc++-v3-4.3.3/include/std/istream | 836 - .../libstdc++-v3-4.3.3/include/std/iterator | 75 - .../libstdc++-v3-4.3.3/include/std/limits | 1157 - .../libstdc++-v3-4.3.3/include/std/list | 79 - .../libstdc++-v3-4.3.3/include/std/locale | 50 - .../libstdc++-v3-4.3.3/include/std/map | 73 - .../libstdc++-v3-4.3.3/include/std/memory | 98 - .../libstdc++-v3-4.3.3/include/std/numeric | 74 - .../libstdc++-v3-4.3.3/include/std/ostream | 572 - .../libstdc++-v3-4.3.3/include/std/queue | 72 - .../libstdc++-v3-4.3.3/include/std/random | 73 - .../libstdc++-v3-4.3.3/include/std/regex | 70 - .../libstdc++-v3-4.3.3/include/std/set | 73 - .../libstdc++-v3-4.3.3/include/std/sstream | 575 - .../libstdc++-v3-4.3.3/include/std/stack | 69 - .../libstdc++-v3-4.3.3/include/std/stdexcept | 148 - .../libstdc++-v3-4.3.3/include/std/streambuf | 804 - .../libstdc++-v3-4.3.3/include/std/string | 64 - .../libstdc++-v3-4.3.3/include/std/tuple | 647 - .../include/std/type_traits | 557 - .../include/std/unordered_map | 80 - .../include/std/unordered_set | 80 - .../libstdc++-v3-4.3.3/include/std/utility | 90 - .../libstdc++-v3-4.3.3/include/std/valarray | 1038 - .../libstdc++-v3-4.3.3/include/std/vector | 82 - .../libstdc++-v3-4.3.3/include/tr1/array | 59 - .../include/tr1/bessel_function.tcc | 632 - .../include/tr1/beta_function.tcc | 202 - .../include/tr1/boost_sp_shared_count.h | 214 - .../libstdc++-v3-4.3.3/include/tr1/ccomplex | 39 - .../libstdc++-v3-4.3.3/include/tr1/cctype | 54 - .../libstdc++-v3-4.3.3/include/tr1/cfenv | 58 - .../libstdc++-v3-4.3.3/include/tr1/cfloat | 47 - .../libstdc++-v3-4.3.3/include/tr1/cinttypes | 68 - .../libstdc++-v3-4.3.3/include/tr1/climits | 51 - .../libstdc++-v3-4.3.3/include/tr1/cmath | 482 - .../libstdc++-v3-4.3.3/include/tr1/complex | 74 - .../libstdc++-v3-4.3.3/include/tr1/complex.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/cstdarg | 39 - .../libstdc++-v3-4.3.3/include/tr1/cstdbool | 45 - .../libstdc++-v3-4.3.3/include/tr1/cstdint | 81 - .../libstdc++-v3-4.3.3/include/tr1/cstdio | 59 - .../libstdc++-v3-4.3.3/include/tr1/cstdlib | 59 - .../libstdc++-v3-4.3.3/include/tr1/ctgmath | 39 - .../libstdc++-v3-4.3.3/include/tr1/ctime | 39 - .../libstdc++-v3-4.3.3/include/tr1/ctype.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/cwchar | 59 - .../libstdc++-v3-4.3.3/include/tr1/cwctype | 59 - .../include/tr1/ell_integral.tcc | 753 - .../include/tr1/exp_integral.tcc | 529 - .../libstdc++-v3-4.3.3/include/tr1/fenv.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/float.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/functional | 68 - .../include/tr1/functional_hash.h | 58 - .../libstdc++-v3-4.3.3/include/tr1/gamma.tcc | 476 - .../include/tr1/hashtable.h | 58 - .../include/tr1/hypergeometric.tcc | 779 - .../libstdc++-v3-4.3.3/include/tr1/inttypes.h | 39 - .../include/tr1/legendre_function.tcc | 310 - .../libstdc++-v3-4.3.3/include/tr1/limits.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/math.h | 191 - .../libstdc++-v3-4.3.3/include/tr1/memory | 74 - .../include/tr1/modified_bessel_func.tcc | 441 - .../include/tr1/poly_hermite.tcc | 129 - .../include/tr1/poly_laguerre.tcc | 334 - .../libstdc++-v3-4.3.3/include/tr1/random | 71 - .../libstdc++-v3-4.3.3/include/tr1/regex | 68 - .../include/tr1/riemann_zeta.tcc | 440 - .../include/tr1/special_function_util.h | 149 - .../libstdc++-v3-4.3.3/include/tr1/stdarg.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/stdbool.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/stdint.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/stdio.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/stdlib.h | 57 - .../libstdc++-v3-4.3.3/include/tr1/tgmath.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/tuple | 427 - .../include/tr1/type_traits | 249 - .../include/tr1/unordered_map | 66 - .../include/tr1/unordered_set | 66 - .../libstdc++-v3-4.3.3/include/tr1/utility | 61 - .../libstdc++-v3-4.3.3/include/tr1/wchar.h | 39 - .../libstdc++-v3-4.3.3/include/tr1/wctype.h | 39 - .../libstdc++-v3-4.3.3/include/tr1_impl/array | 250 - .../include/tr1_impl/boost_shared_ptr.h | 1124 - .../include/tr1_impl/boost_sp_counted_base.h | 244 - .../include/tr1_impl/cctype | 48 - .../libstdc++-v3-4.3.3/include/tr1_impl/cfenv | 77 - .../include/tr1_impl/cinttypes | 71 - .../libstdc++-v3-4.3.3/include/tr1_impl/cmath | 905 - .../include/tr1_impl/complex | 377 - .../include/tr1_impl/cstdint | 82 - .../include/tr1_impl/cstdio | 49 - .../include/tr1_impl/cstdlib | 70 - .../include/tr1_impl/cwchar | 63 - .../include/tr1_impl/cwctype | 48 - .../include/tr1_impl/functional | 2124 - .../include/tr1_impl/functional_hash.h | 184 - .../include/tr1_impl/hashtable | 1244 - .../include/tr1_impl/hashtable_policy.h | 808 - .../include/tr1_impl/random | 2347 - .../include/tr1_impl/random.tcc | 1582 - .../libstdc++-v3-4.3.3/include/tr1_impl/regex | 2414 - .../include/tr1_impl/type_traits | 442 - .../include/tr1_impl/unordered_map | 307 - .../include/tr1_impl/unordered_set | 303 - .../include/tr1_impl/utility | 98 - .../libstdc++-v3-4.3.3/libmath/Makefile.am | 41 - .../libstdc++-v3-4.3.3/libmath/Makefile.in | 517 - .../libstdc++-v3-4.3.3/libmath/copysignf.c | 39 - .../libstdc++-v3-4.3.3/libmath/mathconf.h | 309 - .../libstdc++-v3-4.3.3/libmath/signbit.c | 41 - .../libstdc++-v3-4.3.3/libmath/signbitf.c | 41 - .../libstdc++-v3-4.3.3/libmath/signbitl.c | 48 - .../libstdc++-v3-4.3.3/libmath/stubs.c | 455 - .../libstdc++-v3-4.3.3/libsupc++/Makefile.am | 185 - .../libstdc++-v3-4.3.3/libsupc++/Makefile.in | 784 - .../libsupc++/array_type_info.cc | 38 - .../libsupc++/atexit_arm.cc | 44 - .../libstdc++-v3-4.3.3/libsupc++/bad_cast.cc | 42 - .../libsupc++/bad_typeid.cc | 42 - .../libsupc++/class_type_info.cc | 116 - .../libsupc++/cxxabi-forced.h | 51 - .../libstdc++-v3-4.3.3/libsupc++/cxxabi.h | 553 - .../libstdc++-v3-4.3.3/libsupc++/del_op.cc | 50 - .../libstdc++-v3-4.3.3/libsupc++/del_opnt.cc | 41 - .../libstdc++-v3-4.3.3/libsupc++/del_opv.cc | 38 - .../libstdc++-v3-4.3.3/libsupc++/del_opvnt.cc | 38 - .../libstdc++-v3-4.3.3/libsupc++/dyncast.cc | 77 - .../libstdc++-v3-4.3.3/libsupc++/eh_alloc.cc | 159 - .../libstdc++-v3-4.3.3/libsupc++/eh_arm.cc | 175 - .../libsupc++/eh_aux_runtime.cc | 56 - .../libstdc++-v3-4.3.3/libsupc++/eh_call.cc | 161 - .../libstdc++-v3-4.3.3/libsupc++/eh_catch.cc | 143 - .../libsupc++/eh_exception.cc | 57 - .../libsupc++/eh_globals.cc | 165 - .../libsupc++/eh_personality.cc | 782 - .../libsupc++/eh_term_handler.cc | 51 - .../libsupc++/eh_terminate.cc | 83 - .../libstdc++-v3-4.3.3/libsupc++/eh_throw.cc | 110 - .../libstdc++-v3-4.3.3/libsupc++/eh_type.cc | 51 - .../libsupc++/eh_unex_handler.cc | 34 - .../libsupc++/enum_type_info.cc | 38 - .../libstdc++-v3-4.3.3/libsupc++/exception | 135 - .../libsupc++/exception_defines.h | 51 - .../libsupc++/function_type_info.cc | 44 - .../libsupc++/fundamental_type_info.cc | 41 - .../libstdc++-v3-4.3.3/libsupc++/guard.cc | 416 - .../contrib/libstdc++-v3-4.3.3/libsupc++/new | 116 - .../libsupc++/new_handler.cc | 54 - .../libstdc++-v3-4.3.3/libsupc++/new_op.cc | 72 - .../libstdc++-v3-4.3.3/libsupc++/new_opnt.cc | 67 - .../libstdc++-v3-4.3.3/libsupc++/new_opv.cc | 38 - .../libstdc++-v3-4.3.3/libsupc++/new_opvnt.cc | 38 - .../libsupc++/pbase_type_info.cc | 67 - .../libsupc++/pmem_type_info.cc | 54 - .../libsupc++/pointer_type_info.cc | 58 - .../libstdc++-v3-4.3.3/libsupc++/pure.cc | 56 - .../libsupc++/si_class_type_info.cc | 90 - .../libstdc++-v3-4.3.3/libsupc++/tinfo.cc | 85 - .../libstdc++-v3-4.3.3/libsupc++/tinfo.h | 188 - .../libstdc++-v3-4.3.3/libsupc++/tinfo2.cc | 49 - .../libstdc++-v3-4.3.3/libsupc++/typeinfo | 197 - .../libstdc++-v3-4.3.3/libsupc++/unwind-cxx.h | 251 - .../libstdc++-v3-4.3.3/libsupc++/vec.cc | 504 - .../libsupc++/vmi_class_type_info.cc | 364 - .../libsupc++/vterminate.cc | 103 - .../contrib/libstdc++-v3-4.3.3/linkage.m4 | 539 - .../contrib/libstdc++-v3-4.3.3/po/Makefile.am | 86 - .../contrib/libstdc++-v3-4.3.3/po/Makefile.in | 501 - .../contrib/libstdc++-v3-4.3.3/po/POTFILES.in | 25 - .../contrib/libstdc++-v3-4.3.3/po/de.po | 31 - .../contrib/libstdc++-v3-4.3.3/po/fr.po | 31 - .../libstdc++-v3-4.3.3/po/libstdc++.pot | 56 - .../libstdc++-v3-4.3.3/po/string_literals.cc | 38 - .../libstdc++-v3-4.3.3/scripts/check_compile | 56 - .../scripts/check_performance | 95 - .../scripts/create_testsuite_files | 54 - .../scripts/extract_symvers | 67 - .../scripts/gen_bind_includers.pl | 30 - .../scripts/gen_includers.pl | 126 - .../scripts/gen_includers2.pl | 31 - .../scripts/make_exports.pl | 144 - .../libstdc++-v3-4.3.3/scripts/make_graph.py | 576 - .../libstdc++-v3-4.3.3/scripts/make_graphs.py | 160 - .../libstdc++-v3-4.3.3/scripts/run_doxygen | 345 - .../scripts/testsuite_flags.in | 81 - .../libstdc++-v3-4.3.3/src/Makefile.am | 323 - .../libstdc++-v3-4.3.3/src/Makefile.in | 863 - .../libstdc++-v3-4.3.3/src/allocator-inst.cc | 42 - .../src/bitmap_allocator.cc | 126 - .../contrib/libstdc++-v3-4.3.3/src/codecvt.cc | 153 - .../src/compatibility-ldbl.cc | 84 - .../libstdc++-v3-4.3.3/src/compatibility.cc | 541 - .../libstdc++-v3-4.3.3/src/complex_io.cc | 115 - .../libstdc++-v3-4.3.3/src/concept-inst.cc | 113 - .../contrib/libstdc++-v3-4.3.3/src/ctype.cc | 120 - .../contrib/libstdc++-v3-4.3.3/src/debug.cc | 713 - .../libstdc++-v3-4.3.3/src/debug_list.cc | 33 - .../libstdc++-v3-4.3.3/src/ext-inst.cc | 68 - .../libstdc++-v3-4.3.3/src/fstream-inst.cc | 51 - .../libstdc++-v3-4.3.3/src/functexcept.cc | 159 - .../libstdc++-v3-4.3.3/src/globals_io.cc | 110 - .../contrib/libstdc++-v3-4.3.3/src/hash.cc | 108 - .../libstdc++-v3-4.3.3/src/hash_c++0x.cc | 30 - .../libstdc++-v3-4.3.3/src/hashtable.cc | 111 - .../libstdc++-v3-4.3.3/src/hashtable_c++0x.cc | 30 - .../libstdc++-v3-4.3.3/src/ios-inst.cc | 45 - .../contrib/libstdc++-v3-4.3.3/src/ios.cc | 194 - .../libstdc++-v3-4.3.3/src/ios_failure.cc | 49 - .../libstdc++-v3-4.3.3/src/ios_init.cc | 203 - .../libstdc++-v3-4.3.3/src/ios_locale.cc | 61 - .../libstdc++-v3-4.3.3/src/iostream-inst.cc | 51 - .../libstdc++-v3-4.3.3/src/istream-inst.cc | 117 - .../contrib/libstdc++-v3-4.3.3/src/istream.cc | 691 - .../contrib/libstdc++-v3-4.3.3/src/limits.cc | 481 - .../contrib/libstdc++-v3-4.3.3/src/list.cc | 143 - .../libstdc++-v3-4.3.3/src/locale-inst.cc | 363 - .../contrib/libstdc++-v3-4.3.3/src/locale.cc | 446 - .../libstdc++-v3-4.3.3/src/locale_facets.cc | 118 - .../libstdc++-v3-4.3.3/src/locale_init.cc | 460 - .../libstdc++-v3-4.3.3/src/localename.cc | 315 - .../libstdc++-v3-4.3.3/src/misc-inst.cc | 81 - .../libstdc++-v3-4.3.3/src/mt_allocator.cc | 820 - .../libstdc++-v3-4.3.3/src/ostream-inst.cc | 120 - .../libstdc++-v3-4.3.3/src/parallel_list.cc | 30 - .../src/parallel_settings.cc | 47 - .../libstdc++-v3-4.3.3/src/pool_allocator.cc | 179 - .../libstdc++-v3-4.3.3/src/sstream-inst.cc | 51 - .../libstdc++-v3-4.3.3/src/stdexcept.cc | 79 - .../libstdc++-v3-4.3.3/src/streambuf-inst.cc | 66 - .../libstdc++-v3-4.3.3/src/streambuf.cc | 118 - .../libstdc++-v3-4.3.3/src/string-inst.cc | 88 - .../libstdc++-v3-4.3.3/src/strstream.cc | 419 - .../contrib/libstdc++-v3-4.3.3/src/tree.cc | 436 - .../libstdc++-v3-4.3.3/src/valarray-inst.cc | 111 - .../libstdc++-v3-4.3.3/src/wlocale-inst.cc | 81 - .../libstdc++-v3-4.3.3/src/wstring-inst.cc | 39 - l4/pkg/libsupc++/build/Makefile-4.1.0 | 0 l4/pkg/libsupc++/build/Makefile-4.3.3 | 16 - l4/pkg/mag/include/server/lua | 67 - l4/pkg/rtc/lib/libc_backend/gettime.c | 24 - .../rtc/lib/libc_backend/l4libc_init_time.c | 44 - l4/pkg/sqlite/lib/contrib/sqlite3.pc | 13 - l4/pkg/zlib/lib/dist/example.c | 565 - l4/pkg/zlib/lib/dist/minigzip.c | 440 - l4/pkg/zlib/lib/dist/zconf.in.h | 332 - .../kconfig/scripts/kconfig/kconfig_load.c | 35 - .../scripts/kconfig/lex.zconf.c_shipped | 2435 - 2663 files changed, 1105954 deletions(-) delete mode 100644 kernel/fiasco/src/boot/amd64/kernel_multiboot.h delete mode 100644 kernel/fiasco/src/jdb/jdb_semaphore.cpp delete mode 100644 kernel/fiasco/src/kern/arm/bsp/config-arm-pxa_sa1100.cpp delete mode 100644 kernel/fiasco/src/kern/arm/bsp/pic-arm-pxa_sa1100.cpp delete mode 100644 kernel/fiasco/src/kern/arm/bsp/timer-arm-pxa_sa1100.cpp delete mode 100644 kernel/fiasco/src/kern/arm/dirq-arm.cpp delete mode 100644 kernel/fiasco/src/kern/arm/pic-arm.cpp delete mode 100644 kernel/fiasco/src/kern/dirq.cpp delete mode 100644 kernel/fiasco/src/kern/dirq_io_apic.cpp delete mode 100644 kernel/fiasco/src/kern/dirq_pic_pin.cpp delete mode 100644 kernel/fiasco/src/kern/ia32/cpu_lock-pic.cpp delete mode 100644 kernel/fiasco/src/kern/ia32/dirq_pic_pin-ia32-ux.cpp delete mode 100644 kernel/fiasco/src/kern/ia32/multiboot.h delete mode 100644 kernel/fiasco/src/kern/ia32/profile.cpp delete mode 100644 kernel/fiasco/src/kern/io_apic.cpp delete mode 100644 kernel/fiasco/src/kern/io_space_sigma0.cpp delete mode 100644 kernel/fiasco/src/kern/irq_pin.cpp delete mode 100644 kernel/fiasco/src/kern/kmem_slab_simple.cpp delete mode 100644 kernel/fiasco/src/kern/mapped_alloc.cpp delete mode 100644 kernel/fiasco/src/kern/mem_space_sigma0.cpp delete mode 100644 kernel/fiasco/src/kern/pages.cpp delete mode 100644 kernel/fiasco/src/kern/ppc32/mem_space-user-ppc32.cpp delete mode 100644 kernel/fiasco/src/kern/thread-ulock.cpp delete mode 100644 kernel/fiasco/src/kern/u_lock.cpp delete mode 100644 kernel/fiasco/src/kern/u_semaphore.cpp delete mode 100644 kernel/fiasco/src/lib/disasm/disasm.c delete mode 100644 kernel/fiasco/src/lib/libk/dlist.cpp delete mode 100644 kernel/fiasco/src/lib/libk/ia32/gmon.cpp delete mode 100644 kernel/fiasco/src/lib/libk/slab_cache_anon.cpp delete mode 100644 kernel/fiasco/src/lib/minilibc/construction.c delete mode 100644 kernel/fiasco/src/lib/minilibc/include/initfini.h delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_imx.cc delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_imx.h delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_omap35x.cc delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_omap35x.h delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_pl011.cc delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_pl011.h delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_s3c2410.cc delete mode 100644 kernel/fiasco/src/lib/uart/arm/uart_s3c2410.h delete mode 100644 kernel/fiasco/src/lib/uart/ppc32/of1275.h delete mode 100644 kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.cc delete mode 100644 kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.h delete mode 100644 kernel/fiasco/src/lib/uart/ppc32/uart_of.cc delete mode 100644 kernel/fiasco/src/lib/uart/ppc32/uart_of.h delete mode 100755 kernel/fiasco/tool/autocheck delete mode 100644 kernel/fiasco/tool/kconfig/scripts/kconfig/kconfig_load.c delete mode 100644 kernel/fiasco/tool/kconfig/scripts/kconfig/lex.zconf.c_shipped delete mode 100644 l4/pkg/ankh/lib/libc_be_socket/Makefile delete mode 100644 l4/pkg/ankh/lib/libc_be_socket/be.c delete mode 100644 l4/pkg/ankh/lib/libc_be_socket/sock_fs.cc delete mode 100644 l4/pkg/ankh/lib/libc_be_socket/sock_fs.h delete mode 100644 l4/pkg/ankh/lib/lwip/Makefile delete mode 100644 l4/pkg/ankh/lib/lwip/WTF delete mode 100644 l4/pkg/ankh/lib/lwip/include/Makefile delete mode 100644 l4/pkg/ankh/lib/lwip/lib/Makefile delete mode 100644 l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/arch/cc.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/arch/perf.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/arch/perf.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/CHANGELOG delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/COPYING delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/FILES delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/README delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/doc/FILES delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/doc/contrib.txt delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/doc/rawapi.txt delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/doc/savannah.txt delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/doc/snmp_agent.txt delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/doc/sys_arch.txt delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/.hgignore delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/FILES delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_lib.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_msg.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/err.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netbuf.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netdb.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netifapi.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/sockets.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/api/tcpip.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/def.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dhcp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dns.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/inet_chksum.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/init.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/autoip.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/icmp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/igmp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4_addr.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip_frag.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/README delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/dhcp6.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ethip6.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/icmp6.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/inet6.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_addr.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_frag.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/mld6.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/nd6.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/mem.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/memp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/netif.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/pbuf.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/raw.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_dec.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_enc.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib2.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib_structs.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_in.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_out.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/stats.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/sys.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_in.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_out.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/timers.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/core/udp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/autoip.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/icmp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/igmp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet_chksum.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4_addr.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip_frag.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/dhcp6.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ethip6.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/icmp6.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/inet6.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_addr.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_frag.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/mld6.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/nd6.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api_msg.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/arch.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/debug.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/def.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dhcp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dns.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/err.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/inet_chksum.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/init.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip_addr.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/mem.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp_std.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netbuf.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netdb.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netif.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netifapi.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/opt.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/pbuf.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/raw.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sio.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_asn1.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_msg.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_structs.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sockets.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/stats.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sys.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp_impl.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcpip.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/timers.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/udp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/etharp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/ppp_oe.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/slipif.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/FILES delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/etharp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ethernetif.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp_oe.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pppdebug.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.h delete mode 100644 l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/slipif.c delete mode 100644 l4/pkg/ankh/lib/lwip/lib/lwipopts.h delete mode 100644 l4/pkg/bootstrap/server/src/ARCH-x86/serial.cc delete mode 100644 l4/pkg/bootstrap/server/src/ARCH-x86/serial.h delete mode 100644 l4/pkg/dde/include/ddekit/__usem_wrap.h delete mode 100644 l4/pkg/l4sys/doc/Makefile delete mode 100644 l4/pkg/l4sys/doc/l4sys-l4f-footer.html delete mode 100644 l4/pkg/l4sys/doc/l4sys-l4f-header.html delete mode 100644 l4/pkg/l4sys/doc/l4sys-l4f.cfg delete mode 100644 l4/pkg/l4sys/doc/l4sys-l4f.dox delete mode 100644 l4/pkg/l4sys/include/ARCH-amd64/L4API-l4f/__semaphore_impl.h delete mode 100644 l4/pkg/l4sys/include/ARCH-arm/__semaphore_impl.h delete mode 100644 l4/pkg/l4sys/include/ARCH-ppc32/__semaphore_impl.h delete mode 100644 l4/pkg/l4sys/include/ARCH-sparc/__semaphore_impl.h delete mode 100644 l4/pkg/l4sys/include/ARCH-x86/L4API-l4f/__semaphore_impl.h delete mode 100644 l4/pkg/l4sys/include/semaphore delete mode 100644 l4/pkg/l4sys/include/semaphore.h delete mode 100644 l4/pkg/libkproxy/lib/src/scheduler_svr.cc delete mode 100644 l4/pkg/libpng/lib/dist/pngvalid.c delete mode 100644 l4/pkg/libpng/lib/dist/scripts/list delete mode 100644 l4/pkg/libpng/lib/dist/scripts/makefile.watcom delete mode 100644 l4/pkg/libstdc++-headers/include-4.1.0/Makefile delete mode 100644 l4/pkg/libstdc++-headers/include-4.1.0/bits/c++config.h delete mode 100644 l4/pkg/libstdc++-headers/include-4.3.3/Makefile delete mode 100644 l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h delete mode 100644 l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 delete mode 100644 l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 delete mode 100644 l4/pkg/libstdc++-v3/contrib/gcc-4.1.0/coretypes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/gcc-4.1.0/unwind-pe.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/gcc-4.3.3/coretypes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/gcc-4.3.3/unwind-pe.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-1998 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-1999 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2000 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2001 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2002 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2003 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2004 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/README delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/acinclude.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/aclocal.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config.h.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/alpha-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/compatibility.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/hppa-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/i386-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/i486-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/ia64-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/mips-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc64-linux-gnu/32/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc64-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/s390-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/s390x-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/sparc-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/x86_64-linux-gnu/32/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/x86_64-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/bitmap_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/malloc_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/mt_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/new_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/pool_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/alpha/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/alpha/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/arm/cxxabi_tweaks.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/cris/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/cris/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cpu_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cxxabi_tweaks.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/hppa/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i386/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i486/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/ia64/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/ia64/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/m68k/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/mips/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/cpu_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/s390/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sh/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sparc/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sparc/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/c_io_stdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.dummy delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.gnu delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/darwin/ctype_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c++locale_internal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/codecvt_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/collate_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/ctype_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/monetary_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/numeric_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c++locale_internal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c_locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/codecvt_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/collate_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/ctype_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/monetary_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/numeric_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/c_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/c_locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/messages_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/messages_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ppc-extra.ver delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/os_defines.h delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.ac delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.host delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/crossconfig.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/Intro.3 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/TODO delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/doxygroups.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/guide.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/mainpage.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/run_doxygen delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/stdheader.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/style.css delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/tables.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/user.cfg.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BADNAMES delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BUGS delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/C++STYLE delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/CHECKLIST delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING.DOC delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/DESIGN delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/HEADER_POLICY delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/PROBLEMS delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/RELEASE-NOTES delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/TODO delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/concept_check.diff delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/confdeps.dot delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/confdeps.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/configury.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/contribute.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/headers_cc.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/license.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.texi delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/18_support/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/19_diagnostics/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/allocator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/gotw29a.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_h.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_std_h.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/codecvt.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/ctype.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/locale.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/messages.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/wrappers_h.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/24_iterators/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/25_algorithms/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/26_numerics/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kanze.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kuehl.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/Makefile delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/abi.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/configopts.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug_mode.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/documentation.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/explanations.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/ballocator_doc.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/howto.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-active.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-defects.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/mt_allocator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/Std_hash_set_impl.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/acks.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/balls_and_bins.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_compound_data.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_no_data.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_assoc_cntnr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_invalidation_guarantee.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ms_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_const_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev_it.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_assoc_cntnr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_max_collision_check_resize_trigger.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_policy_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/component_requirements.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_enabled_ms_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_type.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/concepts.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/contact.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_metadata.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/data_enabled_ms_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/design.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/different_underlying_dss.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mask_range_hashing.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mod_range_hashing.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/disclaimer.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_gen.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_tag_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_traits.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/embedded_lists_1.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/embedded_lists_2.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/examples.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/exception_guarantees_specifics.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_invalidation_guarantee.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_range_ops_1.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_range_ops_2.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/generics.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_assoc_cntnr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_policy_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_and_probe_general.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_based_containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_exponential_size_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_load_check_resize_trigger.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_policies.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_policy_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_prime_size_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram2.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_ranged_hash_range_hashing_fns.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_standard_resize_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/home.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/index.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_resize_sequence_diagram1.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_resize_sequence_diagram2.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_resize_sequence_diagram3.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_type_methods.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/interface.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/interval_node_invariants.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/introduction.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/invalidation_guarantee_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/invalidation_guarantee_erase.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lib_download.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/linear_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/list_updates.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_assoc_cntnr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_based_containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_ops.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/mmap_value_utils.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/motivation.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_metadata.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_gen.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_tag_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_traits.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/node_invariant_invalidations.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/node_invariants.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/node_invariants.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/non_unique_mapping.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/non_unique_mapping_containers.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_data_type.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_hash_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_by_key.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key_cmp.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_node_updator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ov_tree_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/overview.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/pb_assoc_ex.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/portability.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/quadratic_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/range_invalidation_guarantee.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rank_node_invariants.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rationale_null_node_updator.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rb_tree_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/reference_iterator.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/references.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/regression_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_general.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_policies.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_policy_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/restoring_node_invariants.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_node_updator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_trigger.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_size_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_update_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/size_policies_general.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/splay_tree_ds_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/timing_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/toc.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_const_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_based_containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_cd.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/trigger_policies_general.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tutorial.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/update_seq_diagram.jpg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/sgiexts.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/tr1.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/install.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/lib3styles.css delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/makedoc.awk delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/fragment.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/algo.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/algobase.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/alloc.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/backward_warning.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/bvector.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/complex.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/defalloc.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/deque.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/fstream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/function.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hashtable.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/heap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iomanip.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iostream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/istream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/list.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multimap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multiset.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/new.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/ostream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/pair.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/queue.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/rope.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/slist.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stack.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/streambuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/strstream delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tempbuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tree.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/vector.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_ios.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_ios.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/boost_concept_check.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/c++config delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/char_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/codecvt.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/concept_check.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/concurrence.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/cpp_type_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/deque.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/fstream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/functexcept.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/indirect_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ios_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/istream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/list.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_classes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/localefwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/mask_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ostream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/postypes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/slice_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/sstream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algo.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algobase.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_bvector.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_construct.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_deque.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_function.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_heap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_funcs.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_types.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_list.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multimap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multiset.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_numeric.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_pair.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_queue.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_raw_storage_iter.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_relops.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_stack.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tempbuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tree.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_uninitialized.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_vector.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stream_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stringfwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_after.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_before.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/vector.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cassert.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cerrno.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cfloat.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ciso646.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_climits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_clocale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cmath.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_csetjmp.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_csignal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdarg.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstddef.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdlib.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstring.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ctime.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwchar.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/assert.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/ctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/errno.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/float.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/iso646.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/limits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/math.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/setjmp.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/signal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdarg.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stddef.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdlib.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/string.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/time.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wchar.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/cmath.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cassert.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cerrno.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cfloat.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ciso646.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_climits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_clocale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cmath.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csetjmp.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csignal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdarg.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstddef.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdlib.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstring.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ctime.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwchar.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/bitset delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/debug.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/deque delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/formatter.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/functions.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multimap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multiset.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/list delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/macros.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multimap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multiset.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_sequence.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/string delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/vector delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/algorithm delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/array_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/bitmap_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/codecvt_specializations.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/debug_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/functional delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_fun.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hashtable.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/iterator delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/malloc_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/memory delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/mt_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/new_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/numeric delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/assoc_cntnr.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/data_type.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/assoc_cntnr_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/d_find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_assoc_cntnr/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/resize_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/node_iteration_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/r_range_iteration_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/range_iteration_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/bin_search_tree_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/find_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/node_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/r_erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/rotate_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/bin_search_tree_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/cmp_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/cond_key_dtor_entry_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/constructor_destructor_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/debug_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/debug_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/entry_list_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/erase_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/erase_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/find_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/find_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/insert_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/insert_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/resize_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/resize_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/resize_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/size_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cc_ht_map_/standard_policies.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/cond_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ds_trait_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/eq_fn/eq_by_less.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/constructor_destructor_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/debug_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/debug_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/erase_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/erase_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/find_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/find_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/insert_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/insert_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/iterator_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/resize_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/resize_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/gp_ht_map_/resize_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/direct_mask_range_hashing_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/direct_mod_range_hashing_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/linear_probe_fn_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/mask_based_range_hashing.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/mod_based_range_hashing.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/probe_fn_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/quadratic_probe_fn_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/ranged_hash_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_fn/ranged_probe_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/hash_types_traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_assoc_cntnr/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_assoc_cntnr/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/lu_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_map_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_policy/counter_lu_metadata_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_policy/counter_lu_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/lu_policy/mtf_lu_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/map_debug_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/mapping_level_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ms_category_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ms_trait_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/order_statistics_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/cond_dtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/node_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/ov_tree_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/ov_tree_map_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/node.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/rb_tree_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/rb_tree_map_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/resize_policy/cc_hash_max_collision_resize_trigger_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/resize_policy/hash_exponential_size_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/resize_policy/hash_prime_size_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/resize_policy/hash_standard_resize_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/resize_policy/ht_prime_size_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/resize_policy/size_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/node.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/standard_policies.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/standard_sizes.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/tree_policy/null_node_updator_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/tree_policy/order_statistics_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/type_utils.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist/typelist_append.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist/typelist_apply.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist/typelist_at_index.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist/typelist_contains.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist/typelist_filter.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist/typelist_transform.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/typelist/typelist_typelist_append.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/types_traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/unordered_iterator/const_find_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/unordered_iterator/const_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/unordered_iterator/find_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/unordered_iterator/iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/constructor_destructor_and_related.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/erase_if_pred.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/invalidation_guarantee_selector.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/it_value_type_traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/iterator_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/ref_pair.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/value_type_adapter.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/detail/value_type_adapter/value_type_traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/ds_trait.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/exception.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/hash_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/lu_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/ms_trait.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/tree_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pb_assoc/trivial_iterator_def.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pod_char_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/pool_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/rb_tree delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/rc_string_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/rope delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/ropeimpl.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/slist delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/sso_string_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/stdio_filebuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/stdio_sync_filebuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/typelist.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/vstring.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/vstring.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/vstring_fwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/vstring_util.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_algorithm.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_bitset.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_complex.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_deque.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_fstream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_functional.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_iomanip.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_ios.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_iosfwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_iostream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_istream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_limits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_list.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_memory.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_numeric.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_ostream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_queue.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_sstream.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_stack.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_stdexcept.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_streambuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_string.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_utility.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_valarray.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/std/std_vector.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/stdc++.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/array delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/bind_iterate.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/bind_repeat.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/boost_shared_ptr.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/functional delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/functional_iterate.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/hashtable delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/memory delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/mu_iterate.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/ref_fwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/ref_wrap_iterate.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/repeat.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/tuple delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/tuple_iterate.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/type_traits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/type_traits_fwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/unordered_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/unordered_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/tr1/utility delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/copysignf.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/mathconf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/signbit.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/signbitf.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/signbitl.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libmath/stubs.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/cxxabi.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/del_op.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/del_opnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/del_opv.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/del_opvnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_alloc.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_arm.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_aux_runtime.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_call.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_catch.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_exception.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_globals.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_personality.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_term_handler.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_terminate.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_throw.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_type.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/eh_unex_handler.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/exception delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/exception_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/guard.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/new delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/new_handler.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/new_op.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/new_opnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/new_opv.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/new_opvnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/pure.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/tinfo.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/tinfo.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/tinfo2.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/typeinfo delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/unwind-cxx.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/vec.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/libsupc++/vterminate.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/linkage.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/po/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/po/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/po/POTFILES.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/po/de.po delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/po/fr.po delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/po/libstdc++.pot delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/po/string_literals.cc delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/check_compile delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/check_performance delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/create_testsuite_files delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/extract_symvers delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/gen_bind_includers.pl delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/gen_includers.pl delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/make_exports.pl delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/scripts/testsuite_flags.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/allocator-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/bitmap_allocator.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/codecvt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/compatibility.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/complex_io.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/concept-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ctype.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/debug.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/debug_list.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ext-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/fstream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/functexcept.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/globals_io.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/globals_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ios-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ios.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ios_failure.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ios_init.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ios_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/iostream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/istream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/istream.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/limits.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/list.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/locale-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/locale-misc-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/locale_facets.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/locale_init.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/localename.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/misc-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/mt_allocator.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/ostream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/pool_allocator.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/sstream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/stdexcept.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/streambuf-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/streambuf.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/string-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/strstream.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/tree.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/valarray-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/wlocale-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/src/wstring-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-1998 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-1999 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2000 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2001 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2002 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2003 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2004 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2005 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2006 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/ChangeLog-2007 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/README delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/acinclude.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/aclocal.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config.h.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/compatibility.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/i386-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/i486-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/mips-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/s390-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/pre/gnu-versioned-namespace.ver delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/pre/gnu.ver delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/abi/pre/none.ver delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/allocator/bitmap_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/allocator/malloc_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/allocator/mt_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/allocator/new_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/allocator/pool_allocator_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/alpha/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/arm/cxxabi_tweaks.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/cris/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/cris/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/generic/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/generic/atomicity_builtins/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/generic/atomicity_mutex/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/generic/cpu_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/generic/cxxabi_tweaks.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/hppa/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/i386/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/i486/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/ia64/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/m68k/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/mips/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/powerpc/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/powerpc/cpu_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/sh/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/sparc/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/cpu/sparc/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/io/basic_file_stdio.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/io/basic_file_stdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/io/c_io_stdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/darwin/ctype_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/c++locale_internal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/c_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/c_locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/codecvt_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/collate_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/ctype_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/messages_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/messages_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/monetary_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/numeric_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/time_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/generic/time_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/c++locale_internal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/c_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/c_locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/codecvt_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/collate_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/ctype_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/messages_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/messages_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/monetary_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/numeric_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/time_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/gnu/time_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/ieee_1003.1-2001/c_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/ieee_1003.1-2001/c_locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/ieee_1003.1-2001/messages_members.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/locale/ieee_1003.1-2001/messages_members.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/aix/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/aix/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/aix/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/aix/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/aix/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/aix/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/darwin/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/darwin/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/darwin/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/darwin/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/darwin/ppc-extra.ver delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/freebsd/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/freebsd/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/freebsd/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/freebsd/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/netbsd/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/netbsd/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/netbsd/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/bsd/netbsd/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/djgpp/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/djgpp/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/djgpp/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/djgpp/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/generic/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/generic/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/generic/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/generic/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/gnu-linux/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/gnu-linux/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/gnu-linux/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/gnu-linux/ldbl-extra.ver delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/gnu-linux/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/hpux/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/hpux/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/hpux/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/hpux/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/atomic_word.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix5.2/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix5.2/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix5.2/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix5.2/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix6.5/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix6.5/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix6.5/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/irix/irix6.5/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/mingw32/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/mingw32/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/mingw32/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/mingw32/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/newlib/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/newlib/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/newlib/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/newlib/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/qnx/qnx6.1/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/qnx/qnx6.1/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/qnx/qnx6.1/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/qnx/qnx6.1/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.5/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.5/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.5/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.5/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.6/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.6/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.6/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.6/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.7/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.7/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.7/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/solaris/solaris2.7/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/tpf/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/tpf/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/tpf/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/tpf/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/uclibc/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/uclibc/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/uclibc/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/uclibc/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/vxworks/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/vxworks/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/vxworks/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/vxworks/os_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/windiss/ctype_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/windiss/ctype_inline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/windiss/ctype_noninline.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/config/os/windiss/os_defines.h delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/configure delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/configure.ac delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/configure.host delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/crossconfig.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/doxygen/Intro.3 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/doxygen/TODO delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/doxygen/doxygroups.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/doxygen/mainpage.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/doxygen/stdheader.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/doxygen/tables.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/doxygen/user.cfg.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/README delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/api.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/bk02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/bk03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/lwg-active.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/lwg-closed.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/lwg-defects.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/PythonPoweredSmall.gif delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/acks.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_container_tag_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_container_tag_cd.svg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_container_traits.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_design.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_examples.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_performance_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_regression_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/assoc_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/associative_container_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/balls_and_bins.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/basic_hash_table.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/basic_hash_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/basic_invalidation_guarantee.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/basic_tree.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/basic_tree_assoc_container_const_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/basic_tree_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/binary_heap_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/binary_priority_queue_random_int_push_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/binomial_heap_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_max_collision_check_resize_trigger.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_find_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_find_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_random_int_subscript_timing_test_insert_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_table.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/cc_hash_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/ccgp_hash_random_int_subscript_timing_test_insert_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/checked_by_tidy.gif delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/concepts.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/contact.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/container_base.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/container_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/container_cd.svg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/container_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/counter_lu_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/design.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/different_underlying_dss.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/direct_mask_range_hashing.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/direct_mod_range_hashing.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/disclaimer.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/ds_gen.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/embedded_lists_1.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/embedded_lists_2.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/embedded_lists_3.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/examples.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/exceptions.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_find_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_find_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_random_int_subscript_timing_test_insert_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_table.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/gp_hash_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_based_containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_exponential_size_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_load_check_resize_trigger.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_policy_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_prime_size_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_random_int_erase_mem_usage_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_random_int_find_find_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_random_int_subscript_find_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_random_int_subscript_insert_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_range_hashing_seq_diagram2.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_ranged_hash_range_hashing_fns.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_standard_resize_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_text_find_find_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_zlob_random_int_find_find_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/hash_zlob_random_int_find_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/index.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/insert_error.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/insert_resize_sequence_diagram1.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/insert_resize_sequence_diagram2.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/insert_resize_sequence_diagram3.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/interface.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/introduction.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/invalidation_guarantee_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/invalidation_guarantee_erase.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/join_error.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/linear_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/list_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/list_update_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/lu.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/lu_based_containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/misc.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/motivation.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/move_to_front_lu_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_hash_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_large_s2p_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_hash_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_find_timing_test_small_s2p_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_hash_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_large_s2p_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_hash_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_mem_usage_test_small_s2p_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_hash_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_large_s2p_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_hash_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/multimap_text_insert_timing_test_small_s2p_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/node_invariant_invalidations.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/node_invariants.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/null_hash_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/null_lu_metadata.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/null_mapped_type.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/null_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/null_tree_node_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/null_trie_node_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/ov_tree_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pairing_heap_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_pop_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pairing_priority_queue_text_push_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pat_trie.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pat_trie_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/point_invalidation_guarantee.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/point_iterators_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/point_iterators_range_ops_1.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/point_iterators_range_ops_2.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pq_container_traits.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pq_design.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pq_different_underlying_dss.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pq_examples.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pq_performance_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pq_regression_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/pq_tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/prerequisites.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_pop_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_random_int_push_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_tag_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_tag_cd.svg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_join_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_down_timing_test_pairing_thin_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_modify_up_timing_test_pairing_thin_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_pop_mem_usage_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_pop_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/priority_queue_text_push_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/quadratic_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/random_int_find_find_timing_test_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/range_invalidation_guarantee.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/rationale_null_node_updator.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/rb_tree_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/rc_binomial_heap_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/references.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/resize_error.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/resize_policy_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/restoring_node_invariants.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_range_hashing.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_ranged_hash_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_ranged_probe_fn.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_resize_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_resize_trigger.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_size_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_tree_node_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_trie_e_access_traits.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_trie_node_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/sample_update_policy.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/simple_list.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/splay_tree_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/string_trie_e_access_traits.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tests.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/text_find_timing_test_hash_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/text_find_timing_test_hash_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/text_find_timing_test_hash_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/text_find_timing_test_tree_like_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/thin_heap_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_based_containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_node_updator_policy_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_order_statistics_node_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_order_statistics_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_order_statistics_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_random_int_find_find_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_split_join_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_split_join_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_split_join_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_split_join_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_find_find_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_node_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_pat_trie_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_insert_timing_test_vector_tree_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_lor_find_find_timing_test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_gcc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_local.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tree_text_lor_find_timing_test_msvc.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie_based_containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie_const_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie_node_iterator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie_node_updator_policy_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie_order_statistics_node_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie_prefix_search_node_update.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trie_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/trivial_iterator_tag.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/tutorial.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/update_policy_cd.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/ext/pb_ds/update_seq_diagram.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/faq.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/index.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/abi.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/algorithms.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/api.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/appendix_contributing.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/appendix_free.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/appendix_porting.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/auto_ptr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/backwards.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bitmap_allocator.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01apas02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01apas03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01apas04.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01apas05.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01apd.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01apds02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01apds03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01ape.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch01.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch01s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch01s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch03s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch03s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch03s04.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch03s05.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt01ch03s06.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt02ch04.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt02ch04s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt02ch04s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt02ch05.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt02ch06.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt02ch06s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt02pr01.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt03ch07.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt03ch07s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt03ch07s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt03ch08.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt04ch09.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt04ch10.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt04ch11.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt04ch12.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt05ch13.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt05ch13s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt05ch13s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt05ch13s04.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt05ch13s05.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt05ch13s06.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt06ch14.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt06ch15.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt07ch16.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt07ch16s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt07ch17.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt07ch17s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt07ch18.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt08ch19.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt08ch19s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt09ch20.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt09pr02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt10ch21.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt10ch22.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt10ch23.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt10ch23s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch24.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch25.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch25s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch26.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch27.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch27s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch27s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch28.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt11ch28s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch29.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch30s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch30s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch30s04.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch31s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch31s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch31s04.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch31s05.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch32.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch33.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch33s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch33s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch34.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch35.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch36.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch37.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch38.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch39.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch40s02.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12ch40s03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/bk01pt12pr03.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/build.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/codecvt.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/concurrency.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/containers.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/debug.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/debug_mode.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/diagnostics.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/extensions.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/internals.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/intro.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/io.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/iterators.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/localization.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/messages.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/numerics.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/parallel_mode.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/shared_ptr.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/spine.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/strings.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/support.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/test.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/using.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/manual/utilities.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/html/spine.html delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/api.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/authors.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/book.txml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/chapter.txml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/class.txml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/faq.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/gnu/fdl-1.2.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/gnu/gpl-2.0.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/gnu/gpl-3.0.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/images/confdeps.dot delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/images/confdeps.png delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/abi.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/algorithms.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/allocator.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/appendix_contributing.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/appendix_free.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/appendix_porting.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/auto_ptr.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/backwards_compatibility.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/bitmap_allocator.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/build.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/build_hacking.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/codecvt.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/concurrency.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/configure.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/containers.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/ctype.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/debug.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/debug_mode.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/diagnostics.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/evolution.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/extensions.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/internals.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/intro.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/io.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/iterators.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/locale.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/localization.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/messages.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/mt_allocator.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/numerics.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/parallel_mode.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/shared_ptr.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/spine.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/status_cxx1998.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/status_cxx200x.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/status_cxxtr1.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/strings.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/support.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/test.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/using.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/manual/utilities.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/doc/xml/spine.xml delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/fragment.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/auto_ptr.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/backward_warning.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/binders.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/hash_fun.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/hash_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/hash_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/hashtable.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/backward/strstream delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/algorithmfwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/basic_ios.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/basic_ios.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/basic_string.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/basic_string.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/boost_concept_check.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/boost_sp_shared_count.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/c++config delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/char_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/codecvt.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/concept_check.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/cpp_type_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/deque.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/fstream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/functexcept.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/functional_hash.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/gslice.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/gslice_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/hashtable.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/indirect_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/ios_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/istream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/list.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/locale_classes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/locale_classes.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/locale_facets.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/locale_facets.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/locale_facets_nonio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/locale_facets_nonio.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/localefwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/mask_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/ostream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/ostream_insert.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/postypes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/slice_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/sstream.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_algo.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_algobase.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_bvector.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_construct.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_deque.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_function.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_heap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_iterator_base_funcs.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_iterator_base_types.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_list.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_move.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_multimap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_multiset.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_numeric.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_pair.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_queue.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_raw_storage_iter.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_relops.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_stack.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_tempbuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_tree.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_uninitialized.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stl_vector.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stream_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/streambuf.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/streambuf_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/stringfwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/valarray_after.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/valarray_array.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/valarray_array.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/valarray_before.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/bits/vector.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cassert delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cerrno delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cfloat delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/ciso646 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/climits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/clocale delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cmath delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/csetjmp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/csignal delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cstdarg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cstddef delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cstdio delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cstdlib delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cstring delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/ctime delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cwchar delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c/cwctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/assert.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/complex.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/ctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/errno.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/fenv.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/float.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/inttypes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/iso646.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/limits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/locale.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/math.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/setjmp.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/signal.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/stdarg.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/stdbool.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/stddef.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/stdint.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/stdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/stdlib.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/string.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/tgmath.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/time.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/wchar.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_compatibility/wctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cassert delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/ccomplex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cerrno delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cfenv delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cfloat delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cinttypes delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/ciso646 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/climits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/clocale delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cmath delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cmath.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/csetjmp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/csignal delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cstdarg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cstdbool delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cstddef delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cstdint delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cstdio delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cstdlib delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cstring delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/ctgmath delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/ctime delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cwchar delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_global/cwctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cassert delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cerrno delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cfloat delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/ciso646 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/climits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/clocale delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cmath delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cmath.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/csetjmp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/csignal delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cstdarg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cstddef delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cstdio delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cstdlib delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cstring delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/ctime delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cwchar delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/c_std/cwctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/bitset delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/debug.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/deque delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/formatter.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/functions.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/list delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/macros.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/map.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/multimap.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/multiset.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/safe_association.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/safe_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/safe_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/safe_iterator.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/safe_sequence.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/set.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/string delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/unordered_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/unordered_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/debug/vector delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/algorithm delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/array_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/atomicity.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/bitmap_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/codecvt_specializations.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/concurrence.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/debug_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/enc_filebuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/functional delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/iterator delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/malloc_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/memory delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/mt_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/new_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/numeric delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/numeric_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/assoc_container.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/basic_types.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/cond_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/container_base_dispatch.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/debug_map_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/head.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/node.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/splay_tree_/traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/standard_policies.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/tree_trace_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/type_utils.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/types_traits.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/exception.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/hash_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/list_update_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/priority_queue.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/tag_and_trait.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/tree_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pb_ds/trie_policy.hpp delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pod_char_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/pool_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/rb_tree delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/rc_string_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/rope delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/ropeimpl.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/slist delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/sso_string_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/stdio_filebuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/stdio_sync_filebuf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/throw_allocator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/type_traits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/typelist.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/vstring.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/vstring.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/vstring_fwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/ext/vstring_util.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/algo.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/algobase.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/algorithm delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/algorithmfwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/balanced_quicksort.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/basic_iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/checkers.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/compatibility.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/compiletime_settings.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/equally_split.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/features.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/find.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/find_selectors.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/for_each.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/for_each_selectors.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/iterator.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/list_partition.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/losertree.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/merge.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/multiseq_selection.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/multiway_merge.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/multiway_mergesort.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/numeric delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/numericfwd.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/omp_loop.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/omp_loop_static.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/par_loop.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/parallel.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/partial_sum.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/partition.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/queue.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/quicksort.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/random_number.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/random_shuffle.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/search.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/set_operations.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/settings.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/sort.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/tags.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/types.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/unique_copy.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/parallel/workstealing.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/precompiled/extc++.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/precompiled/stdc++.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/precompiled/stdtr1c++.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/algorithm delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/array delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/bitset delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/c++0x_warning.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/complex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/deque delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/fstream delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/functional delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/iomanip delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/ios delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/iosfwd delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/iostream delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/istream delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/iterator delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/limits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/list delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/locale delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/memory delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/numeric delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/ostream delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/queue delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/random delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/regex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/sstream delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/stack delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/stdexcept delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/streambuf delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/string delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/tuple delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/type_traits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/unordered_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/unordered_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/utility delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/valarray delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/std/vector delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/array delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/bessel_function.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/beta_function.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/boost_sp_shared_count.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/ccomplex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cfenv delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cfloat delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cinttypes delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/climits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cmath delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/complex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/complex.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cstdarg delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cstdbool delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cstdint delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cstdio delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cstdlib delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/ctgmath delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/ctime delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/ctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cwchar delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/cwctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/ell_integral.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/exp_integral.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/fenv.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/float.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/functional delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/functional_hash.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/gamma.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/hashtable.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/hypergeometric.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/inttypes.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/legendre_function.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/limits.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/math.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/memory delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/modified_bessel_func.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/poly_hermite.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/poly_laguerre.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/random delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/regex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/riemann_zeta.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/special_function_util.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/stdarg.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/stdbool.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/stdint.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/stdio.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/stdlib.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/tgmath.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/tuple delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/type_traits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/unordered_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/unordered_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/utility delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/wchar.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1/wctype.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/array delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/boost_shared_ptr.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/boost_sp_counted_base.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cfenv delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cinttypes delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cmath delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/complex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cstdint delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cstdio delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cstdlib delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cwchar delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/cwctype delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/functional delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/functional_hash.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/hashtable delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/hashtable_policy.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/random delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/random.tcc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/regex delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/type_traits delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/unordered_map delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/unordered_set delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/include/tr1_impl/utility delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/copysignf.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/mathconf.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/signbit.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/signbitf.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/signbitl.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libmath/stubs.c delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/array_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/atexit_arm.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/bad_cast.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/bad_typeid.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/class_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/cxxabi-forced.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/cxxabi.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/del_op.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/del_opnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/del_opv.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/del_opvnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/dyncast.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_alloc.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_arm.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_aux_runtime.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_call.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_catch.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_exception.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_globals.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_personality.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_term_handler.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_terminate.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_throw.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_type.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/eh_unex_handler.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/enum_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/exception delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/exception_defines.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/function_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/fundamental_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/guard.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/new delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/new_handler.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/new_op.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/new_opnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/new_opv.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/new_opvnt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/pbase_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/pmem_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/pointer_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/pure.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/si_class_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/tinfo.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/tinfo.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/tinfo2.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/typeinfo delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/unwind-cxx.h delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/vec.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/vmi_class_type_info.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/libsupc++/vterminate.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/linkage.m4 delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/po/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/po/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/po/POTFILES.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/po/de.po delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/po/fr.po delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/po/libstdc++.pot delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/po/string_literals.cc delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/check_compile delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/check_performance delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/create_testsuite_files delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/extract_symvers delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/gen_bind_includers.pl delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/gen_includers.pl delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/gen_includers2.pl delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/make_exports.pl delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/make_graph.py delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/make_graphs.py delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/run_doxygen delete mode 100755 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/scripts/testsuite_flags.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/Makefile.am delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/Makefile.in delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/allocator-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/bitmap_allocator.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/codecvt.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/compatibility-ldbl.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/compatibility.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/complex_io.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/concept-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ctype.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/debug.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/debug_list.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ext-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/fstream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/functexcept.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/globals_io.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/hash.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/hash_c++0x.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/hashtable.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/hashtable_c++0x.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ios-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ios.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ios_failure.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ios_init.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ios_locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/iostream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/istream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/istream.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/limits.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/list.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/locale-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/locale.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/locale_facets.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/locale_init.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/localename.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/misc-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/mt_allocator.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/ostream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/parallel_list.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/parallel_settings.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/pool_allocator.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/sstream-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/stdexcept.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/streambuf-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/streambuf.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/string-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/strstream.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/tree.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/valarray-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/wlocale-inst.cc delete mode 100644 l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.3.3/src/wstring-inst.cc delete mode 100644 l4/pkg/libsupc++/build/Makefile-4.1.0 delete mode 100644 l4/pkg/libsupc++/build/Makefile-4.3.3 delete mode 100644 l4/pkg/mag/include/server/lua delete mode 100644 l4/pkg/rtc/lib/libc_backend/gettime.c delete mode 100644 l4/pkg/rtc/lib/libc_backend/l4libc_init_time.c delete mode 100644 l4/pkg/sqlite/lib/contrib/sqlite3.pc delete mode 100644 l4/pkg/zlib/lib/dist/example.c delete mode 100644 l4/pkg/zlib/lib/dist/minigzip.c delete mode 100644 l4/pkg/zlib/lib/dist/zconf.in.h delete mode 100644 l4/tool/kconfig/scripts/kconfig/kconfig_load.c delete mode 100644 l4/tool/kconfig/scripts/kconfig/lex.zconf.c_shipped diff --git a/kernel/fiasco/src/boot/amd64/kernel_multiboot.h b/kernel/fiasco/src/boot/amd64/kernel_multiboot.h deleted file mode 100644 index 4a81dbe1a..000000000 --- a/kernel/fiasco/src/boot/amd64/kernel_multiboot.h +++ /dev/null @@ -1,247 +0,0 @@ -#ifndef MULTIBOOT_KERNEL_H -#define MULTIBOOT_KERNEL_H - -#include "types.h" - -// XXX MBI with explizit 64Bit type for address type - -class Multiboot_header_kernel -{ -public: - enum - { - /* The entire multiboot_header must be contained - * within the first MULTIBOOT_SEARCH bytes of the kernel image. */ - Search = 8192, - - /* Magic value identifying the multiboot_header. */ - Magic = 0x1badb002, - - /* Features flags for 'flags'. - * If a boot loader sees a flag in MULTIBOOT_MUSTKNOW set - * and it doesn't understand it, it must fail. */ - Mustknow = 0x0000ffff, - - /* Align all boot modules on page (4KB) boundaries. */ - Page_align = 0x00000001, - - /* Must be provided memory information in multiboot_info structure */ - Memory_info = 0x00000002, - - /* Use the load address fields above instead of the ones in the a.out - * header to figure out what to load where, and what to do afterwards. - * This should only be needed for a.out kernel images (ELF and other - * formats can generally provide the needed information). */ - Aout_kludge = 0x00010000, - - /* The boot loader passes this value in register EAX to signal the kernel - * that the multiboot method is being used */ - Valid = 0x2badb002, - }; - - /* Must be MULTIBOOT_MAGIC */ - Unsigned32 magic; - - /* Feature flags - see below. */ - Unsigned32 flags; - - /* Checksum: magic + flags + checksum == 0 */ - Unsigned32 checksum; - - /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */ - Unsigned64 header_addr; - Unsigned64 load_addr; - Unsigned64 load_end_addr; - Unsigned64 bss_end_addr; - Unsigned64 entry; -}; - -/* VBE controller information. */ -class Multiboot_vbe_controller_kernel -{ -public: - Unsigned8 signature[4]; - Unsigned16 version __attribute__((packed)); - Unsigned32 oem_string __attribute__((packed)); - Unsigned32 capabilities __attribute__((packed)); - Unsigned32 video_mode __attribute__((packed)); - Unsigned16 total_memory __attribute__((packed)); - Unsigned16 oem_software_rev __attribute__((packed)); - Unsigned32 oem_vendor_name __attribute__((packed)); - Unsigned32 oem_product_name __attribute__((packed)); - Unsigned32 oem_product_rev __attribute__((packed)); - Unsigned8 reserved[222] __attribute__((packed)); - Unsigned8 oem_data[256] __attribute__((packed)); -}; - -/* VBE mode information. */ -class Multiboot_vbe_mode_kernel -{ -public: - Unsigned16 mode_attributes; - Unsigned8 win_a_attributes __attribute__((packed)); - Unsigned8 win_b_attributes __attribute__((packed)); - Unsigned16 win_granularity __attribute__((packed)); - Unsigned16 win_size __attribute__((packed)); - Unsigned16 win_a_segment __attribute__((packed)); - Unsigned16 win_b_segment __attribute__((packed)); - Unsigned32 win_func __attribute__((packed)); - Unsigned16 bytes_per_scanline __attribute__((packed)); - - /* >=1.2 */ - Unsigned16 x_resolution __attribute__((packed)); - Unsigned16 y_resolution __attribute__((packed)); - Unsigned8 x_char_size __attribute__((packed)); - Unsigned8 y_char_size __attribute__((packed)); - Unsigned8 number_of_planes __attribute__((packed)); - Unsigned8 bits_per_pixel __attribute__((packed)); - Unsigned8 number_of_banks __attribute__((packed)); - Unsigned8 memory_model __attribute__((packed)); - Unsigned8 bank_size __attribute__((packed)); - Unsigned8 number_of_image_pages __attribute__((packed)); - Unsigned8 reserved0 __attribute__((packed)); - - /* direct color */ - Unsigned8 red_mask_size __attribute__((packed)); - Unsigned8 red_field_position __attribute__((packed)); - Unsigned8 green_mask_size __attribute__((packed)); - Unsigned8 green_field_position __attribute__((packed)); - Unsigned8 blue_mask_size __attribute__((packed)); - Unsigned8 blue_field_position __attribute__((packed)); - Unsigned8 reserved_mask_size __attribute__((packed)); - Unsigned8 reserved_field_position __attribute__((packed)); - Unsigned8 direct_color_mode_info __attribute__((packed)); - - /* >=2.0 */ - Unsigned32 phys_base __attribute__((packed)); - Unsigned32 reserved1 __attribute__((packed)); - Unsigned16 reversed2 __attribute__((packed)); - - /* >=3.0 */ - Unsigned16 linear_bytes_per_scanline __attribute__((packed)); - Unsigned8 banked_number_of_image_pages __attribute__((packed)); - Unsigned8 linear_number_of_image_pages __attribute__((packed)); - Unsigned8 linear_red_mask_size __attribute__((packed)); - Unsigned8 linear_red_field_position __attribute__((packed)); - Unsigned8 linear_green_mask_size __attribute__((packed)); - Unsigned8 linear_green_field_position __attribute__((packed)); - Unsigned8 linear_blue_mask_size __attribute__((packed)); - Unsigned8 linear_blue_field_position __attribute__((packed)); - Unsigned8 linear_reserved_mask_size __attribute__((packed)); - Unsigned8 linear_reserved_field_position __attribute__((packed)); - Unsigned32 max_pixel_clock __attribute__((packed)); - - Unsigned8 reserved3[189] __attribute__((packed)); -}; - -class Multiboot_info_kernel -{ -public: - enum - { - Memory = (1L<<0), - Boot_device = (1L<<1), - Cmdline = (1L<<2), - Mods = (1L<<3), - Aout_syms = (1L<<4), - Elf_shdr = (1L<<5), - Mem_map = (1L<<6), - Drive_info = (1L<<7), - Cfg_table = (1L<<8), - Boot_ld_name = (1L<<9), - Apm_table = (1L<<10), - Video_info = (1L<<11), - }; - - /* These flags indicate which parts of the multiboot_info are valid; - * see below for the actual flag bit definitions. */ - Unsigned32 flags; - - /* Lower/Upper memory installed in the machine. - * Valid only if MULTIBOOT_MEMORY is set in flags word above. */ - Unsigned64 mem_lower; - Unsigned64 mem_upper; - - /* BIOS disk device the kernel was loaded from. - * Valid only if MULTIBOOT_BOOT_DEVICE is set in flags word above. */ - Unsigned8 boot_device[4]; - - /* Command-line for the OS kernel: a null-terminated ASCII string. - * Valid only if MULTIBOOT_CMDLINE is set in flags word above. */ - Unsigned64 cmdline; - - /* List of boot modules loaded with the kernel. - * Valid only if MULTIBOOT_MODS is set in flags word above. */ - Unsigned32 mods_count; - Unsigned64 mods_addr; - - /* Symbol information for a.out or ELF executables. */ - union - { - struct - { - /* a.out symbol information valid only if MULTIBOOT_AOUT_SYMS - is set in flags word above. */ - Unsigned64 tabsize; - Unsigned64 strsize; - Unsigned64 addr; - Unsigned32 reserved; - } a; - - struct - { - /* ELF section header information valid only if - MULTIBOOT_ELF_SHDR is set in flags word above. */ - Unsigned32 num; - Unsigned64 size; - Unsigned64 addr; - Unsigned32 shndx; - } e; - } syms; - - /* Memory map buffer. - Valid only if MULTIBOOT_MEM_MAP is set in flags word above. */ - Unsigned64 mmap_count; - Unsigned64 mmap_addr; - - /* Drive Info buffer */ - Unsigned32 drives_length; - Unsigned32 drives_addr; - - /* ROM configuration table */ - Unsigned32 config_table; - - /* Boot Loader Name */ - Unsigned32 boot_loader_name; - - /* APM table */ - Unsigned32 apm_table; - - /* Video */ - Unsigned64 vbe_control_info; - Unsigned64 vbe_mode_info; - Unsigned16 vbe_mode; - Unsigned16 vbe_interface_seg; - Unsigned16 vbe_interface_off; - Unsigned16 vbe_interface_len; -}; - -/* The mods_addr field above contains the physical address of the first - of 'mods_count' multiboot_module structures. */ -class Multiboot_module_kernel -{ -public: - /* Physical start and end addresses of the module data itself. */ - Unsigned64 mod_start; - Unsigned64 mod_end; - - /* Arbitrary ASCII string associated with the module. */ - Unsigned64 string; - - /* Boot loader must set to 0; OS must ignore. */ - Unsigned32 reserved; -}; - - -#endif - diff --git a/kernel/fiasco/src/jdb/jdb_semaphore.cpp b/kernel/fiasco/src/jdb/jdb_semaphore.cpp deleted file mode 100644 index b29ea7cbf..000000000 --- a/kernel/fiasco/src/jdb/jdb_semaphore.cpp +++ /dev/null @@ -1,71 +0,0 @@ -IMPLEMENTATION: - -#include -#include -#include - -#include "jdb.h" -#include "jdb_core.h" -#include "jdb_module.h" -#include "jdb_screen.h" -#include "jdb_kobject.h" -#include "kernel_console.h" -#include "keycodes.h" -#include "simpleio.h" -#include "static_init.h" -#include "u_semaphore.h" - -class Jdb_semaphore : public Jdb_kobject_handler -{ -public: - Jdb_semaphore() FIASCO_INIT; -}; - -IMPLEMENT -Jdb_semaphore::Jdb_semaphore() - : Jdb_kobject_handler(U_semaphore::static_kobj_type) -{ - Jdb_kobject::module()->register_handler(this); -} - -PUBLIC -bool -Jdb_semaphore::show_kobject(Kobject_common *, int ) -{ - return true; -} - -PUBLIC -char const * -Jdb_semaphore::kobject_type() const -{ - return JDB_ANSI_COLOR(yellow) "Sem" JDB_ANSI_COLOR(default); -} - -PUBLIC -int -Jdb_semaphore::show_kobject_short(char *buf, int max, Kobject_common *o) -{ - U_semaphore *u = Kobject::dcast(o); - Prio_list_elem *p = u->_queue.head(); - - if (!p) - return snprintf(buf, max, " no waiters"); - - int len = snprintf(buf, max, " blocked="); - while (p) - { - Prio_list_elem *s = p->_s_next; - do - { - Thread *t = static_cast(Sender::cast(s)); - len += snprintf(buf + len, max - len, - "%s%lx", s == p ? "" : ",", t->dbg_info()->dbg_id()); - s = s->_s_next; - } while (s != p); - p = p->_p_next; - } - return len; -} - -static Jdb_semaphore jdb_semaphore INIT_PRIORITY(JDB_MODULE_INIT_PRIO); diff --git a/kernel/fiasco/src/kern/arm/bsp/config-arm-pxa_sa1100.cpp b/kernel/fiasco/src/kern/arm/bsp/config-arm-pxa_sa1100.cpp deleted file mode 100644 index 943183a3a..000000000 --- a/kernel/fiasco/src/kern/arm/bsp/config-arm-pxa_sa1100.cpp +++ /dev/null @@ -1,19 +0,0 @@ -INTERFACE[arm && pxa]: -#define TARGET_NAME "XScale" - -INTERFACE[arm && sa1100]: -#define TARGET_NAME "StrongARM" - - -INTERFACE [arm && (pxa || sa1100)]: - -EXTENSION class Config -{ -public: - enum - { - Scheduling_irq = 26, - Max_num_dirqs = 32, - }; -}; - diff --git a/kernel/fiasco/src/kern/arm/bsp/pic-arm-pxa_sa1100.cpp b/kernel/fiasco/src/kern/arm/bsp/pic-arm-pxa_sa1100.cpp deleted file mode 100644 index 892f201bc..000000000 --- a/kernel/fiasco/src/kern/arm/bsp/pic-arm-pxa_sa1100.cpp +++ /dev/null @@ -1,189 +0,0 @@ -INTERFACE [arm && pxa]: // ------------------------------------- - -#include "kmem.h" - -EXTENSION class Pic -{ -public: - enum - { - Multi_irq_pending = 1, - No_irq_pending = 0, - }; - - enum { - ICIP = Kmem::Pic_map_base + 0x000000, - ICMR = Kmem::Pic_map_base + 0x000004, - ICLR = Kmem::Pic_map_base + 0x000008, - ICCR = Kmem::Pic_map_base + 0x000014, - ICFP = Kmem::Pic_map_base + 0x00000c, - ICPR = Kmem::Pic_map_base + 0x000010, - }; -}; - -INTERFACE [arm && sa1100]: // ---------------------------------- - -#include "kmem.h" - -EXTENSION class Pic -{ -public: - enum - { - Multi_irq_pending = 1, - No_irq_pending = 0, - }; - - enum { - ICIP = Kmem::Pic_map_base + 0x00000, - ICMR = Kmem::Pic_map_base + 0x00004, - ICLR = Kmem::Pic_map_base + 0x00008, - ICCR = Kmem::Pic_map_base + 0x0000c, - ICFP = Kmem::Pic_map_base + 0x00010, - ICPR = Kmem::Pic_map_base + 0x00020, - }; -}; - -// ------------------------------------------------------------- -IMPLEMENTATION [arm && (sa1100 || pxa)]: - -#include -#include - -#include "boot_info.h" -#include "config.h" -#include "initcalls.h" -#include "irq.h" -#include "irq_pin.h" -#include "irq_chip_generic.h" -#include "io.h" -#include "vkey.h" - -class Pxa_sa_pin : public Irq_pin -{ -public: - explicit Pxa_sa_pin(unsigned irq) { payload()[0] = irq; } - unsigned irq() const { return payload()[0]; } -}; - -class Irq_chip_arm_pxa_sa : public Irq_chip_gen -{ -}; - -PUBLIC -void -Irq_chip_arm_pxa_sa::setup(Irq_base *irq, unsigned irqnum) -{ - irq->pin()->replace(irqnum); -} - -PUBLIC -void -Pxa_sa_pin::unbind_irq() -{ - mask(); - disable(); - Irq_chip::hw_chip->free(Irq::self(this), irq()); - replace(); -} - -PUBLIC -void -Pxa_sa_pin::do_mask() -{ - assert (cpu_lock.test()); - Io::write(Io::read(Pic::ICMR) & ~(1 << irq()), Pic::ICMR); -} - -PUBLIC -void -Pxa_sa_pin::do_mask_and_ack() -{ - assert (cpu_lock.test()); - __mask(); - Io::write(Io::read(Pic::ICMR) & ~(1 << irq()), Pic::ICMR); - // ack is empty -} - -PUBLIC -void -Pxa_sa_pin::ack() -{ - // ack is empty -} - -PUBLIC -void -Pxa_sa_pin::do_unmask() -{ - Io::write(Io::read(Pic::ICMR) | (1 << irq()), Pic::ICMR); -} - -PUBLIC -void -Pxa_sa_pin::do_set_mode(unsigned) -{ -} - -PUBLIC -bool -Pxa_sa_pin::check_debug_irq() -{ - return !Vkey::check_(irq()); -} - -PUBLIC -void -Pxa_sa_pin::set_cpu(unsigned) -{ -} - - - -IMPLEMENT FIASCO_INIT -void Pic::init() -{ - // only unmasked interrupts wakeup from idle - Io::write(0x01, ICCR); - // mask all interrupts - Io::write(0x00, ICMR); - // all interrupts are IRQ's (no FIQ) - Io::write(0x00, ICLR); -} - -IMPLEMENT inline NEEDS["io.h"] -Pic::Status Pic::disable_all_save() -{ - Status s; - s = Io::read(ICMR); - Io::write(0, ICMR); - return s; -} - -IMPLEMENT inline NEEDS["io.h"] -void Pic::restore_all( Status s ) -{ - Io::write(s, ICMR); -} - -PUBLIC static inline NEEDS["io.h"] -Unsigned32 Pic::pending() -{ - return Io::read(ICIP); -} - -PUBLIC static inline NEEDS[Pic::pending] -Mword Pic::is_pending(Mword &irqs, Mword irq) -{ - Mword ret = irqs & (1 << irq); - irqs &= ~(1 << irq); - return ret; -} - -// ------------------------------------------------------------- -IMPLEMENTATION [arm && debug && (sa1100 || pxa)]: - -PUBLIC -char const * -Pxa_sa_pin::pin_type() const -{ return "HW PXA/SA IRQ"; } diff --git a/kernel/fiasco/src/kern/arm/bsp/timer-arm-pxa_sa1100.cpp b/kernel/fiasco/src/kern/arm/bsp/timer-arm-pxa_sa1100.cpp deleted file mode 100644 index cab0ea369..000000000 --- a/kernel/fiasco/src/kern/arm/bsp/timer-arm-pxa_sa1100.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// ------------------------------------------------------------------------ -INTERFACE [arm && (sa1100 || pxa)]: - -#include "kmem.h" -#include "irq_chip.h" -#include "irq_pin.h" - -EXTENSION class Timer -{ -private: - enum { - Base = Kmem::Timer_map_base, - }; - // Base = 0x0000000 must be set in ... - enum { - OSMR0 = Base + 0x00, - OSMR1 = Base + 0x04, - OSMR2 = Base + 0x08, - OSMR3 = Base + 0x0c, - OSCR = Base + 0x10, - OSSR = Base + 0x14, - OWER = Base + 0x18, - OIER = Base + 0x1c, - - - Timer_diff = (36864 * Config::scheduler_granularity) / 10000, // 36864MHz*1ms - }; - - static Irq_base *irq; -}; - - -// ------------------------------------------------------------- -IMPLEMENTATION [arm && (sa1100 || pxa)]: - -#include "config.h" -#include "kip.h" -#include "irq_chip.h" -#include "pic.h" -#include "io.h" - -Irq_base *Timer::irq; - -IMPLEMENT -void Timer::init() -{ - Io::write(1, OIER); // enable OSMR0 - Io::write(0, OWER); // disable Watchdog - Io::write(Timer_diff, OSMR0); - Io::write(0, OSCR); // set timer counter to zero - Io::write(~0U, OSSR); // clear all status bits - - Irq_chip::hw_chip->reserve(26); - - static Irq_base ib; - Irq_chip::hw_chip->setup(&ib, 26); - irq = &ib; -} - -static inline -Unsigned64 -Timer::timer_to_us(Unsigned32 cr) -{ return (((Unsigned64)cr) << 14) / 60398; } - -static inline -Unsigned64 -Timer::us_to_timer(Unsigned64 us) -{ return (us * 60398) >> 14; } - -IMPLEMENT inline NEEDS["io.h", "pic.h", Timer::timer_to_us] -void Timer::acknowledge() -{ - if (Config::scheduler_one_shot) - { - Kip::k()->clock += timer_to_us(Io::read(OSCR)); - //puts("Reset timer"); - Io::write(0, OSCR); - Io::write(0xffffffff, OSMR0); - } - else - Io::write(0, OSCR); - Io::write(1, OSSR); // clear all status bits - enable(); -} - -IMPLEMENT inline NEEDS["pic.h"] -void Timer::enable() -{ - irq->pin()->unmask(); -} - -IMPLEMENT inline NEEDS["pic.h"] -void Timer::disable() -{ - irq->pin()->mask(); -} - -IMPLEMENT inline NEEDS["kip.h", "io.h", Timer::timer_to_us, Timer::us_to_timer] -void -Timer::update_one_shot(Unsigned64 wakeup) -{ - Unsigned32 apic; - Kip::k()->clock += timer_to_us(Io::read(OSCR)); - Io::write(0, OSCR); - Unsigned64 now = Kip::k()->clock; - - if (EXPECT_FALSE (wakeup <= now) ) - // already expired - apic = 1; - else - { - apic = us_to_timer(wakeup - now); - if (EXPECT_FALSE(apic > 0x0ffffffff)) - apic = 0x0ffffffff; - if (EXPECT_FALSE (apic < 1) ) - // timeout too small - apic = 1; - } - - //printf("%15lld: Set Timer to %lld [%08x]\n", now, wakeup, apic); - - Io::write(apic, OSMR0); - Io::write(1, OSSR); // clear all status bits -} - -IMPLEMENT inline NEEDS["config.h", "kip.h", "io.h", Timer::timer_to_us] -Unsigned64 -Timer::system_clock() -{ - if (Config::scheduler_one_shot) - return Kip::k()->clock + timer_to_us(Io::read(OSCR)); - else - return Kip::k()->clock; -} diff --git a/kernel/fiasco/src/kern/arm/dirq-arm.cpp b/kernel/fiasco/src/kern/arm/dirq-arm.cpp deleted file mode 100644 index 68e95927f..000000000 --- a/kernel/fiasco/src/kern/arm/dirq-arm.cpp +++ /dev/null @@ -1,77 +0,0 @@ -IMPLEMENTATION [arm]: - -#include "dirq.h" -#include "pic.h" -#include "std_macros.h" -#include "timer.h" -#include "thread.h" -#include "logdefs.h" - - -IMPLEMENTATION: - -#include "irq_chip_generic.h" -#include "irq.h" - -extern "C" -void irq_handler() -{ - Thread::assert_irq_entry(); - - if (Pic::Multi_irq_pending) - { -next_irq: - Mword irqs = Pic::pending(); - - if (Pic::is_pending(irqs, Config::Scheduling_irq)) - { - Irq::log_timer_irq(Config::Scheduling_irq); - Timer::acknowledge(); - Timer::update_system_clock(); - current_thread()->handle_timer_interrupt(); - goto next_irq; - } - - for (unsigned irq=0; irq < sizeof(Mword)*8; irq++) - { - if (irqs & (1<(Irq_chip_gen::irqs[irq]); - - Irq::log_irq(i, irq); - - i->pin()->mask(); - i->hit(); - goto next_irq; - } - } - } - else - { - Mword irq = Pic::pending(); - if (EXPECT_FALSE(irq == Pic::No_irq_pending)) - return; - - if (Thread::check_for_ipi(irq)) - return; - - if (Pic::is_pending(irq, Config::Scheduling_irq)) - { - Irq::log_timer_irq(irq); - Timer::acknowledge(); - Timer::update_system_clock(); - current_thread()->handle_timer_interrupt(); - } - else - { - Irq *i = nonull_static_cast(Irq_chip_gen::irqs[irq]); - Irq::log_irq(i, irq); - i->hit(); - } - } -} - - diff --git a/kernel/fiasco/src/kern/arm/pic-arm.cpp b/kernel/fiasco/src/kern/arm/pic-arm.cpp deleted file mode 100644 index 29837e1fc..000000000 --- a/kernel/fiasco/src/kern/arm/pic-arm.cpp +++ /dev/null @@ -1,11 +0,0 @@ -//------------------------------------------------------------------- -IMPLEMENTATION [arm]: - -#include "config.h" - -PUBLIC static inline NEEDS["config.h"] -unsigned -Pic::nr_irqs() -{ return Config::Max_num_dirqs; } - - diff --git a/kernel/fiasco/src/kern/dirq.cpp b/kernel/fiasco/src/kern/dirq.cpp deleted file mode 100644 index 3502e480c..000000000 --- a/kernel/fiasco/src/kern/dirq.cpp +++ /dev/null @@ -1,8 +0,0 @@ -INTERFACE: - -class Dirq -{ -private: - Dirq(Dirq&); -}; - diff --git a/kernel/fiasco/src/kern/dirq_io_apic.cpp b/kernel/fiasco/src/kern/dirq_io_apic.cpp deleted file mode 100644 index 0288ddfdd..000000000 --- a/kernel/fiasco/src/kern/dirq_io_apic.cpp +++ /dev/null @@ -1,254 +0,0 @@ -INTERFACE: - -#include "dirq_pic_pin.h" -#include "initcalls.h" - -class Dirq_io_apic : public Dirq_pic_pin -{ -protected: - class Chip : public Dirq_pic_pin::Chip - { - public: - bool alloc(Irq_base *irq, unsigned irqnum); - void setup(Irq_base *irq, unsigned irqnum); - unsigned legacy_override(unsigned irq); - unsigned nr_irqs() const; - void disable_irq(unsigned irqnum); - }; -}; - - - -IMPLEMENTATION: - -#include "apic.h" -#include "io_apic.h" -#include "receiver.h" -#include "idt.h" -#include "irq.h" -#include "vkey.h" - -enum -{ - Default_mode = Irq::Trigger_edge | Irq::Polarity_high, - //Default_mode = Irq::Trigger_level | Irq::Polarity_high, -}; - - -IMPLEMENT -unsigned -Dirq_io_apic::Chip::legacy_override(unsigned irq) -{ - return Io_apic::legacy_override(irq); -} - - - -IMPLEMENT -unsigned -Dirq_io_apic::Chip::nr_irqs() const -{ return Io_apic::total_irqs(); } - - -IMPLEMENT -void -Dirq_io_apic::Chip::setup(Irq_base *irq, unsigned irqnum) -{ - unsigned apic_idx = Io_apic::find_apic(irqnum); - irqnum -= Io_apic::apic(apic_idx)->gsi_offset(); - - if (irqnum >= Io_apic::apic(apic_idx)->nr_irqs()) - return; // Hm, do we need an error code here? - - //irq->pin()->set_mode(Default_mode); - if (irq->pin()->get_mode() & Irq::Trigger_level) - irq->pin()->replace(apic_idx, irqnum); - else - irq->pin()->replace(apic_idx, irqnum); -} - -IMPLEMENT -bool -Dirq_io_apic::Chip::alloc(Irq_base *irq, unsigned irqnum) -{ - unsigned apic_idx = Io_apic::find_apic(irqnum); - Io_apic *a = Io_apic::apic(apic_idx); - unsigned lirqn = irqnum - a->gsi_offset(); - - if (lirqn >= a->nr_irqs()) - return false; - - if (!Dirq_pic_pin::Chip::alloc(irq, irqnum)) - return false; - - Io_apic_entry e = a->read_entry(lirqn); - e.vector(vector(irqnum)); - a->write_entry(lirqn, e); - return true; -} - -IMPLEMENT -void -Dirq_io_apic::Chip::disable_irq(unsigned vector) -{ - extern char entry_int_apic_ignore[]; - Idt::set_entry(vector, Address(&entry_int_apic_ignore), false); -} - -static inline -Mword to_io_apic_trigger(unsigned mode) -{ - return (mode & Irq::Trigger_level) - ? Io_apic_entry::Level - : Io_apic_entry::Edge; -} - -static inline -Mword to_io_apic_polarity(unsigned mode) -{ - return (mode & Irq::Polarity_low) - ? Io_apic_entry::Low_active - : Io_apic_entry::High_active; -} - -class Pin_io_apic_level : public Irq_pin -{ -public: - explicit Pin_io_apic_level(unsigned apic, unsigned irq) - { payload()[0] = apic + (irq << 16); } - - unsigned irq() const { return payload()[0] >> 16; } - unsigned apic_idx() const { return payload()[0] & 0xffff; } - Io_apic *apic() const { return Io_apic::apic(apic_idx()); } - unsigned gsi() const { return apic()->gsi_offset() + irq(); } -}; - -class Pin_io_apic_edge : public Pin_io_apic_level -{ -public: - explicit Pin_io_apic_edge(unsigned apic, unsigned irq) - : Pin_io_apic_level(apic, irq) {} -}; - -PUBLIC -bool -Pin_io_apic_level::check_debug_irq() -{ - return !Vkey::check_(gsi()); -} - -PUBLIC -void -Pin_io_apic_level::unbind_irq() -{ - do_mask(); - disable(); - Irq_chip::hw_chip->free(Irq::self(this), gsi()); - replace(); -} - -PUBLIC -void -Pin_io_apic_level::disable() -{ - extern char entry_int_apic_ignore[]; - unsigned vector = Dirq_pic_pin::Chip::vector(gsi()); - Dirq_pic_pin::Chip::vfree(Irq_base::self(this), vector, &entry_int_apic_ignore); -} - -PUBLIC void -Pin_io_apic_edge::do_mask_and_ack() -{ - assert (cpu_lock.test()); - Apic::irq_ack(); -} - - -PUBLIC void -Pin_io_apic_edge::do_set_mode(unsigned mode) -{ - Io_apic_entry e = apic()->read_entry(irq()); - e.polarity(to_io_apic_polarity(mode)); - e.trigger(to_io_apic_trigger(mode)); - apic()->write_entry(irq(), e); - if (mode & Irq::Trigger_level) - new (this) Pin_io_apic_level(apic_idx(), irq()); -} - - -PUBLIC void -Pin_io_apic_level::do_mask() -{ - assert (cpu_lock.test()); - apic()->mask(irq()); - apic()->sync(); -} - - -PUBLIC -void -Pin_io_apic_level::ack() -{ - assert (cpu_lock.test()); - Apic::irq_ack(); -} - - - -PUBLIC void -Pin_io_apic_level::do_mask_and_ack() -{ - assert (cpu_lock.test()); - __mask(); - apic()->mask(irq()); - apic()->sync(); - Apic::irq_ack(); -} - - -PUBLIC void -Pin_io_apic_level::do_unmask() -{ - assert (cpu_lock.test()); - apic()->unmask(irq()); -} - -PUBLIC void -Pin_io_apic_level::set_cpu(unsigned cpu) -{ - apic()->set_dest(irq(), Cpu::cpus.cpu(cpu).phys_id()); -} - - -PUBLIC void -Pin_io_apic_level::do_set_mode(unsigned mode) -{ - Io_apic_entry e = apic()->read_entry(irq()); - e.polarity(to_io_apic_polarity(mode)); - e.trigger(to_io_apic_trigger(mode)); - apic()->write_entry(irq(), e); - if (!(mode & Irq::Trigger_level)) - new (this) Pin_io_apic_edge(apic_idx(), irq()); -} - - -PUBLIC static FIASCO_INIT -void -Dirq_io_apic::init() -{ - static Chip _ia; - Irq_chip::hw_chip = &_ia; -} - -// -------------------------------------------------------------------------- -IMPLEMENTATION [debug]: - -PUBLIC -char const * -Pin_io_apic_level::pin_type() const -{ return "HW IRQ (IOAPIC level)"; } - -PUBLIC -char const * -Pin_io_apic_edge::pin_type() const -{ return "HW IRQ (IOAPIC edge)"; } diff --git a/kernel/fiasco/src/kern/dirq_pic_pin.cpp b/kernel/fiasco/src/kern/dirq_pic_pin.cpp deleted file mode 100644 index 7123cc1f9..000000000 --- a/kernel/fiasco/src/kern/dirq_pic_pin.cpp +++ /dev/null @@ -1,115 +0,0 @@ -INTERFACE: - -#include "irq_pin.h" -#include "initcalls.h" - -class Irq_base; - -class Dirq_pic_pin : public Irq_pin -{ -public: - explicit Dirq_pic_pin(unsigned irq) { payload()[0] = irq; } - unsigned irq() const { return payload()[0]; } - - static void init() FIASCO_INIT; -}; - -//--------------------------------------------------------------------------- -IMPLEMENTATION: - -#include "irq.h" -#include "pic.h" -#include "vkey.h" -#if 0 -PRIVATE static -bool -Dirq_pic_pin::setup_hw_pin(Irq_base *irq, unsigned irqnum) -{ - if (irqnum >= Pic::nr_irqs()) - return false; - - new (irq->pin()) Dirq_pic_pin(irqnum); - return true; -} -#endif - -PUBLIC -void -Dirq_pic_pin::unbind_irq() -{ - do_mask(); - disable(); - Irq_chip::hw_chip->free(Irq::self(this), irq()); - replace(); -} - -PUBLIC -void -Dirq_pic_pin::do_mask() -{ - assert (cpu_lock.test()); - Pic::disable_locked(irq()); -} - - -PUBLIC -void -Dirq_pic_pin::do_mask_and_ack() -{ - assert (cpu_lock.test()); - __mask(); - Pic::disable_locked(irq()); - Pic::acknowledge_locked(irq()); -} - -PUBLIC -void -Dirq_pic_pin::ack() -{ - Pic::acknowledge_locked(irq()); -} - -PUBLIC -void -Dirq_pic_pin::do_set_mode(unsigned) -{} - -PUBLIC -void -Dirq_pic_pin::do_unmask() -{ - assert (cpu_lock.test()); - Pic::enable_locked(irq(), 0xa); //prio); -#if 0 - unsigned long prio; - - if (EXPECT_FALSE(!Irq::self(this)->owner())) - return; - if (Irq::self(this)->owner() == (Receiver*)-1) - prio = ~0UL; // highes prio for JDB IRQs - else - prio = Irq::self(this)->owner()->sched()->prio(); -#endif - -} - -PUBLIC -void -Dirq_pic_pin::set_cpu(unsigned) -{} - -PUBLIC -bool -Dirq_pic_pin::check_debug_irq() -{ - return !Vkey::check_(irq()); -} - -//--------------------------------------------------------------------------- -IMPLEMENTATION [debug]: - -PUBLIC -char const * -Dirq_pic_pin::pin_type() const -{ return "HW IRQ (DIRQ)"; } - diff --git a/kernel/fiasco/src/kern/ia32/cpu_lock-pic.cpp b/kernel/fiasco/src/kern/ia32/cpu_lock-pic.cpp deleted file mode 100644 index 732949ff7..000000000 --- a/kernel/fiasco/src/kern/ia32/cpu_lock-pic.cpp +++ /dev/null @@ -1,78 +0,0 @@ -INTERFACE[ia32,amd64]: - -/** - * A special CPU lock, that disables IRQ's via the PIC. - */ -EXTENSION class Cpu_lock -{ -private: - Unsigned32 pic_status; ///< The save PIC mask. - Status _is_set; ///< The current state of the lock. -}; - - -IMPLEMENTATION[ia32,amd64]: - -#include "config.h" -#include "pic.h" -#include "processor.h" - -// -// Cpu_lock inlines -// - -IMPLEMENT inline -Cpu_lock::Cpu_lock() - : _is_set(0) -{ -} - -IMPLEMENT inline NEEDS ["config.h","processor.h","pic.h"] -void Cpu_lock::lock() -{ - // When profiling, we use a sligtly different strategy: Instead of - // disabling interrupts in the CPU, we disable all interrupts but the - // profiling timer interrupt in the PIC. - Proc::cli(); - if (! _is_set) - { - // mask out all irqs except the profiling timer interrupt - pic_status = Pic::disable_all_save(); - if(Config::profiling) - Pic::enable_locked(Config::profile_irq); - _is_set = 1; - } - Proc::sti(); - Proc::irq_chance(); // last chance for an irq to be delivered -} - - -/** - * (IA32 only) Clear the kernel lock, but disable interrupts. - * There is a difference betweeen ``kernel lock'' and ``disabled interrupts'' - * if the kernel lock is not implemented using CPU-interrupt disabling - * (but, for example, IRQ disabling in the PIC). - */ -PUBLIC inline NEEDS ["processor.h", "pic.h"] -void Cpu_lock::clear_irqdisable() -{ - Proc::cli(); - if (_is_set) - { - Pic::restore_all(pic_status); - _is_set = 0; - } -} - -IMPLEMENT inline NEEDS ["processor.h",Cpu_lock::clear_irqdisable] -void Cpu_lock::clear() -{ - clear_irqdisable(); - Proc::sti(); -} - -IMPLEMENT inline -Cpu_lock::Status Cpu_lock::test() const -{ - return _is_set; -} diff --git a/kernel/fiasco/src/kern/ia32/dirq_pic_pin-ia32-ux.cpp b/kernel/fiasco/src/kern/ia32/dirq_pic_pin-ia32-ux.cpp deleted file mode 100644 index 8607b6441..000000000 --- a/kernel/fiasco/src/kern/ia32/dirq_pic_pin-ia32-ux.cpp +++ /dev/null @@ -1,297 +0,0 @@ -INTERFACE[ia32,amd64,ux]: - -#include "irq_chip.h" -#include "irq_pin.h" - - -EXTENSION class Dirq_pic_pin -{ -public: - class Chip : public Irq_chip - { - public: - static unsigned vector(unsigned irq) - { - return (irq < 0x10) ? irq + 0x20 : irq + 0x30; - } - - bool reserve(unsigned irq); - void reset(unsigned irq); - Irq_base *irq(unsigned irq); - bool is_free(unsigned irq); - bool alloc(Irq_base *irq, unsigned irqnum); - bool free(Irq_base *irq, unsigned irqnum); - void setup(Irq_base *irq, unsigned irqnum); - - unsigned nr_irqs() const { return 16; } - - bool valloc(Irq_base *irq, unsigned vector); - static bool vfree(Irq_base *irq, unsigned vector, void *handler); - virtual void disable_irq(unsigned vector); - - protected: - Irq_base *virq(unsigned v); - }; -}; - - -IMPLEMENTATION [ia32,ux]: -enum { Register_arg0 = 0 }; // eax - -IMPLEMENTATION [amd64]: -enum { Register_arg0 = 7 }; // rdi - -IMPLEMENTATION[ia32,amd64,ux]: - -#include - -#include "cpu_lock.h" -#include "globalconfig.h" -#include "globals.h" -#include "irq_chip.h" -#include "logdefs.h" -#include "thread.h" - -#include "idt.h" - -class Entry_code -{ -private: - struct - { - char push; - char mov; - Signed32 irq_adr; - char jmp; - Unsigned32 jmp_adr; - char pad; - } __attribute__((packed)) _d; - -public: - void irq(Irq_base *irq) - { - _d.irq_adr = (Address)irq; - } - - Irq *irq() const - { return nonull_static_cast((Irq_base*)((Smword)(_d.irq_adr))); } - - bool is_free() const - { return !_d.push; } - - void free() - { - _d.push = 0; - } - -}; - -static Entry_code _entry_code[256-0x20]; - -PUBLIC -void -Entry_code::setup() -{ - extern char __generic_irq_entry[]; - // push %eax/%rdi - _d.push = 0x50 + Register_arg0; - - // mov imm32, %eax/%rdi - _d.mov = 0xb8 + Register_arg0; - irq(0); - - // jmp __generic_irq_entry - _d.jmp = 0xe9; - _d.jmp_adr = (Address)__generic_irq_entry - (Address)&_d - 11; -} - -/** The corresponding hardware interrupt occurred -- handle it. - This method checks whether the attached receiver is ready to receive - an IRQ message, and if so, restarts it so that it can pick up the IRQ - message using ipc_receiver_ready(). - */ -#if 0 -asm ( - ".global __irq_entry_template \n" - ".global __irq_entry_template_end \n" - ".align 4 \n" - "__irq_entry_template: \n" - " pushq %rdi \n" - " mov $0, %edi \n" -// " push %eax \n" -// " mov $0, %eax \n" - " jmp __generic_irq_entry \n" - "__irq_entry_template_end: \n" - ); -#endif - -IMPLEMENT -bool -Dirq_pic_pin::Chip::is_free(unsigned irqn) -{ - if (irqn >= Config::Max_num_dirqs) - return false; - - unsigned v = vector(irqn); - return _entry_code[v -0x20].is_free(); -} - -IMPLEMENT -Irq_base * -Dirq_pic_pin::Chip::virq(unsigned v) -{ - return _entry_code[v -0x20].irq(); -} - -IMPLEMENT -Irq_base * -Dirq_pic_pin::Chip::irq(unsigned irqn) -{ - if (irqn >= Config::Max_num_dirqs) - return 0; - - unsigned v = vector(irqn); - - return virq(v); -} - - -IMPLEMENT -void -Dirq_pic_pin::Chip::disable_irq(unsigned vector) -{ - extern char entry_int_pic_ignore[]; - Idt::set_entry(vector, Address(&entry_int_pic_ignore), false); -} - -IMPLEMENT -bool -Dirq_pic_pin::Chip::alloc(Irq_base *irq, unsigned irqn) -{ - if (irqn >= Config::Max_num_dirqs) - return false; - - unsigned v = vector(irqn); - if (valloc(irq, v)) - { - setup(irq, irqn); - return true; - } - - return false; -} - -IMPLEMENT -bool -Dirq_pic_pin::Chip::valloc(Irq_base *irq, unsigned v) -{ - if (v >= APIC_IRQ_BASE - 0x10) - return false; - - if (!_entry_code[v -0x20].is_free()) - return false; - - _entry_code[v -0x20].setup(); - _entry_code[v -0x20].irq(irq); - - - // force code to memory before setting IDT entry - asm volatile ( "" : : : "memory" ); - - Idt::set_entry(v, (Address)&_entry_code[v -0x20], false); - return true; -} - -IMPLEMENT -bool -Dirq_pic_pin::Chip::free(Irq_base *irq, unsigned irqn) -{ - if (irqn >= Config::Max_num_dirqs) - return false; - - unsigned v = vector(irqn); - return vfree(irq, v, 0); -} - -IMPLEMENT -bool -Dirq_pic_pin::Chip::vfree(Irq_base *irq, unsigned v, void *handler) -{ - if (v >= APIC_IRQ_BASE - 0x10) - return false; - - if (_entry_code[v -0x20].is_free()) - return false; - - if (_entry_code[v-0x20].irq() != irq) - return false; - - _entry_code[v-0x20].free(); - - Idt::set_entry(v, (Address)handler, false); - return true; -} - -IMPLEMENT -void -Dirq_pic_pin::Chip::reset(unsigned irqn) -{ - unsigned v = vector(irqn); - Idt::set_entry(v, (Address)&_entry_code[v -0x20], false); -} - -IMPLEMENT -void -Dirq_pic_pin::Chip::setup(Irq_base *irq, unsigned irqnum) -{ - irq->pin()->replace(irqnum); -} - -IMPLEMENT -bool -Dirq_pic_pin::Chip::reserve(unsigned irqn) -{ - if (irqn >= Config::Max_num_dirqs) - return false; - - unsigned v = vector(irqn); - if (!_entry_code[v -0x20].is_free()) - return false; - - _entry_code[v -0x20].setup(); - return true; -} - -PUBLIC inline -unsigned -Dirq_pic_pin::vector() const -{ return irq() < 0x10 ? irq() + 0x20 : irq() + 0x30; } - -extern "C" void entry_int_pic_ignore(void); - - -PROTECTED -void -Dirq_pic_pin::disable_vector() -{ - unsigned vector = this->vector(); - _entry_code[vector -0x20].free(); -} -PUBLIC -void -Dirq_pic_pin::disable() -{ - unsigned vector = this->vector(); - Idt::set_entry(vector, Address(&entry_int_pic_ignore), false); - _entry_code[vector -0x20].free(); -} - - -IMPLEMENT FIASCO_INIT -void -Dirq_pic_pin::init() -{ - static Chip _ia; - Irq_chip::hw_chip = &_ia; -} - diff --git a/kernel/fiasco/src/kern/ia32/multiboot.h b/kernel/fiasco/src/kern/ia32/multiboot.h deleted file mode 100644 index d38ef8aac..000000000 --- a/kernel/fiasco/src/kern/ia32/multiboot.h +++ /dev/null @@ -1,259 +0,0 @@ -#ifndef MULTIBOOT_H -#define MULTIBOOT_H - -#include "types.h" - -class Multiboot_header -{ -public: - enum - { - /* The entire multiboot_header must be contained - * within the first MULTIBOOT_SEARCH bytes of the kernel image. */ - Search = 8192, - - /* Magic value identifying the multiboot_header. */ - Magic = 0x1badb002, - - /* Features flags for 'flags'. - * If a boot loader sees a flag in MULTIBOOT_MUSTKNOW set - * and it doesn't understand it, it must fail. */ - Mustknow = 0x0000ffff, - - /* Align all boot modules on page (4KB) boundaries. */ - Page_align = 0x00000001, - - /* Must be provided memory information in multiboot_info structure */ - Memory_info = 0x00000002, - - /* Use the load address fields above instead of the ones in the a.out - * header to figure out what to load where, and what to do afterwards. - * This should only be needed for a.out kernel images (ELF and other - * formats can generally provide the needed information). */ - Aout_kludge = 0x00010000, - - /* The boot loader passes this value in register EAX to signal the kernel - * that the multiboot method is being used */ - Valid = 0x2badb002, - }; - - /* Must be MULTIBOOT_MAGIC */ - Unsigned32 magic; - - /* Feature flags - see below. */ - Unsigned32 flags; - - /* Checksum: magic + flags + checksum == 0 */ - Unsigned32 checksum; - - /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */ - Unsigned32 header_addr; - Unsigned32 load_addr; - Unsigned32 load_end_addr; - Unsigned32 bss_end_addr; - Unsigned32 entry; -} __attribute__((packed)); - -/* VBE controller information. */ -class Multiboot_vbe_controller -{ -public: - Unsigned8 signature[4]; - Unsigned16 version; - Unsigned32 oem_string; - Unsigned32 capabilities; - Unsigned32 video_mode; - Unsigned16 total_memory; - Unsigned16 oem_software_rev; - Unsigned32 oem_vendor_name; - Unsigned32 oem_product_name; - Unsigned32 oem_product_rev; - Unsigned8 reserved[222]; - Unsigned8 oem_data[256]; -} __attribute__((packed)); - -/* VBE mode information. */ -class Multiboot_vbe_mode -{ -public: - Unsigned16 mode_attributes; - Unsigned8 win_a_attributes; - Unsigned8 win_b_attributes; - Unsigned16 win_granularity; - Unsigned16 win_size; - Unsigned16 win_a_segment; - Unsigned16 win_b_segment; - Unsigned32 win_func; - Unsigned16 bytes_per_scanline; - - /* >=1.2 */ - Unsigned16 x_resolution; - Unsigned16 y_resolution; - Unsigned8 x_char_size; - Unsigned8 y_char_size; - Unsigned8 number_of_planes; - Unsigned8 bits_per_pixel; - Unsigned8 number_of_banks; - Unsigned8 memory_model; - Unsigned8 bank_size; - Unsigned8 number_of_image_pages; - Unsigned8 reserved0; - - /* direct color */ - Unsigned8 red_mask_size; - Unsigned8 red_field_position; - Unsigned8 green_mask_size; - Unsigned8 green_field_position; - Unsigned8 blue_mask_size; - Unsigned8 blue_field_position; - Unsigned8 reserved_mask_size; - Unsigned8 reserved_field_position; - Unsigned8 direct_color_mode_info; - - /* >=2.0 */ - Unsigned32 phys_base; - Unsigned32 reserved1; - Unsigned16 reversed2; - - /* >=3.0 */ - Unsigned16 linear_bytes_per_scanline; - Unsigned8 banked_number_of_image_pages; - Unsigned8 linear_number_of_image_pages; - Unsigned8 linear_red_mask_size; - Unsigned8 linear_red_field_position; - Unsigned8 linear_green_mask_size; - Unsigned8 linear_green_field_position; - Unsigned8 linear_blue_mask_size; - Unsigned8 linear_blue_field_position; - Unsigned8 linear_reserved_mask_size; - Unsigned8 linear_reserved_field_position; - Unsigned32 max_pixel_clock; - - Unsigned8 reserved3[189]; -} __attribute__((packed)); - -class Multiboot_info -{ -public: - enum - { - Memory = (1L<<0), - Boot_device = (1L<<1), - Cmdline = (1L<<2), - Mods = (1L<<3), - Aout_syms = (1L<<4), - Elf_shdr = (1L<<5), - Mem_map = (1L<<6), - Drive_info = (1L<<7), - Cfg_table = (1L<<8), - Boot_ld_name = (1L<<9), - Apm_table = (1L<<10), - Video_info = (1L<<11), - }; - - /* These flags indicate which parts of the multiboot_info are valid; - * see below for the actual flag bit definitions. */ - Unsigned32 flags; - - /* Lower/Upper memory installed in the machine. - * Valid only if MULTIBOOT_MEMORY is set in flags word above. */ - Unsigned32 mem_lower; - Unsigned32 mem_upper; - - /* BIOS disk device the kernel was loaded from. - * Valid only if MULTIBOOT_BOOT_DEVICE is set in flags word above. */ - Unsigned8 boot_device[4]; - - /* Command-line for the OS kernel: a null-terminated ASCII string. - * Valid only if MULTIBOOT_CMDLINE is set in flags word above. */ - Unsigned32 cmdline; - - /* List of boot modules loaded with the kernel. - * Valid only if MULTIBOOT_MODS is set in flags word above. */ - Unsigned32 mods_count; - Unsigned32 mods_addr; - - /* Symbol information for a.out or ELF executables. */ - union - { - struct __attribute__((packed)) - { - /* a.out symbol information valid only if MULTIBOOT_AOUT_SYMS - is set in flags word above. */ - Unsigned32 tabsize; - Unsigned32 strsize; - Unsigned32 addr; - Unsigned32 reserved; - } a; - - struct __attribute__((packed)) - { - /* ELF section header information valid only if - MULTIBOOT_ELF_SHDR is set in flags word above. */ - Unsigned32 num; - Unsigned32 size; - Unsigned32 addr; - Unsigned32 shndx; - } e; - } syms; - - /* Memory map buffer. - Valid only if MULTIBOOT_MEM_MAP is set in flags word above. */ - Unsigned32 mmap_count; - Unsigned32 mmap_addr; - - /* Drive Info buffer */ - Unsigned32 drives_length; - Unsigned32 drives_addr; - - /* ROM configuration table */ - Unsigned32 config_table; - - /* Boot Loader Name */ - Unsigned32 boot_loader_name; - - /* APM table */ - Unsigned32 apm_table; - - /* Video */ - Unsigned32 vbe_control_info; - Unsigned32 vbe_mode_info; - Unsigned16 vbe_mode; - Unsigned16 vbe_interface_seg; - Unsigned16 vbe_interface_off; - Unsigned16 vbe_interface_len; -} __attribute__((packed)); - -/* The mods_addr field above contains the physical address of the first - of 'mods_count' multiboot_module structures. */ -class Multiboot_module -{ -public: - /* Physical start and end addresses of the module data itself. */ - Unsigned32 mod_start; - Unsigned32 mod_end; - - /* Arbitrary ASCII string associated with the module. */ - Unsigned32 string; - - /* Boot loader must set to 0; OS must ignore. */ - Unsigned32 reserved; -} __attribute__((packed)); - - -/* The mmap_addr field above contains the physical address of the first - of the AddrRangeDesc structure. "size" represents the size of the - rest of the structure and optional padding. The offset to the beginning - of the next structure is therefore "size + 4". */ -struct AddrRangeDesc -{ - Unsigned32 size; - Unsigned32 BaseAddrLow; - Unsigned32 BaseAddrHigh; - Unsigned32 LengthLow; - Unsigned32 LengthHigh; - Unsigned32 Type; - /* unspecified optional padding... */ -} __attribute__((packed)); - -#endif diff --git a/kernel/fiasco/src/kern/ia32/profile.cpp b/kernel/fiasco/src/kern/ia32/profile.cpp deleted file mode 100644 index 1408f574e..000000000 --- a/kernel/fiasco/src/kern/ia32/profile.cpp +++ /dev/null @@ -1,203 +0,0 @@ -INTERFACE[profile]: - -#include "types.h" - -class Profile -{ - static unsigned long ticks; - static bool exit; -}; - - -INTERFACE[{ia32,amd64}-!profile]: - -class Profile -{ -}; - - -IMPLEMENTATION[profile]: - -#include - -#include "config.h" -#include "globals.h" -#include "gmon.h" -#include "idt.h" -#include "mem_layout.h" -#include "pic.h" -#include "pit.h" -#include "processor.h" -#include "unistd.h" // pr_base, pr_off, pr_size, pr_scale -#include "thread.h" // for stack checking - -unsigned long Profile::ticks = 0; -bool Profile::exit = false; - -static bool profile_active = false; - -extern "C" void profile_interrupt_entry(); - -static void -dump_if_active() -{ - if (profile_active) - _mcleanup(); -} - -// We assume that our member functions generally are called in cli -// mode. - -// set up profiling and initialize profiling interrupt -PUBLIC static -void -Profile::init() -{ - atexit(dump_if_active); - Idt::set_entry (0x20 + Config::profile_irq, - (unsigned) profile_interrupt_entry, false); -} - -PUBLIC static -void -Profile::start() -{ - if (! profile_active) - { - monstartup((char*)&Mem_layout::start, (char*)&Mem_layout::end, - Config::profiling_rate); - profile_active = true; - Pit::init(Config::profiling_rate); - Pic::enable(Config::profile_irq); - } -} - -PUBLIC static -void -Profile::stop() -{ - if (profile_active) - { - Pic::disable(Config::profile_irq); - moncontrol(0); - profile_active = false; - } -} - -PUBLIC static -void -Profile::stop_and_dump() -{ - if (profile_active) - { - Pic::disable(Config::profile_irq); - _mcleanup(); - profile_active = false; - } -} - -// irq routine invoked by profile_interrupt_entry in entry.S - -/* - * Scale is a fixed-point number with the binary point 16 bits - * into the value, and is <= 1.0. pc is at most 32 bits, so the - * intermediate result is at most 48 bits. - */ -#define PC_TO_INDEX(pc, off, scale) \ - ((Address)(((unsigned long long)((pc) - (off)) * \ - (unsigned long long)((scale))) >> 16) & ~1) - -PUBLIC static inline NOEXPORT -void -Profile::handle_profile_interrupt(Address pc) -{ - // runs with disabled irqs - Pic::disable_locked(Config::profile_irq); - Pic::acknowledge_locked(Config::profile_irq); - Pic::enable_locked(Config::profile_irq); - - ticks++; - - size_t i; - - if (! pr_scale) - return; - - if (pc < pr_off - || (i = PC_TO_INDEX(pc, pr_off, pr_scale)) >= pr_size) - return; // out of range - ignore - - *reinterpret_cast(pr_base + i) += 1; - - if (exit) - ::exit(0); -} - -extern "C" FIASCO_FASTCALL -void -profile_interrupt(Address pc) -{ - Profile::handle_profile_interrupt(pc); -} - -extern "C" -void -profile_mcount_wrap(unsigned short *frompcindex, char *selfpc ) -{ - // For lack of a better place, so stack checking here: - - static bool overrun = false; - if (! overrun) - { - Address sp = Proc::stack_pointer(); - if (((Address)current()) + sizeof(Thread) + 0x20 > sp) - { - overrun = true; - panic("stack overrun: current=0x%x, esp=0x%x", - (Address)current(), sp); - } - } - - __mcount_internal (frompcindex, selfpc); -} - -/* The GNU Glibc has this to say: - - We need a special version of the `mcount' function since for ix86 it - must not clobber any register. This has several reasons: - - there is a bug in gcc as of version 2.7.2.2 which prohibits the - use of profiling together with nested functions - - the ELF `fixup' function uses GCC's regparm feature - - some (future) systems might want to pass parameters in registers. */ - -#define __STR(x) #x -#define STR(x) __STR(x) - -asm(".p2align 4 \n\t" - ".globl mcount \n\t" -"mcount: \n\t" - "pushl %eax \n\t" - "pushl %ecx \n\t" - "pushl %edx \n\t" - - "movl 12(%esp), %eax \n\t" - "movl 4(%ebp), %ecx \n\t" - "pushl %eax \n\t" - "pushl %ecx \n\t" - - "call " STR(profile_mcount_wrap) "\n\t" - "addl $8,%esp \n\t" - - "popl %edx \n\t" - "popl %ecx \n\t" - "popl %eax \n\t" - "ret"); - - -//--------------------------------------------------------------------------- -IMPLEMENTATION[{ia32,amd64}-!profile]: - -PUBLIC static inline void Profile::init() {} -PUBLIC static inline void Profile::start() {} -PUBLIC static inline void Profile::stop() {} -PUBLIC static inline void Profile::stop_and_dump() {} diff --git a/kernel/fiasco/src/kern/io_apic.cpp b/kernel/fiasco/src/kern/io_apic.cpp deleted file mode 100644 index 8b3d3ab85..000000000 --- a/kernel/fiasco/src/kern/io_apic.cpp +++ /dev/null @@ -1,340 +0,0 @@ -INTERFACE: - -#include -#include "initcalls.h" -#include - -class Acpi_madt; - -class Io_apic_entry -{ - friend class Io_apic; -private: - Unsigned64 _e; - -public: - enum Delivery { Fixed, Lowest_prio, SMI, NMI = 4, INIT, ExtINT = 7 }; - enum Dest_mode { Physical, Logical }; - enum Polarity { High_active, Low_active }; - enum Trigger { Edge, Level }; - - Io_apic_entry() {} - Io_apic_entry(Unsigned8 vector, Delivery d, Dest_mode dm, Polarity p, - Trigger t, Unsigned8 dest) - : _e(vector | (d << 8) | (dm << 11) | (p << 13) | (t << 15) | (1<<16) - | (((Unsigned64)dest) << 56)) - {} - - unsigned delivery() const { return (_e >> 8) & 7; } - void delivery(unsigned m) { _e = (_e & ~(7 << 8)) | ((m & 7) << 8); } - unsigned dest_mode() const { return _e & (1 << 11); } - void dest_mode(bool p) { _e = (_e & ~(1<<11)) | ((unsigned long)p << 11); } - unsigned dest() const { return _e >> 56; } - void dest(unsigned d) { _e = (_e & ~(0xffULL << 56)) | ((Unsigned64)d << 56); } - unsigned mask() const { return _e & (1U << 16); } - void mask(bool m) { _e = (_e & ~(1ULL << 16)) | ((Unsigned64)m << 16); } - unsigned trigger() const { return _e & (1 << 15); } - unsigned polarity() const { return _e & (1 << 13); } - unsigned vector() const { return _e & 0xff; } - void vector(Unsigned8 v) { _e = (_e & ~0xff) | v; } - void trigger(Mword tr) { _e = (_e & ~(1UL << 15)) | ((tr & 1) << 15); } - void polarity(Mword pl) { _e = (_e & ~(1UL << 13)) | ((pl & 1) << 13); } -} __attribute__((packed)); - - -class Io_apic -{ -public: - enum { Max_ioapics = 6 }; - -private: - struct Apic - { - Unsigned32 volatile adr; - Unsigned32 dummy[3]; - Unsigned32 volatile data; - } __attribute__((packed)); - - Apic *_apic; - Spin_lock<> _l; - unsigned _offset; - unsigned _irqs; - - static Io_apic _apics[Max_ioapics]; - static unsigned _nr_irqs; - static Acpi_madt const *_madt; -}; - -IMPLEMENTATION: - -#include "acpi.h" -#include "kmem.h" -#include "kdb_ke.h" -#include "kip.h" -#include "lock_guard.h" - -Io_apic Io_apic::_apics[Io_apic::Max_ioapics]; -Acpi_madt const *Io_apic::_madt; -unsigned Io_apic::_nr_irqs; - - -PRIVATE inline NEEDS["lock_guard.h"] -Mword -Io_apic::read(int reg) -{ - Lock_guard g(&_l); - _apic->adr = reg; - asm volatile ("": : :"memory"); - return _apic->data; -} - -PRIVATE inline NEEDS["lock_guard.h"] -void -Io_apic::modify(int reg, Mword set_bits, Mword del_bits) -{ - register Mword tmp; - Lock_guard g(&_l); - _apic->adr = reg; - asm volatile ("": : :"memory"); - tmp = _apic->data; - tmp &= ~del_bits; - tmp |= set_bits; - _apic->data = tmp; -} - -PRIVATE inline NEEDS["lock_guard.h"] -void -Io_apic::write(int reg, Mword value) -{ - Lock_guard g(&_l); - _apic->adr = reg; - asm volatile ("": : :"memory"); - _apic->data = value; -} - -PRIVATE inline -unsigned -Io_apic::num_entries() -{ - return (read(1) >> 16) & 0xff; -} - - -PUBLIC inline NEEDS["kdb_ke.h"] -Io_apic_entry -Io_apic::read_entry(unsigned i) -{ - Io_apic_entry e; - //assert_kdb(i <= num_entries()); - e._e = (Unsigned64)read(0x10+2*i) | (((Unsigned64)read(0x11+2*i)) << 32); - return e; -} - - -PUBLIC inline NEEDS["kdb_ke.h", Io_apic::write] -void -Io_apic::write_entry(unsigned i, Io_apic_entry const &e) -{ - //assert_kdb(i <= num_entries()); - write(0x10+2*i, e._e); - write(0x11+2*i, e._e >> 32); -} - -PUBLIC static FIASCO_INIT -bool -Io_apic::init() -{ - _madt = Acpi::find("APIC"); - - if (_madt == 0) - { - printf("Could not find APIC in RSDT nor XSDT, skipping init\n"); - return false; - } - printf("IO-APIC: MADT = %p\n", _madt); - - int n_apics = 0; - - for (n_apics = 0; - Acpi_madt::Io_apic const *ioapic = static_cast(_madt->find(Acpi_madt::IOAPIC, n_apics)); - ++n_apics) - { - - if (n_apics >= Max_ioapics) - { - printf("Maximum number of IO-APICs exceeded ignore further IO-APICs\n"); - break; - } - - printf("IO-APIC[%2d]: struct: %p adr=%x\n", n_apics, ioapic, ioapic->adr); - - Address offs; - Address va = Mem_layout::alloc_io_vmem(Config::PAGE_SIZE); - assert (va); - - Kmem::map_phys_page(ioapic->adr, va, false, true, &offs); - - Kip::k()->add_mem_region(Mem_desc(ioapic->adr, ioapic->adr + Config::PAGE_SIZE -1, Mem_desc::Reserved)); - - - Io_apic *apic = Io_apic::apic(n_apics); - apic->_apic = (Io_apic::Apic*)(va + offs); - apic->write(0, 0); - apic->_irqs = apic->num_entries() + 1; - apic->_offset = ioapic->irq_base; - if ((apic->_offset + apic->_irqs) > _nr_irqs) - _nr_irqs = apic->_offset + apic->_irqs; - - for (unsigned i = 0; i < apic->_irqs; ++i) - { - int v = 0x20+i; - Io_apic_entry e(v, Io_apic_entry::Fixed, Io_apic_entry::Physical, - Io_apic_entry::High_active, Io_apic_entry::Edge, 0); - apic->write_entry(i, e); - } - - printf("IO-APIC[%2d]: pins %u\n", n_apics, apic->_irqs); - apic->dump(); - } - - if (!n_apics) - { - printf("IO-APIC: Could not find IO-APIC in MADT, skip init\n"); - return false; - } - - - printf("IO-APIC: dual 8259: %s\n", _madt->apic_flags & 1 ? "yes" : "no"); - - for (unsigned tmp = 0;;++tmp) - { - Acpi_madt::Irq_source const *irq - = static_cast(_madt->find(Acpi_madt::Irq_src_ovr, tmp)); - - if (!irq) - break; - - printf("IO-APIC: ovr[%2u] %02x -> %x\n", tmp, irq->src, irq->irq); - } - - return true; -}; - -PUBLIC static -unsigned -Io_apic::total_irqs() -{ return _nr_irqs; } - -PUBLIC static -unsigned -Io_apic::legacy_override(unsigned i) -{ - if (!_madt) - return i; - - unsigned tmp = 0; - for (;;++tmp) - { - Acpi_madt::Irq_source const *irq - = static_cast(_madt->find(Acpi_madt::Irq_src_ovr, tmp)); - - if (!irq) - break; - - if (irq->src == i) - return irq->irq; - } - return i; -} - -PUBLIC -void -Io_apic::dump() -{ - for (unsigned i = 0; i < _irqs; ++i) - { - Io_apic_entry e = read_entry(i); - printf(" PIN[%2u%c]: vector=%2x, del=%u, dm=%s, dest=%u (%s, %s)\n", - i, e.mask() ? 'm' : '.', - e.vector(), e.delivery(), e.dest_mode() ? "logical" : "physical", - e.dest(), - e.polarity() ? "low" : "high", - e.trigger() ? "level" : "edge"); - } - -} - -PUBLIC static inline -bool -Io_apic::active() -{ return _apics[0]._apic; } - -PUBLIC inline -bool -Io_apic::valid() const { return _apic; } - -PUBLIC inline NEEDS["kdb_ke.h", Io_apic::modify] -void -Io_apic::mask(unsigned irq) -{ - //assert_kdb(irq <= _apic->num_entries()); - modify(0x10 + irq * 2, 1UL << 16, 0); -} - -PUBLIC inline NEEDS["kdb_ke.h", Io_apic::modify] -void -Io_apic::unmask(unsigned irq) -{ - //assert_kdb(irq <= _apic->num_entries()); - modify(0x10 + irq * 2, 0, 1UL << 16); -} - -PUBLIC inline NEEDS["kdb_ke.h", Io_apic::read] -bool -Io_apic::masked(unsigned irq) -{ - //assert_kdb(irq <= _apic->num_entries()); - return read(0x10 + irq * 2) & (1UL << 16); -} - -PUBLIC inline NEEDS[Io_apic::read] -void -Io_apic::sync() -{ - (void)_apic->data; -} - -PUBLIC inline NEEDS["kdb_ke.h", Io_apic::modify] -void -Io_apic::set_dest(unsigned irq, Mword dst) -{ - //assert_kdb(irq <= _apic->num_entries()); - modify(0x11 + irq * 2, dst & (~0UL << 24), ~0UL << 24); -} - -PUBLIC inline -unsigned -Io_apic::nr_irqs() -{ return _irqs; } - -PUBLIC inline -unsigned -Io_apic::gsi_offset() const { return _offset; } - -PUBLIC static inline -Io_apic * -Io_apic::apic(unsigned idx) -{ return &_apics[idx]; } - -PUBLIC static -unsigned -Io_apic::find_apic(unsigned irqnum) -{ - for (unsigned i = Max_ioapics; i > 0; --i) - { - if (_apics[i-1]._apic && _apics[i-1]._offset <= irqnum) - return i - 1; - } - return 0; -}; - diff --git a/kernel/fiasco/src/kern/io_space_sigma0.cpp b/kernel/fiasco/src/kern/io_space_sigma0.cpp deleted file mode 100644 index a79a1e621..000000000 --- a/kernel/fiasco/src/kern/io_space_sigma0.cpp +++ /dev/null @@ -1,32 +0,0 @@ -INTERFACE [io]: - -#include "io_space.h" - -template< typename SPACE > -class Io_space_sigma0 : public Generic_io_space -{ - typedef Generic_io_space _B; -public: - typedef typename _B::Addr Addr; - typedef typename _B::Size Size; - typedef typename _B::Phys_addr Phys_addr; -}; - -IMPLEMENTATION [io]: - -// -// Utilities for map and unmap -// - -PUBLIC template< typename SPACE > -bool -Io_space_sigma0::v_fabricate(Addr address, Phys_addr* phys, - Size* size, unsigned* attribs = 0) -{ - // special-cased because we don't do lookup for sigma0 - *phys = address.trunc(Size(_B::Map_superpage_size)); - *size = Size(_B::Map_superpage_size); - if (attribs) *attribs = _B::Page_writable | _B::Page_user_accessible; - return true; -} - diff --git a/kernel/fiasco/src/kern/irq_pin.cpp b/kernel/fiasco/src/kern/irq_pin.cpp deleted file mode 100644 index 12db0f0a3..000000000 --- a/kernel/fiasco/src/kern/irq_pin.cpp +++ /dev/null @@ -1,165 +0,0 @@ -INTERFACE: - -#include "types.h" -#include "globals.h" - -#include -#include - -class Irq_pin -{ -private: - enum Flags - { - F_enabled = 1, - }; - -public: - bool __mask() { bool o = masked(); _flags &= ~F_enabled; return o; } - bool __unmask() { bool o = masked(); _flags |= F_enabled; return o; } - -public: - void *operator new (size_t, void *p) { return p; } - - virtual void do_mask() = 0; - virtual void do_unmask() = 0; - virtual void do_mask_and_ack() = 0; - virtual void do_set_mode(unsigned) {}; - - virtual void ack() = 0; - virtual void set_cpu(unsigned) = 0; - virtual bool check_debug_irq() { return true; } - virtual void disable() {} - virtual void unbind_irq() = 0; - - void mask() { if (!__mask()) do_mask(); } - void mask_and_ack() { do_mask_and_ack(); } - void unmask() { if (__unmask()) do_unmask(); } - void set_mode(unsigned m) - { _flags = (_flags & ~6) | (m & 6); do_set_mode(m); } - - unsigned get_mode() const - { return _flags & 6; } - - bool masked() const { return !(_flags & F_enabled); } - Mword flags() const { return _flags; } - - Mword *payload() { return _payload; } - -private: - void __redo_flags() - { - do_set_mode(_flags & 6); - - if (masked()) - do_mask(); - else - do_unmask(); - } - -public: - template - void replace() - { new (this) Pin(); __redo_flags(); } - - template - void replace(Arg a) - { new (this) Pin(a); __redo_flags(); } - - template - void replace(A1 a1, A2 a2) - { new (this) Pin(a1, a2); __redo_flags(); } - - Mword const *payload() const { return _payload; } - -private: - Mword _flags; - Mword _payload[1]; - -}; - - -class Irq_pin_dummy : public Irq_pin -{ -public: - void do_unmask() {} - void do_mask() {} - void unbind_irq() {} - void ack() {} - void do_mask_and_ack() { __mask(); } - void do_set_mode(unsigned) {} - void set_cpu(unsigned) {} - char const *pin_type() const { return "DUMMY"; } -}; - -class Kobject_iface; - -class Sw_irq_pin : public Irq_pin_dummy -{}; - -class Irq_base -{ -public: - Irq_base() : _next(0) - { - memset(&_pin, 0, sizeof(_pin)); - new (&_pin) Irq_pin_dummy(); - } - - Irq_pin *pin() { return (Irq_pin*)_pin; } - Irq_pin const *pin() const { return (Irq_pin const*)_pin; } - virtual void hit() {} - -protected: - typedef char Pin[sizeof (Irq_pin)] __attribute__((aligned(__alignof__(Irq_pin)))); - Pin _pin; - -public: - Irq_base *_next; - - static Irq_base *(*dcast)(Kobject_iface *); -}; - -//---------------------------------------------------------------------------- -INTERFACE [debug]: - -EXTENSION class Irq_pin -{ -public: - virtual char const *pin_type() const = 0; -}; - - -//---------------------------------------------------------------------------- -IMPLEMENTATION: - -#include "types.h" -#include "cpu_lock.h" -#include "lock_guard.h" - -Irq_base *(*Irq_base::dcast)(Kobject_iface *); - -PUBLIC static inline NEEDS["types.h"] -Irq_base * -Irq_base::self(Irq_pin const *pin) -{ -#define MYoffsetof(TYPE, MEMBER) (((size_t) &((TYPE *)10)->MEMBER) - 10) - return reinterpret_cast(reinterpret_cast(pin) - - MYoffsetof(Irq_base, _pin)); -#undef MYoffsetof -} - -PUBLIC inline NEEDS["lock_guard.h", "cpu_lock.h"] -void -Irq_base::destroy() -{ - Lock_guard g(&cpu_lock); - pin()->unbind_irq(); - pin()->replace(); -} - -PUBLIC -char const * -Sw_irq_pin::pin_type() const -{ return "SW IRQ"; } - diff --git a/kernel/fiasco/src/kern/kmem_slab_simple.cpp b/kernel/fiasco/src/kern/kmem_slab_simple.cpp deleted file mode 100644 index c87ac3372..000000000 --- a/kernel/fiasco/src/kern/kmem_slab_simple.cpp +++ /dev/null @@ -1,152 +0,0 @@ -INTERFACE: - -#include // size_t -#include "config.h" -//#include "helping_lock.h" // Helping_lock -#include "lock_guard.h" -#include "spin_lock.h" - -#include "slab_cache_anon.h" // slab_cache_anon - -class Kmem_slab_simple : public slab_cache_anon -{ - friend class Jdb_kern_info_memory; - - // DATA - //typedef Helping_lock Lock; - Kmem_slab_simple* _reap_next; - - // STATIC DATA - static Kmem_slab_simple* reap_list; -}; - -template< typename T > -class Kmem_slab_t : public Kmem_slab_simple -{ -public: - explicit Kmem_slab_t(char const *name) - : Kmem_slab_simple(sizeof(T), __alignof(T), name) {} -}; - -IMPLEMENTATION: - -Kmem_slab_simple* Kmem_slab_simple::reap_list; - -// Kmem_slab_simple -- A type-independent slab cache allocator for Fiasco, -// derived from a generic slab cache allocator (slab_cache_anon in -// lib/slab.cpp). - -// This specialization adds low-level page allocation and locking to -// the slab allocator implemented in our base class (slab_cache_anon). -//- - -#include -#include "config.h" -#include "atomic.h" -#include "panic.h" -#include "mapped_alloc.h" - -// Specializations providing their own block_alloc()/block_free() can -// also request slab sizes larger than one page. -PROTECTED -Kmem_slab_simple::Kmem_slab_simple(unsigned long slab_size, - unsigned elem_size, - unsigned alignment, - char const *name) - : slab_cache_anon(slab_size, elem_size, alignment, name) -{ - enqueue_reap_list(); -} - -// Specializations providing their own block_alloc()/block_free() can -// also request slab sizes larger than one page. -PUBLIC -Kmem_slab_simple::Kmem_slab_simple(unsigned elem_size, - unsigned alignment, - char const *name, - unsigned long min_size = Config::PAGE_SIZE, - unsigned long max_size = Config::PAGE_SIZE * 32) - : slab_cache_anon(elem_size, alignment, name, min_size, max_size) -{ - enqueue_reap_list(); -} - -void -Kmem_slab_simple::enqueue_reap_list() -{ - do { - _reap_next = reap_list; - } while (! cas (&reap_list, _reap_next, this)); -} - -PUBLIC -Kmem_slab_simple::~Kmem_slab_simple() -{ - destroy(); -} - -// We overwrite some of slab_cache_anon's functions to faciliate locking. -PUBLIC -void * -Kmem_slab_simple::alloc() // request initialized member from cache -{ - return slab_cache_anon::alloc(); -} - -PUBLIC -void -Kmem_slab_simple::free(void *cache_entry) // return initialized member to cache -{ - slab_cache_anon::free(cache_entry); -} - -PUBLIC -unsigned long -Kmem_slab_simple::reap() -{ - return slab_cache_anon::reap(); -} - -// Callback functions called by our super class, slab_cache_anon, to -// allocate or free blocks - -virtual void * -Kmem_slab_simple::block_alloc(unsigned long size, unsigned long) -{ - assert (size >= Config::PAGE_SIZE && !(size & (size - 1))); - (void)size; - return Mapped_allocator::allocator()->unaligned_alloc(size); -} - -virtual void -Kmem_slab_simple::block_free(void *block, unsigned long size) -{ - Mapped_allocator::allocator()->unaligned_free(size, block); -} - -// -// Memory reaper -// -PUBLIC static -size_t -Kmem_slab_simple::reap_all (bool desperate) -{ - size_t freed = 0; - - for (Kmem_slab_simple* alloc = reap_list; - alloc; - alloc = alloc->_reap_next) - { - size_t got; - do - { - got = alloc->reap(); - freed += got; - } - while (desperate && got); - } - - return freed; -} - -static Mapped_alloc_reaper kmem_slab_simple_reaper(Kmem_slab_simple::reap_all); diff --git a/kernel/fiasco/src/kern/mapped_alloc.cpp b/kernel/fiasco/src/kern/mapped_alloc.cpp deleted file mode 100644 index 0e1839803..000000000 --- a/kernel/fiasco/src/kern/mapped_alloc.cpp +++ /dev/null @@ -1,168 +0,0 @@ -INTERFACE: - -#include // size_t -#include "types.h" - -class Mapped_allocator -{ -public: - /// allocate s bytes size-aligned - virtual void *alloc(size_t order) = 0; - - /// free s bytes previously allocated with alloc(s) - virtual void free(size_t order, void *p) = 0; - - virtual void *unaligned_alloc(unsigned long size) = 0; - virtual void unaligned_free(unsigned long size, void *p) = 0; - - virtual void dump() const {} -private: - static Mapped_allocator *_alloc; -}; - -class Mapped_alloc_reaper -{ - size_t (*_reap)(bool desperate); - Mapped_alloc_reaper* _next; - -private: - static Mapped_alloc_reaper* mem_reapers; -}; - - -IMPLEMENTATION: - -#include - -#include "mem_layout.h" - -// -// class Mapped_allocator -// - -Mapped_allocator* Mapped_allocator::_alloc; - -PUBLIC static -Mapped_allocator * -Mapped_allocator::allocator() -{ - assert (_alloc /* uninitialized use of Mapped_allocator */); - return _alloc; -} - -PROTECTED static -void -Mapped_allocator::allocator(Mapped_allocator *a) -{ - _alloc=a; -} - -PUBLIC inline NEEDS["mem_layout.h"] -void Mapped_allocator::free_phys(size_t s, Address p) -{ - void *va = (void*)Mem_layout::phys_to_pmem(p); - if((unsigned long)va != ~0UL) - free(s, va); -} - -PUBLIC template< typename Q > -inline -void * -Mapped_allocator::q_alloc(Q *quota, size_t order) -{ - if (EXPECT_FALSE(!quota->alloc(1UL<free(1UL< -inline -void * -Mapped_allocator::q_unaligned_alloc(Q *quota, size_t size) -{ - if (EXPECT_FALSE(!quota->alloc(size))) - return 0; - - void *b; - if (EXPECT_FALSE(!(b=unaligned_alloc(size)))) - { - quota->free(size); - return 0; - } - - return b; -} - -PUBLIC template< typename Q > -inline -void -Mapped_allocator::q_free_phys(Q *quota, size_t order, Address obj) -{ - free_phys(order, obj); - quota->free(1UL< -inline -void -Mapped_allocator::q_free(Q *quota, size_t order, void *obj) -{ - free(order, obj); - quota->free(1UL< -inline -void -Mapped_allocator::q_unaligned_free(Q *quota, size_t size, void *obj) -{ - unaligned_free(size, obj); - quota->free(size); -} - -// -// class Mapped_alloc_reaper -// - -#include "atomic.h" -#include "warn.h" - -Mapped_alloc_reaper* Mapped_alloc_reaper::mem_reapers; - -PUBLIC inline NEEDS["atomic.h"] -Mapped_alloc_reaper::Mapped_alloc_reaper (size_t (*reap)(bool desperate)) - : _reap (reap) -{ - do { - _next = mem_reapers; - } while (! cas (&mem_reapers, _next, this)); -} - -PUBLIC static -size_t -Mapped_alloc_reaper::morecore (bool desperate = false) -{ - size_t freed = 0; - - for (Mapped_alloc_reaper* reaper = mem_reapers; - reaper; - reaper = reaper->_next) - { - freed += reaper->_reap(desperate); - } -#if 0 - if (desperate) - WARN ("morecore freed %lu bytes of memory\n", - static_cast(freed)); -#endif - - return freed; -} diff --git a/kernel/fiasco/src/kern/mem_space_sigma0.cpp b/kernel/fiasco/src/kern/mem_space_sigma0.cpp deleted file mode 100644 index b1d68835f..000000000 --- a/kernel/fiasco/src/kern/mem_space_sigma0.cpp +++ /dev/null @@ -1,48 +0,0 @@ -INTERFACE: - -#include "mem_space.h" - -class Mem_space_sigma0 : public Mem_space -{ -}; - - -IMPLEMENTATION: - -#include "config.h" - - -PUBLIC inline -Mem_space_sigma0::Mem_space_sigma0(Ram_quota *q) -: Mem_space(q) -{} - -PUBLIC inline -Address -Mem_space_sigma0::virt_to_phys_s0 (void *a) const // pgtble lookup -{ - return (Address)a; -} - - -PUBLIC -bool -Mem_space_sigma0::v_fabricate(Vaddr address, - Phys_addr* phys, Size* size, - unsigned* attribs = 0) -{ - // special-cased because we don't do ptab lookup for sigma0 - *size = has_superpages() ? Size(Config::SUPERPAGE_SIZE) : Size(Config::PAGE_SIZE); - *phys = address.trunc(*size); - - if (attribs) - *attribs = Page_writable | Page_user_accessible | Page_cacheable; - - return true; -} - -PUBLIC inline virtual -Page_number -Mem_space_sigma0::map_max_address() const -{ return Page_number::create(1UL << (MWORD_BITS - Page_shift)); } - diff --git a/kernel/fiasco/src/kern/pages.cpp b/kernel/fiasco/src/kern/pages.cpp deleted file mode 100644 index 440497624..000000000 --- a/kernel/fiasco/src/kern/pages.cpp +++ /dev/null @@ -1,5 +0,0 @@ -INTERFACE: - -#include "types.h" -#include "config.h" - diff --git a/kernel/fiasco/src/kern/ppc32/mem_space-user-ppc32.cpp b/kernel/fiasco/src/kern/ppc32/mem_space-user-ppc32.cpp deleted file mode 100644 index b209c6a23..000000000 --- a/kernel/fiasco/src/kern/ppc32/mem_space-user-ppc32.cpp +++ /dev/null @@ -1,86 +0,0 @@ -IMPLEMENTATION[ppc32]: - -#include "cpu.h" -#include - -IMPLEMENT inline NEEDS [, "mem.h", Mem_space::current_pdir] -template < typename T > -void -Mem_space::copy_from_user (T *kdst, T const *usrc, size_t n) -{ - assert (dir() == current_pdir()); - - Address phys, offs; - Mword len = n * sizeof(T); - - while(len) - { - phys = lookup((void*)usrc); - - assert(phys != ~0UL); - - offs = (Address)usrc & ~Config::PAGE_MASK; - - /* check page boundary */ - if(offs + len >= Config::PAGE_SIZE) - len = Config::PAGE_SIZE - offs; - - Mem::memcpy_bytes(kdst, (void*)(phys + offs), len); - - kdst += len; - usrc += len; - len = n -= len; - } -} - -IMPLEMENT inline -template <> -void -Mem_space::copy_from_user (Mword *kdst, Mword const *usrc, size_t n) -{ - copy_from_user(kdst, usrc, n / sizeof(Mword)); -} - -IMPLEMENT inline -template < typename T > -void -Mem_space::copy_to_user (T * /*udst*/, T const * /*ksrc*/, size_t /*n*/) -{ - NOT_IMPL_PANIC; -} - -IMPLEMENT inline -template <> -void -Mem_space::copy_to_user (Mword * /*udst*/, Mword const * /*ksrc*/, - size_t /* n */) -{ - NOT_IMPL_PANIC; -} - -//------------------------------------------------------------------------------ -IMPLEMENT inline NEEDS[] -template < typename T> -T -Mem_space::peek_user(T const *addr) -{ - Address phys = lookup((void *)addr); - - assert(phys != ~0U); - phys += (Address)addr & ~Config::PAGE_MASK; - - return *(reinterpret_cast(phys)); -} - -IMPLEMENT inline NEEDS[] -template < typename T > -void -Mem_space::poke_user(T *addr, T value) -{ - Address phys = lookup((void *)addr); - - assert(phys != ~0U); - phys += (Address)addr & ~Config::PAGE_MASK; - - *(reinterpret_cast(phys)) = value; -} diff --git a/kernel/fiasco/src/kern/thread-ulock.cpp b/kernel/fiasco/src/kern/thread-ulock.cpp deleted file mode 100644 index 5c05ec5df..000000000 --- a/kernel/fiasco/src/kern/thread-ulock.cpp +++ /dev/null @@ -1,49 +0,0 @@ -INTERFACE [ulock]: - -#include "prio_list.h" - -EXTENSION class Thread -{ -private: - Locked_prio_list *_wait_queue; -}; - - -//------------------------------------------------------------------------ -IMPLEMENTATION [ulock]: - -PUBLIC inline -Locked_prio_list * -Thread::wait_queue() const -{ return _wait_queue; } - - -PUBLIC inline -void -Thread::wait_queue(Locked_prio_list *wq) -{ _wait_queue = wq; } - - -PRIVATE inline NEEDS[Thread::wait_queue] -void -Thread::wait_queue_kill() -{ - while (Locked_prio_list *q = wait_queue()) - { - Lock_guard g(q); - if (wait_queue() == q) - { - sender_dequeue(q); - wait_queue(0); - return; - } - } -} - -//------------------------------------------------------------------------ -IMPLEMENTATION [!ulock]: - -PRIVATE inline -void -Thread::wait_queue_kill() -{} diff --git a/kernel/fiasco/src/kern/u_lock.cpp b/kernel/fiasco/src/kern/u_lock.cpp deleted file mode 100644 index a0cceb8dc..000000000 --- a/kernel/fiasco/src/kern/u_lock.cpp +++ /dev/null @@ -1,116 +0,0 @@ -INTERFACE: - -#include "kobject.h" -#include "mapping_tree.h" -#include "obj_helping_lock.h" -#include "kmem_slab.h" - -class Ram_quota; - -class U_lock : public Kobject -{ - FIASCO_DECLARE_KOBJ(); - -private: - typedef slab_cache_anon Allocator; - - Ram_quota *_q; - unsigned long _cnt; - mutable Obj_helping_lock _l; -public: - Context *lockers; - -public: - virtual ~U_lock() {} -}; - - -IMPLEMENTATION: - -FIASCO_DEFINE_KOBJ(U_lock); - -PUBLIC inline -U_lock::U_lock(Ram_quota *q) : _q(q), _cnt(0), lockers(0) {} - -PUBLIC inline -Obj_helping_lock::Status -U_lock::lock() -{ return _l.lock(); } - -PUBLIC inline -void -U_lock::clear() -{ _l.clear(); } - -PUBLIC inline -unsigned -U_lock::dec_ref_cnt() -{ - Lock_guard guard(&cpu_lock); - --_cnt; - if (_cnt == 0 && Mappable::no_mappings()) - return 0; - else - return 1; -} - -PUBLIC inline -void -U_lock::inc_ref_cnt() -{ ++_cnt; } - -PUBLIC inline -bool -U_lock::no_mappings() const -{ - Lock_guard guard(&cpu_lock); - if (Mappable::no_mappings()) - { - _l.invalidate(); - return !_cnt; - } - return 0; -} - - - -PUBLIC static -U_lock* -U_lock::alloc(Ram_quota *q) -{ - void *nq; - if (q->alloc(sizeof(U_lock)) && (nq = allocator()->alloc())) - return new (nq) U_lock(q); - - return 0; -} - -PUBLIC -void * -U_lock::operator new (size_t, void *p) -{ return p; } - -PUBLIC -void -U_lock::operator delete (void *_l) -{ - U_lock *l = reinterpret_cast(_l); - if (l->_q) - l->_q->free(sizeof(U_lock)); - - allocator()->free(l); -} - -static Kmem_slab_t _ulock_allocator("U_lock"); - -PRIVATE static -U_lock::Allocator * -U_lock::allocator() -{ return &_ulock_allocator; } - -PUBLIC -void -U_lock::invoke(Syscall_frame *, Utcb *) -{ - printf("hoooo\n"); -} diff --git a/kernel/fiasco/src/kern/u_semaphore.cpp b/kernel/fiasco/src/kern/u_semaphore.cpp deleted file mode 100644 index 16a7096e6..000000000 --- a/kernel/fiasco/src/kern/u_semaphore.cpp +++ /dev/null @@ -1,588 +0,0 @@ -INTERFACE: - -#include "mapping_tree.h" -#include "kobject.h" -#include "kmem_slab.h" -#include "l4_types.h" -#include "prio_list.h" -#include "thread.h" -#include "slab_cache_anon.h" - -class Ram_quota; - -class U_semaphore : public Kobject -{ - friend class Jdb_semaphore; - - FIASCO_DECLARE_KOBJ(); - -private: - typedef slab_cache_anon Allocator; - - Ram_quota *_q; - Locked_prio_list _queue; - bool _valid; -public: - enum Result { Ok, Retry, Timeout, Invalid }; - -public: - virtual ~U_semaphore(); -}; - - -IMPLEMENTATION: - -#include "cpu_lock.h" -#include "entry_frame.h" -#include "ipc_timeout.h" -#include "logdefs.h" -#include "mem_space.h" -#include "thread_state.h" -#include "timer.h" - -FIASCO_DEFINE_KOBJ(U_semaphore); - -PUBLIC /*inline*/ -U_semaphore::U_semaphore(Ram_quota *q) - : _q(q), _valid(true) -{} - - -PRIVATE inline NOEXPORT -void -U_semaphore::set_queued(L4_semaphore *sem, bool q) -{ - current()->mem_space()->poke_user(&(sem->flags), (Mword)q); -} - - -PRIVATE inline NOEXPORT -bool -U_semaphore::pagein_set_queued(Thread *c, L4_semaphore *sem, bool q) -{ - jmp_buf pf_recovery; - int err; - if (EXPECT_TRUE ((err = setjmp(pf_recovery)) == 0)) - { - c->recover_jmp_buf(&pf_recovery); - // we are preemptible here, in case of a page fault - current()->mem_space()->poke_user(&(sem->flags), (Mword)q); - } - - c->recover_jmp_buf(0); - return err == 0; -} - - -PRIVATE inline NOEXPORT -bool -U_semaphore::add_counter(L4_semaphore *sem, long v) -{ - Smword cnt = current()->mem_space()->peek_user(&(sem->counter)) + v; - current()->mem_space()->poke_user(&(sem->counter), cnt); - return cnt; -} - - -PRIVATE inline NOEXPORT -bool -U_semaphore::valid_semaphore(L4_semaphore *s) -{ - if (EXPECT_FALSE(((unsigned long)s & (sizeof(L4_semaphore)-1)) != 0)) - return false; - - if (EXPECT_FALSE((unsigned long)s >= Mem_layout::User_max)) - return false; - - return true; -} - -PUBLIC -L4_msg_tag -U_semaphore::block_locked(L4_timeout const &to, L4_semaphore *sem, Utcb *u) -{ - if (EXPECT_FALSE(!valid_semaphore(sem))) - return L4_msg_tag(0, 0, 0, Invalid); - - Thread *c = current_thread(); - if (EXPECT_FALSE (!pagein_set_queued(c, sem, true))) - // unhandled page fault semaphore is considered invalid - return L4_msg_tag(0, 0, 0, Invalid); - - // *counter is now paged in writable - if (add_counter(sem, 1) > 0) - { - if (!_queue.head()) - set_queued(sem, false); - - add_counter(sem, -1); - return L4_msg_tag(0, 0, 0, Ok); - } - - Unsigned64 t = 0; - if (!to.is_never()) - { - t = to.microsecs(Timer::system_clock(), u); - if (!t) - return L4_msg_tag(0, 0, 0, Timeout); - } - - c->wait_queue(&_queue); - c->sender_enqueue(&_queue, c->sched_context()->prio()); - c->state_change_dirty(~Thread_ready, Thread_send_wait); - - IPC_timeout timeout; - if (t) - { - timeout.set(t, c->cpu()); - c->set_timeout(&timeout); - } - - c->schedule(); - // We go here by: (a) a wakeup, (b) a timeout, (c) wait_queue delete, - // (d) ex_regs - c->state_del_dirty(~Thread_ipc_mask); - - // The wait_queue was destroyed - if (EXPECT_FALSE(!_valid)) - return L4_msg_tag(0, 0, 0, Invalid); - - // Two cases: - // 1. c is not in the queue, then the wakeup already occured - // 2. c is in the sender list an the timeout has hit a timeout is flagged - if (EXPECT_FALSE(c->in_sender_list() && timeout.has_hit())) - { - // The timeout really hit so remove c from the queue - c->sender_dequeue(&_queue); - return L4_msg_tag(0, 0, 0, Timeout); - } - - return L4_msg_tag(0, 0, 0, Retry); -} - - -PUBLIC -void -U_semaphore::wakeup_locked(L4_semaphore *sem, bool yield) -{ - if (EXPECT_FALSE(!valid_semaphore(sem))) - return; - - Thread *c = current_thread(); - - // basically make queued flag writable - if (EXPECT_FALSE (!pagein_set_queued(c, sem, true))) - // semaphore is invalid - return; - - Prio_list_elem *h = _queue.head(); - if (!h) - { - set_queued(sem, false); // queue is empty - return; - } - - Thread *w = static_cast(Sender::cast(h)); - w->sender_dequeue(&_queue); - w->state_change_dirty(~Thread_ipc_mask, Thread_ready); - - w->reset_timeout(); - w->wait_queue(0); - - if (!_queue.head()) - set_queued(sem, false); // dequeued the last thread - - // XXX: bad hack, need to sync queue - if (w->cpu() != current_cpu()) - { - w->activate(); - return; - } - - if (c->schedule_in_progress()) - return; - - if (w->sched()->deblock(current_cpu(), current()->sched(), true)) - current()->switch_to_locked(w); - else if (yield && w->sched()->prio() == current()->sched()->prio()) - { - current()->switch_to_locked(w); -#if 0 - w->ready_enqueue(); - current()->switch_sched(current()->sched()); - current()->schedule(); -#endif - } - else - w->ready_enqueue(); -} - - -IMPLEMENT -U_semaphore::~U_semaphore() -{ - _valid = false; - - while (Prio_list_elem *h = _queue.head()) - { - Thread *w = static_cast(Sender::cast(h)); - w->sender_dequeue(&_queue); - w->state_change_safely(~Thread_ipc_mask, Thread_ready); - w->ready_enqueue(); - w->reset_timeout(); - } - - Lock_guard guard(&cpu_lock); - - current()->schedule(); -} - -PUBLIC static -U_semaphore* -U_semaphore::alloc(Ram_quota *q) -{ - void *nq; - if (q->alloc(sizeof(U_semaphore)) && (nq = allocator()->alloc())) - return new (nq) U_semaphore(q); - - return 0; -} - -PUBLIC -void * -U_semaphore::operator new (size_t, void *p) -{ return p; } - -PUBLIC -void -U_semaphore::operator delete (void *_l) -{ - U_semaphore *l = reinterpret_cast(_l); - if (l->_q) - l->_q->free(sizeof(U_semaphore)); - - allocator()->free(l); -} - - -static Kmem_slab_t _usem_allocator("U_semaphore"); - -PRIVATE static -U_semaphore::Allocator * -U_semaphore::allocator() -{ return &_usem_allocator; } - - -PUBLIC -void -U_semaphore::invoke(L4_obj_ref, Mword, Syscall_frame *f, Utcb *u) -{ - //printf (" do it (%p)\n", l); - LOG_TRACE("User semaphore", "sem", ::current(), __usem_fmt, - Log_entry *le = tbe->payload(); - le->tag = f->tag().raw(); - le->id = dbg_id(); - le->sem = u->values[0]); - - switch (f->tag().proto()) - { - case 0: //Sys_u_lock_frame::Sem_sleep: - //LOG_MSG_3VAL(this, "USBLOCK", regs->timeout().raw(), 0, 0); - f->tag(block_locked(f->timeout().rcv, (L4_semaphore*)u->values[0], u)); - //LOG_MSG_3VAL(this, "USBLOCK+", res, 0, 0); - return; - case 1: //Sys_u_lock_frame::Sem_wakeup: - //LOG_MSG(this, "USWAKE"); - wakeup_locked((L4_semaphore*)u->values[0], true); - f->tag(L4_msg_tag(0,0,0,0)); - return; - case 2: //Sys_u_lock_frame::Sem_wakeup: - //LOG_MSG(this, "USWAKE"); - wakeup_locked((L4_semaphore*)u->values[0], false); - f->tag(L4_msg_tag(0,0,0,0)); - return; - default: - break; - } - - f->tag(L4_msg_tag(0,0,0,-L4_err::EInval)); -} - - -// ----------------------------------------------------------------------- -INTERFACE [debug]: - -EXTENSION class U_semaphore -{ -public: - struct Log_entry - { - Mword tag; - Mword id; - Address sem; - }; - - static unsigned log_fmt(Tb_entry *, int, char *) asm ("__usem_fmt"); -; -}; - -// ----------------------------------------------------------------------- -IMPLEMENTATION [debug]: - -IMPLEMENT -unsigned -U_semaphore::log_fmt(Tb_entry *e, int maxlen, char *buf) -{ - Log_entry *le = e->payload(); - char const *op; - L4_msg_tag tag(le->tag); - - switch (tag.proto()) - { - case 0: op = "block"; break; - case 1: op = "signal"; break; - default: op = "invalid"; break; - } - return snprintf(buf, maxlen, "sem=%lx op=%s usem=%lx", le->id, - op, le->sem); -} - - - -#if 0 // Promela model of the lock -#define MAX_THREADS 4 -#define MAX_WQ_ENTRIES MAX_THREADS -#define MAX 1 -#define LOOPS 1 - -#define LOCKED 0 -#define RETRY 1 -#define ERROR 2 - -bit thread_state[MAX_THREADS]; -hidden byte loops[MAX_THREADS]; -unsigned in_critical : 4 = 0; -hidden byte temp; - -typedef sem_t -{ - short counter; - bit queued; - bit queue[MAX_WQ_ENTRIES]; -} - -sem_t sem; /* maybe move init. to init*/ - - -inline init_globals() -{ - d_step - { - temp = 0; - sem.counter = MAX; - do - :: - sem.queue[temp] = 0; - temp++; - if - :: (temp >= MAX_WQ_ENTRIES) -> break; - :: else; - fi - od; - } -} - -inline enqueue_thread(t) -{ - sem.queue[t] = 1; -} - -inline dequeue_thread(t) -{ - sem.queue[t] = 0; -} - -inline queue_head(head) -{ - local_temp = 0; - do - :: - if - :: (sem.queue[local_temp]) -> head = local_temp; break; - :: else; - fi; - local_temp++; - if - :: (local_temp >= MAX_WQ_ENTRIES) -> head = local_temp; break; - :: else; - fi; - od -} - -inline block(ret, thread) -{ - do :: - atomic - { - sem.counter++; - if - :: (sem.counter > 0) -> sem.counter--; ret = LOCKED; break; - :: else - fi; - - sem.queued = 1; - enqueue_thread(thread); - thread_state[thread] = 0; - - if - :: (thread_state[thread] == 1) -> skip - fi; - - if - :: (sem.queue[thread] == 0) -> ret = RETRY; break; - :: else; - fi; - - dequeue_thread(thread); - ret = ERROR; - break; - } - od -} - -inline wakeup() -{ - do :: - atomic - { - queue_head(pf); - if - :: (pf == MAX_THREADS) -> sem.queued = 0; break; - :: else; - fi; - - dequeue_thread(pf); - thread_state[pf] = 1; - queue_head(pf); - if :: (pf == MAX_THREADS) -> sem.queued = 0; - :: else; - fi; - break; - } - od -} - -inline down(ret) -{ - do - :: - atomic - { - sem.counter--; - if - :: (sem.counter >= 0) -> break; - :: else; - fi - } - - block(ret, thread); - - if - :: (ret == LOCKED || ret == ERROR) -> break; - :: (ret == RETRY); - :: else assert(false); - fi - od -} - - -inline up() -{ - do - :: - sem.counter++; - if - :: (!sem.queued) -> break; - :: else; - fi; - - wakeup(); - break; - od -} - - -proctype Killer() -{ - end_k: - do - :: - if - :: (thread_state[0] == 0) -> thread_state[0] = 1; - :: (thread_state[1] == 0) -> thread_state[1] = 1; - :: (thread_state[2] == 0) -> thread_state[2] = 1; - fi - od -} - -proctype Thread(byte thread) -{ - unsigned pf : 4; - unsigned ret : 4; - unsigned local_temp : 4; - -before_down: -L1: do - :: - down(ret); - if - :: (ret == ERROR) -> goto L1; - :: else; - fi; - atomic { - in_critical++; - assert (in_critical <= MAX); - } - -progress1: - in_critical--; - up(); - - if - :: (loops[thread] == 0) -> break; - :: else; - fi; - loops[thread]--; - od -} - -hidden byte threads = 0; -init -{ - threads = 0; - in_critical = 0; - init_globals(); - run Killer(); - do - :: - loops[threads] = LOOPS - 1; - run Thread(threads); - threads++; - if - :: (threads >= MAX_THREADS) -> break; - :: else; - fi - od -} - -/* -never -{ - do - :: (in_critical == MAX) -> assert(false) - :: else; - od -} -*/ - -#endif diff --git a/kernel/fiasco/src/lib/disasm/disasm.c b/kernel/fiasco/src/lib/disasm/disasm.c deleted file mode 100644 index a7a013c6d..000000000 --- a/kernel/fiasco/src/lib/disasm/disasm.c +++ /dev/null @@ -1,242 +0,0 @@ - -#include -#include -#include - -#include "include/dis-asm.h" -#include "disasm.h" - -/* local variables */ -static char *out_buf; -static int out_len; -static int use_syms; -static struct Space *dis_task; -static disassemble_info dis_info; -static Peek_task dis_peek_task; -static Get_symbol dis_get_symbol; - -extern int print_insn_i386 PARAMS ((bfd_vma, disassemble_info*)); - -/* read bytes starting at memaddr */ -static int -my_read_memory(bfd_vma memaddr, bfd_byte *myaddr, unsigned length, - struct disassemble_info *info __attribute__ ((unused))) -{ - unsigned i; - - for (i=0; ifprintf_func)(info->stream, "%s", buf); - } -} - -static int -my_printf(void* stream __attribute__ ((unused)), const char *format, ...) -{ - if (out_len) - { - int len; - va_list list; - - va_start(list, format); - len = vsnprintf(out_buf, out_len, format, list); - if (len >= out_len) - len = out_len - 1; - out_buf += len; - out_len -= len; - va_end(list); - } - - return 0; -} - -static void -my_putchar(int c) -{ - if (out_len) - { - out_len--; - *out_buf++ = c; - } -} - -/* check for special L4 int3-opcodes */ -static int -special_l4_ops(bfd_vma memaddr) -{ - int len, bytes, i; - const char *op; - bfd_vma str, s; - - switch (my_get_data(memaddr)) - { - case 0xeb: - op = "enter_kdebug"; - len = my_get_data(memaddr+1); - str = memaddr+2; - bytes = 3+len; - goto printstr; - case 0x90: - if (my_get_data(memaddr+1) != 0xeb) - break; - op = "kd_display"; - len = my_get_data(memaddr+2); - str = memaddr+3; - bytes = 4+len; - printstr: - /* do a quick test if it is really an int3-str function by - * analyzing the bytes we shall display. */ - for (i=len, s=str; i--; ) - if (my_get_data(s++) > 126) - return 0; - /* test well done */ - my_printf(0, "<%s (\"", op); - if ((out_len > 2) && (len > 0)) - { - out_len -= 3; - if (out_len > len) - out_len = len; - /* do not use my_printf here because the string - * can contain special characters (e.g. tabs) which - * we do not want to display */ - while (out_len) - { - unsigned char c = my_get_data(str++); - my_putchar((c<' ') ? ' ' : c); - } - out_len += 3; - } - my_printf(0, "\")>"); - return bytes; - case 0x3c: - op = NULL; - switch (my_get_data(memaddr+1)) - { - case 0: op = "outchar (%al)"; break; - case 2: op = "outstring (*%eax)"; break; - case 5: op = "outhex32 (%eax)"; break; - case 6: op = "outhex20 (%eax)"; break; - case 7: op = "outhex16 (%eax)"; break; - case 8: op = "outhex12 (%eax)"; break; - case 9: op = "outhex8 (%al)"; break; - case 11: op = "outdec (%eax)"; break; - case 13: op = "%al = inchar ()"; break; - case 24: op = "fiasco_start_profile()"; break; - case 25: op = "fiasco_stop_and_dump()"; break; - case 26: op = "fiasco_stop_profile()"; break; - case 29: op = "fiasco_tbuf (%eax)"; break; - case 30: op = "fiasco_register (%eax, %ecx)"; break; - } - if (op) - my_printf(0, "<%s>", op); - else if (my_get_data(memaddr+1) >= ' ') - my_printf(0, "", my_get_data(memaddr+1)); - else break; - return 3; - } - - return 0; -} - -/* WARNING: This function is not reentrant because it accesses some - * global static variables (out_buf, out_len, dis_task, ...) */ -unsigned int -disasm_bytes(char *buffer, unsigned len, Address addr, - struct Space *task, int show_symbols, int show_intel_syntax, - Peek_task peek_task, Get_symbol get_symbol) -{ - use_syms = show_symbols; - out_buf = buffer; - out_len = len; - dis_task = task; - dis_peek_task = peek_task; - dis_get_symbol = get_symbol; - - /* terminate string */ - if (out_len) - out_buf[--out_len] = '\0'; - - /* test for special L4 opcodes */ - if (my_get_data(addr) == 0xcc && (len = special_l4_ops(addr+1))) - return len; - - /* one step back for special L4 opcodes */ - if (my_get_data(addr-1) == 0xcc && (len = special_l4_ops(addr))) - return len-1; - - INIT_DISASSEMBLE_INFO(dis_info, NULL, my_printf); - - dis_info.print_address_func = my_print_address; - dis_info.read_memory_func = my_read_memory; - dis_info.buffer = (bfd_byte*)addr; - dis_info.buffer_length = 99; /* XXX */ - dis_info.buffer_vma = addr; -#if defined CONFIG_ARM - dis_info.mach = bfd_mach_arm_5; -#elif defined CONFIG_PPC32 - dis_info.mach = bfd_mach_ppc_ec603e; - (void)show_intel_syntax; -#elif defined CONFIG_IA32 - dis_info.mach = show_intel_syntax ? bfd_mach_i386_i386_intel_syntax - : bfd_mach_i386_i386; -#else - dis_info.mach = show_intel_syntax ? bfd_mach_x86_64_intel_syntax - : bfd_mach_x86_64; -#endif - - -#if defined CONFIG_ARM - return print_insn_little_arm (addr, &dis_info); -#elif defined CONFIG_PPC32 - return print_insn_big_powerpc(addr, &dis_info); -#else - return print_insn_i386 (addr, &dis_info); -#endif -} diff --git a/kernel/fiasco/src/lib/libk/dlist.cpp b/kernel/fiasco/src/lib/libk/dlist.cpp deleted file mode 100644 index e441b5155..000000000 --- a/kernel/fiasco/src/lib/libk/dlist.cpp +++ /dev/null @@ -1,53 +0,0 @@ -INTERFACE: - -class D_list_item -{ -public: - D_list_item() : _n(this), _p(this) {} - -private: - D_list_item *_n; - D_list_item *_p; -}; - - -IMPLEMENTATION: - -PUBLIC inline -void -D_list_item::enqueue_next(D_list_item *i) -{ - i->_p = this; - i->_n = _n; - _n->_p = i; - _n = i; -} - -PUBLIC inline -void -D_list_item::enqueue(D_list_item *i) -{ - i->_n = this; - i->_p = _p; - _p->_n = i; - _p = i; -} - -PUBLIC inline -void -D_list_item::dequeue() -{ - _p->_n = _n; - _n->_p = _p; - _n = _p = this; -} - -PUBLIC inline -D_list_item * -D_list_item::prev() const -{ return _p; } - -PUBLIC inline -D_list_item * -D_list_item::next() const -{ return _n; } diff --git a/kernel/fiasco/src/lib/libk/ia32/gmon.cpp b/kernel/fiasco/src/lib/libk/ia32/gmon.cpp deleted file mode 100644 index 7830b5b19..000000000 --- a/kernel/fiasco/src/lib/libk/ia32/gmon.cpp +++ /dev/null @@ -1,434 +0,0 @@ -INTERFACE: - -/*- - * Copyright (c) 1991 The Regents of the University of California. - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. - * - * @(#)gmon.h 5.2 (Berkeley) 5/6/91 - */ - -#define GMON_OUT_44BSD /* use the 4.4BSD gmon.out format */ - -struct phdr { - char *lpc; - char *hpc; - int ncnt; -#ifdef GMON_OUT_44BSD - int version; /* version number */ - int profrate; /* profiling clock rate */ - char spare[3*4]; /* reserved */ -#endif /* GMON_OUT_44BSD */ -}; -#define GMONVERSION 0x00051879 - - /* - * histogram counters are unsigned shorts (according to the kernel). - */ -#define HISTCOUNTER unsigned short - - /* - * fraction of text space to allocate for histogram counters - * here, 1/2 - */ -#define HISTFRACTION 2 - - /* - * Fraction of text space to allocate for from hash buckets. - * The value of HASHFRACTION is based on the minimum number of bytes - * of separation between two subroutine call points in the object code. - * Given MIN_SUBR_SEPARATION bytes of separation the value of - * HASHFRACTION is calculated as: - * - * HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1); - * - * For the VAX, the shortest two call sequence is: - * - * calls $0,(r0) - * calls $0,(r0) - * - * which is separated by only three bytes, thus HASHFRACTION is - * calculated as: - * - * HASHFRACTION = 3 / (2 * 2 - 1) = 1 - * - * Note that the division above rounds down, thus if MIN_SUBR_FRACTION - * is less than three, this algorithm will not work! - */ -#define HASHFRACTION 1 - - /* - * percent of text space to allocate for tostructs - * with a minimum. - */ -#define ARCDENSITY 2 -#define MINARCS 50 - -struct tostruct { - char *selfpc; - long count; - unsigned short link; -}; - - /* - * a raw arc, - * with pointers to the calling site and the called site - * and a count. - */ -struct rawarc { - unsigned long raw_frompc; - unsigned long raw_selfpc; - long raw_count; -}; - - /* - * general rounding functions. - */ -#define ROUNDDOWN(x,y) (((x)/(y))*(y)) -#define ROUNDUP(x,y) ((((x)+(y)-1)/(y))*(y)) - -IMPLEMENTATION: - -// adapted freely from gcc's gmon.c - -#include -// #include -// #include - -#ifdef DEBUG -#include -#endif - -// /* extern asm ("mcount"); */ -// /* extern */ char *minbrk; /* asm ("_minbrk"); */ - -/* - * froms is actually a bunch of unsigned shorts indexing tos - */ -static int profiling = 3; -static unsigned short *froms; -static struct tostruct *tos = 0; -static long tolimit = 0; -static char *s_lowpc = 0; -static char *s_highpc = 0; -static unsigned long s_textsize = 0; - -static int ssiz; -static char *sbuf; -static int s_scale; - /* see profil(2) where this is describe (incorrectly) */ -#define SCALE_1_TO_1 0x10000L - -/* - * Control profiling - * profiling is what mcount checks to see if - * all the data structures are ready. - */ -extern "C" void -moncontrol( int mode ) -{ - int ret; -#if 0 // L4 kernel - static int warned = 0; -#endif - - if (mode) { - /* start */ - ret = profil(sbuf + sizeof(struct phdr), ssiz - sizeof(struct phdr), - (Address)s_lowpc, s_scale); -#if 0 // L4 kernel - if (ret < 0 && errno == ENOSYS && !warned) { -# define PROFIL_WARN "warning: kernel does not support profiling\n" - write(2, PROFIL_WARN, sizeof(PROFIL_WARN)); - warned = 1; - } -#endif - profiling = 0; - } else { - /* stop */ - profil((char *)0, 0, 0, 0); - profiling = 3; - } -} - -#define MSG "No space for profiling buffer(s)\n" - -extern "C" void -monstartup( char *lowpc, char *highpc, unsigned prof_rate ) -{ - int monsize; - char *buffer; - register int o; - - /* - * round lowpc and highpc to multiples of the density we're using - * so the rest of the scaling (here and in gprof) stays in ints. - */ - lowpc = (char *) - ROUNDDOWN((unsigned)lowpc, HISTFRACTION*sizeof(HISTCOUNTER)); - s_lowpc = lowpc; - highpc = (char *) - ROUNDUP((unsigned)highpc, HISTFRACTION*sizeof(HISTCOUNTER)); - s_highpc = highpc; - s_textsize = highpc - lowpc; - monsize = (s_textsize / HISTFRACTION) + sizeof(struct phdr); - buffer = (char *) sbrk( monsize ); - if ( buffer == (char *) -1 ) { - write( 2 , MSG , sizeof(MSG) ); - return; - } - froms = (unsigned short *) sbrk( s_textsize / HASHFRACTION ); - if ( froms == (unsigned short *) -1 ) { - write( 2 , MSG , sizeof(MSG) ); - froms = 0; - return; - } - tolimit = s_textsize * ARCDENSITY / 100; - if ( tolimit < MINARCS ) { - tolimit = MINARCS; - } else if ( tolimit > 65534 ) { - tolimit = 65534; - } - tos = (struct tostruct *) sbrk( tolimit * sizeof( struct tostruct ) ); - if ( tos == (struct tostruct *) -1 ) { - write( 2 , MSG , sizeof(MSG) ); - froms = 0; - tos = 0; - return; - } -#if 0 // L4 kernel - minbrk = (char *) sbrk(0); -#endif - tos[0].link = 0; - sbuf = buffer; - ssiz = monsize; - ( (struct phdr *) buffer ) -> lpc = lowpc; - ( (struct phdr *) buffer ) -> hpc = highpc; - ( (struct phdr *) buffer ) -> ncnt = ssiz; -#ifdef GMON_OUT_44BSD - ( (struct phdr *) buffer ) -> version = GMONVERSION; - ( (struct phdr *) buffer ) -> profrate = prof_rate; -#endif // GMON_OUT_44BSD - monsize -= sizeof(struct phdr); - if ( monsize <= 0 ) - return; - o = highpc - lowpc; - if( monsize < o ) -#ifndef hp300 - s_scale = (int)(( (float) monsize / o ) * SCALE_1_TO_1); -#else /* avoid floating point */ - { - int quot = o / monsize; - - if (quot >= 0x10000) - s_scale = 1; - else if (quot >= 0x100) - s_scale = 0x10000 / quot; - else if (o >= 0x800000) - s_scale = 0x1000000 / (o / (monsize >> 8)); - else - s_scale = 0x1000000 / ((o << 8) / monsize); - } -#endif - else - s_scale = SCALE_1_TO_1; - moncontrol(1); -} - -extern "C" void -_mcleanup( void ) -{ - int fd; - int fromindex; - int endfrom; - char *frompc; - int toindex; - struct rawarc rawarc; - - moncontrol(0); - fd = creat( "gmon.out" , 0666 ); - if ( fd < 0 ) { - perror( "mcount: gmon.out" ); - return; - } -# ifdef DEBUG - fprintf( stderr , "[mcleanup] sbuf 0x%x ssiz %d\n" , sbuf , ssiz ); -# endif - write( fd , sbuf , ssiz ); - endfrom = s_textsize / (HASHFRACTION * sizeof(*froms)); - for ( fromindex = 0 ; fromindex < endfrom ; fromindex++ ) { - if ( froms[fromindex] == 0 ) { - continue; - } - frompc = s_lowpc + (fromindex * HASHFRACTION * sizeof(*froms)); - for (toindex=froms[fromindex]; toindex!=0; toindex=tos[toindex].link) { -# ifdef DEBUG - fprintf( stderr , - "[mcleanup] frompc 0x%x selfpc 0x%x count %d\n" , - frompc , tos[toindex].selfpc , tos[toindex].count ); -# endif - rawarc.raw_frompc = (unsigned long) frompc; - rawarc.raw_selfpc = (unsigned long) tos[toindex].selfpc; - rawarc.raw_count = tos[toindex].count; - write( fd , (char *) &rawarc , sizeof rawarc ); - } - } - close( fd ); - -#if 1 // L4 kernel - sbrk_free(sbuf, ssiz); - sbrk_free(froms, s_textsize / HASHFRACTION); - sbrk_free(tos, tolimit * sizeof(struct tostruct)); -#endif -} - -extern "C" void -__mcount_internal(unsigned short *frompcindex, char *selfpc ) -{ - register struct tostruct *top; - register struct tostruct *prevtop; - register long toindex; - -#if 0 - register char *selfpc; - register unsigned short *frompcindex; - /* - * find the return address for mcount, - * and the return address for mcount's caller. - */ - - /* selfpc = pc pushed by mcount call. - This identifies the function that was just entered. */ - selfpc = (char *) __builtin_return_address (0); - /* frompcindex = pc in preceding frame. - This identifies the caller of the function just entered. */ - frompcindex = (unsigned short *) __builtin_return_address (1); -#endif - - /* - * check that we are profiling - * and that we aren't recursively invoked. - */ - if (profiling) { - goto out; - } - profiling++; - /* - * check that frompcindex is a reasonable pc value. - * for example: signal catchers get called from the stack, - * not from text space. too bad. - */ - frompcindex = (unsigned short *)((long)frompcindex - (long)s_lowpc); - if ((unsigned long)frompcindex > s_textsize) { - goto done; - } - frompcindex = - &froms[((long)frompcindex) / (HASHFRACTION * sizeof(*froms))]; - toindex = *frompcindex; - if (toindex == 0) { - /* - * first time traversing this arc - */ - toindex = ++tos[0].link; - if (toindex >= tolimit) { - goto overflow; - } - *frompcindex = toindex; - top = &tos[toindex]; - top->selfpc = selfpc; - top->count = 1; - top->link = 0; - goto done; - } - top = &tos[toindex]; - if (top->selfpc == selfpc) { - /* - * arc at front of chain; usual case. - */ - top->count++; - goto done; - } - /* - * have to go looking down chain for it. - * top points to what we are looking at, - * prevtop points to previous top. - * we know it is not at the head of the chain. - */ - for (; /* goto done */; ) { - if (top->link == 0) { - /* - * top is end of the chain and none of the chain - * had top->selfpc == selfpc. - * so we allocate a new tostruct - * and link it to the head of the chain. - */ - toindex = ++tos[0].link; - if (toindex >= tolimit) { - goto overflow; - } - top = &tos[toindex]; - top->selfpc = selfpc; - top->count = 1; - top->link = *frompcindex; - *frompcindex = toindex; - goto done; - } - /* - * otherwise, check the next arc on the chain. - */ - prevtop = top; - top = &tos[top->link]; - if (top->selfpc == selfpc) { - /* - * there it is. - * increment its count - * move it to the head of the chain. - */ - top->count++; - toindex = prevtop->link; - prevtop->link = top->link; - top->link = *frompcindex; - *frompcindex = toindex; - goto done; - } - - } -done: - profiling--; - /* and fall through */ -out: - return; /* normal return restores saved registers */ - -overflow: - profiling++; /* halt further profiling */ -# define TOLIMIT "mcount: tos overflow\n" - write(2, TOLIMIT, sizeof(TOLIMIT)); - goto out; -} diff --git a/kernel/fiasco/src/lib/libk/slab_cache_anon.cpp b/kernel/fiasco/src/lib/libk/slab_cache_anon.cpp deleted file mode 100644 index 1455f77e6..000000000 --- a/kernel/fiasco/src/lib/libk/slab_cache_anon.cpp +++ /dev/null @@ -1,509 +0,0 @@ -INTERFACE: - -#include - -// The anonymous slab allocator. You can specialize this allocator by -// providing your own initialization functions and your own low-level -// allocation functions. - -class slab_cache_anon; - -class slab -{ -private: - slab(const slab&); // copy constructors remain undefined - - struct slab_entry - { - slab_entry *_next_free; - }; - - slab_cache_anon *_cache; - slab_entry *_first_free; - slab *_next, *_prev; - unsigned short _in_use; -}; - -class slab_cache_anon -{ -protected: - friend class slab; - - // Low-level allocator functions: - - // Allocate/free a block. "size" is always a multiple of PAGE_SIZE. - virtual void *block_alloc(unsigned long size, unsigned long alignment) = 0; - virtual void block_free(void *block, unsigned long size) = 0; - -private: - slab_cache_anon(); - slab_cache_anon(const slab_cache_anon&); // default constructor is undefined - - // - // data declaration follows - // - - // The slabs of this cache are held in a partially-sorted - // doubly-linked list. First come the fully-active slabs (all - // elements in use), then the partially active slabs, then empty - // slabs. - slab *_first_slab, *_first_available_slab, *_last_slab; - unsigned long _slab_size; - unsigned _entry_size, _elem_num; - typedef Spin_lock<> Lock; - Lock lock; - char const *_name; -}; - -IMPLEMENTATION: - -#include -#include -#include -#include - -// default deallocator must not be called -- must use explicit destruction -inline NOEXPORT -void -slab::operator delete(void* /*block*/) -{ - assert (!"slab::operator delete called"); -} - -PUBLIC -slab::slab(slab_cache_anon *cache, void *mem) -: _cache(cache), _next(0), _prev(0), _in_use(0) -{ - // Compute pointer to first data element, now taking into account - // the latest colorization offset - char *data = reinterpret_cast(mem); - - // Initialize the cache elements - slab_entry *e = 0, *e_prev = 0; - - for (unsigned i = 0; i < cache->_elem_num; i++) - { - e = reinterpret_cast(data); - - e->_next_free = e_prev; - data += cache->_entry_size; - e_prev = e; - } - - _first_free = e; -} - -PUBLIC -void * -slab::alloc() -{ - slab_entry *e = _first_free; - - if (! e) - return 0; - - _first_free = e->_next_free; - ++_in_use; - - return e; -} - -PUBLIC -void -slab::free(void *entry) -{ - slab_entry *e = reinterpret_cast(entry); - e->_next_free = _first_free; - _first_free = e; - - assert(_in_use); - --_in_use; -} - -PUBLIC -inline bool -slab::is_empty() const -{ - return _in_use == 0; -} - -PUBLIC -inline bool -slab::is_full() const -{ - return _in_use == _cache->_elem_num; -} - -PUBLIC -inline unsigned -slab::in_use() const -{ - return _in_use; -} - -PUBLIC -void -slab::enqueue(slab *prev) -{ - assert(prev); - - if ((_next = prev->_next)) - _next->_prev = this; - _prev = prev; - _prev->_next = this; -} - -PUBLIC -void -slab::dequeue() -{ - if (_prev) - _prev->_next = _next; - if (_next) - _next->_prev = _prev; - - _prev = _next = 0; -} - -PUBLIC -inline slab * -slab::prev() const -{ - return _prev; -} - -PUBLIC -inline slab * -slab::next() const -{ - return _next; -} - -PUBLIC -inline void * -slab::operator new(size_t, void *block) throw() -{ - // slabs must be size-aligned so that we can compute their addresses - // from element addresses - return block; -} - - -PUBLIC static inline -unsigned -slab_cache_anon::entry_size(unsigned elem_size, unsigned alignment) -{ return (elem_size + alignment - 1) & ~(alignment - 1); } - -// -// slab_cache_anon -// -PUBLIC inline NEEDS[slab_cache_anon::entry_size] -slab_cache_anon::slab_cache_anon(unsigned elem_size, - unsigned alignment, - char const * name, - unsigned long min_size, - unsigned long max_size) - : _first_slab(0), _first_available_slab(0), _last_slab(0), - _entry_size(entry_size(elem_size, alignment)), - _name (name) -{ - lock.init(); - - for ( - _slab_size = min_size; - (_slab_size - sizeof(slab)) / _entry_size < 8 - && _slab_size < max_size; - _slab_size <<= 1) ; - - _elem_num = (_slab_size - sizeof(slab)) / _entry_size; -} - -// -// slab_cache_anon -// -PUBLIC inline -slab_cache_anon::slab_cache_anon(unsigned long slab_size, - unsigned elem_size, - unsigned alignment, - char const * name) - : _first_slab(0), _first_available_slab(0), _last_slab(0), - _slab_size(slab_size), _entry_size(entry_size(elem_size, alignment)), - _name (name) -{ - lock.init(); - _elem_num = (_slab_size - sizeof(slab)) / _entry_size; -} - -PUBLIC -virtual -slab_cache_anon::~slab_cache_anon() -{ - // the derived class should call destroy() before deleting us. - // assert(_first_slab == 0); -} - -PROTECTED inline -void -slab_cache_anon::destroy() // descendant should call this in destructor -{ -} - -PUBLIC -virtual void * -slab_cache_anon::alloc() // request initialized member from cache -{ - void *unused_block = 0; - void *ret; - { - Lock_guard guard(&lock); - - if (EXPECT_FALSE(!_first_available_slab)) - { - guard.release(); - - char *m = (char*)block_alloc(_slab_size, _slab_size); - if (!m) - return 0; - - slab *s = new (m + _slab_size - sizeof(slab)) slab(this, m); - - guard.lock(&lock); - - if (EXPECT_TRUE(!_first_available_slab)) - { - _first_available_slab = s; - - if (_last_slab) - { - assert(_last_slab->is_full()); - - _first_available_slab->enqueue(_last_slab); - _last_slab = _first_available_slab; - } - else // this was the first slab we allocated - _first_slab = _last_slab = _first_available_slab; - } - else - unused_block = m; - } - - assert(_first_available_slab && ! _first_available_slab->is_full()); - assert(! _first_available_slab->prev() || _first_available_slab->prev()->is_full()); - - ret = _first_available_slab->alloc(); - assert(ret); - - if (_first_available_slab->is_full()) - _first_available_slab = _first_available_slab->next(); - } - - if (unused_block) - block_free(unused_block, _slab_size); - - return ret; -} - -PUBLIC template< typename Q > -inline -void * -slab_cache_anon::q_alloc(Q *quota) -{ - if (EXPECT_FALSE(!quota->alloc(_entry_size))) - return 0; - - void *r; - if (EXPECT_FALSE(!(r=alloc()))) - { - quota->free(_entry_size); - return 0; - } - - return r; -} - -PUBLIC -virtual void -slab_cache_anon::free(void *cache_entry) // return initialized member to cache -{ - Lock_guard guard(&lock); - - slab *s = reinterpret_cast - ((reinterpret_cast(cache_entry) & ~(_slab_size - 1)) + _slab_size - sizeof(slab)); - - bool was_full = s->is_full(); - - s->free(cache_entry); - - if (was_full) - { - if (s->next() == 0) // have no right neighbor? - { - assert(! _first_available_slab); - } - else if (s->next()->is_full()) // right neigbor full? - { - // We requeue to become the first non-full slab in the queue - // so that all full slabs are at the beginning of the queue. - - if (s == _first_slab) - _first_slab = s->next(); - // don't care about _first_available_slab, _last_slab -- - // they cannot point to s because we were full and have a - // right neighbor - - s->dequeue(); - - if (_first_available_slab) - { - // _first_available_slab->prev() is defined because we - // had a right neighbor which is full, that is, - // _first_available_slab wasn't our right neighbor and - // now isn't the first slab in the queue - assert(_first_available_slab->prev()->is_full()); - s->enqueue(_first_available_slab->prev()); - } - else - { - // all slabs were full - assert(_last_slab->is_full()); - s->enqueue(_last_slab); - _last_slab = s; - } - } - - _first_available_slab = s; - - } - else if (s->is_empty()) - { - if (s->next() && (! s->next()->is_empty())) // right neighbor not empty? - { - // Move to tail of list - - if (s == _first_slab) - _first_slab = s->next(); - if (s == _first_available_slab) - _first_available_slab = s->next(); - // don't care about _last_slab because we know we have a - // right neighbor - - s->dequeue(); - - s->enqueue(_last_slab); - _last_slab = s; - } - } - else - { - // We weren't either full or empty; we already had free - // elements. This changes nothing in the queue, and there - // already must have been a _first_available_slab. - } - - assert(_first_available_slab); -} - -PUBLIC template< typename Q > -inline -void -slab_cache_anon::q_free(Q *quota, void *obj) -{ - free(obj); - quota->free(_entry_size); -} - -PUBLIC -virtual unsigned long -slab_cache_anon::reap() // request that cache returns memory to system -{ - Lock_guard guard(&lock); - - if (! _first_slab) - return 0; // haven't allocated anything yet - - // never delete first slab, even if it is empty - if (_last_slab == _first_slab - || (! _last_slab->is_empty())) - return 0; - - slab *s = _last_slab; - - if (_first_available_slab == s) - _first_available_slab = 0; - - _last_slab = s->prev(); - s->dequeue(); - - // explicitly call destructor to delete s; - s->~slab(); - block_free(s, _slab_size); - - return _slab_size; -} - -// Debugging output - -#include - -PUBLIC -virtual void -slab_cache_anon::debug_dump() -{ - printf ("%s: %lu-KB slabs (elems per slab=%d ", - _name, _slab_size / 1024, _elem_num); - - unsigned count, total = 0, total_elems = 0; - slab* s = _first_slab; - - for (count = 0; - s && s->is_full(); - s = s->next()) - { - count++; - total_elems += s->in_use(); - } - - total += count; - - printf ("%u full, ", count); - - for (count = 0; - s && ! s->is_empty(); - s = s->next()) - { - if (s->is_full()) - printf ("\n*** wrongly-enqueued full slab found\n"); - count++; - total_elems += s->in_use(); - } - - total += count; - - printf ("%u used, ", count); - - for (count = 0; - s; - s = s->next()) - { - if (! s->is_empty()) - printf ("\n*** wrongly-enqueued nonempty slab found\n"); - count++; - total_elems += s->in_use(); - } - - unsigned total_used = total; - total += count; - - printf ("%u empty = %u total) = %lu KB,\n %u elems (size=%u)", - count, total, total * _slab_size / 1024, - total_elems, _entry_size); - - if (total_elems) - printf (", overhead = %lu B (%lu B) = %lu%% (%lu%%) \n", - total * _slab_size - total_elems * _entry_size, - total_used * _slab_size - total_elems * _entry_size, - 100 - total_elems * _entry_size * 100 / (total * _slab_size), - 100 - total_elems * _entry_size * 100 / (total_used * _slab_size)); - else - printf ("\n"); -} diff --git a/kernel/fiasco/src/lib/minilibc/construction.c b/kernel/fiasco/src/lib/minilibc/construction.c deleted file mode 100644 index a10b45adb..000000000 --- a/kernel/fiasco/src/lib/minilibc/construction.c +++ /dev/null @@ -1,35 +0,0 @@ - -#include "initfini.h" -#include "types.h" - -typedef void (*ctor_t)(void); - -extern ctor_t __CTOR_END__[]; -extern ctor_t __DTOR_END__[]; -extern ctor_t __CTOR_LIST__[]; -extern ctor_t __DTOR_LIST__[]; - - -static int construction_done = 0; - -void static_construction() -{ - ctor_t *cons = __CTOR_LIST__; - while(cons != __CTOR_END__) - if(*(--cons)) - (*cons)(); - - construction_done = 1; -} - - -void static_destruction() -{ - ctor_t *cons = __DTOR_LIST__; - if(!construction_done) - return; - - while(cons != __DTOR_END__) - if(*(--cons)) - (*cons)(); -} diff --git a/kernel/fiasco/src/lib/minilibc/include/initfini.h b/kernel/fiasco/src/lib/minilibc/include/initfini.h deleted file mode 100644 index 0a7778dbb..000000000 --- a/kernel/fiasco/src/lib/minilibc/include/initfini.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef INITFINI_H__ -#define INITFINI_H__ - -#include - -__BEGIN_DECLS - -void static_construction(void); -void static_destruction(void); - -__END_DECLS - - -#endif // INITFINI_H__ diff --git a/kernel/fiasco/src/lib/uart/arm/uart_imx.cc b/kernel/fiasco/src/lib/uart/arm/uart_imx.cc deleted file mode 100644 index 6f11fe03a..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_imx.cc +++ /dev/null @@ -1,176 +0,0 @@ -/* - * (c) 2008-2011 Adam Lackorzynski - * 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 "uart_imx.h" - -namespace L4 -{ - enum { - URXD = 0x00, // Receiver - UTXD = 0x40, // Transmitter - UCR1 = 0x80, // Control 1 - UCR2 = 0x84, // Control 2 - UCR3 = 0x88, // Control 3 - UCR4 = 0x8c, // Control 4 - UFCR = 0x90, // FIFO Control - USR1 = 0x94, // Status 1 - USR2 = 0x98, // Status 2 - UESC = 0x9c, // Escape Charater - UTIM = 0xa0, // Escape Timer - UBIR = 0xa4, // BRM Incremental Registers - UBMR = 0xa8, // BRM Modulator Registers - UBRC = 0xac, // Baud Rate Count - ONEMS = 0xb0, // One millisecond - UTS = 0xb4, // Test - - - UCR1_EN = 1 << 0, // Enable UART - - UCR2_SRST = 1 << 0, // Software Reset - UCR2_RXEN = 1 << 1, // Receiver Enable - UCR2_TXEN = 1 << 2, // Transmitter Enable - UCR2_WS = 1 << 5, // 8-bit character length - UCR2_STPB = 1 << 6, // 0 = 1 Stop bit, 1 = 2 stop bits - UCR2_PROE = 1 << 7, // 0 = even parity, 1 = odd parity - UCR2_PREN = 1 << 8, // Parity enable - UCR2_RTEC_MASK = 3 << 9, // Request to Send Edge Control mask - UCR2_RTEC_RISI = 0 << 9, // Trigger IRQ on rising edge - UCR2_RTEC_FALL = 1 << 9, // Trigger IRQ on falling edge - UCR2_RTEC_ANY = 2 << 9, // Trigger IRQ on any edge - UCR2_ESCEN = 1 << 11, // Escape enable - UCR2_CTS = 1 << 12, // Clear to Send: 0 = pin is high (inactive), 1 = pin is low (active) - UCR2_CTSC = 1 << 13, // CTS Pin Control: 0 = pin controlled by CTS bit, 1 = pin controlled by the receiver - UCR2_IRTS = 1 << 14, // Ignore RTS pin - UCR2_ESCI = 1 << 15, // Escape Sequence Interrupt Enable - - UCR3_ACIEN = 1 << 0, // Autobaud Counter Interrupt enable - UCR3_INVT = 1 << 1, // Inverted Infrared Transmission - UCR3_RXDMUXSEL = 1 << 2, // RXD Muxed Input Selected: 0 = serial ist IPP_UART_RXD, IR is IPP_UART_RXD_IR, 1 = IPP_UART_RXD_MUX for both - - - UCR4_DREN = 1 << 0, // Receive Data Ready Interrupt Enable - UCR4_OREN = 1 << 1, // Receiver Overrun Interrupt enable - UCR4_BKEN = 1 << 2, // BREAK Condition Dected Interrupt enable - UCR4_TCEN = 1 << 3, // Transmit Complete Interrupt Enable - UCR4_LPBYP = 1 << 4, // Low Power Bypass - UCR4_IRSC = 1 << 5, // IR Special Case - // Bit 6 is reserve, should be written as 0 - UCR4_WKEN = 1 << 7, // WAKE Interrupt Enable - UCR4_ENIRI = 1 << 8, // Serial Infrared Interrupt Enable - UCR4_INVR = 1 << 9, // Inverted Infrared Reception - UCR4_CTSTL_32 = 32 << 10, // CTS Trigger Level - - UFCR_RXTL_MASK = 63 << 0, // Receiver Trigger Level Mask - UFCR_RXTL_1 = 1 << 0, // Receiver Trigger Level: 1 char - UFCR_RFDIV_2 = 4 << 7, // Reference Frequency Divier: by 2 - UFCR_TXTL_MASK = 63 << 10, // Trasmitter Trigger Level: 8 chars - UFCR_TXTL_8 = 8 << 10, // Trasmitter Trigger Level: 8 chars - UFCR_TXTL_32 = 32 << 10, // Trasmitter Trigger Level: 32 chars - - USR1_TRDY = 1 << 13, // Transmitter Ready - - USR2_RDR = 1 << 0, // Receive Data Ready - USR2_ORE = 1 << 1, // Overrun Error - USR2_BRCD = 1 << 2, // Break Condition Detected - USR2_TXDC = 1 << 3, // Transmitter Complete - USR2_TXFE = 1 << 14, // Transmit Buffer FIFO Empty - - }; - - unsigned long Uart_imx::rd(unsigned long reg) const - { return *(volatile unsigned long *)(_base + reg); } - void Uart_imx::wr(unsigned long reg, unsigned long val) const - { *(volatile unsigned long *)(_base + reg) = val; } - - bool Uart_imx::startup(unsigned long base) - { - _base = base; - - // 115200Baud, 8n1 - switch (_type) - { - case Type_imx21: - wr(UBIR, 0x0344); - wr(UBMR, 0x270f); - break; - case Type_imx35: - wr(UBIR, 0xf); - wr(UBMR, 0x1b2); - break; - case Type_imx51: - wr(UBIR, 0xf); - wr(UBMR, 0x120); - break; - } - - wr(UCR1, UCR1_EN); - wr(UCR2, UCR2_SRST | UCR2_RXEN | UCR2_TXEN | UCR2_WS | UCR2_IRTS); // note: no IRQs enabled - wr(UCR3, UCR3_RXDMUXSEL); - wr(UCR4, UCR4_CTSTL_32); - wr(UFCR, UFCR_TXTL_8 | UFCR_RFDIV_2 | UFCR_RXTL_1); - - return true; - } - - void Uart_imx::shutdown() - { - wr(UCR1, 0); // Disable UART - } - - bool Uart_imx::enable_rx_irq(bool enable) - { - if (enable) - { - wr(UCR2, rd(UCR2) | UCR2_RTEC_ANY); - wr(UCR4, rd(UCR4) | UCR4_DREN); - } - else - wr(UCR4, rd(UCR4) & ~UCR4_DREN); - - return true; - } - bool Uart_imx::enable_tx_irq(bool /*enable*/) { return false; } - bool Uart_imx::change_mode(Transfer_mode, Baud_rate) - { return true; } - - int Uart_imx::get_char(bool blocking) const - { - while (!char_avail()) - if (!blocking) return -1; - - return rd(URXD) & 0xff; - } - - int Uart_imx::char_avail() const - { - return rd(USR2) & USR2_RDR; - } - - void Uart_imx::out_char(char c) const - { - while (!(rd(USR1) & USR1_TRDY)) - ; - wr(UTXD, c); - } - - int Uart_imx::write(char const *s, unsigned long count) const - { - unsigned long c = count; - while (c) - { - if (*s == 10) - out_char(13); - out_char(*s++); - --c; - } - while (!(rd(USR2) & USR2_TXDC)) - ; - - return count; - } -}; diff --git a/kernel/fiasco/src/lib/uart/arm/uart_imx.h b/kernel/fiasco/src/lib/uart/arm/uart_imx.h deleted file mode 100644 index e565434f7..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_imx.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * (c) 2008-2009 Adam Lackorzynski - * 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. - */ -#ifndef L4_CXX_UART_imx_H__ -#define L4_CXX_UART_imx_H__ - -#include "uart_base.h" - -namespace L4 -{ - class Uart_imx : public Uart - { - public: - enum platform_type { Type_imx21, Type_imx35, Type_imx51 }; - Uart_imx(int rx_irq, int tx_irq, enum platform_type type) - : Uart(rx_irq, tx_irq), _base(~0UL), _type(type) {} - bool startup(unsigned long base); - void shutdown(); - bool enable_rx_irq(bool enable = true); - bool enable_tx_irq(bool enable = true); - bool change_mode(Transfer_mode m, Baud_rate r); - int get_char(bool blocking = true) const; - int char_avail() const; - inline void out_char(char c) const; - int write(char const *s, unsigned long count) const; - - private: - unsigned long _base; - enum platform_type _type; - - inline unsigned long rd(unsigned long reg) const; - inline void wr(unsigned long reg, unsigned long val) const; - }; - - class Uart_imx21 : public Uart_imx - { - public: - Uart_imx21(int rx_irq, int tx_irq) - : Uart_imx(rx_irq, tx_irq, Type_imx21) {} - }; - - class Uart_imx35 : public Uart_imx - { - public: - Uart_imx35(int rx_irq, int tx_irq) - : Uart_imx(rx_irq, tx_irq, Type_imx35) {} - }; - - class Uart_imx51 : public Uart_imx - { - public: - Uart_imx51(int rx_irq, int tx_irq) - : Uart_imx(rx_irq, tx_irq, Type_imx51) {} - }; -}; - -#endif diff --git a/kernel/fiasco/src/lib/uart/arm/uart_omap35x.cc b/kernel/fiasco/src/lib/uart/arm/uart_omap35x.cc deleted file mode 100644 index 0b6a7b6cd..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_omap35x.cc +++ /dev/null @@ -1,113 +0,0 @@ -#include "uart_omap35x.h" - -namespace L4 -{ - enum { - DLL_REG = 0x00, - RHR_REG = 0x00, - THR_REG = 0x00, - IER_REG = 0x04, - DLH_REG = 0x04, - LCD_REG = 0x08, - LSR_REG = 0x14, - SSR_REG = 0x44, - SYSC_REG = 0x54, - SYSS_REG = 0x58, - - LCD_REG_CHAR_LENGTH_5BIT = 0 << 0, - LCD_REG_CHAR_LENGTH_6BIT = 1 << 0, - LCD_REG_CHAR_LENGTH_7BIT = 2 << 0, - LCD_REG_CHAR_LENGTH_8BIT = 3 << 0, - LCD_REG_CHAR_NB_STOP_2 = 1 << 2, - LCD_REG_CHAR_PARITY_EN = 1 << 3, - LCD_REG_CHAR_PARITY_TYPE1_EVEN = 1 << 4, - - LSR_REG_RX_FIFO_E_AVAIL = 1 << 0, - LSR_REG_TX_FIFO_E_EMPTY = 1 << 5, - - SSR_REG_TX_FIFO_FULL = 1 << 0, - - SYSC_REG_SOFTRESET = 1 << 1, - - SYSC_REG_RESETDONE = 1 << 0, - }; - - - unsigned long Uart_omap35x::rd(unsigned long reg) const - { - volatile unsigned long *r = (unsigned long*)(_base + reg); - return *r; - } - - void Uart_omap35x::wr(unsigned long reg, unsigned long val) const - { - volatile unsigned long *r = (unsigned long*)(_base + reg); - *r = val; - } - - bool Uart_omap35x::startup(unsigned long base) - { - _base = base; - - // Reset UART - //wr(SYSC_REG, rd(SYSC_REG) | SYSC_REG_SOFTRESET); - //while (!(rd(SYSS_REG) & SYSC_REG_RESETDONE)) - // ; - - return true; - } - - void Uart_omap35x::shutdown() - { - } - - bool Uart_omap35x::enable_rx_irq(bool enable) - { - wr(IER_REG, enable ? 1 : 0); - return true; - } - bool Uart_omap35x::enable_tx_irq(bool /*enable*/) { return false; } - bool Uart_omap35x::change_mode(Transfer_mode, Baud_rate r) - { - if (r != 115200) - return false; - - return true; - } - - int Uart_omap35x::get_char(bool blocking) const - { - while (!char_avail()) - if (!blocking) - return -1; - - return rd(RHR_REG); - } - - int Uart_omap35x::char_avail() const - { - return rd(LSR_REG) & LSR_REG_RX_FIFO_E_AVAIL; - } - - void Uart_omap35x::out_char(char c) const - { - wr(THR_REG, c); - while (!(rd(LSR_REG) & LSR_REG_TX_FIFO_E_EMPTY)) - ; - } - - int Uart_omap35x::write(char const *s, unsigned long count) const - { - unsigned long c = count; - while (c) - { - if (*s == 10) - out_char(13); - out_char(*s++); - --c; - } - return count; - } - -}; - diff --git a/kernel/fiasco/src/lib/uart/arm/uart_omap35x.h b/kernel/fiasco/src/lib/uart/arm/uart_omap35x.h deleted file mode 100644 index d3e4ad7bc..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_omap35x.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef L4_CXX_UART_OMAP35X_H__ -#define L4_CXX_UART_OMAP35X_H__ - -#include "uart_base.h" - -namespace L4 -{ - class Uart_omap35x : public Uart - { - private: - unsigned long _base; - - inline unsigned long rd(unsigned long reg) const; - inline void wr(unsigned long reg, unsigned long val) const; - - public: - Uart_omap35x(int rx_irq, int tx_irq) - : Uart(rx_irq, tx_irq), _base(~0UL) {} - bool startup(unsigned long base); - void shutdown(); - bool enable_rx_irq(bool enable = true); - bool enable_tx_irq(bool enable = true); - bool change_mode(Transfer_mode m, Baud_rate r); - int get_char(bool blocking = true) const; - int char_avail() const; - inline void out_char(char c) const; - int write(char const *s, unsigned long count) const; - }; -}; - -#endif diff --git a/kernel/fiasco/src/lib/uart/arm/uart_pl011.cc b/kernel/fiasco/src/lib/uart/arm/uart_pl011.cc deleted file mode 100644 index 61601c6eb..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_pl011.cc +++ /dev/null @@ -1,148 +0,0 @@ -#include "uart_pl011.h" - -namespace L4 -{ - enum { - UART011_RXIM = 1 << 4, - UART011_TXIM = 1 << 5, - UART011_RTIM = 1 << 6, - UART011_FEIM = 1 << 7, - UART011_PEIM = 1 << 8, - UART011_BEIM = 1 << 9, - UART011_OEIM = 1 << 10, - - UART011_RXIS = 1 << 4, - UART011_RTIS = 1 << 6, - - UART011_RXIC = 1 << 4, - UART011_RTIC = 1 << 6, - - UART01x_CR_UARTEN = 1, // UART enable - UART011_CR_LBE = 0x080, // loopback enable - UART011_CR_TXE = 0x100, // transmit enable - UART011_CR_RXE = 0x200, // receive enable - - UART01x_FR_BUSY = 0x008, - UART01x_FR_RXFE = 0x010, - UART01x_FR_TXFF = 0x020, - - UART01x_LCRH_PEN = 0x02, // parity enable - UART01x_LCRH_FEN = 0x10, // FIFO enable - UART01x_LCRH_WLEN_8 = 0x60, - - UART01x_DR = 0x00, - UART011_ECR = 0x04, - UART01x_FR = 0x18, - UART011_IBRD = 0x24, - UART011_FBRD = 0x28, - UART011_LCRH = 0x2c, - UART011_CR = 0x30, - UART011_IMSC = 0x38, - UART011_MIS = 0x40, - UART011_ICR = 0x44, - }; - - - unsigned long Uart_pl011::rd(unsigned long reg) const - { - volatile unsigned long *r = (unsigned long*)(_base + reg); - return *r; - } - - void Uart_pl011::wr(unsigned long reg, unsigned long val) const - { - volatile unsigned long *r = (unsigned long*)(_base + reg); - *r = val; - } - - bool Uart_pl011::startup(unsigned long base) - { - _base = base; - wr(UART011_CR, UART01x_CR_UARTEN | UART011_CR_TXE | UART011_CR_RXE); -// wr(UART011_FBRD, 2); -// wr(UART011_IBRD, 13); -// wr(UART011_LCRH, 0x60); - wr(UART011_IMSC, 0); - while (rd(UART01x_FR) & UART01x_FR_BUSY); - return true; - } - - void Uart_pl011::shutdown() - { - wr(UART011_IMSC,0); - wr(UART011_ICR, 0xffff); - wr(UART011_CR, 0); - } - - bool Uart_pl011::enable_rx_irq(bool enable) - { - unsigned long mask = UART011_RXIM | UART011_RTIM; - - wr(UART011_ICR, 0xffff); - wr(UART011_ECR, 0xff); - if (enable) - wr(UART011_IMSC, rd(UART011_IMSC) | mask); - else - wr(UART011_IMSC, rd(UART011_IMSC) & ~mask); - return true; - } - bool Uart_pl011::enable_tx_irq(bool /*enable*/) { return false; } - bool Uart_pl011::change_mode(Transfer_mode, Baud_rate r) - { - if (r != 115200) - return false; - - unsigned long old_cr = rd(UART011_CR); - wr(UART011_CR, 0); - - wr(UART011_FBRD, 2); - wr(UART011_IBRD, 13); - wr(UART011_LCRH, UART01x_LCRH_WLEN_8 | UART01x_LCRH_FEN); - - wr(UART011_CR, old_cr); - - return true; - } - - int Uart_pl011::get_char(bool blocking) const - { - while (!char_avail()) - if (!blocking) return -1; - - //wr(UART011_ICR, UART011_RXIC | UART011_RTIC); - - int c = rd(UART01x_DR); - wr(UART011_ECR, 0xff); - return c; - } - - int Uart_pl011::char_avail() const - { - return !(rd(UART01x_FR) & UART01x_FR_RXFE); - } - - void Uart_pl011::out_char(char c) const - { - while (rd(UART01x_FR) & UART01x_FR_TXFF) - ; - wr(UART01x_DR,c); - } - - int Uart_pl011::write(char const *s, unsigned long count) const - { - unsigned long c = count; - while (c) - { - if (*s == 10) - out_char(13); - out_char(*s++); - --c; - } - while (rd(UART01x_FR) & UART01x_FR_BUSY) - ; - - return count; - } - -}; - diff --git a/kernel/fiasco/src/lib/uart/arm/uart_pl011.h b/kernel/fiasco/src/lib/uart/arm/uart_pl011.h deleted file mode 100644 index 6adeb3f68..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_pl011.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef L4_CXX_UART_PL011_H__ -#define L4_CXX_UART_PL011_H__ - -#include "uart_base.h" - -namespace L4 -{ - class Uart_pl011 : public Uart - { - private: - unsigned long _base; - - inline unsigned long rd(unsigned long reg) const; - inline void wr(unsigned long reg, unsigned long val) const; - - public: - Uart_pl011(int rx_irq, int tx_irq) - : Uart(rx_irq, tx_irq), _base(~0UL) {} - bool startup(unsigned long base); - void shutdown(); - bool enable_rx_irq(bool enable = true); - bool enable_tx_irq(bool enable = true); - bool change_mode(Transfer_mode m, Baud_rate r); - int get_char(bool blocking = true) const; - int char_avail() const; - inline void out_char(char c) const; - int write(char const *s, unsigned long count) const; - }; -}; - -#endif diff --git a/kernel/fiasco/src/lib/uart/arm/uart_s3c2410.cc b/kernel/fiasco/src/lib/uart/arm/uart_s3c2410.cc deleted file mode 100644 index f1fdf382b..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_s3c2410.cc +++ /dev/null @@ -1,117 +0,0 @@ -#include "uart_s3c2410.h" - -namespace L4 -{ - enum - { - OFFSET = 0x0000, - ULCON = OFFSET + 0x0, // line control register - UCON = OFFSET + 0x4, // control register - UFCON = OFFSET + 0x8, // FIFO control register - UMCON = OFFSET + 0xc, // modem control register - UTRSTAT = OFFSET + 0x10, // Tx/Rx status register - UERSTAT = OFFSET + 0x14, // Rx error status register - UFSTAT = OFFSET + 0x18, // FIFO status register - UMSTAT = OFFSET + 0x1c, // modem status register - UTXH = OFFSET + 0x20, // transmit buffer register (little endian, 0x23 for BE) - URXH = OFFSET + 0x24, // receive buffer register (little endian, 0x27 for BE) - UBRDIV = OFFSET + 0x28, // baud rate divisor register - - ULCON_8N1_MODE = 0x3, - - UCON_MODE = 0x045 | (1 << 7), - - UFSTAT_Rx_COUNT_MASK = 0x00f, - UFSTAT_Tx_COUNT_MASK = 0x0f0, - UFSTAT_RxFULL = 0x100, - UFSTAT_TxFULL = 0x200, - }; - - - unsigned long Uart_s3c2410::rd(unsigned long reg) const - { - volatile unsigned long *r = (unsigned long*)(_base + reg); - return *r; - } - - void Uart_s3c2410::wr(unsigned long reg, unsigned long val) const - { - volatile unsigned long *r = (unsigned long*)(_base + reg); - *r = val; - } - - bool Uart_s3c2410::startup(unsigned long base) - { - _base = base; - - wr(ULCON, ULCON_8N1_MODE); - wr(UCON, UCON_MODE); - wr(UFCON, 1); - - wr(UBRDIV, 0x23); - return true; - } - - void Uart_s3c2410::shutdown() - { - // more - } - - bool Uart_s3c2410::enable_rx_irq(bool enable) - { return true; } - - bool Uart_s3c2410::enable_tx_irq(bool /*enable*/) { return false; } - - bool Uart_s3c2410::change_mode(Transfer_mode, Baud_rate r) - { - if (r != 115200) - return false; - - wr(ULCON, ULCON_8N1_MODE); - wr(UCON, UCON_MODE); - wr(UFCON, 1); - - wr(UBRDIV, 0x23); - - return true; - } - - int Uart_s3c2410::get_char(bool blocking) const - { - while (!char_avail()) - if (!blocking) return -1; - - int c = rd(URXH) & 0xff; - return c; - } - - int Uart_s3c2410::char_avail() const - { - return rd(UFSTAT) & UFSTAT_Rx_COUNT_MASK; - } - - void Uart_s3c2410::out_char(char c) const - { - while (rd(UFSTAT) & UFSTAT_TxFULL) - ; - wr(UTXH, c); - } - - int Uart_s3c2410::write(char const *s, unsigned long count) const - { - unsigned long c = count; - while (c) - { - if (*s == 10) - out_char(13); - out_char(*s++); - --c; - } - while (rd(UFSTAT) & UFSTAT_Tx_COUNT_MASK) - ; - - return count; - } - -}; - diff --git a/kernel/fiasco/src/lib/uart/arm/uart_s3c2410.h b/kernel/fiasco/src/lib/uart/arm/uart_s3c2410.h deleted file mode 100644 index 4073504eb..000000000 --- a/kernel/fiasco/src/lib/uart/arm/uart_s3c2410.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef L4_CXX_UART_S3C2410_H__ -#define L4_CXX_UART_S3C2410_H__ - -#include "uart_base.h" - -namespace L4 -{ - class Uart_s3c2410 : public Uart - { - private: - unsigned long _base; - - inline unsigned long rd(unsigned long reg) const; - inline void wr(unsigned long reg, unsigned long val) const; - - public: - Uart_s3c2410(int rx_irq, int tx_irq) - : Uart(rx_irq, tx_irq), _base(~0UL) {} - bool startup(unsigned long base); - void shutdown(); - bool enable_rx_irq(bool enable = true); - bool enable_tx_irq(bool enable = true); - bool change_mode(Transfer_mode m, Baud_rate r); - int get_char(bool blocking = true) const; - int char_avail() const; - inline void out_char(char c) const; - int write(char const *s, unsigned long count) const; - }; -}; - -#endif diff --git a/kernel/fiasco/src/lib/uart/ppc32/of1275.h b/kernel/fiasco/src/lib/uart/ppc32/of1275.h deleted file mode 100644 index 1b3ea928a..000000000 --- a/kernel/fiasco/src/lib/uart/ppc32/of1275.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef L4_CXX_OF1275_H__ -#define L4_CXX_OF1275_H__ - -#include -#include - -namespace L4 { - - class Of - { - - private: - /* declarations */ - struct prom_args - { - const char *service; - int nargs; - int nret; - void *args[10]; - prom_args(const char *s, int na, int nr) : service(s), nargs(na), nret(nr) {} - }; - - typedef int (*prom_entry)(struct prom_args *); - - /* attributes */ - prom_entry _prom; - - //int prom_call(const char *service, int nargs, int nret, ...) const; - protected: - enum { - PROM_ERROR = -1u - }; - - - typedef void *ihandle_t; - typedef void *phandle_t; - - typedef struct - { - unsigned long len; - char data[]; - } of_item_t; - - /* methods */ - unsigned prom_call(const char *service, int nargs, int nret, ...) const - { - struct prom_args args = prom_args(service, nargs, nret); - va_list list; - - va_start(list, nret); - for(int i = 0; i < nargs; i++) - args.args[i] = va_arg(list, void*); - va_end(list); - - for(int i = 0; i < nret; i++) - args.args[nargs + i] = 0; - - if(_prom(&args) < 0) - return PROM_ERROR; - - return (nret > 0) ? (int)args.args[nargs] : 0; - } - - - inline int prom_getprop(phandle_t node, const char *pname, void *value, - size_t size) - { - return prom_call("getprop", 4, 1, node, pname, (unsigned long)value, - (unsigned long)size); - } - - inline int prom_next_node(phandle_t *nodep) - { - phandle_t node; - - if ((node = *nodep) != 0 - && (*nodep = (phandle_t)prom_call("child", 1, 1, node)) != 0) - return 1; - if ((*nodep = (phandle_t)prom_call("peer", 1, 1, node)) != 0) - return 1; - for (;;) { - if ((node = (phandle_t)prom_call("parent", 1, 1, node)) == 0) - return 0; - if ((*nodep = (phandle_t)prom_call("peer", 1, 1, node)) != 0) - return 1; - } - } - - template - static inline bool handle_valid(T p) - { - return ((unsigned)p != 0 && (unsigned)p != PROM_ERROR); - } - - public: - Of() : _prom(0) {} - Of(unsigned long prom) : _prom(reinterpret_cast(prom)) {} - - template - inline void set_prom(T prom) - { - _prom = reinterpret_cast(prom); - } - }; -}; - -#endif - - diff --git a/kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.cc b/kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.cc deleted file mode 100644 index 250b22267..000000000 --- a/kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.cc +++ /dev/null @@ -1,153 +0,0 @@ -#include "uart_mpc52xx.h" -#include "of1275.h" -#include "mmu.h" - -namespace L4 { - - enum { - MR1_RXIRQ = 0x040, - - SR_TXRDY = 0x400, - SR_TXEMPTY = 0x800, - SR_RXRDY = 0x100, - - CMD_TX_ENABLE = 0x004, - CMD_TX_RESET = 0x030, - CMD_RX_ENABLE = 0x001, - CMD_RX_DISABLE = 0x002, - CMD_RX_RESET = 0x020, - CMD_RESET_MODE = 0x010, - CMD_RESET_ERR = 0x040, - CMD_RESET_BREAK= 0x050, - - IMR_RXRDY = 0x200 - }; - - template < typename T > - void Uart_mpc52xx::wr_dirty(unsigned long addr, T val) const - { - asm volatile("sync \n" :::); - *(volatile T*)addr = val; - } - - template < typename T > - void Uart_mpc52xx::wr(unsigned long addr, T val) const - { - Mmu_guard dcache; - wr_dirty(addr, val); - } - - template < typename T > - T Uart_mpc52xx::rd_dirty(unsigned long addr) const - { - volatile T ret; - asm volatile("sync \n" :::); - ret = *(volatile T*)addr; - asm volatile("isync\n" :::); - return ret; - } - - template < typename T > - T Uart_mpc52xx::rd(unsigned long addr) const - { - Mmu_guard dcache; - return rd_dirty(addr); - } - - bool Uart_mpc52xx::startup(unsigned long base) - { - _psc_base = base; - //wait for Of uart driver to finish transmission - Mmu_guard dcache; - while(!(rd_dirty(status()) & SR_TXEMPTY)) - ; - //read MR1 - wr_dirty(command(), CMD_RESET_MODE); - u8 mode_val = rd_dirty(mode()); - //mode points to MR2 - wr_dirty(command(), CMD_RESET_MODE); - //mode points to MR1 - - //clear RxIRQ in MR1 register (RxRDY is now source of interrupt) - mode_val &= ~MR1_RXIRQ; - wr_dirty(mode(), mode_val); - - //disable interrupts - wr_dirty(imr(), 0); - - wr_dirty(status(), 0xdd00); - wr_dirty(sicr(), 0); - - //enable transmit, receive - wr_dirty(command(), CMD_TX_RESET); - wr_dirty(command(), CMD_TX_ENABLE); - wr_dirty(command(), CMD_RX_RESET); - wr_dirty(command(), CMD_RX_ENABLE); - - write("MPC52xx serial port: replaced OF\n", 33); - return true; - } - - void Uart_mpc52xx::out_char(char c) const - { - Mmu_guard dcache; - mpc52xx_out_char(c); - } - - int Uart_mpc52xx::write(char const *s, unsigned long count) const - { - unsigned long c = count; - - Mmu_guard dcache; - - while(c) { - //\n to \r - if(*s == '\n') - mpc52xx_out_char('\r'); - mpc52xx_out_char(*s++); - c--; - } - - return count; - } - - inline int Uart_mpc52xx::char_avail() const - { - return rd(status()) & SR_RXRDY; - } - - int Uart_mpc52xx::get_char(bool blocking) const - { - while(!char_avail()) - if(!blocking) return -1; - int c = (int)rd(buffer()); - - //reset error conditions - wr(command(), CMD_RESET_ERR); - return c; - } - - bool Uart_mpc52xx::enable_rx_irq(bool enable) - { - u16 mask = 0; - if(enable) - mask |= IMR_RXRDY; - - wr(imr(), mask); - - return true; - } - - //PRIVATE - inline void Uart_mpc52xx::mpc52xx_out_char(char c) const - { - while(!(rd_dirty(status()) & SR_TXRDY)) - ; - wr_dirty(buffer(), c); - } - -//TODO: implement me - void Uart_mpc52xx::shutdown(){} - bool Uart_mpc52xx::enable_tx_irq(bool){return true;} - bool Uart_mpc52xx::change_mode(Transfer_mode, Baud_rate){return true;} -}; diff --git a/kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.h b/kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.h deleted file mode 100644 index b05058d76..000000000 --- a/kernel/fiasco/src/lib/uart/ppc32/uart_mpc52xx.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef L4_CXX_UART_MPC52XX_H__ -#define L4_CXX_UART_MPC52XX_H__ - -#include "uart_base.h" -#include "of1275.h" - -namespace L4 -{ - class Uart_mpc52xx : public Uart - { - private: - typedef unsigned char u8; - typedef unsigned short u16; - typedef unsigned int u32; - - /** - * PSC registers - */ - //psc + 0x00, size u8 - unsigned long mode() const - { return _psc_base; } - - //psc + 0x04, size u16 - unsigned long status() const - { return _psc_base + 0x04; } - - //psc + 0x08, size u8 - unsigned long command() const - { return _psc_base + 0x08; } - - //psc + 0x0c, size u32 - unsigned long buffer() const - { return _psc_base + 0x0c; } - - //psc + 0x14, size u16 - unsigned long imr() const - { return _psc_base + 0x14; } - - unsigned long sicr() const - { return _psc_base + 0x44; } - - template < typename T > - void wr(unsigned long addr, T val) const; - - template < typename T > - T rd(unsigned long addr) const; - - template < typename T > - void wr_dirty(unsigned long addr, T val) const; - - template < typename T > - T rd_dirty(unsigned long addr) const; - - inline void mpc52xx_out_char(char c) const; - - unsigned long _psc_base; - public: - Uart_mpc52xx(int rx_irq, int tx_irq) : Uart(rx_irq, tx_irq) {} - bool startup(unsigned long base); - void shutdown(); - bool enable_rx_irq(bool enable = true); - bool enable_tx_irq(bool enable = true); - bool change_mode(Transfer_mode m, Baud_rate r); - int get_char(bool blocking = true) const; - int char_avail() const; - inline void out_char(char c) const; - int write(char const *s, unsigned long count) const; - }; -}; - -#endif diff --git a/kernel/fiasco/src/lib/uart/ppc32/uart_of.cc b/kernel/fiasco/src/lib/uart/ppc32/uart_of.cc deleted file mode 100644 index ca4756984..000000000 --- a/kernel/fiasco/src/lib/uart/ppc32/uart_of.cc +++ /dev/null @@ -1,59 +0,0 @@ -#include "uart_of.h" - -namespace L4 { - - bool Uart_of::startup(unsigned long) - { - char path[64], type[16]; - for(phandle_t node = 0; prom_next_node(&node); ) { - prom_getprop(node, "device_type", type, sizeof(type)); - - if(strcmp(type, "serial")) - continue; - - if(prom_call("package-to-path", 3, 1, node, path, sizeof(path)) - == PROM_ERROR) - return false; - - /* open port */ - unsigned prom_ret; - if((prom_ret = prom_call("open", 1, 1, path)) == PROM_ERROR) - return false; - _serial = (ihandle_t)prom_ret; - break; - } - - return (!_serial)?false:true; - } - - void Uart_of::shutdown() - { - prom_call("close", 1, 0, _serial); - } - - int Uart_of::get_char(bool blocking) const - { - int c, len = 0; - - while(len != 1 && blocking) - len = prom_call("read", 3, 1, _serial, &c, 1); - - return (len)?c:-1; - } - - int Uart_of::write(char const *s, unsigned long count) const - { - return prom_call("write", 3, 1, _serial, s, count); - } - - void Uart_of::out_char(char c) const - { - prom_call("write", 3, 0, _serial, c, 1); - } - - /* UNIMPLEMENTED */ - bool Uart_of::enable_rx_irq(bool){return true;} - bool Uart_of::enable_tx_irq(bool){return true;} - bool Uart_of::change_mode(Transfer_mode, Baud_rate){return true;} - int Uart_of::char_avail() const {return 1;} -}; diff --git a/kernel/fiasco/src/lib/uart/ppc32/uart_of.h b/kernel/fiasco/src/lib/uart/ppc32/uart_of.h deleted file mode 100644 index 2e904d662..000000000 --- a/kernel/fiasco/src/lib/uart/ppc32/uart_of.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef L4_CXX_UART_OF_H__ -#define L4_CXX_UART_OF_H__ - -#include "uart_base.h" -#include -#include -#include "of1275.h" - -namespace L4 -{ - class Uart_of : public Uart, public Of - { - private: - ihandle_t _serial; - - public: - Uart_of(unsigned long prom) - : Uart(0, 0), Of(prom), _serial(0) {} - bool startup(unsigned long base); - - void shutdown(); - bool enable_rx_irq(bool enable = true); - bool enable_tx_irq(bool enable = true); - bool change_mode(Transfer_mode m, Baud_rate r); - int get_char(bool blocking = true) const; - int char_avail() const; - void out_char(char c) const; - int write(char const *s, unsigned long count) const; - }; -}; - -#endif diff --git a/kernel/fiasco/tool/autocheck b/kernel/fiasco/tool/autocheck deleted file mode 100755 index 960b9d8a6..000000000 --- a/kernel/fiasco/tool/autocheck +++ /dev/null @@ -1,212 +0,0 @@ -#! /usr/bin/perl -W -# -# Automatically check some L4 applications using Fiasco-UX -# -# -# Adam Lackorzynski -# - -use strict; -use Getopt::Long; - -my $FIASCOUX; -my $L4DIR; -my $OBJDIR = 'OBJ-x86_586-l4v2'; - -my $ALARM_TIMEOUT = 60; # in seconds - -my %templs = ( - rmgr => '%s/pkg/rmgr/server/fiasco_ux_src/%s/rmgr-ux', - roottask => '%s/pkg/roottask/server/src/%s/roottask', - sigma0 => '%s/pkg/sigma0/server/fiasco_ux_src/%s/sigma0-ux', - ktest => '%s/pkg/ktest/server/src/%s/ktest', - pingpong => '%s/pkg/pingpong/server/src/%s/pingpong', -); - -my $Verbose = 0; -my $Quiet = 0; - -my %progs; -my %results; -my %output; - -my $exit_code = 0; - -sub usage() { - print </dev/null 2>&1"); - die "$FIASCOUX doesn't seem to be a UX version." if $?; - - -} - -## -# Check for userland (rmgr-ux, sigma0-ux, ...) -sub check_for_userland() { - foreach my $t (keys %templs) { - my $p = sprintf $templs{$t}, $L4DIR, $OBJDIR; - die "There's no $p!" unless -x $p; - $progs{$t} = $p; - } -} - -## -# Called if alarm signal received -sub got_sig_alarm { - print "Fiasco-UX timed out after $ALARM_TIMEOUT seconds!\n"; - exit 1; -} - -## -# Set alarm so that we abort if something hangs -sub set_alarm() { - $SIG{ALRM} = \&got_sig_alarm; - alarm $ALARM_TIMEOUT; -} - -sub fiascoux_cmdline() { - (my $p = $FIASCOUX) =~ s/\/[^\/]+$//; - "cd $p && $FIASCOUX -R $progs{rmgr} -S $progs{sigma0}"; -} - - -## -# call_text -sub call_test($) { - my ($name) = @_; - - # default - $results{$name} = ''; - - my $cmdline = fiascoux_cmdline()." -l $progs{$name}"; - print "Calling: $cmdline" if $Verbose; - - open(F, "$cmdline 2>&1|") - || die "Can't start Fiasco with $progs{$name}: $!"; - while () { - $output{$name} .= $_; - print if $Verbose; - } - close F; - - eval "test_$name()"; - if ($@) { - print "Internal error: $@\n"; - $results{$name} = 'Internal error'; - } else { - print_result($name); - } -} - -## -# ktest - gives nice output so it's easy to scan -sub test_ktest() { - $_ = $output{ktest}; - $results{ktest} = 'Failed results' if /failed/ || /\(TIMEOUT\)/; -} - -## -# pingpong - is a benchmark, so a bit hard to scan -# for now, we'll just see that all 9 tests are run and that there are -# a certain number of lines -sub test_pingpong() { - $_ = $output{pingpong}; - unless (/Kernel\sversion\s\d.*/sm) { - $results{pingpong} = 'Unknown output'; - return; - } - $_ = $&; - my @lines = split /\n/; - my $linecount = scalar @lines; - for my $n (0 .. 9) { - unless (/>>\s+$n:\s/m) { - $results{pingpong} = 'Not all tests did run'; - return; - } - } - if ($linecount != 88) { - $results{pingpong} = 'Wrong line count of output'; - return; - } -} - -## -# print test results -sub print_result($) { - my $p = shift; - if (!$Quiet) { - printf "%-15s: %s\n", $p, - ($results{$p} eq '') ? "Passed" : "failed ($results{$p})"; - } -} - -## -# Get the exit code of our little program -sub get_exit_code() { - for my $t (keys %results) { - return 1 if $results{$t} ne ''; - } - 0; -} - - -# ------------------------------------------------------------- - -unless (GetOptions("help|h", sub { usage(); exit(0); }, - "l4dir|l=s", \$L4DIR, - "fiascoux|f=s", \$FIASCOUX, - "objdir|O=s", \$OBJDIR, - "verbose|v!", \$Verbose, - "quiet|q!", \$Quiet, - "roottask!", sub { $templs{rmgr} = $templs{roottask}; }, - )) { - usage(); - exit(1); -} - -$L4DIR = $ENV{L4DIR} || die "Need an L4DIR set!" unless $L4DIR; -$FIASCOUX = $ENV{FIASCOUX} || die "Need a Fiasco-UX path!" unless $FIASCOUX; - -check_for_l4dir(); -check_for_fiasco_ux(); -check_for_userland(); - -set_alarm(); - -call_test("ktest"); -call_test("pingpong"); - -exit get_exit_code(); diff --git a/kernel/fiasco/tool/kconfig/scripts/kconfig/kconfig_load.c b/kernel/fiasco/tool/kconfig/scripts/kconfig/kconfig_load.c deleted file mode 100644 index dbdcaad82..000000000 --- a/kernel/fiasco/tool/kconfig/scripts/kconfig/kconfig_load.c +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include - -#include "lkc.h" - -#define P(name,type,arg) type (*name ## _p) arg -#include "lkc_proto.h" -#undef P - -void kconfig_load(void) -{ - void *handle; - char *error; - - handle = dlopen("./libkconfig.so", RTLD_LAZY); - if (!handle) { - handle = dlopen("./scripts/kconfig/libkconfig.so", RTLD_LAZY); - if (!handle) { - fprintf(stderr, "%s\n", dlerror()); - exit(1); - } - } - -#define P(name,type,arg) \ -{ \ - name ## _p = dlsym(handle, #name); \ - if ((error = dlerror())) { \ - fprintf(stderr, "%s\n", error); \ - exit(1); \ - } \ -} -#include "lkc_proto.h" -#undef P -} diff --git a/kernel/fiasco/tool/kconfig/scripts/kconfig/lex.zconf.c_shipped b/kernel/fiasco/tool/kconfig/scripts/kconfig/lex.zconf.c_shipped deleted file mode 100644 index d9182916f..000000000 --- a/kernel/fiasco/tool/kconfig/scripts/kconfig/lex.zconf.c_shipped +++ /dev/null @@ -1,2435 +0,0 @@ - -#line 3 "scripts/kconfig/lex.zconf.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define yy_create_buffer zconf_create_buffer -#define yy_delete_buffer zconf_delete_buffer -#define yy_flex_debug zconf_flex_debug -#define yy_init_buffer zconf_init_buffer -#define yy_flush_buffer zconf_flush_buffer -#define yy_load_buffer_state zconf_load_buffer_state -#define yy_switch_to_buffer zconf_switch_to_buffer -#define yyin zconfin -#define yyleng zconfleng -#define yylex zconflex -#define yylineno zconflineno -#define yyout zconfout -#define yyrestart zconfrestart -#define yytext zconftext -#define yywrap zconfwrap -#define yyalloc zconfalloc -#define yyrealloc zconfrealloc -#define yyfree zconffree - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE zconfrestart(zconfin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int zconfleng; - -extern FILE *zconfin, *zconfout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up zconftext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up zconftext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via zconfrestart()), so that the user can continue scanning by - * just pointing zconfin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when zconftext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int zconfleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow zconfwrap()'s to do buffer switches - * instead of setting up a fresh zconfin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void zconfrestart (FILE *input_file ); -void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size ); -void zconf_delete_buffer (YY_BUFFER_STATE b ); -void zconf_flush_buffer (YY_BUFFER_STATE b ); -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ); -void zconfpop_buffer_state (void ); - -static void zconfensure_buffer_stack (void ); -static void zconf_load_buffer_state (void ); -static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len ); - -void *zconfalloc (yy_size_t ); -void *zconfrealloc (void *,yy_size_t ); -void zconffree (void * ); - -#define yy_new_buffer zconf_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - zconfensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - zconfensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - zconf_create_buffer(zconfin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define zconfwrap(n) 1 -#define YY_SKIP_YYWRAP - -typedef unsigned char YY_CHAR; - -FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0; - -typedef int yy_state_type; - -extern int zconflineno; - -int zconflineno = 1; - -extern char *zconftext; -#define yytext_ptr zconftext -static yyconst flex_int16_t yy_nxt[][17] = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 12, 13, 14, 12, 12, 15, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 18, 16, 16, 16 - }, - - { - 11, 16, 16, 17, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 18, 16, 16, 16 - - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 19, 20, 21, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 22, 22, 23, 22, 24, 22, 22, 24, 22, - 22, 22, 22, 22, 22, 25, 22 - }, - - { - 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, - 33, 34, 35, 35, 36, 37, 38 - - }, - - { - 11, 26, 26, 27, 28, 29, 30, 31, 29, 32, - 33, 34, 35, 35, 36, 37, 38 - }, - - { - -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, - -11, -11, -11, -11, -11, -11, -11 - }, - - { - 11, -12, -12, -12, -12, -12, -12, -12, -12, -12, - -12, -12, -12, -12, -12, -12, -12 - }, - - { - 11, -13, 39, 40, -13, -13, 41, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13 - }, - - { - 11, -14, -14, -14, -14, -14, -14, -14, -14, -14, - -14, -14, -14, -14, -14, -14, -14 - - }, - - { - 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42 - }, - - { - 11, -16, -16, -16, -16, -16, -16, -16, -16, -16, - -16, -16, -16, -16, -16, -16, -16 - }, - - { - 11, -17, -17, -17, -17, -17, -17, -17, -17, -17, - -17, -17, -17, -17, -17, -17, -17 - }, - - { - 11, -18, -18, -18, -18, -18, -18, -18, -18, -18, - -18, -18, -18, 44, -18, -18, -18 - }, - - { - 11, 45, 45, -19, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45 - - }, - - { - 11, -20, 46, 47, -20, -20, -20, -20, -20, -20, - -20, -20, -20, -20, -20, -20, -20 - }, - - { - 11, 48, -21, -21, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48 - }, - - { - 11, 49, 49, 50, 49, -22, 49, 49, -22, 49, - 49, 49, 49, 49, 49, -22, 49 - }, - - { - 11, -23, -23, -23, -23, -23, -23, -23, -23, -23, - -23, -23, -23, -23, -23, -23, -23 - }, - - { - 11, -24, -24, -24, -24, -24, -24, -24, -24, -24, - -24, -24, -24, -24, -24, -24, -24 - - }, - - { - 11, 51, 51, 52, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51 - }, - - { - 11, -26, -26, -26, -26, -26, -26, -26, -26, -26, - -26, -26, -26, -26, -26, -26, -26 - }, - - { - 11, -27, -27, -27, -27, -27, -27, -27, -27, -27, - -27, -27, -27, -27, -27, -27, -27 - }, - - { - 11, -28, -28, -28, -28, -28, -28, -28, -28, -28, - -28, -28, -28, -28, 53, -28, -28 - }, - - { - 11, -29, -29, -29, -29, -29, -29, -29, -29, -29, - -29, -29, -29, -29, -29, -29, -29 - - }, - - { - 11, 54, 54, -30, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54 - }, - - { - 11, -31, -31, -31, -31, -31, -31, 55, -31, -31, - -31, -31, -31, -31, -31, -31, -31 - }, - - { - 11, -32, -32, -32, -32, -32, -32, -32, -32, -32, - -32, -32, -32, -32, -32, -32, -32 - }, - - { - 11, -33, -33, -33, -33, -33, -33, -33, -33, -33, - -33, -33, -33, -33, -33, -33, -33 - }, - - { - 11, -34, -34, -34, -34, -34, -34, -34, -34, -34, - -34, 56, 57, 57, -34, -34, -34 - - }, - - { - 11, -35, -35, -35, -35, -35, -35, -35, -35, -35, - -35, 57, 57, 57, -35, -35, -35 - }, - - { - 11, -36, -36, -36, -36, -36, -36, -36, -36, -36, - -36, -36, -36, -36, -36, -36, -36 - }, - - { - 11, -37, -37, 58, -37, -37, -37, -37, -37, -37, - -37, -37, -37, -37, -37, -37, -37 - }, - - { - 11, -38, -38, -38, -38, -38, -38, -38, -38, -38, - -38, -38, -38, -38, -38, -38, 59 - }, - - { - 11, -39, 39, 40, -39, -39, 41, -39, -39, -39, - -39, -39, -39, -39, -39, -39, -39 - - }, - - { - 11, -40, -40, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, -40, -40, -40, -40 - }, - - { - 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42 - }, - - { - 11, 42, 42, 43, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 42, 42 - }, - - { - 11, -43, -43, -43, -43, -43, -43, -43, -43, -43, - -43, -43, -43, -43, -43, -43, -43 - }, - - { - 11, -44, -44, -44, -44, -44, -44, -44, -44, -44, - -44, -44, -44, 44, -44, -44, -44 - - }, - - { - 11, 45, 45, -45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45 - }, - - { - 11, -46, 46, 47, -46, -46, -46, -46, -46, -46, - -46, -46, -46, -46, -46, -46, -46 - }, - - { - 11, 48, -47, -47, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48 - }, - - { - 11, -48, -48, -48, -48, -48, -48, -48, -48, -48, - -48, -48, -48, -48, -48, -48, -48 - }, - - { - 11, 49, 49, 50, 49, -49, 49, 49, -49, 49, - 49, 49, 49, 49, 49, -49, 49 - - }, - - { - 11, -50, -50, -50, -50, -50, -50, -50, -50, -50, - -50, -50, -50, -50, -50, -50, -50 - }, - - { - 11, -51, -51, 52, -51, -51, -51, -51, -51, -51, - -51, -51, -51, -51, -51, -51, -51 - }, - - { - 11, -52, -52, -52, -52, -52, -52, -52, -52, -52, - -52, -52, -52, -52, -52, -52, -52 - }, - - { - 11, -53, -53, -53, -53, -53, -53, -53, -53, -53, - -53, -53, -53, -53, -53, -53, -53 - }, - - { - 11, 54, 54, -54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54 - - }, - - { - 11, -55, -55, -55, -55, -55, -55, -55, -55, -55, - -55, -55, -55, -55, -55, -55, -55 - }, - - { - 11, -56, -56, -56, -56, -56, -56, -56, -56, -56, - -56, 60, 57, 57, -56, -56, -56 - }, - - { - 11, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, 57, 57, 57, -57, -57, -57 - }, - - { - 11, -58, -58, -58, -58, -58, -58, -58, -58, -58, - -58, -58, -58, -58, -58, -58, -58 - }, - - { - 11, -59, -59, -59, -59, -59, -59, -59, -59, -59, - -59, -59, -59, -59, -59, -59, -59 - - }, - - { - 11, -60, -60, -60, -60, -60, -60, -60, -60, -60, - -60, 57, 57, 57, -60, -60, -60 - }, - - } ; - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up zconftext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - zconfleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 33 -#define YY_END_OF_BUFFER 34 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[61] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 34, 5, 4, 2, 3, 7, 8, 6, 32, 29, - 31, 24, 28, 27, 26, 22, 17, 13, 16, 20, - 22, 11, 12, 19, 19, 14, 22, 22, 4, 2, - 3, 3, 1, 6, 32, 29, 31, 30, 24, 23, - 26, 25, 15, 20, 9, 19, 19, 21, 10, 18 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 6, 1, 1, 7, 8, 9, - 10, 1, 1, 1, 11, 12, 12, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 1, 1, 1, - 14, 1, 1, 1, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 1, 15, 1, 1, 13, 1, 13, 13, 13, 13, - - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 1, 16, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -extern int zconf_flex_debug; -int zconf_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *zconftext; -#define YY_NO_INPUT 1 - -/* - * Copyright (C) 2002 Roman Zippel - * Released under the terms of the GNU GPL v2.0. - */ - -#include -#include -#include -#include -#include - -#define LKC_DIRECT_LINK -#include "lkc.h" - -#define START_STRSIZE 16 - -static struct { - struct file *file; - int lineno; -} current_pos; - -static char *text; -static int text_size, text_asize; - -struct buffer { - struct buffer *parent; - YY_BUFFER_STATE state; -}; - -struct buffer *current_buf; - -static int last_ts, first_ts; - -static void zconf_endhelp(void); -static void zconf_endfile(void); - -static void new_string(void) -{ - text = malloc(START_STRSIZE); - text_asize = START_STRSIZE; - text_size = 0; - *text = 0; -} - -static void append_string(const char *str, int size) -{ - int new_size = text_size + size + 1; - if (new_size > text_asize) { - new_size += START_STRSIZE - 1; - new_size &= -START_STRSIZE; - text = realloc(text, new_size); - text_asize = new_size; - } - memcpy(text + text_size, str, size); - text_size += size; - text[text_size] = 0; -} - -static void alloc_string(const char *str, int size) -{ - text = malloc(size + 1); - memcpy(text, str, size); - text[size] = 0; -} - -#define INITIAL 0 -#define COMMAND 1 -#define HELP 2 -#define STRING 3 -#define PARAM 4 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int zconflex_destroy (void ); - -int zconfget_debug (void ); - -void zconfset_debug (int debug_flag ); - -YY_EXTRA_TYPE zconfget_extra (void ); - -void zconfset_extra (YY_EXTRA_TYPE user_defined ); - -FILE *zconfget_in (void ); - -void zconfset_in (FILE * in_str ); - -FILE *zconfget_out (void ); - -void zconfset_out (FILE * out_str ); - -int zconfget_leng (void ); - -char *zconfget_text (void ); - -int zconfget_lineno (void ); - -void zconfset_lineno (int line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int zconfwrap (void ); -#else -extern int zconfwrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( zconftext, zconfleng, 1, zconfout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - errno=0; \ - while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(zconfin); \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int zconflex (void); - -#define YY_DECL int zconflex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after zconftext and zconfleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - - int str = 0; - int ts, i; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! zconfin ) - zconfin = stdin; - - if ( ! zconfout ) - zconfout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - zconfensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - zconf_create_buffer(zconfin,YY_BUF_SIZE ); - } - - zconf_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of zconftext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 ) - ++yy_cp; - - yy_current_state = -yy_current_state; - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -/* rule 1 can match eol */ -case 2: -/* rule 2 can match eol */ -YY_RULE_SETUP -{ - current_file->lineno++; - return T_EOL; -} - YY_BREAK -case 3: -YY_RULE_SETUP - - YY_BREAK -case 4: -YY_RULE_SETUP -{ - BEGIN(COMMAND); -} - YY_BREAK -case 5: -YY_RULE_SETUP -{ - unput(zconftext[0]); - BEGIN(COMMAND); -} - YY_BREAK - -case 6: -YY_RULE_SETUP -{ - struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); - BEGIN(PARAM); - current_pos.file = current_file; - current_pos.lineno = current_file->lineno; - if (id && id->flags & TF_COMMAND) { - zconflval.id = id; - return id->token; - } - alloc_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD; - } - YY_BREAK -case 7: -YY_RULE_SETUP - - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -{ - BEGIN(INITIAL); - current_file->lineno++; - return T_EOL; - } - YY_BREAK - -case 9: -YY_RULE_SETUP -return T_AND; - YY_BREAK -case 10: -YY_RULE_SETUP -return T_OR; - YY_BREAK -case 11: -YY_RULE_SETUP -return T_OPEN_PAREN; - YY_BREAK -case 12: -YY_RULE_SETUP -return T_CLOSE_PAREN; - YY_BREAK -case 13: -YY_RULE_SETUP -return T_NOT; - YY_BREAK -case 14: -YY_RULE_SETUP -return T_EQUAL; - YY_BREAK -case 15: -YY_RULE_SETUP -return T_UNEQUAL; - YY_BREAK -case 16: -YY_RULE_SETUP -{ - str = zconftext[0]; - new_string(); - BEGIN(STRING); - } - YY_BREAK -case 17: -/* rule 17 can match eol */ -YY_RULE_SETUP -BEGIN(INITIAL); current_file->lineno++; return T_EOL; - YY_BREAK -case 18: -YY_RULE_SETUP -/* ignore */ - YY_BREAK -case 19: -YY_RULE_SETUP -{ - struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng); - if (id && id->flags & TF_PARAM) { - zconflval.id = id; - return id->token; - } - alloc_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD; - } - YY_BREAK -case 20: -YY_RULE_SETUP -/* comment */ - YY_BREAK -case 21: -/* rule 21 can match eol */ -YY_RULE_SETUP -current_file->lineno++; - YY_BREAK -case 22: -YY_RULE_SETUP - - YY_BREAK -case YY_STATE_EOF(PARAM): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 23: -/* rule 23 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - zconflval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 24: -YY_RULE_SETUP -{ - append_string(zconftext, zconfleng); - } - YY_BREAK -case 25: -/* rule 25 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - append_string(zconftext + 1, zconfleng - 1); - zconflval.string = text; - return T_WORD_QUOTE; - } - YY_BREAK -case 26: -YY_RULE_SETUP -{ - append_string(zconftext + 1, zconfleng - 1); - } - YY_BREAK -case 27: -YY_RULE_SETUP -{ - if (str == zconftext[0]) { - BEGIN(PARAM); - zconflval.string = text; - return T_WORD_QUOTE; - } else - append_string(zconftext, 1); - } - YY_BREAK -case 28: -/* rule 28 can match eol */ -YY_RULE_SETUP -{ - printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno()); - current_file->lineno++; - BEGIN(INITIAL); - return T_EOL; - } - YY_BREAK -case YY_STATE_EOF(STRING): -{ - BEGIN(INITIAL); - } - YY_BREAK - -case 29: -YY_RULE_SETUP -{ - ts = 0; - for (i = 0; i < zconfleng; i++) { - if (zconftext[i] == '\t') - ts = (ts & ~7) + 8; - else - ts++; - } - last_ts = ts; - if (first_ts) { - if (ts < first_ts) { - zconf_endhelp(); - return T_HELPTEXT; - } - ts -= first_ts; - while (ts > 8) { - append_string(" ", 8); - ts -= 8; - } - append_string(" ", ts); - } - } - YY_BREAK -case 30: -/* rule 30 can match eol */ -*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */ -(yy_c_buf_p) = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up zconftext again */ -YY_RULE_SETUP -{ - current_file->lineno++; - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK -case 31: -/* rule 31 can match eol */ -YY_RULE_SETUP -{ - current_file->lineno++; - append_string("\n", 1); - } - YY_BREAK -case 32: -YY_RULE_SETUP -{ - while (zconfleng) { - if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t')) - break; - zconfleng--; - } - append_string(zconftext, zconfleng); - if (!first_ts) - first_ts = last_ts; - } - YY_BREAK -case YY_STATE_EOF(HELP): -{ - zconf_endhelp(); - return T_HELPTEXT; - } - YY_BREAK - -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(COMMAND): -{ - if (current_file) { - zconf_endfile(); - return T_EOL; - } - fclose(zconfin); - yyterminate(); -} - YY_BREAK -case 33: -YY_RULE_SETUP -YY_FATAL_ERROR( "flex scanner jammed" ); - YY_BREAK - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed zconfin at a new source and called - * zconflex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( zconfwrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * zconftext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of zconflex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - zconfrestart(zconfin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - - yy_current_state = yy_nxt[yy_current_state][1]; - yy_is_jam = (yy_current_state <= 0); - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up zconftext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - zconfrestart(zconfin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( zconfwrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve zconftext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void zconfrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - zconfensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - zconf_create_buffer(zconfin,YY_BUF_SIZE ); - } - - zconf_init_buffer(YY_CURRENT_BUFFER,input_file ); - zconf_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * zconfpop_buffer_state(); - * zconfpush_buffer_state(new_buffer); - */ - zconfensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - zconf_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (zconfwrap()) processing, but the only time this flag - * is looked at is after zconfwrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void zconf_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - zconf_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with zconf_create_buffer() - * - */ - void zconf_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - zconffree((void *) b->yy_ch_buf ); - - zconffree((void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a zconfrestart() or at EOF. - */ - static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - zconf_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then zconf_init_buffer was _probably_ - * called from zconfrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void zconf_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - zconf_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - zconfensure_buffer_stack(); - - /* This block is copied from zconf_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from zconf_switch_to_buffer. */ - zconf_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void zconfpop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - zconf_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - zconf_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void zconfensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - zconf_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to zconflex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * zconf_scan_bytes() instead. - */ -YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr ) -{ - - return zconf_scan_bytes(yystr,strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) zconfalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = zconf_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up zconftext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - zconftext[zconfleng] = (yy_hold_char); \ - (yy_c_buf_p) = zconftext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - zconfleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int zconfget_lineno (void) -{ - - return zconflineno; -} - -/** Get the input stream. - * - */ -FILE *zconfget_in (void) -{ - return zconfin; -} - -/** Get the output stream. - * - */ -FILE *zconfget_out (void) -{ - return zconfout; -} - -/** Get the length of the current token. - * - */ -int zconfget_leng (void) -{ - return zconfleng; -} - -/** Get the current token. - * - */ - -char *zconfget_text (void) -{ - return zconftext; -} - -/** Set the current line number. - * @param line_number - * - */ -void zconfset_lineno (int line_number ) -{ - - zconflineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see zconf_switch_to_buffer - */ -void zconfset_in (FILE * in_str ) -{ - zconfin = in_str ; -} - -void zconfset_out (FILE * out_str ) -{ - zconfout = out_str ; -} - -int zconfget_debug (void) -{ - return zconf_flex_debug; -} - -void zconfset_debug (int bdebug ) -{ - zconf_flex_debug = bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from zconflex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - zconfin = stdin; - zconfout = stdout; -#else - zconfin = (FILE *) 0; - zconfout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * zconflex_init() - */ - return 0; -} - -/* zconflex_destroy is for both reentrant and non-reentrant scanners. */ -int zconflex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - zconf_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - zconfpop_buffer_state(); - } - - /* Destroy the stack itself. */ - zconffree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * zconflex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *zconfalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *zconfrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void zconffree (void * ptr ) -{ - free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -void zconf_starthelp(void) -{ - new_string(); - last_ts = first_ts = 0; - BEGIN(HELP); -} - -static void zconf_endhelp(void) -{ - zconflval.string = text; - BEGIN(INITIAL); -} - -/* - * Try to open specified file with following names: - * ./name - * $(srctree)/name - * The latter is used when srctree is separate from objtree - * when compiling the kernel. - * Return NULL if file is not found. - */ -FILE *zconf_fopen(const char *name) -{ - char *env, fullname[PATH_MAX+1]; - FILE *f; - - f = fopen(name, "r"); - if (!f && name != NULL && name[0] != '/') { - env = getenv(SRCTREE); - if (env) { - sprintf(fullname, "%s/%s", env, name); - f = fopen(fullname, "r"); - } - } - return f; -} - -void zconf_initscan(const char *name) -{ - zconfin = zconf_fopen(name); - if (!zconfin) { - printf("can't find file %s\n", name); - exit(1); - } - - current_buf = malloc(sizeof(*current_buf)); - memset(current_buf, 0, sizeof(*current_buf)); - - current_file = file_lookup(name); - current_file->lineno = 1; -} - -void zconf_nextfile(const char *name) -{ - struct file *iter; - struct file *file = file_lookup(name); - struct buffer *buf = malloc(sizeof(*buf)); - memset(buf, 0, sizeof(*buf)); - - current_buf->state = YY_CURRENT_BUFFER; - zconfin = zconf_fopen(file->name); - if (!zconfin) { - printf("%s:%d: can't open file \"%s\"\n", - zconf_curname(), zconf_lineno(), file->name); - exit(1); - } - zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE)); - buf->parent = current_buf; - current_buf = buf; - - for (iter = current_file->parent; iter; iter = iter->parent ) { - if (!strcmp(current_file->name,iter->name) ) { - printf("%s:%d: recursive inclusion detected. " - "Inclusion path:\n current file : '%s'\n", - zconf_curname(), zconf_lineno(), - zconf_curname()); - iter = current_file->parent; - while (iter && \ - strcmp(iter->name,current_file->name)) { - printf(" included from: '%s:%d'\n", - iter->name, iter->lineno-1); - iter = iter->parent; - } - if (iter) - printf(" included from: '%s:%d'\n", - iter->name, iter->lineno+1); - exit(1); - } - } - file->lineno = 1; - file->parent = current_file; - current_file = file; -} - -static void zconf_endfile(void) -{ - struct buffer *parent; - - current_file = current_file->parent; - - parent = current_buf->parent; - if (parent) { - fclose(zconfin); - zconf_delete_buffer(YY_CURRENT_BUFFER); - zconf_switch_to_buffer(parent->state); - } - free(current_buf); - current_buf = parent; -} - -int zconf_lineno(void) -{ - return current_pos.lineno; -} - -const char *zconf_curname(void) -{ - return current_pos.file ? current_pos.file->name : ""; -} - diff --git a/l4/pkg/ankh/lib/libc_be_socket/Makefile b/l4/pkg/ankh/lib/libc_be_socket/Makefile deleted file mode 100644 index 3af0d6661..000000000 --- a/l4/pkg/ankh/lib/libc_be_socket/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -PKGDIR ?= ../.. -L4DIR ?= $(PKGDIR)/../.. - -TARGET = libc_be_socket_lwip.a libc_be_socket_lwip.so -SYSTEMS = x86-l4f arm-l4f -PC_FILENAME = libc_be_socket_lwip -SRC_C = be.c -SRC_CC = sock_fs.cc -REQUIRES_LIBS = ankh_lwip -PRIVATE_INCDIR += $(PKGDIR)/lib/lwip/contrib/src/include \ - $(PKGDIR)/lib/lwip/contrib/src/include/ipv4 \ - $(PKGDIR)/lib/lwip - - -include $(L4DIR)/mk/lib.mk diff --git a/l4/pkg/ankh/lib/libc_be_socket/be.c b/l4/pkg/ankh/lib/libc_be_socket/be.c deleted file mode 100644 index 6f6eeb47c..000000000 --- a/l4/pkg/ankh/lib/libc_be_socket/be.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * (c) 2009 Technische Universität Dresden - * This file is part of TUD:OS and distributed under the terms of the - * GNU Lesser General Public License 2.1. - * Please see the COPYING-LGPL-2.1 file for details. - */ - -#define LWIP_COMPAT_SOCKETS 0 - -#include "lwip/sockets.h" -#include "lwip/netdb.h" -#include -#include "sock_fs.h" - -int socket(int domain, int type, int protocol); -int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); -int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); -int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); -int getsockopt(int sockfd, int level, int optname, - void *optval, socklen_t *optlen); -int setsockopt(int sockfd, int level, int optname, - const void *optval, socklen_t optlen); -int listen(int sockfd, int backlog); -ssize_t recv(int sockfd, void *buf, size_t len, int flags); -ssize_t send(int sockfd, const void *buf, size_t len, int flags); -ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, - const struct sockaddr *dest_addr, socklen_t addrlen); -int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen); -int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen); -int getnameinfo(const struct sockaddr *sa, socklen_t salen, - char *host, socklen_t hostlen, - char *serv, socklen_t servlen, unsigned int flags); -int shutdown(int sockfd, int how); -struct hostent *gethostbyname(const char *name); -int gethostname(char *name, size_t len); - - -/* XXX - * BD: Actually, we only need this, if we intermix uclibc and lwip - * socket functions which seems to be a bad idea anyway? - */ -static void __attribute__((unused)) -uclibc_to_lwip_sockaddr(struct sockaddr *addr) -{ - unsigned char *a = (unsigned char *)addr; - unsigned char x = a[0]; - a[0] = a[1]; - a[1] = x; -} - - -/* Wrappers */ -int socket(int domain, int type, int protocol) -{ - int sockfd = lwip_socket(domain, type, protocol); - return assign_fd_to_socket(sockfd); -} - -int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) -{ - int sock = socket_for_fd(sockfd); - int ret = lwip_connect(sock, addr, addrlen); - if (ret == 0) - mark_connected(sockfd, 1); - - return ret; -} - -int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) -{ - int sock = socket_for_fd(sockfd); - int ret = lwip_accept(sock, addr, addrlen); - return ret; -} - -int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) -{ - int sock = socket_for_fd(sockfd); - int ret = lwip_bind(sock, addr, addrlen); - if (ret == 0) - mark_connected(sockfd, 1); - return ret; -} - -int getsockopt(int sockfd, int level, int optname, - void *optval, socklen_t *optlen) -{ - int sock = socket_for_fd(sockfd); - return lwip_getsockopt(sock, level, optname, optval, optlen); -} - -int setsockopt(int sockfd, int level, int optname, - const void *optval, socklen_t optlen) -{ - int sock = socket_for_fd(sockfd); - return lwip_setsockopt(sock, level, optname, optval, optlen); -} - -int listen(int sockfd, int backlog) -{ - int sock = socket_for_fd(sockfd); - return lwip_listen(sock, backlog); -} - -ssize_t recv(int sockfd, void *buf, size_t len, int flags) -{ - int sock = socket_for_fd(sockfd); - return lwip_recv(sock, buf, len, flags); -} - -ssize_t send(int sockfd, const void *buf, size_t len, int flags) -{ - int sock = socket_for_fd(sockfd); - return lwip_send(sock, buf, len, flags); -} - -ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, - const struct sockaddr *dest_addr, socklen_t addrlen) -{ - int sock = socket_for_fd(sockfd); - return lwip_sendto(sock, buf, len, flags, dest_addr, addrlen); -} - -int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen) -{ - int sock = socket_for_fd(sockfd); - return lwip_getsockname(sock, addr, addrlen); -} - -int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen) -{ - int sock = socket_for_fd(sockfd); - return lwip_getpeername(sock, addr, addrlen); -} - -int getnameinfo(const struct sockaddr *sa, socklen_t salen, - char *host, socklen_t hostlen, - char *serv, socklen_t servlen, unsigned int flags) -{ - printf("Unimplemented: %s(%p, %d, %p, %d, %p, %d, %d)\n", __func__, - sa, salen, host, hostlen, serv, servlen, flags); - return -4; -} - -int shutdown(int sockfd, int how) -{ - printf("Unimplemented: %s(%d, %d)\n", __func__, sockfd, how); - errno = -EBADF; - return -1; -} - -struct hostent *gethostbyname(const char *name) -{ - return lwip_gethostbyname(name); -} - -int gethostname(char *name, size_t len) -{ - const char const *my_fine_hostname = "l4re-host"; - strncpy(name, my_fine_hostname, len); - name[len - 1] = 0; - return 0; -} diff --git a/l4/pkg/ankh/lib/libc_be_socket/sock_fs.cc b/l4/pkg/ankh/lib/libc_be_socket/sock_fs.cc deleted file mode 100644 index 8c63aee1c..000000000 --- a/l4/pkg/ankh/lib/libc_be_socket/sock_fs.cc +++ /dev/null @@ -1,129 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -EXTERN_C_BEGIN -#include "lwip/sockets.h" -EXTERN_C_END - -/* - * lwIP file backend for integrating lwIP sockets into L4Re VFS - * - * lwip maintains its own internal socket numbers and clients expect these to - * be normal file descriptors from which to read/write. L4Re's VFS however has - * a different view on fds and so we need an indirection that translates - * between VFS fds and lwIP socket IDs. This translation is used by the BSD - * socket API wrappers in this library to convert between these two - * abstractions. - * - * Every time a client application creates a socket using the socket() wrapper - * in this library, we register a new Socket_file with VFS. This allows us to - * intercept readv/writev calls to this fd and map them to lwip_read(), - * lwip_write(). - */ -class Socket_file : public L4Re::Vfs::Be_file -{ - private: - int _lwip_fd; // underlying lwIP file descriptor - bool _connected; // socket connected? - - public: - /* _connected is initially false, as we cannot read/write - * from a socket until it has been connected/bound - */ - explicit Socket_file(int lwip_fd = -1) throw() - : L4Re::Vfs::Be_file(), - _lwip_fd(lwip_fd), - _connected(false) - { } - - - ~Socket_file() throw() - { - if (_lwip_fd > 0) - lwip_close(_lwip_fd); - } - - bool connected() { return _connected; } - void connected(bool t) { _connected = t; } - - int lwip_fd() { return _lwip_fd; } - - ssize_t readv(const struct iovec*, int) throw(); - ssize_t writev(const struct iovec*, int) throw(); - - // should be in L4Re::Vfs::Be_file ? - int fstat64(struct stat64 *) const throw() - { return -EINVAL; } -}; - - -ssize_t Socket_file::readv(const struct iovec* iov, - int iov_cnt) throw() -{ - ssize_t read_cnt = 0; - - if (!connected()) { - errno = EINVAL; - return -1; - } - - for (int i = 0; i < iov_cnt; ++i) - read_cnt += lwip_read(_lwip_fd, iov[i].iov_base, - iov[i].iov_len); - - return read_cnt; -} - - -ssize_t Socket_file::writev(const struct iovec* iov, - int iov_cnt) throw() -{ - ssize_t write_cnt = 0; - - if (!connected()) { - errno = EINVAL; - return -1; - } - - for (int i = 0; i < iov_cnt; ++i) - write_cnt += lwip_write(_lwip_fd, iov[i].iov_base, - iov[i].iov_len); - - return write_cnt; -} - - -EXTERN_C int assign_fd_to_socket(int sockfd) -{ - using cxx::Ref_ptr; - - Ref_ptr f(new Socket_file(sockfd)); - int vfs_fd = L4Re::Vfs::vfs_ops->alloc_fd(f); - - return vfs_fd; -} - - -EXTERN_C int socket_for_fd(int sock) -{ - using namespace cxx; - - // XXX: why doesn't ref_ptr_static_cast() work? - Ref_ptr vf = L4Re::Vfs::vfs_ops->get_file(sock); - Ref_ptr f = ref_ptr(static_cast(vf.ptr())); - return f->lwip_fd(); -} - - -EXTERN_C void mark_connected(int sock, int val) -{ - using namespace cxx; - Ref_ptr vf = L4Re::Vfs::vfs_ops->get_file(sock); - Ref_ptr f = ref_ptr(static_cast(vf.ptr())); - f->connected(val == 1); -} diff --git a/l4/pkg/ankh/lib/libc_be_socket/sock_fs.h b/l4/pkg/ankh/lib/libc_be_socket/sock_fs.h deleted file mode 100644 index 213090c2b..000000000 --- a/l4/pkg/ankh/lib/libc_be_socket/sock_fs.h +++ /dev/null @@ -1,24 +0,0 @@ -#include - -EXTERN_C_BEGIN - -/* - * Socket file API - */ - -/* - * Assign a VFS file descriptor to an lwIP socket - */ -extern int assign_fd_to_socket(int); - -/* - * Lookup socket for file descriptor - */ -extern int socket_for_fd(int); - -/* - * Mark existing VFS fd as connected socket - */ -extern void mark_connected(int,int); - -EXTERN_C_END diff --git a/l4/pkg/ankh/lib/lwip/Makefile b/l4/pkg/ankh/lib/lwip/Makefile deleted file mode 100644 index 50631af3f..000000000 --- a/l4/pkg/ankh/lib/lwip/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -PKGDIR ?= ../.. -L4DIR ?= $(PKGDIR)/../.. - -TARGET = include lib - -include $(L4DIR)/mk/subdir.mk - -lib: include diff --git a/l4/pkg/ankh/lib/lwip/WTF b/l4/pkg/ankh/lib/lwip/WTF deleted file mode 100644 index 14882bf29..000000000 --- a/l4/pkg/ankh/lib/lwip/WTF +++ /dev/null @@ -1,3 +0,0 @@ -lwip git master -commit 17efa04ea686f81ebdbf51363bdec5886e03a51c -Date: Tue Aug 9 13:55:40 2011 -0600 diff --git a/l4/pkg/ankh/lib/lwip/include/Makefile b/l4/pkg/ankh/lib/lwip/include/Makefile deleted file mode 100644 index 0f38b522c..000000000 --- a/l4/pkg/ankh/lib/lwip/include/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -PKGDIR = ../../.. -L4DIR ?= $(PKGDIR)/../.. - -CONTRIB_HEADERS = y -PKGNAME = ankh_lwip -INCSRC_DIR = $(PKGDIR_ABS)/lib/lwip/lib - -include $(L4DIR)/mk/include.mk diff --git a/l4/pkg/ankh/lib/lwip/lib/Makefile b/l4/pkg/ankh/lib/lwip/lib/Makefile deleted file mode 100644 index 33f1399a1..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -PKGDIR ?= ../../.. -L4DIR ?= $(PKGDIR)/../.. - -TARGET = liblwip.a liblwip.so -PC_FILENAME = ankh_lwip -REQUIRES_LIBS = ankh libpthread -SYSTEMS = x86-l4f arm-l4f -CONTRIB_INCDIR = ankh_lwip \ - ankh_lwip/contrib/src/include \ - ankh_lwip/contrib/src/include/ipv4 \ - ankh_lwip/contrib/src/include/ipv6 - -SRC_C = arch/sys_arch.c \ - arch/perf.c \ - arch/ankh_if.c \ - contrib/src/core/def.c \ - contrib/src/core/dhcp.c \ - contrib/src/core/init.c \ - contrib/src/core/dns.c \ - contrib/src/core/inet_chksum.c \ - contrib/src/core/mem.c \ - contrib/src/core/memp.c \ - contrib/src/core/netif.c \ - contrib/src/core/pbuf.c \ - contrib/src/core/raw.c \ - contrib/src/core/stats.c \ - contrib/src/core/sys.c \ - contrib/src/core/tcp.c \ - contrib/src/core/tcp_in.c \ - contrib/src/core/tcp_out.c \ - contrib/src/core/timers.c \ - contrib/src/core/udp.c \ - contrib/src/api/api_lib.c \ - contrib/src/api/api_msg.c \ - contrib/src/api/err.c \ - contrib/src/api/netbuf.c \ - contrib/src/api/netdb.c \ - contrib/src/api/netifapi.c \ - contrib/src/api/sockets.c \ - contrib/src/api/tcpip.c \ - contrib/src/netif/etharp.c \ - contrib/src/core/ipv4/autoip.c \ - contrib/src/core/ipv4/icmp.c \ - contrib/src/core/ipv4/igmp.c \ - contrib/src/core/ipv4/ip4_addr.c \ - contrib/src/core/ipv4/ip4.c \ - contrib/src/core/ipv4/ip_frag.c \ - contrib/src/core/snmp/asn1_dec.c \ - contrib/src/core/snmp/asn1_enc.c \ - contrib/src/core/snmp/mib2.c \ - contrib/src/core/snmp/mib_structs.c \ - contrib/src/core/snmp/msg_in.c \ - contrib/src/core/snmp/msg_out.c - -include $(L4DIR)/mk/lib.mk - -CFLAGS += -Wno-unused-function diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c b/l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c deleted file mode 100644 index 1444f2fc1..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/arch/ankh_if.c +++ /dev/null @@ -1,475 +0,0 @@ -/** - * @file - * Ankh Interface driver - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* - * This file is a skeleton for developing Ethernet network interface - * drivers for lwIP. Add code to the low_level functions and do a - * search-and-replace for the word "ankhif" to replace it with - * something that better describes your network interface. - */ -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/sys.h" -#include "lwip/dhcp.h" -#include -#include -#include "netif/etharp.h" -#include "netif/ppp_oe.h" - -#include -#include -#include -#include -#include -#include - - -/* Define those to better describe your network interface. */ -#define IFNAME0 'a' -#define IFNAME1 'n' - -/** - * Helper struct to hold private data used to operate your ethernet interface. - * Keeping the ethernet address of the MAC in this struct is not necessary - * as it is already kept in the struct netif. - * But this is only an example, anyway... - */ -struct ankhif { - struct eth_addr *ethaddr; - /* Add whatever per-interface state that is needed here. */ - ankh_config_info *config; - pthread_t recv_thread; -}; - -/* Forward declarations. */ -static void ankhif_input(struct netif *netif); - -static void *ankhif_recv_fn(void *arg) -{ - int err; - struct netif *netif = (struct netif*)arg; - l4shmc_ringbuf_t *rb = l4ankh_get_recvbuf(); - - struct ankhif *ankhif = netif->state; - ankhif->config->recv_thread = pthread_getl4cap(pthread_self()); - err = l4ankh_prepare_recv(ankhif->config->recv_thread); - - printf("ANKHIF::Recv rb @ %p\n", rb); - - for (;;) - { - err = l4shmc_rb_receiver_wait_for_data(rb, 1); - if (err) { - continue; - } - ankhif_input(netif); - } - - enter_kdebug("exit loop?"); - return NULL; -} - -/** - * In this function, the hardware should be initialized. - * Called from ankhif_init(). - * - * @param netif the already initialized lwip network interface structure - * for this ankhif - */ -static void -low_level_init(struct netif *netif) -{ - struct ankhif *ankhif = netif->state; - short i; - - int err = l4ankh_open(ankhif->config->shm_name, ankhif->config->bufsize); - assert(!err); - - err = l4ankh_prepare_send(ankhif->config->send_thread); - assert(!err); - - /* set MAC hardware address length */ - netif->hwaddr_len = ETHARP_HWADDR_LEN; - - /* set MAC hardware address */ - memcpy(netif->hwaddr, l4ankh_get_info()->mac, ETHARP_HWADDR_LEN); - printf("--> "); - for (i=0; i < ETHARP_HWADDR_LEN; ++i) { - printf("%02X", netif->hwaddr[i]); - if (i < 5) printf(":"); - } - printf(" <--\n"); - - /* maximum transfer unit */ - netif->mtu = 1500; - - /* device capabilities */ - /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */ - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP; - - /* Do whatever else is needed to initialize interface. */ -} - -/** - * This function should do the actual transmission of the packet. The packet is - * contained in the pbuf that is passed to the function. This pbuf - * might be chained. - * - * @param netif the lwip network interface structure for this ankhif - * @param p the MAC packet to send (e.g. IP packet including MAC addresses and type) - * @return ERR_OK if the packet could be sent - * an err_t value if the packet couldn't be sent - * - * @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to - * strange results. You might consider waiting for space in the DMA queue - * to become availale since the stack doesn't retry to send a packet - * dropped because of memory failure (except for the TCP timers). - */ - -static err_t -low_level_output(struct netif *netif, struct pbuf *p) -{ - struct ankhif *ankhif __attribute__((unused)) = netif->state; - struct pbuf *q = NULL; - -// XXX initiate transfer(); - -#if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ -#endif - -#if 0 - if (p) { - printf("%s, %p %d ... ", __func__, p->payload, p->len); - __hexdump(p->payload, p->len < 12 ? p->len : 12); - } - else { - printf("send with NULL workload?\n"); - enter_kdebug(); - } -#endif - - for(q = p; q != NULL; q = q->next) { - /* Send the data from the pbuf to the interface, one pbuf at a - time. The size of the data in each pbuf is kept in the ->len - variable. */ - int x = l4ankh_send(q->payload, q->len, 1); - if (x) - printf(" ankh_send: %d\n", x); - } - -#if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ -#endif - - LINK_STATS_INC(link.xmit); - - return ERR_OK; -} - -/** - * Should allocate a pbuf and transfer the bytes of the incoming - * packet from the interface into the pbuf. - * - * @param netif the lwip network interface structure for this ankhif - * @return a pbuf filled with the received packet (including MAC header) - * NULL on memory error - */ -static struct pbuf * -low_level_input(struct netif *netif) -{ - struct ankhif *ankhif __attribute__((unused)) = netif->state; - struct pbuf *p; - int len; - l4shmc_ringbuf_t *rb = l4ankh_get_recvbuf(); - - /* Obtain the size of the packet and put it into the "len" - variable. */ - len = l4shmc_rb_receiver_read_next_size(L4SHMC_RINGBUF_HEAD(rb)); - if (len <= 0) - return NULL; - -#if ETH_PAD_SIZE - len += ETH_PAD_SIZE; /* allow room for Ethernet padding */ -#endif - - /* we allocate a buffer for the whole packet */ - p = pbuf_alloc(PBUF_RAW, len, PBUF_RAM); - - if (p != NULL) { - -#if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ -#endif - - /* Read enough bytes to fill this pbuf in the chain. The - * available data in the pbuf is given by the p->len - * variable. */ - assert(p->len == len); - int err = l4shmc_rb_receiver_copy_out(L4SHMC_RINGBUF_HEAD(rb), p->payload, (unsigned*)&p->len); -#if 0 - printf("Incoming %p: ", p); __hexdump(p->payload, 12); -#endif - if (err) { /* Should not happen! */ - printf("ERROR: l4shmc_rb_copy_out %d\n", err); - printf("p @ %p, len %d\n", p, p->len); - enter_kdebug(); - return NULL; - } - -#if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ -#endif - - LINK_STATS_INC(link.recv); - } else { - // XXX drop packet(); - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.drop); - } - - return p; -} - -static inline char *type_to_string(unsigned type) -{ - switch(type) { - case ETHTYPE_IP: - return "IP"; - case ETHTYPE_ARP: - return "ARP"; - case ETHTYPE_PPPOE: - return "PPPoE"; - } - return "unknown"; -} - - -/** - * This function should be called when a packet is ready to be read - * from the interface. It uses the function low_level_input() that - * should handle the actual reception of bytes from the network - * interface. Then the type of the received packet is determined and - * the appropriate input function is called. - * - * @param netif the lwip network interface structure for this ankhif - */ -static void -ankhif_input(struct netif *netif) -{ - struct ankhif *ankhif; - struct eth_hdr *ethhdr; - struct pbuf *p; - int x; - - ankhif = netif->state; - - /* move received packet into a new pbuf */ - p = low_level_input(netif); - /* no packet could be read, silently ignore this */ - if (p == NULL) return; - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - - switch (htons(ethhdr->type)) { - /* IP or ARP packet? */ - case ETHTYPE_IP: - case ETHTYPE_ARP: -#if PPPOE_SUPPORT - /* PPPoE packet? */ - case ETHTYPE_PPPOEDISC: - case ETHTYPE_PPPOE: -#endif /* PPPOE_SUPPORT */ - /* full packet send to tcpip_thread to process */ - x = netif->input(p, netif); - if (x!=ERR_OK) - { LWIP_DEBUGF(NETIF_DEBUG, ("ankhif_input: IP input error\n")); - pbuf_free(p); - p = NULL; - } - break; - - default: - printf("unknown ethtype %lx\n", htons(ethhdr->type)); - pbuf_free(p); - p = NULL; - break; - } -} - -/** - * Should be called at the beginning of the program to set up the - * network interface. It calls the function low_level_init() to do the - * actual setup of the hardware. - * - * This function should be passed as a parameter to netif_add(). - * - * @param netif the lwip network interface structure for this ankhif - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - * any other err_t on error - */ -err_t ankhif_init(struct netif *netif); -err_t ankhif_init(struct netif *netif) -{ - struct ankhif *ankhif; - - LWIP_ASSERT("netif != NULL", (netif != NULL)); - - ankhif = mem_malloc(sizeof(struct ankhif)); - if (ankhif == NULL) { - LWIP_DEBUGF(NETIF_DEBUG, ("ankhif_init: out of memory\n")); - return ERR_MEM; - } - ankhif->config = netif->state; - -#if LWIP_NETIF_HOSTNAME - /* Initialize interface hostname */ - netif->hostname = "lwip"; -#endif /* LWIP_NETIF_HOSTNAME */ - - /* - * Initialize the snmp variables and counters inside the struct netif. - * The last argument should be replaced with your link speed, in units - * of bits per second. - */ - NETIF_INIT_SNMP(netif, snmp_ifType_ethernet_csmacd, 100000000); - - netif->state = ankhif; - netif->name[0] = IFNAME0; - netif->name[1] = IFNAME1; - /* We directly use etharp_output() here to save a function call. - * You can instead declare your own function an call etharp_output() - * from it if you have to do some checks before sending (e.g. if link - * is available...) */ - netif->output = etharp_output; - netif->linkoutput = low_level_output; - - ankhif->ethaddr = (struct eth_addr *)&(netif->hwaddr[0]); - - /* initialize the hardware */ - low_level_init(netif); - - int err = pthread_create(&ankhif->recv_thread, NULL, ankhif_recv_fn, netif); - assert(!err); - - return ERR_OK; -} - -/****************************** - * Client initialization code * - ******************************/ -#define DEBUG_L4LWIP_INIT 0 - -// default configuration -static ankh_config_info cfg = { 2048, L4_INVALID_CAP, - L4_INVALID_CAP, "" }; -// default interface -struct netif ankh_netif; -static ip_addr_t ipaddr, netmask, gw; - -static int try_l4re_option(int argc, char **argv, unsigned idx) -{ - int remove = 0; - - if (strcmp(argv[idx], "--shm") == 0) { - snprintf(cfg.shm_name, CFG_SHM_NAME_SIZE, "%s", argv[idx+1]); - remove = 2; - } - if (strcmp(argv[idx], "--bufsize") == 0) { - cfg.bufsize = atoi(argv[idx+1]); - remove = 2; - } - - memcpy(&argv[idx], &argv[idx+remove], (argc-idx-remove) * sizeof(char*)); - return remove; -} - - -int l4_lwip_init(int *argc, char **argv) -{ - int i = 0; - -#if DEBUG_L4LWIP_INIT - printf("Arguments: %d\n", *argc); - printf("Command line: \n"); -#endif - - while (i < *argc) { -#if DEBUG_L4LWIP_INIT - printf(" %d %s\n", i, argv[i]); -#endif - unsigned removed = try_l4re_option(*argc, argv, i); - if (removed) - *argc -= removed; - else - ++i; - } -#if DEBUG_L4LWIP_INIT - printf("parsed args. argc is now: %d\n", *argc); - printf("Initializing Ankh\n"); -#endif - - cfg.send_thread = pthread_getl4cap(pthread_self()); - l4ankh_init(); - - tcpip_init(NULL, NULL); - - netif_add(&ankh_netif, &ipaddr, &netmask, &gw, &cfg, - ankhif_init, ethernet_input); - netif_set_default(&ankh_netif); - -#if DEBUG_L4LWIP_INIT - printf("dhcp start...\n"); -#endif - dhcp_start(&ankh_netif); - while(!netif_is_up(&ankh_netif)) { -#if DEBUG_L4LWIP_INIT - //printf("dhcp pending\n"); -#endif - l4_sleep(1000); - } - printf("IP: "); print_ip(&ankh_netif.ip_addr); printf("\n"); - printf("MASK: "); print_ip(&ankh_netif.netmask); printf("\n"); - printf("GW: "); print_ip(&ankh_netif.gw); printf("\n"); - - return 0; -} diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/cc.h b/l4/pkg/ankh/lib/lwip/lib/arch/cc.h deleted file mode 100644 index 00d5b17a2..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/arch/cc.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __ARCH_CC_H__ -#define __ARCH_CC_H__ - -/* Include some files for defining library routines */ -#include -#include -#include -#include - -/* ------------ 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; -typedef signed char s8_t; -typedef unsigned short u16_t; -typedef signed short s16_t; -typedef unsigned int u32_t; -typedef signed int s32_t; - -typedef unsigned long mem_ptr_t; - -/* Define (sn)printf formatters for these lwIP types */ -#define X8_F "02x" -#define U16_F "hu" -#define S16_F "hd" -#define X16_F "hx" -#define U32_F "u" -#define S32_F "d" -#define X32_F "x" - -/* If only we could use C99 and get %zu */ -#if defined(__x86_64__) -#define SZT_F "lu" -#else -#define SZT_F "u" -#endif - - -/* Compiler hints for packing structures */ -#define PACK_STRUCT_FIELD(x) x -#define PACK_STRUCT_STRUCT __attribute__((packed)) -#define PACK_STRUCT_BEGIN -#define PACK_STRUCT_END - -/* prototypes for printf() and abort() */ -#include -#include -/* Plaform specific diagnostic output */ -#define LWIP_PLATFORM_DIAG(x) do {printf x;} while(0) - -#define LWIP_PLATFORM_ASSERT(x) do {printf("Assertion \"%s\" failed at line %d in %s\n", \ - x, __LINE__, __FILE__); fflush(NULL); abort();} while(0) - -// add dns error codes even though we use errno.h from our -// libC. These codes are missing from there. -#define ENSROK 0 /* DNS server returned answer with no data */ -#define ENSRNODATA 160 /* DNS server returned answer with no data */ -#define ENSRFORMERR 161 /* DNS server claims query was misformatted */ -#define ENSRSERVFAIL 162 /* DNS server returned general failure */ -#define ENSRNOTFOUND 163 /* Domain name not found */ -#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */ -#define ENSRREFUSED 165 /* DNS server refused query */ -#define ENSRBADQUERY 166 /* Misformatted DNS query */ -#define ENSRBADNAME 167 /* Misformatted domain name */ -#define ENSRBADFAMILY 168 /* Unsupported address family */ -#define ENSRBADRESP 169 /* Misformatted DNS reply */ -#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */ -#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */ -#define ENSROF 172 /* End of file */ -#define ENSRFILE 173 /* Error reading file */ -#define ENSRNOMEM 174 /* Out of memory */ -#define ENSRDESTRUCTION 175 /* Application terminated lookup */ -#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */ -#define ENSRCNAMELOOP 177 /* Domain name is too long */ - -#define LWIP_RAND() ((u32_t)rand()) - -#endif /* __ARCH_CC_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/perf.c b/l4/pkg/ankh/lib/lwip/lib/arch/perf.c deleted file mode 100644 index bed4614a9..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/arch/perf.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "arch/perf.h" - -#include - -static FILE *f; - -void -perf_print(unsigned long c1l, unsigned long c1h, - unsigned long c2l, unsigned long c2h, - char *key) -{ - unsigned long sub_ms, sub_ls; - - sub_ms = c2h - c1h; - sub_ls = c2l - c1l; - if (c2l < c1l) sub_ms--; - fprintf(f, "%s: %.8lu%.8lu\n", key, sub_ms, sub_ls); - fflush(NULL); -} - -void -perf_print_times(struct tms *start, struct tms *end, char *key) -{ - fprintf(f, "%s: %lu\n", key, end->tms_stime - start->tms_stime); - fflush(NULL); -} - -void -perf_init(char *fname) -{ - f = fopen(fname, "w"); -} - diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/perf.h b/l4/pkg/ankh/lib/lwip/lib/arch/perf.h deleted file mode 100644 index 9fbcf600e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/arch/perf.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __ARCH_PERF_H__ -#define __ARCH_PERF_H__ - -#include - -#ifdef PERF -#define PERF_START { \ - unsigned long __c1l, __c1h, __c2l, __c2h; \ - __asm__(".byte 0x0f, 0x31" : "=a" (__c1l), "=d" (__c1h)) -#define PERF_STOP(x) __asm__(".byte 0x0f, 0x31" : "=a" (__c2l), "=d" (__c2h)); \ - perf_print(__c1l, __c1h, __c2l, __c2h, x);} - -/*#define PERF_START do { \ - struct tms __perf_start, __perf_end; \ - times(&__perf_start) -#define PERF_STOP(x) times(&__perf_end); \ - perf_print_times(&__perf_start, &__perf_end, x);\ - } while(0)*/ -#else /* PERF */ -#define PERF_START /* null definition */ -#define PERF_STOP(x) /* null definition */ -#endif /* PERF */ - -void perf_print(unsigned long c1l, unsigned long c1h, - unsigned long c2l, unsigned long c2h, - char *key); - -void perf_print_times(struct tms *start, struct tms *end, char *key); - -void perf_init(char *fname); - -#endif /* __ARCH_PERF_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.c b/l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.c deleted file mode 100644 index fb16077c2..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.c +++ /dev/null @@ -1,598 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* - * Wed Apr 17 16:05:29 EDT 2002 (James Roth) - * - * - Fixed an unlikely sys_thread_new() race condition. - * - * - Made current_thread() work with threads which where - * not created with sys_thread_new(). This includes - * the main thread and threads made with pthread_create(). - * - * - Catch overflows where more than SYS_MBOX_SIZE messages - * are waiting to be read. The sys_mbox_post() routine - * will block until there is more room instead of just - * leaking messages. - */ -#include "lwip/debug.h" - -#include -#include -#include -#include -#include -#include - -#include "lwip/sys.h" -#include "lwip/opt.h" -#include "lwip/stats.h" - -#define UMAX(a, b) ((a) > (b) ? (a) : (b)) - -static struct timeval starttime; - -#if !NO_SYS - -static struct sys_thread *threads = NULL; -static pthread_mutex_t threads_mutex = PTHREAD_MUTEX_INITIALIZER; - -struct sys_mbox_msg { - struct sys_mbox_msg *next; - void *msg; -}; - -#define SYS_MBOX_SIZE 128 - -struct sys_mbox { - int first, last; - void *msgs[SYS_MBOX_SIZE]; - struct sys_sem *not_empty; - struct sys_sem *not_full; - struct sys_sem *mutex; - int wait_send; -}; - -struct sys_sem { - unsigned int c; - pthread_cond_t cond; - pthread_mutex_t mutex; -}; - -struct sys_thread { - struct sys_thread *next; - pthread_t pthread; -}; - -#if SYS_LIGHTWEIGHT_PROT -static pthread_mutex_t lwprot_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_t lwprot_thread = (pthread_t)0xDEAD; -static int lwprot_count = 0; -#endif /* SYS_LIGHTWEIGHT_PROT */ - -static struct sys_sem *sys_sem_new_internal(u8_t count); -static void sys_sem_free_internal(struct sys_sem *sem); - -static u32_t cond_wait(pthread_cond_t * cond, pthread_mutex_t * mutex, - u32_t timeout); - -/*-----------------------------------------------------------------------------------*/ -static struct sys_thread * -introduce_thread(pthread_t id) -{ - struct sys_thread *thread; - - thread = (struct sys_thread *)malloc(sizeof(struct sys_thread)); - - if (thread != NULL) { - pthread_mutex_lock(&threads_mutex); - thread->next = threads; - thread->pthread = id; - threads = thread; - pthread_mutex_unlock(&threads_mutex); - } - - return thread; -} -/*-----------------------------------------------------------------------------------*/ -sys_thread_t -sys_thread_new(const char *name, lwip_thread_fn function, void *arg, int stacksize, int prio) -{ - int code; - pthread_t tmp; - struct sys_thread *st = NULL; - LWIP_UNUSED_ARG(name); - LWIP_UNUSED_ARG(stacksize); - LWIP_UNUSED_ARG(prio); - - code = pthread_create(&tmp, - NULL, - (void *(*)(void *)) - function, - arg); - - if (0 == code) { - st = introduce_thread(tmp); - } - - if (NULL == st) { - LWIP_DEBUGF(SYS_DEBUG, ("sys_thread_new: pthread_create %d, st = 0x%lx", - code, (unsigned long)st)); - abort(); - } - return st; -} -/*-----------------------------------------------------------------------------------*/ -err_t -sys_mbox_new(struct sys_mbox **mb, int size) -{ - struct sys_mbox *mbox; - LWIP_UNUSED_ARG(size); - - mbox = (struct sys_mbox *)malloc(sizeof(struct sys_mbox)); - if (mbox == NULL) { - return ERR_MEM; - } - mbox->first = mbox->last = 0; - mbox->not_empty = sys_sem_new_internal(0); - mbox->not_full = sys_sem_new_internal(0); - mbox->mutex = sys_sem_new_internal(1); - mbox->wait_send = 0; - - SYS_STATS_INC_USED(mbox); - *mb = mbox; - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -void -sys_mbox_free(struct sys_mbox **mb) -{ - if ((mb != NULL) && (*mb != SYS_MBOX_NULL)) { - struct sys_mbox *mbox = *mb; - SYS_STATS_DEC(mbox.used); - sys_arch_sem_wait(&mbox->mutex, 0); - - sys_sem_free_internal(mbox->not_empty); - sys_sem_free_internal(mbox->not_full); - sys_sem_free_internal(mbox->mutex); - mbox->not_empty = mbox->not_full = mbox->mutex = NULL; - /* LWIP_DEBUGF("sys_mbox_free: mbox 0x%lx\n", mbox); */ - free(mbox); - } -} -/*-----------------------------------------------------------------------------------*/ -err_t -sys_mbox_trypost(struct sys_mbox **mb, void *msg) -{ - u8_t first; - struct sys_mbox *mbox; - LWIP_ASSERT("invalid mbox", (mb != NULL) && (*mb != NULL)); - mbox = *mb; - - sys_arch_sem_wait(&mbox->mutex, 0); - - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_trypost: mbox %p msg %p\n", - (void *)mbox, (void *)msg)); - - if ((mbox->last + 1) >= (mbox->first + SYS_MBOX_SIZE)) { - sys_sem_signal(&mbox->mutex); - return ERR_MEM; - } - - mbox->msgs[mbox->last % SYS_MBOX_SIZE] = msg; - - if (mbox->last == mbox->first) { - first = 1; - } else { - first = 0; - } - - mbox->last++; - - if (first) { - sys_sem_signal(&mbox->not_empty); - } - - sys_sem_signal(&mbox->mutex); - - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -void -sys_mbox_post(struct sys_mbox **mb, void *msg) -{ - u8_t first; - struct sys_mbox *mbox; - LWIP_ASSERT("invalid mbox", (mb != NULL) && (*mb != NULL)); - mbox = *mb; - - sys_arch_sem_wait(&mbox->mutex, 0); - - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_post: mbox %p msg %p\n", (void *)mbox, (void *)msg)); - - while ((mbox->last + 1) >= (mbox->first + SYS_MBOX_SIZE)) { - mbox->wait_send++; - sys_sem_signal(&mbox->mutex); - sys_arch_sem_wait(&mbox->not_full, 0); - sys_arch_sem_wait(&mbox->mutex, 0); - mbox->wait_send--; - } - - mbox->msgs[mbox->last % SYS_MBOX_SIZE] = msg; - - if (mbox->last == mbox->first) { - first = 1; - } else { - first = 0; - } - - mbox->last++; - - if (first) { - sys_sem_signal(&mbox->not_empty); - } - - sys_sem_signal(&mbox->mutex); -} -/*-----------------------------------------------------------------------------------*/ -u32_t -sys_arch_mbox_tryfetch(struct sys_mbox **mb, void **msg) -{ - struct sys_mbox *mbox; - LWIP_ASSERT("invalid mbox", (mb != NULL) && (*mb != NULL)); - mbox = *mb; - - sys_arch_sem_wait(&mbox->mutex, 0); - - if (mbox->first == mbox->last) { - sys_sem_signal(&mbox->mutex); - return SYS_MBOX_EMPTY; - } - - if (msg != NULL) { - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_tryfetch: mbox %p msg %p\n", (void *)mbox, *msg)); - *msg = mbox->msgs[mbox->first % SYS_MBOX_SIZE]; - } - else{ - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_tryfetch: mbox %p, null msg\n", (void *)mbox)); - } - - mbox->first++; - - if (mbox->wait_send) { - sys_sem_signal(&mbox->not_full); - } - - sys_sem_signal(&mbox->mutex); - - return 0; -} -/*-----------------------------------------------------------------------------------*/ -u32_t -sys_arch_mbox_fetch(struct sys_mbox **mb, void **msg, u32_t timeout) -{ - u32_t time_needed = 0; - struct sys_mbox *mbox; - LWIP_ASSERT("invalid mbox", (mb != NULL) && (*mb != NULL)); - mbox = *mb; - - /* The mutex lock is quick so we don't bother with the timeout - stuff here. */ - sys_arch_sem_wait(&mbox->mutex, 0); - - while (mbox->first == mbox->last) { - sys_sem_signal(&mbox->mutex); - - /* We block while waiting for a mail to arrive in the mailbox. We - must be prepared to timeout. */ - if (timeout != 0) { - time_needed = sys_arch_sem_wait(&mbox->not_empty, timeout); - - if (time_needed == SYS_ARCH_TIMEOUT) { - return SYS_ARCH_TIMEOUT; - } - } else { - sys_arch_sem_wait(&mbox->not_empty, 0); - } - - sys_arch_sem_wait(&mbox->mutex, 0); - } - - if (msg != NULL) { - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_fetch: mbox %p msg %p\n", (void *)mbox, *msg)); - *msg = mbox->msgs[mbox->first % SYS_MBOX_SIZE]; - } - else{ - LWIP_DEBUGF(SYS_DEBUG, ("sys_mbox_fetch: mbox %p, null msg\n", (void *)mbox)); - } - - mbox->first++; - - if (mbox->wait_send) { - sys_sem_signal(&mbox->not_full); - } - - sys_sem_signal(&mbox->mutex); - - return time_needed; -} -/*-----------------------------------------------------------------------------------*/ -static struct sys_sem * -sys_sem_new_internal(u8_t count) -{ - struct sys_sem *sem; - - sem = (struct sys_sem *)malloc(sizeof(struct sys_sem)); - if (sem != NULL) { - sem->c = count; - pthread_cond_init(&(sem->cond), NULL); - pthread_mutex_init(&(sem->mutex), NULL); - } - return sem; -} -/*-----------------------------------------------------------------------------------*/ -err_t -sys_sem_new(struct sys_sem **sem, u8_t count) -{ - SYS_STATS_INC_USED(sem); - *sem = sys_sem_new_internal(count); - if (*sem == NULL) { - return ERR_MEM; - } - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ -static u32_t -cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex, u32_t timeout) -{ - int tdiff; - unsigned long sec, usec; - struct timeval rtime1, rtime2; - struct timespec ts; - int retval; - - if (timeout > 0) { - /* Get a timestamp and add the timeout value. */ - gettimeofday(&rtime1, NULL); - sec = rtime1.tv_sec; - usec = rtime1.tv_usec; - usec += timeout % 1000 * 1000; - sec += (int)(timeout / 1000) + (int)(usec / 1000000); - usec = usec % 1000000; - ts.tv_nsec = usec * 1000; - ts.tv_sec = sec; - - retval = pthread_cond_timedwait(cond, mutex, &ts); - - if (retval == ETIMEDOUT) { - return SYS_ARCH_TIMEOUT; - } else { - /* Calculate for how long we waited for the cond. */ - gettimeofday(&rtime2, NULL); - tdiff = (rtime2.tv_sec - rtime1.tv_sec) * 1000 + - (rtime2.tv_usec - rtime1.tv_usec) / 1000; - - if (tdiff <= 0) { - return 0; - } - - return tdiff; - } - } else { - pthread_cond_wait(cond, mutex); - return SYS_ARCH_TIMEOUT; - } -} -/*-----------------------------------------------------------------------------------*/ -u32_t -sys_arch_sem_wait(struct sys_sem **s, u32_t timeout) -{ - u32_t time_needed = 0; - struct sys_sem *sem; - LWIP_ASSERT("invalid sem", (s != NULL) && (*s != NULL)); - sem = *s; - - pthread_mutex_lock(&(sem->mutex)); - while (sem->c <= 0) { - if (timeout > 0) { - time_needed = cond_wait(&(sem->cond), &(sem->mutex), timeout); - - if (time_needed == SYS_ARCH_TIMEOUT) { - pthread_mutex_unlock(&(sem->mutex)); - return SYS_ARCH_TIMEOUT; - } - /* pthread_mutex_unlock(&(sem->mutex)); - return time_needed; */ - } else { - cond_wait(&(sem->cond), &(sem->mutex), 0); - } - } - sem->c--; - pthread_mutex_unlock(&(sem->mutex)); - return time_needed; -} -/*-----------------------------------------------------------------------------------*/ -void -sys_sem_signal(struct sys_sem **s) -{ - struct sys_sem *sem; - LWIP_ASSERT("invalid sem", (s != NULL) && (*s != NULL)); - sem = *s; - - pthread_mutex_lock(&(sem->mutex)); - sem->c++; - - if (sem->c > 1) { - sem->c = 1; - } - - pthread_cond_broadcast(&(sem->cond)); - pthread_mutex_unlock(&(sem->mutex)); -} -/*-----------------------------------------------------------------------------------*/ -static void -sys_sem_free_internal(struct sys_sem *sem) -{ - pthread_cond_destroy(&(sem->cond)); - pthread_mutex_destroy(&(sem->mutex)); - free(sem); -} -/*-----------------------------------------------------------------------------------*/ -void -sys_sem_free(struct sys_sem **sem) -{ - if ((sem != NULL) && (*sem != SYS_SEM_NULL)) { - SYS_STATS_DEC(sem.used); - sys_sem_free_internal(*sem); - } -} -#endif /* !NO_SYS */ -/*-----------------------------------------------------------------------------------*/ -u32_t -sys_now(void) -{ - struct timeval tv; - u32_t sec, usec, msec; - gettimeofday(&tv, NULL); - - sec = (u32_t)(tv.tv_sec - starttime.tv_sec); - usec = (u32_t)(tv.tv_usec - starttime.tv_usec); - msec = sec * 1000 + usec / 1000; - - return msec; -} -/*-----------------------------------------------------------------------------------*/ -void -sys_init(void) -{ - gettimeofday(&starttime, NULL); -} -/*-----------------------------------------------------------------------------------*/ -#if SYS_LIGHTWEIGHT_PROT -/** sys_prot_t sys_arch_protect(void) - -This optional function does a "fast" critical region protection and returns -the previous protection level. This function is only called during very short -critical regions. An embedded system which supports ISR-based drivers might -want to implement this function by disabling interrupts. Task-based systems -might want to implement this by using a mutex or disabling tasking. This -function should support recursive calls from the same task or interrupt. In -other words, sys_arch_protect() could be called while already protected. In -that case the return value indicates that it is already protected. - -sys_arch_protect() is only required if your port is supporting an operating -system. -*/ -sys_prot_t -sys_arch_protect(void) -{ - /* Note that for the UNIX port, we are using a lightweight mutex, and our - * own counter (which is locked by the mutex). The return code is not actually - * used. */ - if (lwprot_thread != pthread_self()) - { - /* We are locking the mutex where it has not been locked before * - * or is being locked by another thread */ - pthread_mutex_lock(&lwprot_mutex); - lwprot_thread = pthread_self(); - lwprot_count = 1; - } - else - /* It is already locked by THIS thread */ - lwprot_count++; - return 0; -} -/*-----------------------------------------------------------------------------------*/ -/** void sys_arch_unprotect(sys_prot_t pval) - -This optional function does a "fast" set of critical region protection to the -value specified by pval. See the documentation for sys_arch_protect() for -more information. This function is only required if your port is supporting -an operating system. -*/ -void -sys_arch_unprotect(sys_prot_t pval) -{ - LWIP_UNUSED_ARG(pval); - if (lwprot_thread == pthread_self()) - { - if (--lwprot_count == 0) - { - lwprot_thread = (pthread_t) 0xDEAD; - pthread_mutex_unlock(&lwprot_mutex); - } - } -} -#endif /* SYS_LIGHTWEIGHT_PROT */ - -/*-----------------------------------------------------------------------------------*/ - -#ifndef MAX_JIFFY_OFFSET -#define MAX_JIFFY_OFFSET ((~0U >> 1)-1) -#endif - -#ifndef HZ -#define HZ 100 -#endif - -u32_t -sys_jiffies(void) -{ - struct timeval tv; - unsigned long sec; - long usec; - - gettimeofday(&tv,NULL); - sec = tv.tv_sec - starttime.tv_sec; - usec = tv.tv_usec; - - if (sec >= (MAX_JIFFY_OFFSET / HZ)) - return MAX_JIFFY_OFFSET; - usec += 1000000L / HZ - 1; - usec /= 1000000L / HZ; - return HZ * sec + usec; -} - -#if PPP_DEBUG - -#include - -void ppp_trace(int level, const char *format, ...) -{ - va_list args; - - (void)level; - va_start(args, format); - vprintf(format, args); - va_end(args); -} -#endif diff --git a/l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.h b/l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.h deleted file mode 100644 index 2beb5b37a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/arch/sys_arch.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include -#include - -#define SYS_MBOX_NULL NULL -#define SYS_SEM_NULL NULL - -typedef u32_t sys_prot_t; - -struct sys_sem; -typedef struct sys_sem * sys_sem_t; -#define sys_sem_valid(sem) (((sem) != NULL) && (*(sem) != NULL)) -#define sys_sem_set_invalid(sem) do { if((sem) != NULL) { *(sem) = NULL; }}while(0) - -/* let sys.h use binary semaphores for mutexes */ -#define LWIP_COMPAT_MUTEX 1 - -struct sys_mbox; -typedef struct sys_mbox *sys_mbox_t; -#define sys_mbox_valid(mbox) (((mbox) != NULL) && (*(mbox) != NULL)) -#define sys_mbox_set_invalid(mbox) do { if((mbox) != NULL) { *(mbox) = NULL; }}while(0) - -struct sys_thread; -typedef struct sys_thread * sys_thread_t; diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/CHANGELOG b/l4/pkg/ankh/lib/lwip/lib/contrib/CHANGELOG deleted file mode 100644 index a45765010..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/CHANGELOG +++ /dev/null @@ -1,2248 +0,0 @@ -FUTURE - - * TODO: The lwIP source code makes some invalid assumptions on processor - word-length, storage sizes and alignment. See the mailing lists for - problems with exoteric (/DSP) architectures showing these problems. - We still have to fix some of these issues neatly. - - * TODO: the PPP code is broken in a few ways. There are namespace - collisions on BSD systems and many assumptions on word-length - (sizeof(int)). In ppp.c an assumption is made on the availability of - a thread subsystem. Either PPP needs to be moved to contrib/ports/??? - or rearranged to be more generic. - -HISTORY - -(CVS HEAD) - - * [Enter new changes just after this line - do not remove this line] - - ++ New features: - - ++ Bugfixes: - - -(STABLE-1.3.1) - - ++ New features: - - 2009-05-10 Simon Goldschmidt - * opt.h, sockets.c, pbuf.c, netbuf.h, pbuf.h: task #7013: Added option - LWIP_NETIF_TX_SINGLE_PBUF to try to create transmit packets from only - one pbuf to help MACs that don't support scatter-gather DMA. - - 2009-05-09 Simon Goldschmidt - * icmp.h, icmp.c: Shrinked ICMP code, added option to NOT check icoming - ECHO pbuf for size (just use it): LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN - - 2009-05-05 Simon Goldschmidt, Jakob Stoklund Olesen - * ip.h, ip.c: Added ip_current_netif() & ip_current_header() to receive - extended info about the currently received packet. - - 2009-04-27 Simon Goldschmidt - * sys.h: Made SYS_LIGHTWEIGHT_PROT and sys_now() work with NO_SYS=1 - - 2009-04-25 Simon Goldschmidt - * mem.c, opt.h: Added option MEM_USE_POOLS_TRY_BIGGER_POOL to try the next - bigger malloc pool if one is empty (only usable with MEM_USE_POOLS). - - 2009-04-21 Simon Goldschmidt - * dns.c, init.c, dns.h, opt.h: task #7507, patch #6786: DNS supports static - hosts table. New configuration options DNS_LOCAL_HOSTLIST and - DNS_LOCAL_HOSTLIST_IS_DYNAMIC. Also, DNS_LOOKUP_LOCAL_EXTERN() can be defined - as an external function for lookup. - - 2009-04-15 Simon Goldschmidt - * dhcp.c: patch #6763: Global DHCP XID can be redefined to something more unique - - 2009-03-31 Kieran Mansley - * tcp.c, tcp_out.c, tcp_in.c, sys.h, tcp.h, opts.h: add support for - TCP timestamp options, off by default. Rework tcp_enqueue() to - take option flags rather than specified option data - - 2009-02-18 Simon Goldschmidt - * cc.h: Added printf formatter for size_t: SZT_F - - 2009-02-16 Simon Goldschmidt (patch by Rishi Khan) - * icmp.c, opt.h: patch #6539: (configurable) response to broadcast- and multicast - pings - - 2009-02-12 Simon Goldschmidt - * init.h: Added LWIP_VERSION to get the current version of the stack - - 2009-02-11 Simon Goldschmidt (suggested by Gottfried Spitaler) - * opt.h, memp.h/.c: added MEMP_MEM_MALLOC to use mem_malloc/mem_free instead - of the pool allocator (can save code size with MEM_LIBC_MALLOC if libc-malloc - is otherwise used) - - 2009-01-28 Jonathan Larmour (suggested by Bill Bauerbach) - * ipv4/inet_chksum.c, ipv4/lwip/inet_chksum.h: inet_chksum_pseudo_partial() - is only used by UDPLITE at present, so conditionalise it. - - 2008-12-03 Simon Goldschmidt (base on patch from Luca Ceresoli) - * autoip.c: checked in (slightly modified) patch #6683: Customizable AUTOIP - "seed" address. This should reduce AUTOIP conflicts if - LWIP_AUTOIP_CREATE_SEED_ADDR is overridden. - - 2008-10-02 Jonathan Larmour and Rishi Khan - * sockets.c (lwip_accept): Return EWOULDBLOCK if would block on non-blocking - socket. - - 2008-06-30 Simon Goldschmidt - * mem.c, opt.h, stats.h: fixed bug #21433: Calling mem_free/pbuf_free from - interrupt context isn't safe: LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT allows - mem_free to run between mem_malloc iterations. Added illegal counter for - mem stats. - - 2008-06-27 Simon Goldschmidt - * stats.h/.c, some other files: patch #6483: stats module improvement: - Added defines to display each module's statistic individually, added stats - defines for MEM, MEMP and SYS modules, removed (unused) rexmit counter. - - 2008-06-17 Simon Goldschmidt - * err.h: patch #6459: Made err_t overridable to use a more efficient type - (define LWIP_ERR_T in cc.h) - - 2008-06-17 Simon Goldschmidt - * slipif.c: patch #6480: Added a configuration option for slipif for symmetry - to loopif - - 2008-06-17 Simon Goldschmidt (patch by Luca Ceresoli) - * netif.c, loopif.c, ip.c, netif.h, loopif.h, opt.h: Checked in slightly - modified version of patch # 6370: Moved loopif code to netif.c so that - loopback traffic is supported on all netifs (all local IPs). - Added option to limit loopback packets for each netifs. - - - ++ Bugfixes: - 2009-08-12 Kieran Mansley - * tcp_in.c, tcp.c: Fix bug #27209: handle trimming of segments when - out of window or out of order properly - - 2009-08-12 Kieran Mansley - * tcp_in.c: Fix bug #27199: use snd_wl2 instead of snd_wl1 - - 2009-07-28 Simon Goldschmidt - * mem.h: Fixed bug #27105: "realloc() cannot replace mem_realloc()"s - - 2009-07-27 Kieran Mansley - * api.h api_msg.h netdb.h sockets.h: add missing #include directives - - 2009-07-09 Kieran Mansley - * api_msg.c, sockets.c, api.h: BUG23240 use signed counters for - recv_avail and don't increment counters until message successfully - sent to mbox - - 2009-06-25 Kieran Mansley - * api_msg.c api.h: BUG26722: initialise netconn write variables - in netconn_alloc - - 2009-06-25 Kieran Mansley - * tcp.h: BUG26879: set ret value in TCP_EVENT macros when function is not set - - 2009-06-25 Kieran Mansley - * tcp.c, tcp_in.c, tcp_out.c, tcp.h: BUG26301 and BUG26267: correct - simultaneous close behaviour, and make snd_nxt have the same meaning - as in the RFCs. - - 2009-05-12 Simon Goldschmidt - * etharp.h, etharp.c, netif.c: fixed bug #26507: "Gratuitous ARP depends on - arp_table / uses etharp_query" by adding etharp_gratuitous() - - 2009-05-12 Simon Goldschmidt - * ip.h, ip.c, igmp.c: bug #26487: Added ip_output_if_opt that can add IP options - to the IP header (used by igmp_ip_output_if) - - 2009-05-06 Simon Goldschmidt - * inet_chksum.c: On little endian architectures, use LWIP_PLATFORM_HTONS (if - defined) for SWAP_BYTES_IN_WORD to speed up checksumming. - - 2009-05-05 Simon Goldschmidt - * sockets.c: bug #26405: Prematurely released semaphore causes lwip_select() - to crash - - 2009-05-04 Simon Goldschmidt - * init.c: snmp was not initialized in lwip_init() - - 2009-05-04 Frédéric Bernon - * dhcp.c, netbios.c: Changes if IP_SOF_BROADCAST is enabled. - - 2009-05-03 Simon Goldschmidt - * tcp.h: bug #26349: Nagle algorithm doesn't send although segment is full - (and unsent->next == NULL) - - 2009-05-02 Simon Goldschmidt - * tcpip.h, tcpip.c: fixed tcpip_untimeout (does not need the time, broken after - 1.3.0 in CVS only) - fixes compilation of ppp_oe.c - - 2009-05-02 Simon Goldschmidt - * msg_in.c: fixed bug #25636: SNMPSET value is ignored for integer fields - - 2009-05-01 Simon Goldschmidt - * pap.c: bug #21680: PPP upap_rauthnak() drops legal NAK packets - - 2009-05-01 Simon Goldschmidt - * ppp.c: bug #24228: Memory corruption with PPP and DHCP - - 2009-04-29 Frédéric Bernon - * raw.c, udp.c, init.c, opt.h, ip.h, sockets.h: bug #26309: Implement the - SO(F)_BROADCAST filter for all API layers. Avoid the unindented reception - of broadcast packets even when this option wasn't set. Port maintainers - which want to enable this filter have to set IP_SOF_BROADCAST=1 in opt.h. - If you want this option also filter broadcast on recv operations, you also - have to set IP_SOF_BROADCAST_RECV=1 in opt.h. - - 2009-04-28 Simon Goldschmidt, Jakob Stoklund Olesen - * dhcp.c: patch #6721, bugs #25575, #25576: Some small fixes to DHCP and - DHCP/AUTOIP cooperation - - 2009-04-25 Simon Goldschmidt, Oleg Tyshev - * tcp_out.c: bug #24212: Deadlocked tcp_retransmit due to exceeded pcb->cwnd - Fixed by sorting the unsent and unacked queues (segments are inserted at the - right place in tcp_output and tcp_rexmit). - - 2009-04-25 Simon Goldschmidt - * memp.c, mem.c, memp.h, mem_std.h: bug #26213 "Problem with memory allocation - when debugging": memp_sizes contained the wrong sizes (including sanity - regions); memp pools for MEM_USE_POOLS were too small - - 2009-04-24 Simon Goldschmidt, Frédéric Bernon - * inet.c: patch #6765: Fix a small problem with the last changes (incorrect - behavior, with with ip address string not ended by a '\0', a space or a - end of line) - - 2009-04-19 Simon Goldschmidt - * rawapi.txt: Fixed bug #26069: Corrected documentation: if tcp_connect fails, - pcb->err is called, not pcb->connected (with an error code). - - 2009-04-19 Simon Goldschmidt - * tcp_out.c: Fixed bug #26236: "TCP options (timestamp) don't work with - no-copy-tcpwrite": deallocate option data, only concat segments with same flags - - 2009-04-19 Simon Goldschmidt - * tcp_out.c: Fixed bug #25094: "Zero-length pbuf" (options are now allocated - in the header pbuf, not the data pbuf) - - 2009-04-18 Simon Goldschmidt - * api_msg.c: fixed bug #25695: Segmentation fault in do_writemore() - - 2009-04-15 Simon Goldschmidt - * sockets.c: tried to fix bug #23559: lwip_recvfrom problem with tcp - - 2009-04-15 Simon Goldschmidt - * dhcp.c: task #9192: mem_free of dhcp->options_in and dhcp->msg_in - - 2009-04-15 Simon Goldschmidt - * ip.c, ip6.c, tcp_out.c, ip.h: patch #6808: Add a utility function - ip_hinted_output() (for smaller code mainly) - - 2009-04-15 Simon Goldschmidt - * inet.c: patch #6765: Supporting new line characters in inet_aton() - - 2009-04-15 Simon Goldschmidt - * dhcp.c: patch #6764: DHCP rebind and renew did not send hostnam option; - Converted constant OPTION_MAX_MSG_SIZE to netif->mtu, check if netif->mtu - is big enough in dhcp_start - - 2009-04-15 Simon Goldschmidt - * netbuf.c: bug #26027: netbuf_chain resulted in pbuf memory leak - - 2009-04-15 Simon Goldschmidt - * sockets.c, ppp.c: bug #25763: corrected 4 occurrences of SMEMCPY to MEMCPY - - 2009-04-15 Simon Goldschmidt - * sockets.c: bug #26121: set_errno can be overridden - - 2009-04-09 Kieran Mansley (patch from Luca Ceresoli ) - * init.c, opt.h: Patch#6774 TCP_QUEUE_OOSEQ breaks compilation when - LWIP_TCP==0 - - 2009-04-09 Kieran Mansley (patch from Roy Lee ) - * tcp.h: Patch#6802 Add do-while-clauses to those function like - macros in tcp.h - - 2009-03-31 Kieran Mansley - * tcp.c, tcp_in.c, tcp_out.c, tcp.h, opt.h: Rework the way window - updates are calculated and sent (BUG20515) - - * tcp_in.c: cope with SYN packets received during established states, - and retransmission of initial SYN. - - * tcp_out.c: set push bit correctly when tcp segments are merged - - 2009-03-27 Kieran Mansley - * tcp_out.c set window correctly on probes (correcting change made - yesterday) - - 2009-03-26 Kieran Mansley - * tcp.c, tcp_in.c, tcp.h: add tcp_abandon() to cope with dropping - connections where no reset required (bug #25622) - - * tcp_out.c: set TCP_ACK flag on keepalive and zero window probes - (bug #20779) - - 2009-02-18 Simon Goldschmidt (Jonathan Larmour and Bill Auerbach) - * ip_frag.c: patch #6528: the buffer used for IP_FRAG_USES_STATIC_BUF could be - too small depending on MEM_ALIGNMENT - - 2009-02-16 Simon Goldschmidt - * sockets.h/.c, api_*.h/.c: fixed arguments of socket functions to match the standard; - converted size argument of netconn_write to 'size_t' - - 2009-02-16 Simon Goldschmidt - * tcp.h, tcp.c: fixed bug #24440: TCP connection close problem on 64-bit host - by moving accept callback function pointer to TCP_PCB_COMMON - - 2009-02-12 Simon Goldschmidt - * dhcp.c: fixed bug #25345 (DHCPDECLINE is sent with "Maximum message size" - option) - - 2009-02-11 Simon Goldschmidt - * dhcp.c: fixed bug #24480 (releasing old udp_pdb and pbuf in dhcp_start) - - 2009-02-11 Simon Goldschmidt - * opt.h, api_msg.c: added configurable default valud for netconn->recv_bufsize: - RECV_BUFSIZE_DEFAULT (fixes bug #23726: pbuf pool exhaustion on slow recv()) - - 2009-02-10 Simon Goldschmidt - * tcp.c: fixed bug #25467: Listen backlog is not reset on timeout in SYN_RCVD: - Accepts_pending is decrease on a corresponding listen pcb when a connection - in state SYN_RCVD is close. - - 2009-01-28 Jonathan Larmour - * pbuf.c: reclaim pbufs from TCP out-of-sequence segments if we run - out of pool pbufs. - - 2008-12-19 Simon Goldschmidt - * many files: patch #6699: fixed some warnings on platform where sizeof(int) == 2 - - 2008-12-10 Tamas Somogyi, Frédéric Bernon - * sockets.c: fixed bug #25051: lwip_recvfrom problem with udp: fromaddr and - port uses deleted netbuf. - - 2008-10-18 Simon Goldschmidt - * tcp_in.c: fixed bug ##24596: Vulnerability on faulty TCP options length - in tcp_parseopt - - 2008-10-15 Simon Goldschmidt - * ip_frag.c: fixed bug #24517: IP reassembly crashes on unaligned IP headers - by packing the struct ip_reass_helper. - - 2008-10-03 David Woodhouse, Jonathan Larmour - * etharp.c (etharp_arp_input): Fix type aliasing problem copying ip address. - - 2008-10-02 Jonathan Larmour - * dns.c: Hard-code structure sizes, to avoid issues on some compilers where - padding is included. - - 2008-09-30 Jonathan Larmour - * sockets.c (lwip_accept): check addr isn't NULL. If it's valid, do an - assertion check that addrlen isn't NULL. - - 2008-09-30 Jonathan Larmour - * tcp.c: Fix bug #24227, wrong error message in tcp_bind. - - 2008-08-26 Simon Goldschmidt - * inet.h, ip_addr.h: fixed bug #24132: Cross-dependency between ip_addr.h and - inet.h -> moved declaration of struct in_addr from ip_addr.h to inet.h - - 2008-08-14 Simon Goldschmidt - * api_msg.c: fixed bug #23847: do_close_internal references freed memory (when - tcp_close returns != ERR_OK) - - 2008-07-08 Frédéric Bernon - * stats.h: Fix some build bugs introduced with patch #6483 (missing some parameters - in macros, mainly if MEM_STATS=0 and MEMP_STATS=0). - - 2008-06-24 Jonathan Larmour - * tcp_in.c: Fix for bug #23693 as suggested by Art R. Ensure cseg is unused - if tcp_seg_copy fails. - - 2008-06-17 Simon Goldschmidt - * inet_chksum.c: Checked in some ideas of patch #6460 (loop optimizations) - and created defines for swapping bytes and folding u32 to u16. - - 2008-05-30 Kieran Mansley - * tcp_in.c Remove redundant "if" statement, and use real rcv_wnd - rather than rcv_ann_wnd when deciding if packets are in-window. - Contributed by - - 2008-05-30 Kieran Mansley - * mem.h: Fix BUG#23254. Change macro definition of mem_* to allow - passing as function pointers when MEM_LIBC_MALLOC is defined. - - 2008-05-09 Jonathan Larmour - * err.h, err.c, sockets.c: Fix bug #23119: Reorder timeout error code to - stop it being treated as a fatal error. - - 2008-04-15 Simon Goldschmidt - * dhcp.c: fixed bug #22804: dhcp_stop doesn't clear NETIF_FLAG_DHCP - (flag now cleared) - - 2008-03-27 Simon Goldschmidt - * mem.c, tcpip.c, tcpip.h, opt.h: fixed bug #21433 (Calling mem_free/pbuf_free - from interrupt context isn't safe): set LWIP_USE_HEAP_FROM_INTERRUPT to 1 - in lwipopts.h or use pbuf_free_callback(p)/mem_free_callback(m) to free pbufs - or heap memory from interrupt context - - 2008-03-26 Simon Goldschmidt - * tcp_in.c, tcp.c: fixed bug #22249: division by zero could occur if a remote - host sent a zero mss as TCP option. - - -(STABLE-1.3.0) - - ++ New features: - - 2008-03-10 Jonathan Larmour - * inet_chksum.c: Allow choice of one of the sample algorithms to be - made from lwipopts.h. Fix comment on how to override LWIP_CHKSUM. - - 2008-01-22 Frédéric Bernon - * tcp.c, tcp_in.c, tcp.h, opt.h: Rename LWIP_CALCULATE_EFF_SEND_MSS in - TCP_CALCULATE_EFF_SEND_MSS to have coherent TCP options names. - - 2008-01-14 Frédéric Bernon - * rawapi.txt, api_msg.c, tcp.c, tcp_in.c, tcp.h: changes for task #7675 "Enable - to refuse data on a TCP_EVENT_RECV call". Important, behavior changes for the - tcp_recv callback (see rawapi.txt). - - 2008-01-14 Frédéric Bernon, Marc Chaland - * ip.c: Integrate patch #6369" ip_input : checking before realloc". - - 2008-01-12 Frédéric Bernon - * tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field - netconn::sem per netconn::op_completed like suggested for the task #7490 - "Add return value to sys_mbox_post". - - 2008-01-12 Frédéric Bernon - * api_msg.c, opt.h: replace DEFAULT_RECVMBOX_SIZE per DEFAULT_TCP_RECVMBOX_SIZE, - DEFAULT_UDP_RECVMBOX_SIZE and DEFAULT_RAW_RECVMBOX_SIZE (to optimize queues - sizes), like suggested for the task #7490 "Add return value to sys_mbox_post". - - 2008-01-10 Frédéric Bernon - * tcpip.h, tcpip.c: add tcpip_callback_with_block function for the task #7490 - "Add return value to sys_mbox_post". tcpip_callback is always defined as - "blocking" ("block" parameter = 1). - - 2008-01-10 Frédéric Bernon - * tcpip.h, tcpip.c, api.h, api_lib.c, api_msg.c, sockets.c: replace the field - netconn::mbox (sys_mbox_t) per netconn::sem (sys_sem_t) for the task #7490 - "Add return value to sys_mbox_post". - - 2008-01-05 Frédéric Bernon - * sys_arch.txt, api.h, api_lib.c, api_msg.h, api_msg.c, tcpip.c, sys.h, opt.h: - Introduce changes for task #7490 "Add return value to sys_mbox_post" with some - modifications in the sys_mbox api: sys_mbox_new take a "size" parameters which - indicate the number of pointers query by the mailbox. There is three defines - in opt.h to indicate sizes for tcpip::mbox, netconn::recvmbox, and for the - netconn::acceptmbox. Port maintainers, you can decide to just add this new - parameter in your implementation, but to ignore it to keep the previous behavior. - The new sys_mbox_trypost function return a value to know if the mailbox is - full or if the message is posted. Take a look to sys_arch.txt for more details. - This new function is used in tcpip_input (so, can be called in an interrupt - context since the function is not blocking), and in recv_udp and recv_raw. - - 2008-01-04 Frédéric Bernon, Simon Goldschmidt, Jonathan Larmour - * rawapi.txt, api.h, api_lib.c, api_msg.h, api_msg.c, sockets.c, tcp.h, tcp.c, - tcp_in.c, init.c, opt.h: rename backlog options with TCP_ prefix, limit the - "backlog" parameter in an u8_t, 0 is interpreted as "smallest queue", add - documentation in the rawapi.txt file. - - 2007-12-31 Kieran Mansley (based on patch from Per-Henrik Lundbolm) - * tcp.c, tcp_in.c, tcp_out.c, tcp.h: Add TCP persist timer - - 2007-12-31 Frédéric Bernon, Luca Ceresoli - * autoip.c, etharp.c: ip_addr.h: Integrate patch #6348: "Broadcast ARP packets - in autoip". The change in etharp_raw could be removed, since all calls to - etharp_raw use ethbroadcast for the "ethdst_addr" parameter. But it could be - wrong in the future. - - 2007-12-30 Frédéric Bernon, Tom Evans - * ip.c: Fix bug #21846 "LwIP doesn't appear to perform any IP Source Address - Filtering" reported by Tom Evans. - - 2007-12-21 Frédéric Bernon, Simon Goldschmidt, Jonathan Larmour - * tcp.h, opt.h, api.h, api_msg.h, tcp.c, tcp_in.c, api_lib.c, api_msg.c, - sockets.c, init.c: task #7252: Implement TCP listen backlog: Warning: raw API - applications have to call 'tcp_accepted(pcb)' in their accept callback to - keep accepting new connections. - - 2007-12-13 Frédéric Bernon - * api_msg.c, err.h, err.c, sockets.c, dns.c, dns.h: replace "enum dns_result" - by err_t type. Add a new err_t code "ERR_INPROGRESS". - - 2007-12-12 Frédéric Bernon - * dns.h, dns.c, opt.h: move DNS options to the "right" place. Most visibles - are the one which have ram usage. - - 2007-12-05 Frédéric Bernon - * netdb.c: add a LWIP_DNS_API_HOSTENT_STORAGE option to decide to use a static - set of variables (=0) or a local one (=1). In this last case, your port should - provide a function "struct hostent* sys_thread_hostent( struct hostent* h)" - which have to do a copy of "h" and return a pointer ont the "per-thread" copy. - - 2007-12-03 Simon Goldschmidt - * ip.c: ip_input: check if a packet is for inp first before checking all other - netifs on netif_list (speeds up packet receiving in most cases) - - 2007-11-30 Simon Goldschmidt - * udp.c, raw.c: task #7497: Sort lists (pcb, netif, ...) for faster access - UDP: move a (connected) pcb selected for input to the front of the list of - pcbs so that it is found faster next time. Same for RAW pcbs that have eaten - a packet. - - 2007-11-28 Simon Goldschmidt - * etharp.c, stats.c, stats.h, opt.h: Introduced ETHARP_STATS - - 2007-11-25 Simon Goldschmidt - * dhcp.c: dhcp_unfold_reply() uses pbuf_copy_partial instead of its own copy - algorithm. - - 2007-11-24 Simon Goldschmidt - * netdb.h, netdb.c, sockets.h/.c: Moved lwip_gethostbyname from sockets.c - to the new file netdb.c; included lwip_getaddrinfo. - - 2007-11-21 Simon Goldschmidt - * tcp.h, opt.h, tcp.c, tcp_in.c: implemented calculating the effective send-mss - based on the MTU of the netif used to send. Enabled by default. Disable by - setting LWIP_CALCULATE_EFF_SEND_MSS to 0. This fixes bug #21492. - - 2007-11-19 Frédéric Bernon - * api_msg.c, dns.h, dns.c: Implement DNS_DOES_NAME_CHECK option (check if name - received match the name query), implement DNS_USES_STATIC_BUF (the place where - copy dns payload to parse the response), return an error if there is no place - for a new query, and fix some minor problems. - - 2007-11-16 Simon Goldschmidt - * new files: ipv4/inet.c, ipv4/inet_chksum.c, ipv6/inet6.c - removed files: core/inet.c, core/inet6.c - Moved inet files into ipv4/ipv6 directory; splitted inet.c/inet.h into - inet and chksum part; changed includes in all lwIP files as appropriate - - 2007-11-16 Simon Goldschmidt - * api.h, api_msg.h, api_lib.c, api_msg.c, socket.h, socket.c: Added sequential - dns resolver function for netconn api (netconn_gethostbyname) and socket api - (gethostbyname/gethostbyname_r). - - 2007-11-15 Jim Pettinato, Frédéric Bernon - * opt.h, init.c, tcpip.c, dhcp.c, dns.h, dns.c: add DNS client for simple name - requests with RAW api interface. Initialization is done in lwip_init() with - build time options. DNS timer is added in tcpip_thread context. DHCP can set - DNS server ip addresses when options are received. You need to set LWIP_DNS=1 - in your lwipopts.h file (LWIP_DNS=0 in opt.h). DNS_DEBUG can be set to get - some traces with LWIP_DEBUGF. Sanity check have been added. There is a "todo" - list with points to improve. - - 2007-11-06 Simon Goldschmidt - * opt.h, mib2.c: Patch #6215: added ifAdminStatus write support (if explicitly - enabled by defining SNMP_SAFE_REQUESTS to 0); added code to check link status - for ifOperStatus if LWIP_NETIF_LINK_CALLBACK is defined. - - 2007-11-06 Simon Goldschmidt - * api.h, api_msg.h and dependent files: Task #7410: Removed the need to include - core header files in api.h (ip/tcp/udp/raw.h) to hide the internal - implementation from netconn api applications. - - 2007-11-03 Frédéric Bernon - * api.h, api_lib.c, api_msg.c, sockets.c, opt.h: add SO_RCVBUF option for UDP & - RAW netconn. You need to set LWIP_SO_RCVBUF=1 in your lwipopts.h (it's disabled - by default). Netconn API users can use the netconn_recv_bufsize macro to access - it. This is a first release which have to be improve for TCP. Note it used the - netconn::recv_avail which need to be more "thread-safe" (note there is already - the problem for FIONREAD with lwip_ioctl/ioctlsocket). - - 2007-11-01 Frédéric Bernon, Marc Chaland - * sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, tcp.h, tcp_out.c: - Integrate "patch #6250 : MSG_MORE flag for send". MSG_MORE is used at socket api - layer, NETCONN_MORE at netconn api layer, and TCP_WRITE_FLAG_MORE at raw api - layer. This option enable to delayed TCP PUSH flag on multiple "write" calls. - Note that previous "copy" parameter for "write" APIs is now called "apiflags". - - 2007-10-24 Frédéric Bernon - * api.h, api_lib.c, api_msg.c: Add macro API_EVENT in the same spirit than - TCP_EVENT_xxx macros to get a code more readable. It could also help to remove - some code (like we have talk in "patch #5919 : Create compile switch to remove - select code"), but it could be done later. - - 2007-10-08 Simon Goldschmidt - * many files: Changed initialization: many init functions are not needed any - more since we now rely on the compiler initializing global and static - variables to zero! - - 2007-10-06 Simon Goldschmidt - * ip_frag.c, memp.c, mib2.c, ip_frag.h, memp_std.h, opt.h: Changed IP_REASSEMBLY - to enqueue the received pbufs so that multiple packets can be reassembled - simultaneously and no static reassembly buffer is needed. - - 2007-10-05 Simon Goldschmidt - * tcpip.c, etharp.h, etharp.c: moved ethernet_input from tcpip.c to etharp.c so - all netifs (or ports) can use it. - - 2007-10-05 Frédéric Bernon - * netifapi.h, netifapi.c: add function netifapi_netif_set_default. Change the - common function to reduce a little bit the footprint (for all functions using - only the "netif" parameter). - - 2007-10-03 Frédéric Bernon - * netifapi.h, netifapi.c: add functions netifapi_netif_set_up, netifapi_netif_set_down, - netifapi_autoip_start and netifapi_autoip_stop. Use a common function to reduce - a little bit the footprint (for all functions using only the "netif" parameter). - - 2007-09-15 Frédéric Bernon - * udp.h, udp.c, sockets.c: Changes for "#20503 IGMP Improvement". Add IP_MULTICAST_IF - option in socket API, and a new field "multicast_ip" in "struct udp_pcb" (for - netconn and raw API users), only if LWIP_IGMP=1. Add getsockopt processing for - IP_MULTICAST_TTL and IP_MULTICAST_IF. - - 2007-09-10 Frédéric Bernon - * snmp.h, mib2.c: enable to remove SNMP timer (which consumne several cycles - even when it's not necessary). snmp_agent.txt tell to call snmp_inc_sysuptime() - each 10ms (but, it's intrusive if you use sys_timeout feature). Now, you can - decide to call snmp_add_sysuptime(100) each 1000ms (which is bigger "step", but - call to a lower frequency). Or, you can decide to not call snmp_inc_sysuptime() - or snmp_add_sysuptime(), and to define the SNMP_GET_SYSUPTIME(sysuptime) macro. - This one is undefined by default in mib2.c. SNMP_GET_SYSUPTIME is called inside - snmp_get_sysuptime(u32_t *value), and enable to change "sysuptime" value only - when it's queried (any direct call to "sysuptime" is changed by a call to - snmp_get_sysuptime). - - 2007-09-09 Frédéric Bernon, Bill Florac - * igmp.h, igmp.c, netif.h, netif.c, ip.c: To enable to have interfaces with IGMP, - and others without it, there is a new NETIF_FLAG_IGMP flag to set in netif->flags - if you want IGMP on an interface. igmp_stop() is now called inside netif_remove(). - igmp_report_groups() is now called inside netif_set_link_up() (need to have - LWIP_NETIF_LINK_CALLBACK=1) to resend reports once the link is up (avoid to wait - the next query message to receive the matching multicast streams). - - 2007-09-08 Frédéric Bernon - * sockets.c, ip.h, api.h, tcp.h: declare a "struct ip_pcb" which only contains - IP_PCB. Add in the netconn's "pcb" union a "struct ip_pcb *ip;" (no size change). - Use this new field to access to common pcb fields (ttl, tos, so_options, etc...). - Enable to access to these fields with LWIP_TCP=0. - - 2007-09-05 Frédéric Bernon - * udp.c, ipv4/icmp.c, ipv4/ip.c, ipv6/icmp.c, ipv6/ip6.c, ipv4/icmp.h, - ipv6/icmp.h, opt.h: Integrate "task #7272 : LWIP_ICMP option". The new option - LWIP_ICMP enable/disable ICMP module inside the IP stack (enable per default). - Be careful, disabling ICMP make your product non-compliant to RFC1122, but - help to reduce footprint, and to reduce "visibility" on the Internet. - - 2007-09-05 Frédéric Bernon, Bill Florac - * opt.h, sys.h, tcpip.c, slipif.c, ppp.c, sys_arch.txt: Change parameters list - for sys_thread_new (see "task #7252 : Create sys_thread_new_ex()"). Two new - parameters have to be provided: a task name, and a task stack size. For this - one, since it's platform dependant, you could define the best one for you in - your lwipopts.h. For port maintainers, you can just add these new parameters - in your sys_arch.c file, and but it's not mandatory, use them in your OS - specific functions. - - 2007-09-05 Frédéric Bernon - * inet.c, autoip.c, msg_in.c, msg_out.c, init.c: Move some build time checkings - inside init.c for task #7142 "Sanity check user-configurable values". - - 2007-09-04 Frédéric Bernon, Bill Florac - * igmp.h, igmp.c, memp_std.h, memp.c, init.c, opt.h: Replace mem_malloc call by - memp_malloc, and use a new MEMP_NUM_IGMP_GROUP option (see opt.h to define the - value). It will avoid potential fragmentation problems, use a counter to know - how many times a group is used on an netif, and free it when all applications - leave it. MEMP_NUM_IGMP_GROUP got 8 as default value (and init.c got a sanity - check if LWIP_IGMP!=0). - - 2007-09-03 Frédéric Bernon - * igmp.h, igmp.c, sockets.c, api_msg.c: Changes for "#20503 IGMP Improvement". - Initialize igmp_mac_filter to NULL in netif_add (this field should be set in - the netif's "init" function). Use the "imr_interface" field (for socket layer) - and/or the "interface" field (for netconn layer), for join/leave operations. - The igmp_join/leavegroup first parameter change from a netif to an ipaddr. - This field could be a netif's ipaddr, or "any" (same meaning than ip_addr_isany). - - 2007-08-30 Frédéric Bernon - * Add netbuf.h, netbuf.c, Change api.h, api_lib.c: #7249 "Split netbuf functions - from api/api_lib". Now netbuf API is independant of netconn, and can be used - with other API (application based on raw API, or future "socket2" API). Ports - maintainers just have to add src/api/netbuf.c in their makefile/projects. - - 2007-08-30 Frédéric Bernon, Jonathan Larmour - * init.c: Add first version of lwip_sanity_check for task #7142 "Sanity check - user-configurable values". - - 2007-08-29 Frédéric Bernon - * igmp.h, igmp.c, tcpip.c, init.c, netif.c: change igmp_init and add igmp_start. - igmp_start is call inside netif_add. Now, igmp initialization is in the same - spirit than the others modules. Modify some IGMP debug traces. - - 2007-08-29 Frédéric Bernon - * Add init.h, init.c, Change opt.h, tcpip.c: Task #7213 "Add a lwip_init function" - Add lwip_init function to regroup all modules initializations, and to provide - a place to add code for task #7142 "Sanity check user-configurable values". - Ports maintainers should remove direct initializations calls from their code, - and add init.c in their makefiles. Note that lwip_init() function is called - inside tcpip_init, but can also be used by raw api users since all calls are - disabled when matching options are disabled. Also note that their is new options - in opt.h, you should configure in your lwipopts.h (they are enabled per default). - - 2007-08-26 Marc Boucher - * api_msg.c: do_close_internal(): Reset the callbacks and arg (conn) to NULL - since they can under certain circumstances be called with an invalid conn - pointer after the connection has been closed (and conn has been freed). - - 2007-08-25 Frédéric Bernon (Artem Migaev's Patch) - * netif.h, netif.c: Integrate "patch #6163 : Function to check if link layer is up". - Add a netif_is_link_up() function if LWIP_NETIF_LINK_CALLBACK option is set. - - 2007-08-22 Frédéric Bernon - * netif.h, netif.c, opt.h: Rename LWIP_NETIF_CALLBACK in LWIP_NETIF_STATUS_CALLBACK - to be coherent with new LWIP_NETIF_LINK_CALLBACK option before next release. - - 2007-08-22 Frédéric Bernon - * tcpip.h, tcpip.c, ethernetif.c, opt.h: remove options ETHARP_TCPIP_INPUT & - ETHARP_TCPIP_ETHINPUT, now, only "ethinput" code is supported, even if the - name is tcpip_input (we keep the name of 1.2.0 function). - - 2007-08-17 Jared Grubb - * memp_std.h, memp.h, memp.c, mem.c, stats.c: (Task #7136) Centralize mempool - settings into new memp_std.h and optional user file lwippools.h. This adds - more dynamic mempools, and allows the user to create an arbitrary number of - mempools for mem_malloc. - - 2007-08-16 Marc Boucher - * api_msg.c: Initialize newconn->state to NETCONN_NONE in accept_function; - otherwise it was left to NETCONN_CLOSE and sent_tcp() could prematurely - close the connection. - - 2007-08-16 Marc Boucher - * sockets.c: lwip_accept(): check netconn_peer() error return. - - 2007-08-16 Marc Boucher - * mem.c, mem.h: Added mem_calloc(). - - 2007-08-16 Marc Boucher - * tcpip.c, tcpip.h memp.c, memp.h: Added distinct memp (MEMP_TCPIP_MSG_INPKT) - for input packets to prevent floods from consuming all of MEMP_TCPIP_MSG - and starving other message types. - Renamed MEMP_TCPIP_MSG to MEMP_TCPIP_MSG_API - - 2007-08-16 Marc Boucher - * pbuf.c, pbuf.h, etharp.c, tcp_in.c, sockets.c: Split pbuf flags in pbuf - type and flgs (later renamed to flags). - Use enum pbuf_flag as pbuf_type. Renumber PBUF_FLAG_*. - Improved lwip_recvfrom(). TCP push now propagated. - - 2007-08-16 Marc Boucher - * ethernetif.c, contrib/ports/various: ethbroadcast now a shared global - provided by etharp. - - 2007-08-16 Marc Boucher - * ppp_oe.c ppp_oe.h, auth.c chap.c fsm.c lcp.c ppp.c ppp.h, - etharp.c ethernetif.c, etharp.h, opt.h tcpip.h, tcpip.c: - Added PPPoE support and various PPP improvements. - - 2007-07-25 Simon Goldschmidt - * api_lib.c, ip_frag.c, pbuf.c, api.h, pbuf.h: Introduced pbuf_copy_partial, - making netbuf_copy_partial use this function. - - 2007-07-25 Simon Goldschmidt - * tcp_in.c: Fix bug #20506: Slow start / initial congestion window starts with - 2 * mss (instead of 1 * mss previously) to comply with some newer RFCs and - other stacks. - - 2007-07-13 Jared Grubb (integrated by Frédéric Bernon) - * opt.h, netif.h, netif.c, ethernetif.c: Add new configuration option to add - a link callback in the netif struct, and functions to handle it. Be carefull - for port maintainers to add the NETIF_FLAG_LINK_UP flag (like in ethernetif.c) - if you want to be sure to be compatible with future changes... - - 2007-06-30 Frédéric Bernon - * sockets.h, sockets.c: Implement MSG_PEEK flag for recv/recvfrom functions. - - 2007-06-21 Simon Goldschmidt - * etharp.h, etharp.c: Combined etharp_request with etharp_raw for both - LWIP_AUTOIP =0 and =1 to remove redundant code. - - 2007-06-21 Simon Goldschmidt - * mem.c, memp.c, mem.h, memp.h, opt.h: task #6863: Introduced the option - MEM_USE_POOLS to use 4 pools with different sized elements instead of a - heap. This both prevents memory fragmentation and gives a higher speed - at the cost of more memory consumption. Turned off by default. - - 2007-06-21 Simon Goldschmidt - * api_lib.c, api_msg.c, api.h, api_msg.h: Converted the length argument of - netconn_write (and therefore also api_msg_msg.msg.w.len) from u16_t into - int to be able to send a bigger buffer than 64K with one time (mainly - used from lwip_send). - - 2007-06-21 Simon Goldschmidt - * tcp.h, api_msg.c: Moved the nagle algorithm from netconn_write/do_write - into a define (tcp_output_nagle) in tcp.h to provide it to raw api users, too. - - 2007-06-21 Simon Goldschmidt - * api.h, api_lib.c, api_msg.c: Fixed bug #20021: Moved sendbuf-processing in - netconn_write from api_lib.c to api_msg.c to also prevent multiple context- - changes on low memory or empty send-buffer. - - 2007-06-18 Simon Goldschmidt - * etharp.c, etharp.h: Changed etharp to use a defined hardware address length - of 6 to avoid loading netif->hwaddr_len every time (since this file is only - used for ethernet and struct eth_addr already had a defined length of 6). - - 2007-06-17 Simon Goldschmidt - * sockets.c, sockets.h: Implemented socket options SO_NO_CHECK for UDP sockets - to disable UDP checksum generation on transmit. - - 2007-06-13 Frédéric Bernon, Simon Goldschmidt - * debug.h, api_msg.c: change LWIP_ERROR to use it to check errors like invalid - pointers or parameters, and let the possibility to redefined it in cc.h. Use - this macro to check "conn" parameter in api_msg.c functions. - - 2007-06-11 Simon Goldschmidt - * sockets.c, sockets.h: Added UDP lite support for sockets - - 2007-06-10 Simon Goldschmidt - * udp.h, opt.h, api_msg.c, ip.c, udp.c: Included switch LWIP_UDPLITE (enabled - by default) to switch off UDP-Lite support if not needed (reduces udp.c code - size) - - 2007-06-09 Dominik Spies (integrated by Frédéric Bernon) - * autoip.h, autoip.c, dhcp.h, dhcp.c, netif.h, netif.c, etharp.h, etharp.c, opt.h: - AutoIP implementation available for IPv4, with new options LWIP_AUTOIP and - LWIP_DHCP_AUTOIP_COOP if you want to cooperate with DHCP. Some tips to adapt - (see TODO mark in the source code). - - 2007-06-09 Simon Goldschmidt - * etharp.h, etharp.c, ethernetif.c: Modified order of parameters for - etharp_output() to match netif->output so etharp_output() can be used - directly as netif->output to save one function call. - - 2007-06-08 Simon Goldschmidt - * netif.h, ethernetif.c, slipif.c, loopif.c: Added define - NETIF_INIT_SNMP(netif, type, speed) to initialize per-netif snmp variables, - added initialization of those to ethernetif, slipif and loopif. - - 2007-05-18 Simon Goldschmidt - * opt.h, ip_frag.c, ip_frag.h, ip.c: Added option IP_FRAG_USES_STATIC_BUF - (defaulting to off for now) that can be set to 0 to send fragmented - packets by passing PBUF_REFs down the stack. - - 2007-05-23 Frédéric Bernon - * api_lib.c: Implement SO_RCVTIMEO for accept and recv on TCP - connections, such present in patch #5959. - - 2007-05-23 Frédéric Bernon - * api.h, api_lib.c, api_msg.c, sockets.c: group the different NETCONN_UDPxxx - code in only one part... - - 2007-05-18 Simon Goldschmidt - * opt.h, memp.h, memp.c: Added option MEMP_OVERFLOW_CHECK to check for memp - elements to overflow. This is achieved by adding some bytes before and after - each pool element (increasing their size, of course), filling them with a - prominent value and checking them on freeing the element. - Set it to 2 to also check every element in every pool each time memp_malloc() - or memp_free() is called (slower but more helpful). - - 2007-05-10 Simon Goldschmidt - * opt.h, memp.h, memp.c, pbuf.c (see task #6831): use a new memp pool for - PBUF_POOL pbufs instead of the old pool implementation in pbuf.c to reduce - code size. - - 2007-05-11 Frédéric Bernon - * sockets.c, api_lib.c, api_msg.h, api_msg.c, netifapi.h, netifapi.c, tcpip.c: - Include a function pointer instead of a table index in the message to reduce - footprint. Disable some part of lwip_send and lwip_sendto if some options are - not set (LWIP_TCP, LWIP_UDP, LWIP_RAW). - - 2007-05-10 Simon Goldschmidt - * *.h (except netif/ppp/*.h): Included patch #5448: include '#ifdef __cplusplus - \ extern "C" {' in all header files. Now you can write your application using - the lwIP stack in C++ and simply #include the core files. Note I have left - out the netif/ppp/*h header files for now, since I don't know which files are - included by applications and which are for internal use only. - - 2007-05-09 Simon Goldschmidt - * opt.h, *.c/*.h: Included patch #5920: Create define to override C-library - memcpy. 2 Defines are created: MEMCPY() for normal memcpy, SMEMCPY() for - situations where some compilers might inline the copy and save a function - call. Also replaced all calls to memcpy() with calls to (S)MEMCPY(). - - 2007-05-08 Simon Goldschmidt - * mem.h: If MEM_LIBC_MALLOC==1, allow the defines (e.g. mem_malloc() -> malloc()) - to be overriden in case the C-library malloc implementation is not protected - against concurrent access. - - 2007-05-04 Simon Goldschmidt (Atte Kojo) - * etharp.c: Introduced fast one-entry-cache to speed up ARP lookup when sending - multiple packets to the same host. - - 2007-05-04 Frédéric Bernon, Jonathan Larmour - * sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fix bug #19162 "lwip_sento: a possible - to corrupt remote addr/port connection state". Reduce problems "not enought memory" with - netbuf (if we receive lot of datagrams). Improve lwip_sendto (only one exchange between - sockets api and api_msg which run in tcpip_thread context). Add netconn_sento function. - Warning, if you directly access to "fromaddr" & "fromport" field from netbuf struct, - these fields are now renamed "addr" & "port". - - 2007-04-11 Jonathan Larmour - * sys.h, api_lib.c: Provide new sys_mbox_tryfetch function. Require ports to provide new - sys_arch_mbox_tryfetch function to get a message if one is there, otherwise return - with SYS_MBOX_EMPTY. sys_arch_mbox_tryfetch can be implemented as a function-like macro - by the port in sys_arch.h if desired. - - 2007-04-06 Frédéric Bernon, Simon Goldschmidt - * opt.h, tcpip.h, tcpip.c, netifapi.h, netifapi.c: New configuration option LWIP_NETIF_API - allow to use thread-safe functions to add/remove netif in list, and to start/stop dhcp - clients, using new functions from netifapi.h. Disable as default (no port change to do). - - 2007-04-05 Frédéric Bernon - * sockets.c: remplace ENOBUFS errors on alloc_socket by ENFILE to be more BSD compliant. - - 2007-04-04 Simon Goldschmidt - * arch.h, api_msg.c, dhcp.c, msg_in.c, sockets.c: Introduced #define LWIP_UNUSED_ARG(x) - use this for and architecture-independent form to tell the compiler you intentionally - are not using this variable. Can be overriden in cc.h. - - 2007-03-28 Frédéric Bernon - * opt.h, netif.h, dhcp.h, dhcp.c: New configuration option LWIP_NETIF_HOSTNAME allow to - define a hostname in netif struct (this is just a pointer, so, you can use a hardcoded - string, point on one of your's ethernetif field, or alloc a string you will free yourself). - It will be used by DHCP to register a client hostname, but can also be use when you call - snmp_set_sysname. - - 2007-03-28 Frédéric Bernon - * netif.h, netif.c: A new NETIF_FLAG_ETHARP flag is defined in netif.h, to allow to - initialize a network interface's flag with. It tell this interface is an ethernet - device, and we can use ARP with it to do a "gratuitous ARP" (RFC 3220 "IP Mobility - Support for IPv4" section 4.6) when interface is "up" with netif_set_up(). - - 2007-03-26 Frédéric Bernon, Jonathan Larmour - * opt.h, tcpip.c: New configuration option LWIP_ARP allow to disable ARP init at build - time if you only use PPP or SLIP. The default is enable. Note we don't have to call - etharp_init in your port's initilization sequence if you use tcpip.c, because this call - is done in tcpip_init function. - - 2007-03-22 Frédéric Bernon - * stats.h, stats.c, msg_in.c: Stats counters can be change to u32_t if necessary with the - new option LWIP_STATS_LARGE. If you need this option, define LWIP_STATS_LARGE to 1 in - your lwipopts.h. More, unused counters are not defined in the stats structs, and not - display by stats_display(). Note that some options (SYS_STATS and RAW_STATS) are defined - but never used. Fix msg_in.c with the correct #if test for a stat display. - - 2007-03-21 Kieran Mansley - * netif.c, netif.h: Apply patch#4197 with some changes (originator: rireland@hmgsl.com). - Provides callback on netif up/down state change. - - 2007-03-11 Frédéric Bernon, Mace Gael, Steve Reynolds - * sockets.h, sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c, igmp.h, igmp.c, - ip.c, netif.h, tcpip.c, opt.h: - New configuration option LWIP_IGMP to enable IGMP processing. Based on only one - filter per all network interfaces. Declare a new function in netif to enable to - control the MAC filter (to reduce lwIP traffic processing). - - 2007-03-11 Frédéric Bernon - * tcp.h, tcp.c, sockets.c, tcp_out.c, tcp_in.c, opt.h: Keepalive values can - be configured at run time with LWIP_TCP_KEEPALIVE, but don't change this - unless you know what you're doing (default are RFC1122 compliant). Note - that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set in seconds. - - 2007-03-08 Frédéric Bernon - * tcp.h: Keepalive values can be configured at compile time, but don't change - this unless you know what you're doing (default are RFC1122 compliant). - - 2007-03-08 Frédéric Bernon - * sockets.c, api.h, api_lib.c, tcpip.c, sys.h, sys.c, err.c, opt.h: - Implement LWIP_SO_RCVTIMEO configuration option to enable/disable SO_RCVTIMEO - on UDP sockets/netconn. - - 2007-03-08 Simon Goldschmidt - * snmp_msg.h, msg_in.c: SNMP UDP ports can be configured at compile time. - - 2007-03-06 Frédéric Bernon - * api.h, api_lib.c, sockets.h, sockets.c, tcpip.c, sys.h, sys.c, err.h: - Implement SO_RCVTIMEO on UDP sockets/netconn. - - 2007-02-28 Kieran Mansley (based on patch from Simon Goldschmidt) - * api_lib.c, tcpip.c, memp.c, memp.h: make API msg structs allocated - on the stack and remove the API msg type from memp - - 2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt) - * sockets.h, sockets.c: Move socket initialization to new - lwip_socket_init() function. - NOTE: this changes the API with ports. Ports will have to be - updated to call lwip_socket_init() now. - - 2007-02-26 Jonathan Larmour (based on patch from Simon Goldschmidt) - * api_lib.c: Use memcpy in netbuf_copy_partial. - - - ++ Bug fixes: - - 2008-03-17 Frédéric Bernon, Ed Kerekes - * igmp.h, igmp.c: Fix bug #22613 "IGMP iphdr problem" (could have - some problems to fill the IP header on some targets, use now the - ip.h macros to do it). - - 2008-03-13 Frédéric Bernon - * sockets.c: Fix bug #22435 "lwip_recvfrom with TCP break;". Using - (lwip_)recvfrom with valid "from" and "fromlen" parameters, on a - TCP connection caused a crash. Note that using (lwip_)recvfrom - like this is a bit slow and that using (lwip)getpeername is the - good lwip way to do it (so, using recv is faster on tcp sockets). - - 2008-03-12 Frédéric Bernon, Jonathan Larmour - * api_msg.c, contrib/apps/ping.c: Fix bug #22530 "api_msg.c's - recv_raw() does not consume data", and the ping sample (with - LWIP_SOCKET=1, the code did the wrong supposition that lwip_recvfrom - returned the IP payload, without the IP header). - - 2008-03-04 Jonathan Larmour - * mem.c, stats.c, mem.h: apply patch #6414 to avoid compiler errors - and/or warnings on some systems where mem_size_t and size_t differ. - * pbuf.c, ppp.c: Fix warnings on some systems with mem_malloc. - - 2008-03-04 Kieran Mansley (contributions by others) - * Numerous small compiler error/warning fixes from contributions to - mailing list after 1.3.0 release candidate made. - - 2008-01-25 Cui hengbin (integrated by Frédéric Bernon) - * dns.c: Fix bug #22108 "DNS problem" caused by unaligned structures. - - 2008-01-15 Kieran Mansley - * tcp_out.c: BUG20511. Modify persist timer to start when we are - prevented from sending by a small send window, not just a zero - send window. - - 2008-01-09 Jonathan Larmour - * opt.h, ip.c: Rename IP_OPTIONS define to IP_OPTIONS_ALLOWED to avoid - conflict with Linux system headers. - - 2008-01-06 Jonathan Larmour - * dhcp.c: fix bug #19927: "DHCP NACK problem" by clearing any existing set IP - address entirely on receiving a DHCPNAK, and restarting discovery. - - 2007-12-21 Simon Goldschmidt - * sys.h, api_lib.c, api_msg.c, sockets.c: fix bug #21698: "netconn->recv_avail - is not protected" by using new macros for interlocked access to modify/test - netconn->recv_avail. - - 2007-12-20 Kieran Mansley (based on patch from Oleg Tyshev) - * tcp_in.c: fix bug# 21535 (nrtx not reset correctly in SYN_SENT state) - - 2007-12-20 Kieran Mansley (based on patch from Per-Henrik Lundbolm) - * tcp.c, tcp_in.c, tcp_out.c, tcp.h: fix bug #20199 (better handling - of silly window avoidance and prevent lwIP from shrinking the window) - - 2007-12-04 Simon Goldschmidt - * tcp.c, tcp_in.c: fix bug #21699 (segment leak in ooseq processing when last - data packet was lost): add assert that all segment lists are empty in - tcp_pcb_remove before setting pcb to CLOSED state; don't directly set CLOSED - state from LAST_ACK in tcp_process - - 2007-12-02 Simon Goldschmidt - * sockets.h: fix bug #21654: exclude definition of struct timeval from #ifndef FD_SET - If including for system-struct timeval, LWIP_TIMEVAL_PRIVATE now - has to be set to 0 in lwipopts.h - - 2007-12-02 Simon Goldschmidt - * api_msg.c, api_lib.c: fix bug #21656 (recvmbox problem in netconn API): always - allocate a recvmbox in netconn_new_with_proto_and_callback. For a tcp-listen - netconn, this recvmbox is later freed and a new mbox is allocated for acceptmbox. - This is a fix for thread-safety and allocates all items needed for a netconn - when the netconn is created. - - 2007-11-30 Simon Goldschmidt - * udp.c: first attempt to fix bug #21655 (DHCP doesn't work reliably with multiple - netifs): if LWIP_DHCP is enabled, UDP packets to DHCP_CLIENT_PORT are passed - to netif->dhcp->pcb only (if that exists) and not to any other pcb for the same - port (only solution to let UDP pcbs 'bind' to a netif instead of an IP address) - - 2007-11-27 Simon Goldschmidt - * ip.c: fixed bug #21643 (udp_send/raw_send don't fail if netif is down) by - letting ip_route only use netifs that are up. - - 2007-11-27 Simon Goldschmidt - * err.h, api_lib.c, api_msg.c, sockets.c: Changed error handling: ERR_MEM, ERR_BUF - and ERR_RTE are seen as non-fatal, all other errors are fatal. netconns and - sockets block most operations once they have seen a fatal error. - - 2007-11-27 Simon Goldschmidt - * udp.h, udp.c, dhcp.c: Implemented new function udp_sendto_if which takes the - netif to send as an argument (to be able to send on netifs that are down). - - 2007-11-26 Simon Goldschmidt - * tcp_in.c: Fixed bug #21582: pcb->acked accounting can be wrong when ACKs - arrive out-of-order - - 2007-11-21 Simon Goldschmidt - * tcp.h, tcp_out.c, api_msg.c: Fixed bug #20287: tcp_output_nagle sends too early - Fixed the nagle algorithm; nagle now also works for all raw API applications - and has to be explicitly disabled with 'tcp_pcb->flags |= TF_NODELAY' - - 2007-11-12 Frédéric Bernon - * sockets.c, api.h, api_lib.c, api_msg.h, api_msg.c: Fixed bug #20900. Now, most - of the netconn_peer and netconn_addr processing is done inside tcpip_thread - context in do_getaddr. - - 2007-11-10 Simon Goldschmidt - * etharp.c: Fixed bug: assert fired when MEMP_ARP_QUEUE was empty (which can - happen any time). Now the packet simply isn't enqueued when out of memory. - - 2007-11-01 Simon Goldschmidt - * tcp.c, tcp_in.c: Fixed bug #21494: The send mss (pcb->mss) is set to 536 (or - TCP_MSS if that is smaller) as long as no MSS option is received from the - remote host. - - 2007-11-01 Simon Goldschmidt - * tcp.h, tcp.c, tcp_in.c: Fixed bug #21491: The MSS option sent (with SYN) - is now based on TCP_MSS instead of pcb->mss (on passive open now effectively - sending our configured TCP_MSS instead of the one received). - - 2007-11-01 Simon Goldschmidt - * tcp_in.c: Fixed bug #21181: On active open, the initial congestion window was - calculated based on the configured TCP_MSS, not on the MSS option received - with SYN+ACK. - - 2007-10-09 Simon Goldschmidt - * udp.c, inet.c, inet.h: Fixed UDPLite: send: Checksum was always generated too - short and also was generated wrong if checksum coverage != tot_len; - receive: checksum was calculated wrong if checksum coverage != tot_len - - 2007-10-08 Simon Goldschmidt - * mem.c: lfree was not updated in mem_realloc! - - 2007-10-07 Frédéric Bernon - * sockets.c, api.h, api_lib.c: First step to fix "bug #20900 : Potential - crash error problem with netconn_peer & netconn_addr". VERY IMPORTANT: - this change cause an API breakage for netconn_addr, since a parameter - type change. Any compiler should cause an error without any changes in - yours netconn_peer calls (so, it can't be a "silent change"). It also - reduce a little bit the footprint for socket layer (lwip_getpeername & - lwip_getsockname use now a common lwip_getaddrname function since - netconn_peer & netconn_addr have the same parameters). - - 2007-09-20 Simon Goldschmidt - * tcp.c: Fixed bug #21080 (tcp_bind without check pcbs in TIME_WAIT state) - by checking tcp_tw_pcbs also - - 2007-09-19 Simon Goldschmidt - * icmp.c: Fixed bug #21107 (didn't reset IP TTL in ICMP echo replies) - - 2007-09-15 Mike Kleshov - * mem.c: Fixed bug #21077 (inaccuracy in calculation of lwip_stat.mem.used) - - 2007-09-06 Frédéric Bernon - * several-files: replace some #include "arch/cc.h" by "lwip/arch.h", or simply remove - it as long as "lwip/opt.h" is included before (this one include "lwip/debug.h" which - already include "lwip/arch.h"). Like that, default defines are provided by "lwip/arch.h" - if they are not defined in cc.h, in the same spirit than "lwip/opt.h" for lwipopts.h. - - 2007-08-30 Frédéric Bernon - * igmp.h, igmp.c: Some changes to remove some redundant code, add some traces, - and fix some coding style. - - 2007-08-28 Frédéric Bernon - * tcpip.c: Fix TCPIP_MSG_INPKT processing: now, tcpip_input can be used for any - kind of packets. These packets are considered like Ethernet packets (payload - pointing to ethhdr) if the netif got the NETIF_FLAG_ETHARP flag. Else, packets - are considered like IP packets (payload pointing to iphdr). - - 2007-08-27 Frédéric Bernon - * api.h, api_lib.c, api_msg.c: First fix for "bug #20900 : Potential crash error - problem with netconn_peer & netconn_addr". Introduce NETCONN_LISTEN netconn_state - and remove obsolete ones (NETCONN_RECV & NETCONN_ACCEPT). - - 2007-08-24 Kieran Mansley - * inet.c Modify (acc >> 16) test to ((acc >> 16) != 0) to help buggy - compiler (Paradigm C++) - - 2007-08-09 Frédéric Bernon, Bill Florac - * stats.h, stats.c, igmp.h, igmp.c, opt.h: Fix for bug #20503 : IGMP Improvement. - Introduce IGMP_STATS to centralize statistics management. - - 2007-08-09 Frédéric Bernon, Bill Florac - * udp.c: Fix for bug #20503 : IGMP Improvement. Enable to receive a multicast - packet on a udp pcb binded on an netif's IP address, and not on "any". - - 2007-08-09 Frédéric Bernon, Bill Florac - * igmp.h, igmp.c, ip.c: Fix minor changes from bug #20503 : IGMP Improvement. - This is mainly on using lookup/lookfor, and some coding styles... - - 2007-07-26 Frédéric Bernon (and "thedoctor") - * igmp.c: Fix bug #20595 to accept IGMPv3 "Query" messages. - - 2007-07-25 Simon Goldschmidt - * api_msg.c, tcp.c: Another fix for bug #20021: by not returning an error if - tcp_output fails in tcp_close, the code in do_close_internal gets simpler - (tcp_output is called again later from tcp timers). - - 2007-07-25 Simon Goldschmidt - * ip_frag.c: Fixed bug #20429: use the new pbuf_copy_partial instead of the old - copy_from_pbuf, which illegally modified the given pbuf. - - 2007-07-25 Simon Goldschmidt - * tcp_out.c: tcp_enqueue: pcb->snd_queuelen didn't work for chaine PBUF_RAMs: - changed snd_queuelen++ to snd_queuelen += pbuf_clen(p). - - 2007-07-24 Simon Goldschmidt - * api_msg.c, tcp.c: Fix bug #20480: Check the pcb passed to tcp_listen() for the - correct state (must be CLOSED). - - 2007-07-13 Thomas Taranowski (commited by Jared Grubb) - * memp.c: Fix bug #20478: memp_malloc returned NULL+MEMP_SIZE on failed - allocation. It now returns NULL. - - 2007-07-13 Frédéric Bernon - * api_msg.c: Fix bug #20318: api_msg "recv" callbacks don't call pbuf_free in - all error cases. - - 2007-07-13 Frédéric Bernon - * api_msg.c: Fix bug #20315: possible memory leak problem if tcp_listen failed, - because current code doesn't follow rawapi.txt documentation. - - 2007-07-13 Kieran Mansley - * src/core/tcp_in.c Apply patch#5741 from Oleg Tyshev to fix bug in - out of sequence processing of received packets - - 2007-07-03 Simon Goldschmidt - * nearly-all-files: Added assertions where PBUF_RAM pbufs are used and an - assumption is made that this pbuf is in one piece (i.e. not chained). These - assumptions clash with the possibility of converting to fully pool-based - pbuf implementations, where PBUF_RAM pbufs might be chained. - - 2007-07-03 Simon Goldschmidt - * api.h, api_lib.c, api_msg.c: Final fix for bug #20021 and some other problems - when closing tcp netconns: removed conn->sem, less context switches when - closing, both netconn_close and netconn_delete should safely close tcp - connections. - - 2007-07-02 Simon Goldschmidt - * ipv4/ip.h, ipv6/ip.h, opt.h, netif.h, etharp.h, ipv4/ip.c, netif.c, raw.c, - tcp_out.c, udp.c, etharp.c: Added option LWIP_NETIF_HWADDRHINT (default=off) - to cache ARP table indices with each pcb instead of single-entry cache for - the complete stack. - - 2007-07-02 Simon Goldschmidt - * tcp.h, tcp.c, tcp_in.c, tcp_out.c: Added some ASSERTS and casts to prevent - warnings when assigning to smaller types. - - 2007-06-28 Simon Goldschmidt - * tcp_out.c: Added check to prevent tcp_pcb->snd_queuelen from overflowing. - - 2007-06-28 Simon Goldschmidt - * tcp.h: Fixed bug #20287: Fixed nagle algorithm (sending was done too early if - a segment contained chained pbufs) - - 2007-06-28 Frédéric Bernon - * autoip.c: replace most of rand() calls by a macro LWIP_AUTOIP_RAND which compute - a "pseudo-random" value based on netif's MAC and some autoip fields. It's always - possible to define this macro in your own lwipopts.h to always use C library's - rand(). Note that autoip_create_rand_addr doesn't use this macro. - - 2007-06-28 Frédéric Bernon - * netifapi.h, netifapi.c, tcpip.h, tcpip.c: Update code to handle the option - LWIP_TCPIP_CORE_LOCKING, and do some changes to be coherent with last modifications - in api_lib/api_msg (use pointers and not type with table, etc...) - - 2007-06-26 Simon Goldschmidt - * udp.h: Fixed bug #20259: struct udp_hdr was lacking the packin defines. - - 2007-06-25 Simon Goldschmidt - * udp.c: Fixed bug #20253: icmp_dest_unreach was called with a wrong p->payload - for udp packets with no matching pcb. - - 2007-06-25 Simon Goldschmidt - * udp.c: Fixed bug #20220: UDP PCB search in udp_input(): a non-local match - could get udp input packets if the remote side matched. - - 2007-06-13 Simon Goldschmidt - * netif.c: Fixed bug #20180 (TCP pcbs listening on IP_ADDR_ANY could get - changed in netif_set_ipaddr if previous netif->ip_addr.addr was 0. - - 2007-06-13 Simon Goldschmidt - * api_msg.c: pcb_new sets conn->err if protocol is not implemented - -> netconn_new_..() does not allocate a new connection for unsupported - protocols. - - 2007-06-13 Frédéric Bernon, Simon Goldschmidt - * api_lib.c: change return expression in netconn_addr and netconn_peer, because - conn->err was reset to ERR_OK without any reasons (and error was lost)... - - 2007-06-13 Frédéric Bernon, Matthias Weisser - * opt.h, mem.h, mem.c, memp.c, pbuf.c, ip_frag.c, vj.c: Fix bug #20162. Rename - MEM_ALIGN in LWIP_MEM_ALIGN and MEM_ALIGN_SIZE in LWIP_MEM_ALIGN_SIZE to avoid - some macro names collision with some OS macros. - - 2007-06-11 Simon Goldschmidt - * udp.c: UDP Lite: corrected the use of chksum_len (based on RFC3828: if it's 0, - create checksum over the complete packet. On RX, if it's < 8 (and not 0), - discard the packet. Also removed the duplicate 'udphdr->chksum = 0' for both - UDP & UDP Lite. - - 2007-06-11 Srinivas Gollakota & Oleg Tyshev - * tcp_out.c: Fix for bug #20075 : "A problem with keep-alive timer and TCP flags" - where TCP flags wasn't initialized in tcp_keepalive. - - 2007-06-03 Simon Goldschmidt - * udp.c: udp_input(): Input pbuf was not freed if pcb had no recv function - registered, p->payload was modified without modifying p->len if sending - icmp_dest_unreach() (had no negative effect but was definitively wrong). - - 2007-06-03 Simon Goldschmidt - * icmp.c: Corrected bug #19937: For responding to an icmp echo request, icmp - re-used the input pbuf even if that didn't have enough space to include the - link headers. Now the space is tested and a new pbuf is allocated for the - echo response packet if the echo request pbuf isn't big enough. - - 2007-06-01 Simon Goldschmidt - * sockets.c: Checked in patch #5914: Moved sockopt processing into tcpip_thread. - - 2007-05-23 Frédéric Bernon - * api_lib.c, sockets.c: Fixed bug #5958 for netconn_listen (acceptmbox only - allocated by do_listen if success) and netconn_accept errors handling. In - most of api_lib functions, we replace some errors checkings like "if (conn==NULL)" - by ASSERT, except for netconn_delete. - - 2007-05-23 Frédéric Bernon - * api_lib.c: Fixed bug #5957 "Safe-thread problem inside netconn_recv" to return - an error code if it's impossible to fetch a pbuf on a TCP connection (and not - directly close the recvmbox). - - 2007-05-22 Simon Goldschmidt - * tcp.c: Fixed bug #1895 (tcp_bind not correct) by introducing a list of - bound but unconnected (and non-listening) tcp_pcbs. - - 2007-05-22 Frédéric Bernon - * sys.h, sys.c, api_lib.c, tcpip.c: remove sys_mbox_fetch_timeout() (was only - used for LWIP_SO_RCVTIMEO option) and use sys_arch_mbox_fetch() instead of - sys_mbox_fetch() in api files. Now, users SHOULD NOT use internal lwIP features - like "sys_timeout" in their application threads. - - 2007-05-22 Frédéric Bernon - * api.h, api_lib.c, api_msg.h, api_msg.c: change the struct api_msg_msg to see - which parameters are used by which do_xxx function, and to avoid "misusing" - parameters (patch #5938). - - 2007-05-22 Simon Goldschmidt - * api_lib.c, api_msg.c, raw.c, api.h, api_msg.h, raw.h: Included patch #5938: - changed raw_pcb.protocol from u16_t to u8_t since for IPv4 and IPv6, proto - is only 8 bits wide. This affects the api, as there, the protocol was - u16_t, too. - - 2007-05-18 Simon Goldschmidt - * memp.c: addition to patch #5913: smaller pointer was returned but - memp_memory was the same size -> did not save memory. - - 2007-05-16 Simon Goldschmidt - * loopif.c, slipif.c: Fix bug #19729: free pbuf if netif->input() returns - != ERR_OK. - - 2007-05-16 Simon Goldschmidt - * api_msg.c, udp.c: If a udp_pcb has a local_ip set, check if it is the same - as the one of the netif used for sending to prevent sending from old - addresses after a netif address gets changed (partly fixes bug #3168). - - 2007-05-16 Frédéric Bernon - * tcpip.c, igmp.h, igmp.c: Fixed bug "#19800 : IGMP: igmp_tick() will not work - with NO_SYS=1". Note that igmp_init is always in tcpip_thread (and not in - tcpip_init) because we have to be sure that network interfaces are already - added (mac filter is updated only in igmp_init for the moment). - - 2007-05-16 Simon Goldschmidt - * mem.c, memp.c: Removed semaphores from memp, changed sys_sem_wait calls - into sys_arch_sem_wait calls to prevent timers from running while waiting - for the heap. This fixes bug #19167. - - 2007-05-13 Simon Goldschmidt - * tcp.h, sockets.h, sockets.c: Fixed bug from patch #5865 by moving the defines - for socket options (lwip_set/-getsockopt) used with level IPPROTO_TCP from - tcp.h to sockets.h. - - 2007-05-07 Simon Goldschmidt - * mem.c: Another attempt to fix bug #17922. - - 2007-05-04 Simon Goldschmidt - * pbuf.c, pbuf.h, etharp.c: Further update to ARP queueing: Changed pbuf_copy() - implementation so that it can be reused (don't allocate the target - pbuf inside pbuf_copy()). - - 2007-05-04 Simon Goldschmidt - * memp.c: checked in patch #5913: in memp_malloc() we can return memp as mem - to save a little RAM (next pointer of memp is not used while not in pool). - - 2007-05-03 "maq" - * sockets.c: Fix ioctl FIONREAD when some data remains from last recv. - (patch #3574). - - 2007-04-23 Simon Goldschmidt - * loopif.c, loopif.h, opt.h, src/netif/FILES: fix bug #2595: "loopif results - in NULL reference for incoming TCP packets". Loopif has to be configured - (using LWIP_LOOPIF_MULTITHREADING) to directly call netif->input() - (multithreading environments, e.g. netif->input() = tcpip_input()) or - putting packets on a list that is fed to the stack by calling loopif_poll() - (single-thread / NO_SYS / polling environment where e.g. - netif->input() = ip_input). - - 2007-04-17 Jonathan Larmour - * pbuf.c: Use s32_t in pbuf_realloc(), as an s16_t can't reliably hold - the difference between two u16_t's. - * sockets.h: FD_SETSIZE needs to match number of sockets, which is - MEMP_NUM_NETCONN in sockets.c right now. - - 2007-04-12 Jonathan Larmour - * icmp.c: Reset IP header TTL in ICMP ECHO responses (bug #19580). - - 2007-04-12 Kieran Mansley - * tcp.c, tcp_in.c, tcp_out.c, tcp.h: Modify way the retransmission - timer is reset to fix bug#19434, with help from Oleg Tyshev. - - 2007-04-11 Simon Goldschmidt - * etharp.c, pbuf.c, pbuf.h: 3rd fix for bug #11400 (arp-queuing): More pbufs than - previously thought need to be copied (everything but PBUF_ROM!). Cleaned up - pbuf.c: removed functions no needed any more (by etharp). - - 2007-04-11 Kieran Mansley - * inet.c, ip_addr.h, sockets.h, sys.h, tcp.h: Apply patch #5745: Fix - "Constant is long" warnings with 16bit compilers. Contributed by - avatar@mmlab.cse.yzu.edu.tw - - 2007-04-05 Frédéric Bernon, Jonathan Larmour - * api_msg.c: Fix bug #16830: "err_tcp() posts to connection mailbox when no pend on - the mailbox is active". Now, the post is only done during a connect, and do_send, - do_write and do_join_leave_group don't do anything if a previous error was signaled. - - 2007-04-03 Frédéric Bernon - * ip.c: Don't set the IP_DF ("Don't fragment") flag in the IP header in IP output - packets. See patch #5834. - - 2007-03-30 Frédéric Bernon - * api_msg.c: add a "pcb_new" helper function to avoid redundant code, and to add - missing pcb allocations checking (in do_bind, and for each raw_new). Fix style. - - 2007-03-30 Frédéric Bernon - * most of files: prefix all debug.h define with "LWIP_" to avoid any conflict with - others environment defines (these were too "generic"). - - 2007-03-28 Frédéric Bernon - * api.h, api_lib.c, sockets.c: netbuf_ref doesn't check its internal pbuf_alloc call - result and can cause a crash. lwip_send now check netbuf_ref result. - - 2007-03-28 Simon Goldschmidt - * sockets.c Remove "#include " from sockets.c to avoid multiple - definition of macros (in errno.h and lwip/arch.h) if LWIP_PROVIDE_ERRNO is - defined. This is the way it should have been already (looking at - doc/sys_arch.txt) - - 2007-03-28 Kieran Mansley - * opt.h Change default PBUF_POOL_BUFSIZE (again) to accomodate default MSS + - IP and TCP headers *and* physical link headers - - 2007-03-26 Frédéric Bernon (based on patch from Dmitry Potapov) - * api_lib.c: patch for netconn_write(), fixes a possible race condition which cause - to send some garbage. It is not a definitive solution, but the patch does solve - the problem for most cases. - - 2007-03-22 Frédéric Bernon - * api_msg.h, api_msg.c: Remove obsolete API_MSG_ACCEPT and do_accept (never used). - - 2007-03-22 Frédéric Bernon - * api_lib.c: somes resources couldn't be freed if there was errors during - netconn_new_with_proto_and_callback. - - 2007-03-22 Frédéric Bernon - * ethernetif.c: update netif->input calls to check return value. In older ports, - it's a good idea to upgrade them, even if before, there could be another problem - (access to an uninitialized mailbox). - - 2007-03-21 Simon Goldschmidt - * sockets.c: fixed bug #5067 (essentialy a signed/unsigned warning fixed - by casting to unsigned). - - 2007-03-21 Frédéric Bernon - * api_lib.c, api_msg.c, tcpip.c: integrate sys_mbox_fetch(conn->mbox, NULL) calls from - api_lib.c to tcpip.c's tcpip_apimsg(). Now, use a local variable and not a - dynamic one from memp to send tcpip_msg to tcpip_thread in a synchrone call. - Free tcpip_msg from tcpip_apimsg is not done in tcpip_thread. This give a - faster and more reliable communication between api_lib and tcpip. - - 2007-03-21 Frédéric Bernon - * opt.h: Add LWIP_NETIF_CALLBACK (to avoid compiler warning) and set it to 0. - - 2007-03-21 Frédéric Bernon - * api_msg.c, igmp.c, igmp.h: Fix C++ style comments - - 2007-03-21 Kieran Mansley - * opt.h Change default PBUF_POOL_BUFSIZE to accomodate default MSS + - IP and TCP headers - - 2007-03-21 Kieran Mansley - * Fix all uses of pbuf_header to check the return value. In some - cases just assert if it fails as I'm not sure how to fix them, but - this is no worse than before when they would carry on regardless - of the failure. - - 2007-03-21 Kieran Mansley - * sockets.c, igmp.c, igmp.h, memp.h: Fix C++ style comments and - comment out missing header include in icmp.c - - 2007-03-20 Frédéric Bernon - * memp.h, stats.c: Fix stats_display function where memp_names table wasn't - synchronized with memp.h. - - 2007-03-20 Frédéric Bernon - * tcpip.c: Initialize tcpip's mbox, and verify if initialized in tcpip_input, - tcpip_ethinput, tcpip_callback, tcpip_apimsg, to fix a init problem with - network interfaces. Also fix a compiler warning. - - 2007-03-20 Kieran Mansley - * udp.c: Only try and use pbuf_header() to make space for headers if - not a ROM or REF pbuf. - - 2007-03-19 Frédéric Bernon - * api_msg.h, api_msg.c, tcpip.h, tcpip.c: Add return types to tcpip_apimsg() - and api_msg_post(). - - 2007-03-19 Frédéric Bernon - * Remove unimplemented "memp_realloc" function from memp.h. - - 2007-03-11 Simon Goldschmidt - * pbuf.c: checked in patch #5796: pbuf_alloc: len field claculation caused - memory corruption. - - 2007-03-11 Simon Goldschmidt (based on patch from Dmitry Potapov) - * api_lib.c, sockets.c, api.h, api_msg.h, sockets.h: Fixed bug #19251 - (missing `const' qualifier in socket functions), to get more compatible to - standard POSIX sockets. - - 2007-03-11 Frédéric Bernon (based on patch from Dmitry Potapov) - * sockets.c: Add asserts inside bind, connect and sendto to check input - parameters. Remove excessive set_errno() calls after get_socket(), because - errno is set inside of get_socket(). Move last sock_set_errno() inside - lwip_close. - - 2007-03-09 Simon Goldschmidt - * memp.c: Fixed bug #11400: New etharp queueing introduced bug: memp_memory - was allocated too small. - - 2007-03-06 Simon Goldschmidt - * tcpip.c: Initialize dhcp timers in tcpip_thread (if LWIP_DHCP) to protect - the stack from concurrent access. - - 2007-03-06 Frédéric Bernon, Dmitry Potapov - * tcpip.c, ip_frag.c, ethernetif.c: Fix some build problems, and a redundancy - call to "lwip_stats.link.recv++;" in low_level_input() & ethernetif_input(). - - 2007-03-06 Simon Goldschmidt - * ip_frag.c, ip_frag.h: Reduce code size: don't include code in those files - if IP_FRAG == 0 and IP_REASSEMBLY == 0 - - 2007-03-06 Frédéric Bernon, Simon Goldschmidt - * opt.h, ip_frag.h, tcpip.h, tcpip.c, ethernetif.c: add new configuration - option named ETHARP_TCPIP_ETHINPUT, which enable the new tcpip_ethinput. - Allow to do ARP processing for incoming packets inside tcpip_thread - (protecting ARP layer against concurrent access). You can also disable - old code using tcp_input with new define ETHARP_TCPIP_INPUT set to 0. - Older ports have to use tcpip_ethinput. - - 2007-03-06 Simon Goldschmidt (based on patch from Dmitry Potapov) - * err.h, err.c: fixed compiler warning "initialization dircards qualifiers - from pointer target type" - - 2007-03-05 Frédéric Bernon - * opt.h, sockets.h: add new configuration options (LWIP_POSIX_SOCKETS_IO_NAMES, - ETHARP_TRUST_IP_MAC, review SO_REUSE) - - 2007-03-04 Frédéric Bernon - * api_msg.c: Remove some compiler warnings : parameter "pcb" was never - referenced. - - 2007-03-04 Frédéric Bernon - * api_lib.c: Fix "[patch #5764] api_lib.c cleanup: after patch #5687" (from - Dmitry Potapov). - The api_msg struct stay on the stack (not moved to netconn struct). - - 2007-03-04 Simon Goldschmidt (based on patch from Dmitry Potapov) - * pbuf.c: Fix BUG#19168 - pbuf_free can cause deadlock (if - SYS_LIGHTWEIGHT_PROT=1 & freeing PBUF_RAM when mem_sem is not available) - Also fixed cast warning in pbuf_alloc() - - 2007-03-04 Simon Goldschmidt - * etharp.c, etharp.h, memp.c, memp.h, opt.h: Fix BUG#11400 - don't corrupt - existing pbuf chain when enqueuing multiple pbufs to a pending ARP request - - 2007-03-03 Frédéric Bernon - * udp.c: remove obsolete line "static struct udp_pcb *pcb_cache = NULL;" - It is static, and never used in udp.c except udp_init(). - - 2007-03-02 Simon Goldschmidt - * tcpip.c: Moved call to ip_init(), udp_init() and tcp_init() from - tcpip_thread() to tcpip_init(). This way, raw API connections can be - initialized before tcpip_thread is running (e.g. before OS is started) - - 2007-03-02 Frédéric Bernon - * rawapi.txt: Fix documentation mismatch with etharp.h about etharp_tmr's call - interval. - - 2007-02-28 Kieran Mansley - * pbuf.c: Fix BUG#17645 - ensure pbuf payload pointer is not moved - outside the region of the pbuf by pbuf_header() - - 2007-02-28 Kieran Mansley - * sockets.c: Fix BUG#19161 - ensure milliseconds timeout is non-zero - when supplied timeout is also non-zero - -(STABLE-1.2.0) - - 2006-12-05 Leon Woestenberg - * CHANGELOG: Mention STABLE-1.2.0 release. - - ++ New features: - - 2006-12-01 Christiaan Simons - * mem.h, opt.h: Added MEM_LIBC_MALLOC option. - Note this is a workaround. Currently I have no other options left. - - 2006-10-26 Christiaan Simons (accepted patch by Jonathan Larmour) - * ipv4/ip_frag.c: rename MAX_MTU to IP_FRAG_MAX_MTU and move define - to include/lwip/opt.h. - * ipv4/lwip/ip_frag.h: Remove unused IP_REASS_INTERVAL. - Move IP_REASS_MAXAGE and IP_REASS_BUFSIZE to include/lwip/opt.h. - * opt.h: Add above new options. - - 2006-08-18 Christiaan Simons - * tcp_{in,out}.c: added SNMP counters. - * ipv4/ip.c: added SNMP counters. - * ipv4/ip_frag.c: added SNMP counters. - - 2006-08-08 Christiaan Simons - * etharp.{c,h}: added etharp_find_addr() to read - (stable) ethernet/IP address pair from ARP table - - 2006-07-14 Christiaan Simons - * mib_structs.c: added - * include/lwip/snmp_structs.h: added - * netif.{c,h}, netif/ethernetif.c: added SNMP statistics to netif struct - - 2006-07-06 Christiaan Simons - * snmp/asn1_{enc,dec}.c added - * snmp/mib2.c added - * snmp/msg_{in,out}.c added - * include/lwip/snmp_asn1.h added - * include/lwip/snmp_msg.h added - * doc/snmp_agent.txt added - - 2006-03-29 Christiaan Simons - * inet.c, inet.h: Added platform byteswap support. - Added LWIP_PLATFORM_BYTESWAP define (defaults to 0) and - optional LWIP_PLATFORM_HTONS(), LWIP_PLATFORM_HTONL() macros. - - ++ Bug fixes: - - 2006-11-30 Christiaan Simons - * dhcp.c: Fixed false triggers of request_timeout. - - 2006-11-28 Christiaan Simons - * netif.c: In netif_add() fixed missing clear of ip_addr, netmask, gw and flags. - - 2006-10-11 Christiaan Simons - * api_lib.c etharp.c, ip.c, memp.c, stats.c, sys.{c,h} tcp.h: - Partially accepted patch #5449 for ANSI C compatibility / build fixes. - * ipv4/lwip/ip.h ipv6/lwip/ip.h: Corrected UDP-Lite protocol - identifier from 170 to 136 (bug #17574). - - 2006-10-10 Christiaan Simons - * api_msg.c: Fixed Nagle algorithm as reported by Bob Grice. - - 2006-08-17 Christiaan Simons - * udp.c: Fixed bug #17200, added check for broadcast - destinations for PCBs bound to a unicast address. - - 2006-08-07 Christiaan Simons - * api_msg.c: Flushing TCP output in do_close() (bug #15926). - - 2006-06-27 Christiaan Simons - * api_msg.c: Applied patch for cold case (bug #11135). - In accept_function() ensure newconn->callback is always initialized. - - 2006-06-15 Christiaan Simons - * mem.h: added MEM_SIZE_F alias to fix an ancient cold case (bug #1748), - facilitate printing of mem_size_t and u16_t statistics. - - 2006-06-14 Christiaan Simons - * api_msg.c: Applied patch #5146 to handle allocation failures - in accept() by Kevin Lawson. - - 2006-05-26 Christiaan Simons - * api_lib.c: Removed conn->sem creation and destruction - from netconn_write() and added sys_sem_new to netconn_new_*. - -(STABLE-1_1_1) - - 2006-03-03 Christiaan Simons - * ipv4/ip_frag.c: Added bound-checking assertions on ip_reassbitmap - access and added pbuf_alloc() return value checks. - - 2006-01-01 Leon Woestenberg - * tcp_{in,out}.c, tcp_out.c: Removed 'even sndbuf' fix in TCP, which is - now handled by the checksum routine properly. - - 2006-02-27 Leon Woestenberg - * pbuf.c: Fix alignment; pbuf_init() would not work unless - pbuf_pool_memory[] was properly aligned. (Patch by Curt McDowell.) - - 2005-12-20 Leon Woestenberg - * tcp.c: Remove PCBs which stay in LAST_ACK state too long. Patch - submitted by Mitrani Hiroshi. - - 2005-12-15 Christiaan Simons - * inet.c: Disabled the added summing routine to preserve code space. - - 2005-12-14 Leon Woestenberg - * tcp_in.c: Duplicate FIN ACK race condition fix by Kelvin Lawson. - Added Curt McDowell's optimized checksumming routine for future - inclusion. Need to create test case for unaliged, aligned, odd, - even length combination of cases on various endianess machines. - - 2005-12-09 Christiaan Simons - * inet.c: Rewrote standard checksum routine in proper portable C. - - 2005-11-25 Christiaan Simons - * udp.c tcp.c: Removed SO_REUSE hack. Should reside in socket code only. - * *.c: introduced cc.h LWIP_DEBUG formatters matching the u16_t, s16_t, - u32_t, s32_t typedefs. This solves most debug word-length assumes. - - 2005-07-17 Leon Woestenberg - * inet.c: Fixed unaligned 16-bit access in the standard checksum - routine by Peter Jolasson. - * slipif.c: Fixed implementation assumption of single-pbuf datagrams. - - 2005-02-04 Leon Woestenberg - * tcp_out.c: Fixed uninitialized 'queue' referenced in memerr branch. - * tcp_{out|in}.c: Applied patch fixing unaligned access. - - 2005-01-04 Leon Woestenberg - * pbuf.c: Fixed missing semicolon after LWIP_DEBUG statement. - - 2005-01-03 Leon Woestenberg - * udp.c: UDP pcb->recv() was called even when it was NULL. - -(STABLE-1_1_0) - - 2004-12-28 Leon Woestenberg - * etharp.*: Disabled multiple packets on the ARP queue. - This clashes with TCP queueing. - - 2004-11-28 Leon Woestenberg - * etharp.*: Fixed race condition from ARP request to ARP timeout. - Halved the ARP period, doubled the period counts. - ETHARP_MAX_PENDING now should be at least 2. This prevents - the counter from reaching 0 right away (which would allow - too little time for ARP responses to be received). - - 2004-11-25 Leon Woestenberg - * dhcp.c: Decline messages were not multicast but unicast. - * etharp.c: ETHARP_CREATE is renamed to ETHARP_TRY_HARD. - Do not try hard to insert arbitrary packet's source address, - etharp_ip_input() now calls etharp_update() without ETHARP_TRY_HARD. - etharp_query() now always DOES call ETHARP_TRY_HARD so that users - querying an address will see it appear in the cache (DHCP could - suffer from this when a server invalidly gave an in-use address.) - * ipv4/ip_addr.h: Renamed ip_addr_maskcmp() to _netcmp() as we are - comparing network addresses (identifiers), not the network masks - themselves. - * ipv4/ip_addr.c: ip_addr_isbroadcast() now checks that the given - IP address actually belongs to the network of the given interface. - - 2004-11-24 Kieran Mansley - * tcp.c: Increment pcb->snd_buf when ACK is received in SYN_SENT state. - -(STABLE-1_1_0-RC1) - - 2004-10-16 Kieran Mansley - * tcp.c: Add code to tcp_recved() to send an ACK (window update) immediately, - even if one is already pending, if the rcv_wnd is above a threshold - (currently TCP_WND/2). This avoids waiting for a timer to expire to send a - delayed ACK in order to open the window if the stack is only receiving data. - - 2004-09-12 Kieran Mansley - * tcp*.*: Retransmit time-out handling improvement by Sam Jansen. - - 2004-08-20 Tony Mountifield - * etharp.c: Make sure the first pbuf queued on an ARP entry - is properly ref counted. - - 2004-07-27 Tony Mountifield - * debug.h: Added (int) cast in LWIP_DEBUGF() to avoid compiler - warnings about comparison. - * pbuf.c: Stopped compiler complaining of empty if statement - when LWIP_DEBUGF() empty. Closed an unclosed comment. - * tcp.c: Stopped compiler complaining of empty if statement - when LWIP_DEBUGF() empty. - * ip.h Corrected IPH_TOS() macro: returns a byte, so doesn't need htons(). - * inet.c: Added a couple of casts to quiet the compiler. - No need to test isascii(c) before isdigit(c) or isxdigit(c). - - 2004-07-22 Tony Mountifield - * inet.c: Made data types consistent in inet_ntoa(). - Added casts for return values of checksum routines, to pacify compiler. - * ip_frag.c, tcp_out.c, sockets.c, pbuf.c - Small corrections to some debugging statements, to pacify compiler. - - 2004-07-21 Tony Mountifield - * etharp.c: Removed spurious semicolon and added missing end-of-comment. - * ethernetif.c Updated low_level_output() to match prototype for - netif->linkoutput and changed low_level_input() similarly for consistency. - * api_msg.c: Changed recv_raw() from int to u8_t, to match prototype - of raw_recv() in raw.h and so avoid compiler error. - * sockets.c: Added trivial (int) cast to keep compiler happier. - * ip.c, netif.c Changed debug statements to use the tidier ip4_addrN() macros. - -(STABLE-1_0_0) - - ++ Changes: - - 2004-07-05 Leon Woestenberg - * sockets.*: Restructured LWIP_PRIVATE_TIMEVAL. Make sure - your cc.h file defines this either 1 or 0. If non-defined, - defaults to 1. - * .c: Added and includes where used. - * etharp.c: Made some array indices unsigned. - - 2004-06-27 Leon Woestenberg - * netif.*: Added netif_set_up()/down(). - * dhcp.c: Changes to restart program flow. - - 2004-05-07 Leon Woestenberg - * etharp.c: In find_entry(), instead of a list traversal per candidate, do a - single-pass lookup for different candidates. Should exploit locality. - - 2004-04-29 Leon Woestenberg - * tcp*.c: Cleaned up source comment documentation for Doxygen processing. - * opt.h: ETHARP_ALWAYS_INSERT option removed to comply with ARP RFC. - * etharp.c: update_arp_entry() only adds new ARP entries when adviced to by - the caller. This deprecates the ETHARP_ALWAYS_INSERT overrule option. - - ++ Bug fixes: - - 2004-04-27 Leon Woestenberg - * etharp.c: Applied patch of bug #8708 by Toni Mountifield with a solution - suggested by Timmy Brolin. Fix for 32-bit processors that cannot access - non-aligned 32-bit words, such as soms 32-bit TCP/IP header fields. Fix - is to prefix the 14-bit Ethernet headers with two padding bytes. - - 2004-04-23 Leon Woestenberg - * ip_addr.c: Fix in the ip_addr_isbroadcast() check. - * etharp.c: Fixed the case where the packet that initiates the ARP request - is not queued, and gets lost. Fixed the case where the packets destination - address is already known; we now always queue the packet and perform an ARP - request. - -(STABLE-0_7_0) - - ++ Bug fixes: - - * Fixed TCP bug for SYN_SENT to ESTABLISHED state transition. - * Fixed TCP bug in dequeueing of FIN from out of order segment queue. - * Fixed two possible NULL references in rare cases. - -(STABLE-0_6_6) - - ++ Bug fixes: - - * Fixed DHCP which did not include the IP address in DECLINE messages. - - ++ Changes: - - * etharp.c has been hauled over a bit. - -(STABLE-0_6_5) - - ++ Bug fixes: - - * Fixed TCP bug induced by bad window resizing with unidirectional TCP traffic. - * Packets sent from ARP queue had invalid source hardware address. - - ++ Changes: - - * Pass-by ARP requests do now update the cache. - - ++ New features: - - * No longer dependent on ctype.h. - * New socket options. - * Raw IP pcb support. - -(STABLE-0_6_4) - - ++ Bug fixes: - - * Some debug formatters and casts fixed. - * Numereous fixes in PPP. - - ++ Changes: - - * DEBUGF now is LWIP_DEBUGF - * pbuf_dechain() has been re-enabled. - * Mentioned the changed use of CVS branches in README. - -(STABLE-0_6_3) - - ++ Bug fixes: - - * Fixed pool pbuf memory leak in pbuf_alloc(). - Occured if not enough PBUF_POOL pbufs for a packet pbuf chain. - Reported by Savin Zlobec. - - * PBUF_POOL chains had their tot_len field not set for non-first - pbufs. Fixed in pbuf_alloc(). - - ++ New features: - - * Added PPP stack contributed by Marc Boucher - - ++ Changes: - - * Now drops short packets for ICMP/UDP/TCP protocols. More robust. - - * ARP queueuing now queues the latest packet instead of the first. - This is the RFC recommended behaviour, but can be overridden in - lwipopts.h. - -(0.6.2) - - ++ Bugfixes: - - * TCP has been fixed to deal with the new use of the pbuf->ref - counter. - - * DHCP dhcp_inform() crash bug fixed. - - ++ Changes: - - * Removed pbuf_pool_free_cache and pbuf_pool_alloc_cache. Also removed - pbuf_refresh(). This has sped up pbuf pool operations considerably. - Implemented by David Haas. - -(0.6.1) - - ++ New features: - - * The packet buffer implementation has been enhanced to support - zero-copy and copy-on-demand for packet buffers which have their - payloads in application-managed memory. - Implemented by David Haas. - - Use PBUF_REF to make a pbuf refer to RAM. lwIP will use zero-copy - if an outgoing packet can be directly sent on the link, or perform - a copy-on-demand when necessary. - - The application can safely assume the packet is sent, and the RAM - is available to the application directly after calling udp_send() - or similar function. - - ++ Bugfixes: - - * ARP_QUEUEING should now correctly work for all cases, including - PBUF_REF. - Implemented by Leon Woestenberg. - - ++ Changes: - - * IP_ADDR_ANY is no longer a NULL pointer. Instead, it is a pointer - to a '0.0.0.0' IP address. - - * The packet buffer implementation is changed. The pbuf->ref counter - meaning has changed, and several pbuf functions have been - adapted accordingly. - - * netif drivers have to be changed to set the hardware address length field - that must be initialized correctly by the driver (hint: 6 for Ethernet MAC). - See the contrib/ports/c16x cs8900 driver as a driver example. - - * netif's have a dhcp field that must be initialized to NULL by the driver. - See the contrib/ports/c16x cs8900 driver as a driver example. - -(0.5.x) This file has been unmaintained up to 0.6.1. All changes are - logged in CVS but have not been explained here. - -(0.5.3) Changes since version 0.5.2 - - ++ Bugfixes: - - * memp_malloc(MEMP_API_MSG) could fail with multiple application - threads because it wasn't protected by semaphores. - - ++ Other changes: - - * struct ip_addr now packed. - - * The name of the time variable in arp.c has been changed to ctime - to avoid conflicts with the time() function. - -(0.5.2) Changes since version 0.5.1 - - ++ New features: - - * A new TCP function, tcp_tmr(), now handles both TCP timers. - - ++ Bugfixes: - - * A bug in tcp_parseopt() could cause the stack to hang because of a - malformed TCP option. - - * The address of new connections in the accept() function in the BSD - socket library was not handled correctly. - - * pbuf_dechain() did not update the ->tot_len field of the tail. - - * Aborted TCP connections were not handled correctly in all - situations. - - ++ Other changes: - - * All protocol header structs are now packed. - - * The ->len field in the tcp_seg structure now counts the actual - amount of data, and does not add one for SYN and FIN segments. - -(0.5.1) Changes since version 0.5.0 - - ++ New features: - - * Possible to run as a user process under Linux. - - * Preliminary support for cross platform packed structs. - - * ARP timer now implemented. - - ++ Bugfixes: - - * TCP output queue length was badly initialized when opening - connections. - - * TCP delayed ACKs were not sent correctly. - - * Explicit initialization of BSS segment variables. - - * read() in BSD socket library could drop data. - - * Problems with memory alignment. - - * Situations when all TCP buffers were used could lead to - starvation. - - * TCP MSS option wasn't parsed correctly. - - * Problems with UDP checksum calculation. - - * IP multicast address tests had endianess problems. - - * ARP requests had wrong destination hardware address. - - ++ Other changes: - - * struct eth_addr changed from u16_t[3] array to u8_t[6]. - - * A ->linkoutput() member was added to struct netif. - - * TCP and UDP ->dest_* struct members where changed to ->remote_*. - - * ntoh* macros are now null definitions for big endian CPUs. - -(0.5.0) Changes since version 0.4.2 - - ++ New features: - - * Redesigned operating system emulation layer to make porting easier. - - * Better control over TCP output buffers. - - * Documenation added. - - ++ Bugfixes: - - * Locking issues in buffer management. - - * Bugfixes in the sequential API. - - * IP forwarding could cause memory leakage. This has been fixed. - - ++ Other changes: - - * Directory structure somewhat changed; the core/ tree has been - collapsed. - -(0.4.2) Changes since version 0.4.1 - - ++ New features: - - * Experimental ARP implementation added. - - * Skeleton Ethernet driver added. - - * Experimental BSD socket API library added. - - ++ Bugfixes: - - * In very intense situations, memory leakage could occur. This has - been fixed. - - ++ Other changes: - - * Variables named "data" and "code" have been renamed in order to - avoid name conflicts in certain compilers. - - * Variable++ have in appliciable cases been translated to ++variable - since some compilers generate better code in the latter case. - -(0.4.1) Changes since version 0.4 - - ++ New features: - - * TCP: Connection attempts time out earlier than data - transmissions. Nagle algorithm implemented. Push flag set on the - last segment in a burst. - - * UDP: experimental support for UDP-Lite extensions. - - ++ Bugfixes: - - * TCP: out of order segments were in some cases handled incorrectly, - and this has now been fixed. Delayed acknowledgements was broken - in 0.4, has now been fixed. Binding to an address that is in use - now results in an error. Reset connections sometimes hung an - application; this has been fixed. - - * Checksum calculation sometimes failed for chained pbufs with odd - lengths. This has been fixed. - - * API: a lot of bug fixes in the API. The UDP API has been improved - and tested. Error reporting and handling has been - improved. Logical flaws and race conditions for incoming TCP - connections has been found and removed. - - * Memory manager: alignment issues. Reallocating memory sometimes - failed, this has been fixed. - - * Generic library: bcopy was flawed and has been fixed. - - ++ Other changes: - - * API: all datatypes has been changed from generic ones such as - ints, to specified ones such as u16_t. Functions that return - errors now have the correct type (err_t). - - * General: A lot of code cleaned up and debugging code removed. Many - portability issues have been fixed. - - * The license was changed; the advertising clause was removed. - - * C64 port added. - - * Thanks: Huge thanks go to Dagan Galarneau, Horst Garnetzke, Petri - Kosunen, Mikael Caleres, and Frits Wilmink for reporting and - fixing bugs! - -(0.4) Changes since version 0.3.1 - - * Memory management has been radically changed; instead of - allocating memory from a shared heap, memory for objects that are - rapidly allocated and deallocated is now kept in pools. Allocation - and deallocation from those memory pools is very fast. The shared - heap is still present but is used less frequently. - - * The memory, memory pool, and packet buffer subsystems now support - 4-, 2-, or 1-byte alignment. - - * "Out of memory" situations are handled in a more robust way. - - * Stack usage has been reduced. - - * Easier configuration of lwIP parameters such as memory usage, - TTLs, statistics gathering, etc. All configuration parameters are - now kept in a single header file "lwipopts.h". - - * The directory structure has been changed slightly so that all - architecture specific files are kept under the src/arch - hierarchy. - - * Error propagation has been improved, both in the protocol modules - and in the API. - - * The code for the RTXC architecture has been implemented, tested - and put to use. - - * Bugs have been found and corrected in the TCP, UDP, IP, API, and - the Internet checksum modules. - - * Bugs related to porting between a 32-bit and a 16-bit architecture - have been found and corrected. - - * The license has been changed slightly to conform more with the - original BSD license, including the advertisement clause. - -(0.3.1) Changes since version 0.3 - - * Fix of a fatal bug in the buffer management. Pbufs with allocated - RAM never returned the RAM when the pbuf was deallocated. - - * TCP congestion control, window updates and retransmissions did not - work correctly. This has now been fixed. - - * Bugfixes in the API. - -(0.3) Changes since version 0.2 - - * New and improved directory structure. All include files are now - kept in a dedicated include/ directory. - - * The API now has proper error handling. A new function, - netconn_err(), now returns an error code for the connection in - case of errors. - - * Improvements in the memory management subsystem. The system now - keeps a pointer to the lowest free memory block. A new function, - mem_malloc2() tries to allocate memory once, and if it fails tries - to free some memory and retry the allocation. - - * Much testing has been done with limited memory - configurations. lwIP now does a better job when overloaded. - - * Some bugfixes and improvements to the buffer (pbuf) subsystem. - - * Many bugfixes in the TCP code: - - - Fixed a bug in tcp_close(). - - - The TCP receive window was incorrectly closed when out of - sequence segments was received. This has been fixed. - - - Connections are now timed-out of the FIN-WAIT-2 state. - - - The initial congestion window could in some cases be too - large. This has been fixed. - - - The retransmission queue could in some cases be screwed up. This - has been fixed. - - - TCP RST flag now handled correctly. - - - Out of sequence data was in some cases never delivered to the - application. This has been fixed. - - - Retransmitted segments now contain the correct acknowledgment - number and advertised window. - - - TCP retransmission timeout backoffs are not correctly computed - (ala BSD). After a number of retransmissions, TCP now gives up - the connection. - - * TCP connections now are kept on three lists, one for active - connections, one for listening connections, and one for - connections that are in TIME-WAIT. This greatly speeds up the fast - timeout processing for sending delayed ACKs. - - * TCP now provides proper feedback to the application when a - connection has been successfully set up. - - * More comments have been added to the code. The code has also been - somewhat cleaned up. - -(0.2) Initial public release. diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/COPYING b/l4/pkg/ankh/lib/lwip/lib/contrib/COPYING deleted file mode 100644 index e23898b5e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/COPYING +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2001, 2002 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/FILES b/l4/pkg/ankh/lib/lwip/lib/contrib/FILES deleted file mode 100644 index 66253196f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/FILES +++ /dev/null @@ -1,4 +0,0 @@ -src/ - The source code for the lwIP TCP/IP stack. -doc/ - The documentation for lwIP. - -See also the FILES file in each subdirectory. diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/README b/l4/pkg/ankh/lib/lwip/lib/contrib/README deleted file mode 100644 index 8dda4b468..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/README +++ /dev/null @@ -1,89 +0,0 @@ -INTRODUCTION - -lwIP is a small independent implementation of the TCP/IP protocol -suite that has been developed by Adam Dunkels at the Computer and -Networks Architectures (CNA) lab at the Swedish Institute of Computer -Science (SICS). - -The focus of the lwIP TCP/IP implementation is to reduce the RAM usage -while still having a full scale TCP. This making lwIP suitable for use -in embedded systems with tens of kilobytes of free RAM and room for -around 40 kilobytes of code ROM. - -FEATURES - - * IP (Internet Protocol) including packet forwarding over multiple network - interfaces - * ICMP (Internet Control Message Protocol) for network maintenance and debugging - * IGMP (Internet Group Management Protocol) for multicast traffic management - * UDP (User Datagram Protocol) including experimental UDP-lite extensions - * TCP (Transmission Control Protocol) with congestion control, RTT estimation - and fast recovery/fast retransmit - * Specialized raw/native API for enhanced performance - * Optional Berkeley-like socket API - * DNS (Domain names resolver) - * SNMP (Simple Network Management Protocol) - * DHCP (Dynamic Host Configuration Protocol) - * AUTOIP (for IPv4, conform with RFC 3927) - * PPP (Point-to-Point Protocol) - * ARP (Address Resolution Protocol) for Ethernet - -LICENSE - -lwIP is freely available under a BSD license. - -DEVELOPMENT - -lwIP has grown into an excellent TCP/IP stack for embedded devices, -and developers using the stack often submit bug fixes, improvements, -and additions to the stack to further increase its usefulness. - -Development of lwIP is hosted on Savannah, a central point for -software development, maintenance and distribution. Everyone can -help improve lwIP by use of Savannah's interface, CVS and the -mailing list. A core team of developers will commit changes to the -CVS source tree. - -The lwIP TCP/IP stack is maintained in the 'lwip' CVS module and -contributions (such as platform ports) are in the 'contrib' module. - -See doc/savannah.txt for details on CVS server access for users and -developers. - -Last night's CVS tar ball can be downloaded from: - http://savannah.gnu.org/cvs.backups/lwip.tar.gz [CHANGED - NEEDS FIXING] - -The current CVS trees are web-browsable: - http://savannah.nongnu.org/cgi-bin/viewcvs/lwip/lwip/ - http://savannah.nongnu.org/cgi-bin/viewcvs/lwip/contrib/ - -Submit patches and bugs via the lwIP project page: - http://savannah.nongnu.org/projects/lwip/ - - -DOCUMENTATION - -The original out-dated homepage of lwIP and Adam Dunkels' papers on -lwIP are at the official lwIP home page: - http://www.sics.se/~adam/lwip/ - -Self documentation of the source code is regularly extracted from the -current CVS sources and is available from this web page: - http://www.nongnu.org/lwip/ - -There is now a constantly growin wiki about lwIP at - http://lwip.scribblewiki.com/ - -Also, there are mailing lists you can subscribe at - http://savannah.nongnu.org/mail/?group=lwip -plus searchable archives: - http://lists.nongnu.org/archive/html/lwip-users/ - http://lists.nongnu.org/archive/html/lwip-devel/ - -Reading Adam's papers, the files in docs/, browsing the source code -documentation and browsing the mailing list archives is a good way to -become familiar with the design of lwIP. - -Adam Dunkels -Leon Woestenberg - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/FILES b/l4/pkg/ankh/lib/lwip/lib/contrib/doc/FILES deleted file mode 100644 index 05d356f4f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/FILES +++ /dev/null @@ -1,6 +0,0 @@ -savannah.txt - How to obtain the current development source code. -contrib.txt - How to contribute to lwIP as a developer. -rawapi.txt - The documentation for the core API of lwIP. - Also provides an overview about the other APIs and multithreading. -snmp_agent.txt - The documentation for the lwIP SNMP agent. -sys_arch.txt - The documentation for a system abstraction layer of lwIP. diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/contrib.txt b/l4/pkg/ankh/lib/lwip/lib/contrib/doc/contrib.txt deleted file mode 100644 index 39596fca3..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/contrib.txt +++ /dev/null @@ -1,63 +0,0 @@ -1 Introduction - -This document describes some guidelines for people participating -in lwIP development. - -2 How to contribute to lwIP - -Here is a short list of suggestions to anybody working with lwIP and -trying to contribute bug reports, fixes, enhancements, platform ports etc. -First of all as you may already know lwIP is a volunteer project so feedback -to fixes or questions might often come late. Hopefully the bug and patch tracking -features of Savannah help us not lose users' input. - -2.1 Source code style: - -1. do not use tabs. -2. indentation is two spaces per level (i.e. per tab). -3. end debug messages with a trailing newline (\n). -4. one space between keyword and opening bracket. -5. no space between function and opening bracket. -6. one space and no newline before opening curly braces of a block. -7. closing curly brace on a single line. -8. spaces surrounding assignment and comparisons. -9. don't initialize static and/or global variables to zero, the compiler takes care of that. -10. use current source code style as further reference. - -2.2 Source code documentation style: - -1. JavaDoc compliant and Doxygen compatible. -2. Function documentation above functions in .c files, not .h files. - (This forces you to synchronize documentation and implementation.) -3. Use current documentation style as further reference. - -2.3 Bug reports and patches: - -1. Make sure you are reporting bugs or send patches against the latest - sources. (From the latest release and/or the current CVS sources.) -2. If you think you found a bug make sure it's not already filed in the - bugtracker at Savannah. -3. If you have a fix put the patch on Savannah. If it is a patch that affects - both core and arch specific stuff please separate them so that the core can - be applied separately while leaving the other patch 'open'. The prefered way - is to NOT touch archs you can't test and let maintainers take care of them. - This is a good way to see if they are used at all - the same goes for unix - netifs except tapif. -4. Do not file a bug and post a fix to it to the patch area. Either a bug report - or a patch will be enough. - If you correct an existing bug then attach the patch to the bug rather than creating a new entry in the patch area. -5. Trivial patches (compiler warning, indentation and spelling fixes or anything obvious which takes a line or two) - can go to the lwip-users list. This is still the fastest way of interaction and the list is not so crowded - as to allow for loss of fixes. Putting bugs on Savannah and subsequently closing them is too much an overhead - for reporting a compiler warning fix. -6. Patches should be specific to a single change or to related changes.Do not mix bugfixes with spelling and other - trivial fixes unless the bugfix is trivial too.Do not reorganize code and rename identifiers in the same patch you - change behaviour if not necessary.A patch is easier to read and understand if it's to the point and short than - if it's not to the point and long :) so the chances for it to be applied are greater. - -2.4 Platform porters: - -1. If you have ported lwIP to a platform (an OS, a uC/processor or a combination of these) and - you think it could benefit others[1] you might want discuss this on the mailing list. You - can also ask for CVS access to submit and maintain your port in the contrib CVS module. - \ No newline at end of file diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/rawapi.txt b/l4/pkg/ankh/lib/lwip/lib/contrib/doc/rawapi.txt deleted file mode 100644 index 8eec6e786..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/rawapi.txt +++ /dev/null @@ -1,478 +0,0 @@ -Raw TCP/IP interface for lwIP - -Authors: Adam Dunkels, Leon Woestenberg, Christiaan Simons - -lwIP provides three Application Program's Interfaces (APIs) for programs -to use for communication with the TCP/IP code: -* low-level "core" / "callback" or "raw" API. -* higher-level "sequential" API. -* BSD-style socket API. - -The sequential API provides a way for ordinary, sequential, programs -to use the lwIP stack. It is quite similar to the BSD socket API. The -model of execution is based on the blocking open-read-write-close -paradigm. Since the TCP/IP stack is event based by nature, the TCP/IP -code and the application program must reside in different execution -contexts (threads). - -The socket API is a compatibility API for existing applications, -currently it is built on top of the sequential API. It is meant to -provide all functions needed to run socket API applications running -on other platforms (e.g. unix / windows etc.). However, due to limitations -in the specification of this API, there might be incompatibilities -that require small modifications of existing programs. - -** Threading - -lwIP started targeting single-threaded environments. When adding multi- -threading support, instead of making the core thread-safe, another -approach was chosen: there is one main thread running the lwIP core -(also known as the "tcpip_thread"). The raw API may only be used from -this thread! Application threads using the sequential- or socket API -communicate with this main thread through message passing. - - As such, the list of functions that may be called from - other threads or an ISR is very limited! Only functions - from these API header files are thread-safe: - - api.h - - netbuf.h - - netdb.h - - netifapi.h - - sockets.h - - sys.h - - Additionaly, memory (de-)allocation functions may be - called from multiple threads (not ISR!) with NO_SYS=0 - since they are protected by SYS_LIGHTWEIGHT_PROT and/or - semaphores. - - Only since 1.3.0, if SYS_LIGHTWEIGHT_PROT is set to 1 - and LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT is set to 1, - pbuf_free() may also be called from another thread or - an ISR (since only then, mem_free - for PBUF_RAM - may - be called from an ISR: otherwise, the HEAP is only - protected by semaphores). - - -** The remainder of this document discusses the "raw" API. ** - -The raw TCP/IP interface allows the application program to integrate -better with the TCP/IP code. Program execution is event based by -having callback functions being called from within the TCP/IP -code. The TCP/IP code and the application program both run in the same -thread. The sequential API has a much higher overhead and is not very -well suited for small systems since it forces a multithreaded paradigm -on the application. - -The raw TCP/IP interface is not only faster in terms of code execution -time but is also less memory intensive. The drawback is that program -development is somewhat harder and application programs written for -the raw TCP/IP interface are more difficult to understand. Still, this -is the preferred way of writing applications that should be small in -code size and memory usage. - -Both APIs can be used simultaneously by different application -programs. In fact, the sequential API is implemented as an application -program using the raw TCP/IP interface. - ---- Callbacks - -Program execution is driven by callbacks. Each callback is an ordinary -C function that is called from within the TCP/IP code. Every callback -function is passed the current TCP or UDP connection state as an -argument. Also, in order to be able to keep program specific state, -the callback functions are called with a program specified argument -that is independent of the TCP/IP state. - -The function for setting the application connection state is: - -- void tcp_arg(struct tcp_pcb *pcb, void *arg) - - Specifies the program specific state that should be passed to all - other callback functions. The "pcb" argument is the current TCP - connection control block, and the "arg" argument is the argument - that will be passed to the callbacks. - - ---- TCP connection setup - -The functions used for setting up connections is similar to that of -the sequential API and of the BSD socket API. A new TCP connection -identifier (i.e., a protocol control block - PCB) is created with the -tcp_new() function. This PCB can then be either set to listen for new -incoming connections or be explicitly connected to another host. - -- struct tcp_pcb *tcp_new(void) - - Creates a new connection identifier (PCB). If memory is not - available for creating the new pcb, NULL is returned. - -- err_t tcp_bind(struct tcp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port) - - Binds the pcb to a local IP address and port number. The IP address - can be specified as IP_ADDR_ANY in order to bind the connection to - all local IP addresses. - - If another connection is bound to the same port, the function will - return ERR_USE, otherwise ERR_OK is returned. - -- struct tcp_pcb *tcp_listen(struct tcp_pcb *pcb) - - Commands a pcb to start listening for incoming connections. When an - incoming connection is accepted, the function specified with the - tcp_accept() function will be called. The pcb will have to be bound - to a local port with the tcp_bind() function. - - The tcp_listen() function returns a new connection identifier, and - the one passed as an argument to the function will be - deallocated. The reason for this behavior is that less memory is - needed for a connection that is listening, so tcp_listen() will - reclaim the memory needed for the original connection and allocate a - new smaller memory block for the listening connection. - - tcp_listen() may return NULL if no memory was available for the - listening connection. If so, the memory associated with the pcb - passed as an argument to tcp_listen() will not be deallocated. - -- struct tcp_pcb *tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog) - - Same as tcp_listen, but limits the number of outstanding connections - in the listen queue to the value specified by the backlog argument. - To use it, your need to set TCP_LISTEN_BACKLOG=1 in your lwipopts.h. - -- void tcp_accepted(struct tcp_pcb *pcb) - - Inform lwIP that an incoming connection has been accepted. This would - usually be called from the accept callback. This allows lwIP to perform - housekeeping tasks, such as allowing further incoming connections to be - queued in the listen backlog. - -- void tcp_accept(struct tcp_pcb *pcb, - err_t (* accept)(void *arg, struct tcp_pcb *newpcb, - err_t err)) - - Specified the callback function that should be called when a new - connection arrives on a listening connection. - -- err_t tcp_connect(struct tcp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port, err_t (* connected)(void *arg, - struct tcp_pcb *tpcb, - err_t err)); - - Sets up the pcb to connect to the remote host and sends the - initial SYN segment which opens the connection. - - The tcp_connect() function returns immediately; it does not wait for - the connection to be properly setup. Instead, it will call the - function specified as the fourth argument (the "connected" argument) - when the connection is established. If the connection could not be - properly established, either because the other host refused the - connection or because the other host didn't answer, the "err" - callback function of this pcb (registered with tcp_err, see below) - will be called. - - The tcp_connect() function can return ERR_MEM if no memory is - available for enqueueing the SYN segment. If the SYN indeed was - enqueued successfully, the tcp_connect() function returns ERR_OK. - - ---- Sending TCP data - -TCP data is sent by enqueueing the data with a call to -tcp_write(). When the data is successfully transmitted to the remote -host, the application will be notified with a call to a specified -callback function. - -- err_t tcp_write(struct tcp_pcb *pcb, void *dataptr, u16_t len, - u8_t copy) - - Enqueues the data pointed to by the argument dataptr. The length of - the data is passed as the len parameter. The copy argument is either - 0 or 1 and indicates whether the new memory should be allocated for - the data to be copied into. If the argument is 0, no new memory - should be allocated and the data should only be referenced by - pointer. - - The tcp_write() function will fail and return ERR_MEM if the length - of the data exceeds the current send buffer size or if the length of - the queue of outgoing segment is larger than the upper limit defined - in lwipopts.h. The number of bytes available in the output queue can - be retrieved with the tcp_sndbuf() function. - - The proper way to use this function is to call the function with at - most tcp_sndbuf() bytes of data. If the function returns ERR_MEM, - the application should wait until some of the currently enqueued - data has been successfully received by the other host and try again. - -- void tcp_sent(struct tcp_pcb *pcb, - err_t (* sent)(void *arg, struct tcp_pcb *tpcb, - u16_t len)) - - Specifies the callback function that should be called when data has - successfully been received (i.e., acknowledged) by the remote - host. The len argument passed to the callback function gives the - amount bytes that was acknowledged by the last acknowledgment. - - ---- Receiving TCP data - -TCP data reception is callback based - an application specified -callback function is called when new data arrives. When the -application has taken the data, it has to call the tcp_recved() -function to indicate that TCP can advertise increase the receive -window. - -- void tcp_recv(struct tcp_pcb *pcb, - err_t (* recv)(void *arg, struct tcp_pcb *tpcb, - struct pbuf *p, err_t err)) - - Sets the callback function that will be called when new data - arrives. The callback function will be passed a NULL pbuf to - indicate that the remote host has closed the connection. If - there are no errors and the callback function is to return - ERR_OK, then it must free the pbuf. Otherwise, it must not - free the pbuf so that lwIP core code can store it. - -- void tcp_recved(struct tcp_pcb *pcb, u16_t len) - - Must be called when the application has received the data. The len - argument indicates the length of the received data. - - ---- Application polling - -When a connection is idle (i.e., no data is either transmitted or -received), lwIP will repeatedly poll the application by calling a -specified callback function. This can be used either as a watchdog -timer for killing connections that have stayed idle for too long, or -as a method of waiting for memory to become available. For instance, -if a call to tcp_write() has failed because memory wasn't available, -the application may use the polling functionality to call tcp_write() -again when the connection has been idle for a while. - -- void tcp_poll(struct tcp_pcb *pcb, u8_t interval, - err_t (* poll)(void *arg, struct tcp_pcb *tpcb)) - - Specifies the polling interval and the callback function that should - be called to poll the application. The interval is specified in - number of TCP coarse grained timer shots, which typically occurs - twice a second. An interval of 10 means that the application would - be polled every 5 seconds. - - ---- Closing and aborting connections - -- err_t tcp_close(struct tcp_pcb *pcb) - - Closes the connection. The function may return ERR_MEM if no memory - was available for closing the connection. If so, the application - should wait and try again either by using the acknowledgment - callback or the polling functionality. If the close succeeds, the - function returns ERR_OK. - - The pcb is deallocated by the TCP code after a call to tcp_close(). - -- void tcp_abort(struct tcp_pcb *pcb) - - Aborts the connection by sending a RST (reset) segment to the remote - host. The pcb is deallocated. This function never fails. - -If a connection is aborted because of an error, the application is -alerted of this event by the err callback. Errors that might abort a -connection are when there is a shortage of memory. The callback -function to be called is set using the tcp_err() function. - -- void tcp_err(struct tcp_pcb *pcb, void (* err)(void *arg, - err_t err)) - - The error callback function does not get the pcb passed to it as a - parameter since the pcb may already have been deallocated. - - ---- Lower layer TCP interface - -TCP provides a simple interface to the lower layers of the -system. During system initialization, the function tcp_init() has -to be called before any other TCP function is called. When the system -is running, the two timer functions tcp_fasttmr() and tcp_slowtmr() -must be called with regular intervals. The tcp_fasttmr() should be -called every TCP_FAST_INTERVAL milliseconds (defined in tcp.h) and -tcp_slowtmr() should be called every TCP_SLOW_INTERVAL milliseconds. - - ---- UDP interface - -The UDP interface is similar to that of TCP, but due to the lower -level of complexity of UDP, the interface is significantly simpler. - -- struct udp_pcb *udp_new(void) - - Creates a new UDP pcb which can be used for UDP communication. The - pcb is not active until it has either been bound to a local address - or connected to a remote address. - -- void udp_remove(struct udp_pcb *pcb) - - Removes and deallocates the pcb. - -- err_t udp_bind(struct udp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port) - - Binds the pcb to a local address. The IP-address argument "ipaddr" - can be IP_ADDR_ANY to indicate that it should listen to any local IP - address. The function currently always return ERR_OK. - -- err_t udp_connect(struct udp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port) - - Sets the remote end of the pcb. This function does not generate any - network traffic, but only set the remote address of the pcb. - -- err_t udp_disconnect(struct udp_pcb *pcb) - - Remove the remote end of the pcb. This function does not generate - any network traffic, but only removes the remote address of the pcb. - -- err_t udp_send(struct udp_pcb *pcb, struct pbuf *p) - - Sends the pbuf p. The pbuf is not deallocated. - -- void udp_recv(struct udp_pcb *pcb, - void (* recv)(void *arg, struct udp_pcb *upcb, - struct pbuf *p, - struct ip_addr *addr, - u16_t port), - void *recv_arg) - - Specifies a callback function that should be called when a UDP - datagram is received. - - ---- System initalization - -A truly complete and generic sequence for initializing the lwip stack -cannot be given because it depends on the build configuration (lwipopts.h) -and additional initializations for your runtime environment (e.g. timers). - -We can give you some idea on how to proceed when using the raw API. -We assume a configuration using a single Ethernet netif and the -UDP and TCP transport layers, IPv4 and the DHCP client. - -Call these functions in the order of appearance: - -- stats_init() - - Clears the structure where runtime statistics are gathered. - -- sys_init() - - Not of much use since we set the NO_SYS 1 option in lwipopts.h, - to be called for easy configuration changes. - -- mem_init() - - Initializes the dynamic memory heap defined by MEM_SIZE. - -- memp_init() - - Initializes the memory pools defined by MEMP_NUM_x. - -- pbuf_init() - - Initializes the pbuf memory pool defined by PBUF_POOL_SIZE. - -- etharp_init() - - Initializes the ARP table and queue. - Note: you must call etharp_tmr at a ARP_TMR_INTERVAL (5 seconds) regular interval - after this initialization. - -- ip_init() - - Doesn't do much, it should be called to handle future changes. - -- udp_init() - - Clears the UDP PCB list. - -- tcp_init() - - Clears the TCP PCB list and clears some internal TCP timers. - Note: you must call tcp_fasttmr() and tcp_slowtmr() at the - predefined regular intervals after this initialization. - -- netif_add(struct netif *netif, struct ip_addr *ipaddr, - struct ip_addr *netmask, struct ip_addr *gw, - void *state, err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif)) - - Adds your network interface to the netif_list. Allocate a struct - netif and pass a pointer to this structure as the first argument. - Give pointers to cleared ip_addr structures when using DHCP, - or fill them with sane numbers otherwise. The state pointer may be NULL. - - The init function pointer must point to a initialization function for - your ethernet netif interface. The following code illustrates it's use. - - err_t netif_if_init(struct netif *netif) - { - u8_t i; - - for(i = 0; i < ETHARP_HWADDR_LEN; i++) netif->hwaddr[i] = some_eth_addr[i]; - init_my_eth_device(); - return ERR_OK; - } - - For ethernet drivers, the input function pointer must point to the lwip - function ethernet_input() declared in "netif/etharp.h". Other drivers - must use ip_input() declared in "lwip/ip.h". - -- netif_set_default(struct netif *netif) - - Registers the default network interface. - -- netif_set_up(struct netif *netif) - - When the netif is fully configured this function must be called. - -- dhcp_start(struct netif *netif) - - Creates a new DHCP client for this interface on the first call. - Note: you must call dhcp_fine_tmr() and dhcp_coarse_tmr() at - the predefined regular intervals after starting the client. - - You can peek in the netif->dhcp struct for the actual DHCP status. - - ---- Optimalization hints - -The first thing you want to optimize is the lwip_standard_checksum() -routine from src/core/inet.c. You can override this standard -function with the #define LWIP_CHKSUM . - -There are C examples given in inet.c or you might want to -craft an assembly function for this. RFC1071 is a good -introduction to this subject. - -Other significant improvements can be made by supplying -assembly or inline replacements for htons() and htonl() -if you're using a little-endian architecture. -#define LWIP_PLATFORM_BYTESWAP 1 -#define LWIP_PLATFORM_HTONS(x) -#define LWIP_PLATFORM_HTONL(x) - -Check your network interface driver if it reads at -a higher speed than the maximum wire-speed. If the -hardware isn't serviced frequently and fast enough -buffer overflows are likely to occur. - -E.g. when using the cs8900 driver, call cs8900if_service(ethif) -as frequently as possible. When using an RTOS let the cs8900 interrupt -wake a high priority task that services your driver using a binary -semaphore or event flag. Some drivers might allow additional tuning -to match your application and network. - -For a production release it is recommended to set LWIP_STATS to 0. -Note that speed performance isn't influenced much by simply setting -high values to the memory options. diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/savannah.txt b/l4/pkg/ankh/lib/lwip/lib/contrib/doc/savannah.txt deleted file mode 100644 index 409905b10..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/savannah.txt +++ /dev/null @@ -1,135 +0,0 @@ -Daily Use Guide for using Savannah for lwIP - -Table of Contents: - -1 - Obtaining lwIP from the CVS repository -2 - Committers/developers CVS access using SSH (to be written) -3 - Merging from DEVEL branch to main trunk (stable branch) -4 - How to release lwIP - - - -1 Obtaining lwIP from the CVS repository ----------------------------------------- - -To perform an anonymous CVS checkout of the main trunk (this is where -bug fixes and incremental enhancements occur), do this: - -cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/lwip checkout lwip - -Or, obtain a stable branch (updated with bug fixes only) as follows: -cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/lwip checkout \ - -r STABLE-0_7 -d lwip-0.7 lwip - -Or, obtain a specific (fixed) release as follows: -cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/lwip checkout \ - -r STABLE-0_7_0 -d lwip-0.7.0 lwip - -3 Committers/developers CVS access using SSH --------------------------------------------- - -The Savannah server uses SSH (Secure Shell) protocol 2 authentication and encryption. -As such, CVS commits to the server occur through a SSH tunnel for project members. -To create a SSH2 key pair in UNIX-like environments, do this: - -ssh-keygen -t dsa - -Under Windows, a recommended SSH client is "PuTTY", freely available with good -documentation and a graphic user interface. Use its key generator. - -Now paste the id_dsa.pub contents into your Savannah account public key list. Wait -a while so that Savannah can update its configuration (This can take minutes). - -Try to login using SSH: - -ssh -v your_login@cvs.sv.gnu.org - -If it tells you: - -Authenticating with public key "your_key_name"... -Server refused to allocate pty - -then you could login; Savannah refuses to give you a shell - which is OK, as we -are allowed to use SSH for CVS only. Now, you should be able to do this: - -export CVS_RSH=ssh -cvs -z3 -d:ext:your_login@cvs.sv.gnu.org:/sources/lwip co lwip - -after which you can edit your local files with bug fixes or new features and -commit them. Make sure you know what you are doing when using CVS to make -changes on the repository. If in doubt, ask on the lwip-members mailing list. - -(If SSH asks about authenticity of the host, you can check the key - fingerprint against http://savannah.nongnu.org/cvs/?group=lwip) - - -3 Merging from DEVEL branch to main trunk (stable) --------------------------------------------------- - -Merging is a delicate process in CVS and requires the -following disciplined steps in order to prevent conflicts -in the future. Conflicts can be hard to solve! - -Merging from branch A to branch B requires that the A branch -has a tag indicating the previous merger. This tag is called -'merged_from_A_to_B'. After merging, the tag is moved in the -A branch to remember this merger for future merge actions. - -IMPORTANT: AFTER COMMITTING A SUCCESFUL MERGE IN THE -REPOSITORY, THE TAG MUST BE SET ON THE SOURCE BRANCH OF THE -MERGE ACTION (REPLACING EXISTING TAGS WITH THE SAME NAME). - -Merge all changes in DEVEL since our last merge to main: - -In the working copy of the main trunk: -cvs update -P -jmerged_from_DEVEL_to_main -jDEVEL - -(This will apply the changes between 'merged_from_DEVEL_to_main' -and 'DEVEL' to your work set of files) - -We can now commit the merge result. -cvs commit -R -m "Merged from DEVEL to main." - -If this worked out OK, we now move the tag in the DEVEL branch -to this merge point, so we can use this point for future merges: - -cvs rtag -F -r DEVEL merged_from_DEVEL_to_main lwip - -4 How to release lwIP ---------------------- - -First, checkout a clean copy of the branch to be released. Tag this set with -tag name "STABLE-0_6_3". (I use release number 0.6.3 throughout this example). - -Login CVS using pserver authentication, then export a clean copy of the -tagged tree. Export is similar to a checkout, except that the CVS metadata -is not created locally. - -export CVS_RSH=ssh -cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/lwip checkout \ - -r STABLE-0_6_3 -d lwip-0.6.3 lwip - -Archive this directory using tar, gzip'd, bzip2'd and zip'd. - -tar czvf lwip-0.6.3.tar.gz lwip-0.6.3 -tar cjvf lwip-0.6.3.tar.bz2 lwip-0.6.3 -zip -r lwip-0.6.3.zip lwip-0.6.3 - -Now, sign the archives with a detached GPG binary signature as follows: - -gpg -b lwip-0.6.3.tar.gz -gpg -b lwip-0.6.3.tar.bz2 -gpg -b lwip-0.6.3.zip - -Upload these files using anonymous FTP: -ncftp ftp://savannah.gnu.org/incoming/savannah/lwip - -ncftp>mput *0.6.3.* - -Additionally, you may post a news item on Savannah, like this: - -A new 0.6.3 release is now available here: -http://savannah.nongnu.org/files/?group=lwip&highlight=0.6.3 - -You will have to submit this via the user News interface, then approve -this via the Administrator News interface. \ No newline at end of file diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/snmp_agent.txt b/l4/pkg/ankh/lib/lwip/lib/contrib/doc/snmp_agent.txt deleted file mode 100644 index 9b58616a6..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/snmp_agent.txt +++ /dev/null @@ -1,181 +0,0 @@ -SNMPv1 agent for lwIP - -Author: Christiaan Simons - -This is a brief introduction how to use and configure the SNMP agent. -Note the agent uses the raw-API UDP interface so you may also want to -read rawapi.txt to gain a better understanding of the SNMP message handling. - -0 Agent Capabilities -==================== - -SNMPv1 per RFC1157 - This is an old(er) standard but is still widely supported. - For SNMPv2c and v3 have a greater complexity and need many - more lines of code. IMHO this breaks the idea of "lightweight IP". - - Note the S in SNMP stands for "Simple". Note that "Simple" is - relative. SNMP is simple compared to the complex ISO network - management protocols CMIP (Common Management Information Protocol) - and CMOT (CMip Over Tcp). - -MIB II per RFC1213 - The standard lwIP stack management information base. - This is a required MIB, so this is always enabled. - When builing lwIP without TCP, the mib-2.tcp group is omitted. - The groups EGP, CMOT and transmission are disabled by default. - - Most mib-2 objects are not writable except: - sysName, sysLocation, sysContact, snmpEnableAuthenTraps. - Writing to or changing the ARP and IP address and route - tables is not possible. - - Note lwIP has a very limited notion of IP routing. It currently - doen't have a route table and doesn't have a notion of the U,G,H flags. - Instead lwIP uses the interface list with only one default interface - acting as a single gateway interface (G) for the default route. - - The agent returns a "virtual table" with the default route 0.0.0.0 - for the default interface and network routes (no H) for each - network interface in the netif_list. - All routes are considered to be up (U). - -Loading additional MIBs - MIBs can only be added in compile-time, not in run-time. - There is no MIB compiler thus additional MIBs must be hand coded. - -Large SNMP message support - The packet decoding and encoding routines are designed - to use pbuf-chains. Larger payloads then the minimum - SNMP requirement of 484 octets are supported if the - PBUF_POOL_SIZE and IP_REASS_BUFSIZE are set to match your - local requirement. - -1 Building the Agent -==================== - -First of all you'll need to add the following define -to your local lwipopts.h: - -#define LWIP_SNMP 1 - -and add the source files in lwip/src/core/snmp -and some snmp headers in lwip/src/include/lwip to your makefile. - -Note you'll might need to adapt you network driver to update -the mib2 variables for your interface. - -2 Running the Agent -=================== - -The following function calls must be made in your program to -actually get the SNMP agent running. - -Before starting the agent you should supply pointers -to non-volatile memory for sysContact, sysLocation, -and snmpEnableAuthenTraps. You can do this by calling - -snmp_set_syscontact() -snmp_set_syslocation() -snmp_set_snmpenableauthentraps() - -Additionally you may want to set - -snmp_set_sysdescr() -snmp_set_sysobjid() (if you have a private MIB) -snmp_set_sysname() - -Also before starting the agent you need to setup -one or more trap destinations using these calls: - -snmp_trap_dst_enable(); -snmp_trap_dst_ip_set(); - -In the lwIP initialisation sequence call snmp_init() just after -the call to udp_init(). - -Exactly every 10 msec the SNMP uptime timestamp must be updated with -snmp_inc_sysuptime(). You should call this from a timer interrupt -or a timer signal handler depending on your runtime environment. - -An alternative way to update the SNMP uptime timestamp is to do a call like -snmp_add_sysuptime(100) each 1000ms (which is bigger "step", but call to -a lower frequency). Another one is to not call snmp_inc_sysuptime() or -snmp_add_sysuptime(), and to define the SNMP_GET_SYSUPTIME(sysuptime) macro. -This one is undefined by default in mib2.c. SNMP_GET_SYSUPTIME is called inside -snmp_get_sysuptime(u32_t *value), and enable to change "sysuptime" value only -when it's queried (any function which need "sysuptime" have to call -snmp_get_sysuptime). - - -3 Private MIBs -============== - -If want to extend the agent with your own private MIB you'll need to -add the following define to your local lwipopts.h: - -#define SNMP_PRIVATE_MIB 1 - -You must provide the private_mib.h and associated files yourself. -Note we don't have a "MIB compiler" that generates C source from a MIB, -so you're required to do some serious coding if you enable this! - -Note the lwIP enterprise ID (26381) is assigned to the lwIP project, -ALL OBJECT IDENTIFIERS LIVING UNDER THIS ID ARE ASSIGNED BY THE lwIP -MAINTAINERS! - -If you need to create your own private MIB you'll need -to apply for your own enterprise ID with IANA: http://www.iana.org/numbers.html - -You can set it by passing a struct snmp_obj_id to the agent -using snmp_set_sysobjid(&my_object_id), just before snmp_init(). - -Note the object identifiers for thes MIB-2 and your private MIB -tree must be kept in sorted ascending (lexicographical) order. -This to ensure correct getnext operation. - -An example for a private MIB is part of the "minimal Unix" project: -contrib/ports/unix/proj/minimal/lwip_prvmib.c - -The next chapter gives a more detailed description of the -MIB-2 tree and the optional private MIB. - -4 The Gory Details -================== - -4.0 Object identifiers and the MIB tree. - -We have three distinct parts for all object identifiers: - -The prefix - .iso.org.dod.internet - -the middle part - .mgmt.mib-2.ip.ipNetToMediaTable.ipNetToMediaEntry.ipNetToMediaPhysAddress - -and the index part - .1.192.168.0.1 - -Objects located above the .internet hierarchy aren't supported. -Currently only the .mgmt sub-tree is available and -when the SNMP_PRIVATE_MIB is enabled the .private tree -becomes available too. - -Object identifiers from incoming requests are checked -for a matching prefix, middle part and index part -or are expanded(*) for GetNext requests with short -or inexisting names in the request. -(* we call this "expansion" but this also -resembles the "auto-completion" operation) - -The middle part is usually located in ROM (const) -to preserve precious RAM on small microcontrollers. -However RAM location is possible for an dynamically -changing private tree. - -The index part is handled by functions which in -turn use dynamically allocated index trees from RAM. -These trees are updated by e.g. the etharp code -when new entries are made or removed form the ARP cache. - -/** @todo more gory details */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/sys_arch.txt b/l4/pkg/ankh/lib/lwip/lib/contrib/doc/sys_arch.txt deleted file mode 100644 index 66310a91e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/doc/sys_arch.txt +++ /dev/null @@ -1,228 +0,0 @@ -sys_arch interface for lwIP 0.6++ - -Author: Adam Dunkels - -The operating system emulation layer provides a common interface -between the lwIP code and the underlying operating system kernel. The -general idea is that porting lwIP to new architectures requires only -small changes to a few header files and a new sys_arch -implementation. It is also possible to do a sys_arch implementation -that does not rely on any underlying operating system. - -The sys_arch provides semaphores and mailboxes to lwIP. For the full -lwIP functionality, multiple threads support can be implemented in the -sys_arch, but this is not required for the basic lwIP -functionality. Previous versions of lwIP required the sys_arch to -implement timer scheduling as well but as of lwIP 0.5 this is -implemented in a higher layer. - -In addition to the source file providing the functionality of sys_arch, -the OS emulation layer must provide several header files defining -macros used throughout lwip. The files required and the macros they -must define are listed below the sys_arch description. - -Semaphores can be either counting or binary - lwIP works with both -kinds. Mailboxes are used for message passing and can be implemented -either as a queue which allows multiple messages to be posted to a -mailbox, or as a rendez-vous point where only one message can be -posted at a time. lwIP works with both kinds, but the former type will -be more efficient. A message in a mailbox is just a pointer, nothing -more. - -Semaphores are represented by the type "sys_sem_t" which is typedef'd -in the sys_arch.h file. Mailboxes are equivalently represented by the -type "sys_mbox_t". lwIP does not place any restrictions on how -sys_sem_t or sys_mbox_t are represented internally. - -The following functions must be implemented by the sys_arch: - -- void sys_init(void) - - Is called to initialize the sys_arch layer. - -- sys_sem_t sys_sem_new(u8_t count) - - Creates and returns a new semaphore. The "count" argument specifies - the initial state of the semaphore. - -- void sys_sem_free(sys_sem_t sem) - - Deallocates a semaphore. - -- void sys_sem_signal(sys_sem_t sem) - - Signals a semaphore. - -- u32_t sys_arch_sem_wait(sys_sem_t sem, u32_t timeout) - - Blocks the thread while waiting for the semaphore to be - signaled. If the "timeout" argument is non-zero, the thread should - only be blocked for the specified time (measured in - milliseconds). If the "timeout" argument is zero, the thread should be - blocked until the semaphore is signalled. - - If the timeout argument is non-zero, the return value is the number of - milliseconds spent waiting for the semaphore to be signaled. If the - semaphore wasn't signaled within the specified time, the return value is - SYS_ARCH_TIMEOUT. If the thread didn't have to wait for the semaphore - (i.e., it was already signaled), the function may return zero. - - Notice that lwIP implements a function with a similar name, - sys_sem_wait(), that uses the sys_arch_sem_wait() function. - -- sys_mbox_t sys_mbox_new(int size) - - Creates an empty mailbox for maximum "size" elements. Elements stored - in mailboxes are pointers. You have to define macros "_MBOX_SIZE" - in your lwipopts.h, or ignore this parameter in your implementation - and use a default size. - -- void sys_mbox_free(sys_mbox_t mbox) - - Deallocates a mailbox. If there are messages still present in the - mailbox when the mailbox is deallocated, it is an indication of a - programming error in lwIP and the developer should be notified. - -- void sys_mbox_post(sys_mbox_t mbox, void *msg) - - Posts the "msg" to the mailbox. This function have to block until - the "msg" is really posted. - -- err_t sys_mbox_trypost(sys_mbox_t mbox, void *msg) - - Try to post the "msg" to the mailbox. Returns ERR_MEM if this one - is full, else, ERR_OK if the "msg" is posted. - -- u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout) - - Blocks the thread until a message arrives in the mailbox, but does - not block the thread longer than "timeout" milliseconds (similar to - the sys_arch_sem_wait() function). If "timeout" is 0, the thread should - be blocked until a message arrives. The "msg" argument is a result - parameter that is set by the function (i.e., by doing "*msg = - ptr"). The "msg" parameter maybe NULL to indicate that the message - should be dropped. - - The return values are the same as for the sys_arch_sem_wait() function: - Number of milliseconds spent waiting or SYS_ARCH_TIMEOUT if there was a - timeout. - - Note that a function with a similar name, sys_mbox_fetch(), is - implemented by lwIP. - -- u32_t sys_arch_mbox_tryfetch(sys_mbox_t mbox, void **msg) - - This is similar to sys_arch_mbox_fetch, however if a message is not - present in the mailbox, it immediately returns with the code - SYS_MBOX_EMPTY. On success 0 is returned. - - To allow for efficient implementations, this can be defined as a - function-like macro in sys_arch.h instead of a normal function. For - example, a naive implementation could be: - #define sys_arch_mbox_tryfetch(mbox,msg) \ - sys_arch_mbox_fetch(mbox,msg,1) - although this would introduce unnecessary delays. - -- struct sys_timeouts *sys_arch_timeouts(void) - - Returns a pointer to the per-thread sys_timeouts structure. In lwIP, - each thread has a list of timeouts which is repressented as a linked - list of sys_timeout structures. The sys_timeouts structure holds a - pointer to a linked list of timeouts. This function is called by - the lwIP timeout scheduler and must not return a NULL value. - - In a single thread sys_arch implementation, this function will - simply return a pointer to a global sys_timeouts variable stored in - the sys_arch module. - -If threads are supported by the underlying operating system and if -such functionality is needed in lwIP, the following function will have -to be implemented as well: - -- sys_thread_t sys_thread_new(char *name, void (* thread)(void *arg), void *arg, int stacksize, int prio) - - Starts a new thread named "name" with priority "prio" that will begin its - execution in the function "thread()". The "arg" argument will be passed as an - argument to the thread() function. The stack size to used for this thread is - the "stacksize" parameter. The id of the new thread is returned. Both the id - and the priority are system dependent. - -- sys_prot_t sys_arch_protect(void) - - This optional function does a "fast" critical region protection and returns - the previous protection level. This function is only called during very short - critical regions. An embedded system which supports ISR-based drivers might - want to implement this function by disabling interrupts. Task-based systems - might want to implement this by using a mutex or disabling tasking. This - function should support recursive calls from the same task or interrupt. In - other words, sys_arch_protect() could be called while already protected. In - that case the return value indicates that it is already protected. - - sys_arch_protect() is only required if your port is supporting an operating - system. - -- void sys_arch_unprotect(sys_prot_t pval) - - This optional function does a "fast" set of critical region protection to the - value specified by pval. See the documentation for sys_arch_protect() for - more information. This function is only required if your port is supporting - an operating system. - -Note: - -Be carefull with using mem_malloc() in sys_arch. When malloc() refers to -mem_malloc() you can run into a circular function call problem. In mem.c -mem_init() tries to allcate a semaphore using mem_malloc, which of course -can't be performed when sys_arch uses mem_malloc. - -------------------------------------------------------------------------------- -Additional files required for the "OS support" emulation layer: -------------------------------------------------------------------------------- - -cc.h - Architecture environment, some compiler specific, some - environment specific (probably should move env stuff - to sys_arch.h.) - - Typedefs for the types used by lwip - - u8_t, s8_t, u16_t, s16_t, u32_t, s32_t, mem_ptr_t - - Compiler hints for packing lwip's structures - - PACK_STRUCT_FIELD(x) - PACK_STRUCT_STRUCT - PACK_STRUCT_BEGIN - PACK_STRUCT_END - - Platform specific diagnostic output - - LWIP_PLATFORM_DIAG(x) - non-fatal, print a message. - LWIP_PLATFORM_ASSERT(x) - fatal, print message and abandon execution. - Portability defines for printf formatters: - U16_F, S16_F, X16_F, U32_F, S32_F, X32_F, SZT_F - - "lightweight" synchronization mechanisms - - SYS_ARCH_DECL_PROTECT(x) - declare a protection state variable. - SYS_ARCH_PROTECT(x) - enter protection mode. - SYS_ARCH_UNPROTECT(x) - leave protection mode. - - If the compiler does not provide memset() this file must include a - definition of it, or include a file which defines it. - - This file must either include a system-local which defines - the standard *nix error codes, or it should #define LWIP_PROVIDE_ERRNO - to make lwip/arch.h define the codes which are used throughout. - - -perf.h - Architecture specific performance measurement. - Measurement calls made throughout lwip, these can be defined to nothing. - PERF_START - start measuring something. - PERF_STOP(x) - stop measuring something, and record the result. - -sys_arch.h - Tied to sys_arch.c - - Arch dependent types for the following objects: - sys_sem_t, sys_mbox_t, sys_thread_t, - And, optionally: - sys_prot_t - - Defines to set vars of sys_mbox_t and sys_sem_t to NULL. - SYS_MBOX_NULL NULL - SYS_SEM_NULL NULL diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/.hgignore b/l4/pkg/ankh/lib/lwip/lib/contrib/src/.hgignore deleted file mode 100644 index f88587df3..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/.hgignore +++ /dev/null @@ -1,26 +0,0 @@ -syntax: glob - -*.pyc -*.orig -*.rej -*~ -TAGS -Module.symvers -*.ncb -*.suo -*.bak -*.orig -*.rej - -syntax: regexp -\.\#.+ -[\\/]CVS$ -^CVS$ -^build$ -^install$ -^logs.build_tree$ -[\\/]bin$ -^bin$ -[\\/]obj$ -^obj$ -\.cvsignore diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/FILES b/l4/pkg/ankh/lib/lwip/lib/contrib/src/FILES deleted file mode 100644 index 952aeabb4..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/FILES +++ /dev/null @@ -1,13 +0,0 @@ -api/ - The code for the high-level wrapper API. Not needed if - you use the lowel-level call-back/raw API. - -core/ - The core of the TPC/IP stack; protocol implementations, - memory and buffer management, and the low-level raw API. - -include/ - lwIP include files. - -netif/ - Generic network interface device drivers are kept here, - as well as the ARP module. - -For more information on the various subdirectories, check the FILES -file in each directory. diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_lib.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_lib.c deleted file mode 100644 index f7375b0f1..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_lib.c +++ /dev/null @@ -1,757 +0,0 @@ -/** - * @file - * Sequential API External module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* This is the part of the API that is linked with - the application */ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/api.h" -#include "lwip/tcpip.h" -#include "lwip/memp.h" - -#include "lwip/ip.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" - -#include - -/** - * Create a new netconn (of a specific type) that has a callback function. - * The corresponding pcb is also created. - * - * @param t the type of 'connection' to create (@see enum netconn_type) - * @param proto the IP protocol for RAW IP pcbs - * @param callback a function to call on status changes (RX available, TX'ed) - * @return a newly allocated struct netconn or - * NULL on memory error - */ -struct netconn* -netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, netconn_callback callback) -{ - struct netconn *conn; - struct api_msg msg; - - conn = netconn_alloc(t, callback); - if (conn != NULL) { - msg.function = do_newconn; - msg.msg.msg.n.proto = proto; - msg.msg.conn = conn; - if (TCPIP_APIMSG(&msg) != ERR_OK) { - LWIP_ASSERT("freeing conn without freeing pcb", conn->pcb.tcp == NULL); - LWIP_ASSERT("conn has no op_completed", sys_sem_valid(&conn->op_completed)); - LWIP_ASSERT("conn has no recvmbox", sys_mbox_valid(&conn->recvmbox)); -#if LWIP_TCP - LWIP_ASSERT("conn->acceptmbox shouldn't exist", !sys_mbox_valid(&conn->acceptmbox)); -#endif /* LWIP_TCP */ - sys_sem_free(&conn->op_completed); - sys_mbox_free(&conn->recvmbox); - memp_free(MEMP_NETCONN, conn); - return NULL; - } - } - return conn; -} - -/** - * Close a netconn 'connection' and free its resources. - * UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate - * after this returns. - * - * @param conn the netconn to delete - * @return ERR_OK if the connection was deleted - */ -err_t -netconn_delete(struct netconn *conn) -{ - struct api_msg msg; - - /* No ASSERT here because possible to get a (conn == NULL) if we got an accept error */ - if (conn == NULL) { - return ERR_OK; - } - - msg.function = do_delconn; - msg.msg.conn = conn; - tcpip_apimsg(&msg); - - netconn_free(conn); - - /* don't care for return value of do_delconn since it only calls void functions */ - - return ERR_OK; -} - -/** - * Get the local or remote IP address and port of a netconn. - * For RAW netconns, this returns the protocol instead of a port! - * - * @param conn the netconn to query - * @param addr a pointer to which to save the IP address - * @param port a pointer to which to save the port (or protocol for RAW) - * @param local 1 to get the local IP address, 0 to get the remote one - * @return ERR_CONN for invalid connections - * ERR_OK if the information was retrieved - */ -err_t -netconn_getaddr(struct netconn *conn, ip_addr_t *addr, u16_t *port, u8_t local) -{ - struct api_msg msg; - err_t err; - - LWIP_ERROR("netconn_getaddr: invalid conn", (conn != NULL), return ERR_ARG;); - LWIP_ERROR("netconn_getaddr: invalid addr", (addr != NULL), return ERR_ARG;); - LWIP_ERROR("netconn_getaddr: invalid port", (port != NULL), return ERR_ARG;); - - msg.function = do_getaddr; - msg.msg.conn = conn; - msg.msg.msg.ad.ipaddr = ip_2_ipX(addr); - msg.msg.msg.ad.port = port; - msg.msg.msg.ad.local = local; - err = TCPIP_APIMSG(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} - -/** - * Bind a netconn to a specific local IP address and port. - * Binding one netconn twice might not always be checked correctly! - * - * @param conn the netconn to bind - * @param addr the local IP address to bind the netconn to (use IP_ADDR_ANY - * to bind to all addresses) - * @param port the local port to bind the netconn to (not used for RAW) - * @return ERR_OK if bound, any other err_t on failure - */ -err_t -netconn_bind(struct netconn *conn, ip_addr_t *addr, u16_t port) -{ - struct api_msg msg; - err_t err; - - LWIP_ERROR("netconn_bind: invalid conn", (conn != NULL), return ERR_ARG;); - - msg.function = do_bind; - msg.msg.conn = conn; - msg.msg.msg.bc.ipaddr = addr; - msg.msg.msg.bc.port = port; - err = TCPIP_APIMSG(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} - -/** - * Connect a netconn to a specific remote IP address and port. - * - * @param conn the netconn to connect - * @param addr the remote IP address to connect to - * @param port the remote port to connect to (no used for RAW) - * @return ERR_OK if connected, return value of tcp_/udp_/raw_connect otherwise - */ -err_t -netconn_connect(struct netconn *conn, ip_addr_t *addr, u16_t port) -{ - struct api_msg msg; - err_t err; - - LWIP_ERROR("netconn_connect: invalid conn", (conn != NULL), return ERR_ARG;); - - msg.function = do_connect; - msg.msg.conn = conn; - msg.msg.msg.bc.ipaddr = addr; - msg.msg.msg.bc.port = port; - /* This is the only function which need to not block tcpip_thread */ - err = tcpip_apimsg(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} - -/** - * Disconnect a netconn from its current peer (only valid for UDP netconns). - * - * @param conn the netconn to disconnect - * @return TODO: return value is not set here... - */ -err_t -netconn_disconnect(struct netconn *conn) -{ - struct api_msg msg; - err_t err; - - LWIP_ERROR("netconn_disconnect: invalid conn", (conn != NULL), return ERR_ARG;); - - msg.function = do_disconnect; - msg.msg.conn = conn; - err = TCPIP_APIMSG(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} - -/** - * Set a TCP netconn into listen mode - * - * @param conn the tcp netconn to set to listen mode - * @param backlog the listen backlog, only used if TCP_LISTEN_BACKLOG==1 - * @return ERR_OK if the netconn was set to listen (UDP and RAW netconns - * don't return any error (yet?)) - */ -err_t -netconn_listen_with_backlog(struct netconn *conn, u8_t backlog) -{ -#if LWIP_TCP - struct api_msg msg; - err_t err; - - /* This does no harm. If TCP_LISTEN_BACKLOG is off, backlog is unused. */ - LWIP_UNUSED_ARG(backlog); - - LWIP_ERROR("netconn_listen: invalid conn", (conn != NULL), return ERR_ARG;); - - msg.function = do_listen; - msg.msg.conn = conn; -#if TCP_LISTEN_BACKLOG - msg.msg.msg.lb.backlog = backlog; -#endif /* TCP_LISTEN_BACKLOG */ - err = TCPIP_APIMSG(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -#else /* LWIP_TCP */ - LWIP_UNUSED_ARG(conn); - LWIP_UNUSED_ARG(backlog); - return ERR_ARG; -#endif /* LWIP_TCP */ -} - -/** - * Accept a new connection on a TCP listening netconn. - * - * @param conn the TCP listen netconn - * @param new_conn pointer where the new connection is stored - * @return ERR_OK if a new connection has been received or an error - * code otherwise - */ -err_t -netconn_accept(struct netconn *conn, struct netconn **new_conn) -{ -#if LWIP_TCP - struct netconn *newconn; - err_t err; -#if TCP_LISTEN_BACKLOG - struct api_msg msg; -#endif /* TCP_LISTEN_BACKLOG */ - - LWIP_ERROR("netconn_accept: invalid pointer", (new_conn != NULL), return ERR_ARG;); - *new_conn = NULL; - LWIP_ERROR("netconn_accept: invalid conn", (conn != NULL), return ERR_ARG;); - LWIP_ERROR("netconn_accept: invalid acceptmbox", sys_mbox_valid(&conn->acceptmbox), return ERR_ARG;); - - err = conn->last_err; - if (ERR_IS_FATAL(err)) { - /* don't recv on fatal errors: this might block the application task - waiting on acceptmbox forever! */ - return err; - } - -#if LWIP_SO_RCVTIMEO - if (sys_arch_mbox_fetch(&conn->acceptmbox, (void **)&newconn, conn->recv_timeout) == SYS_ARCH_TIMEOUT) { - NETCONN_SET_SAFE_ERR(conn, ERR_TIMEOUT); - return ERR_TIMEOUT; - } -#else - sys_arch_mbox_fetch(&conn->acceptmbox, (void **)&newconn, 0); -#endif /* LWIP_SO_RCVTIMEO*/ - /* Register event with callback */ - API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0); - - if (newconn == NULL) { - /* connection has been aborted */ - NETCONN_SET_SAFE_ERR(conn, ERR_ABRT); - return ERR_ABRT; - } -#if TCP_LISTEN_BACKLOG - /* Let the stack know that we have accepted the connection. */ - msg.function = do_recv; - msg.msg.conn = conn; - /* don't care for the return value of do_recv */ - TCPIP_APIMSG(&msg); -#endif /* TCP_LISTEN_BACKLOG */ - - *new_conn = newconn; - /* don't set conn->last_err: it's only ERR_OK, anyway */ - return ERR_OK; -#else /* LWIP_TCP */ - LWIP_UNUSED_ARG(conn); - LWIP_UNUSED_ARG(new_conn); - return ERR_ARG; -#endif /* LWIP_TCP */ -} - -/** - * Receive data: actual implementation that doesn't care whether pbuf or netbuf - * is received - * - * @param conn the netconn from which to receive data - * @param new_buf pointer where a new pbuf/netbuf is stored when received data - * @return ERR_OK if data has been received, an error code otherwise (timeout, - * memory error or another error) - */ -static err_t -netconn_recv_data(struct netconn *conn, void **new_buf) -{ - void *buf = NULL; - u16_t len; - err_t err; -#if LWIP_TCP - struct api_msg msg; -#endif /* LWIP_TCP */ - - LWIP_ERROR("netconn_recv: invalid pointer", (new_buf != NULL), return ERR_ARG;); - *new_buf = NULL; - LWIP_ERROR("netconn_recv: invalid conn", (conn != NULL), return ERR_ARG;); - LWIP_ERROR("netconn_accept: invalid recvmbox", sys_mbox_valid(&conn->recvmbox), return ERR_CONN;); - - err = conn->last_err; - if (ERR_IS_FATAL(err)) { - /* don't recv on fatal errors: this might block the application task - waiting on recvmbox forever! */ - /* @todo: this does not allow us to fetch data that has been put into recvmbox - before the fatal error occurred - is that a problem? */ - return err; - } - -#if LWIP_SO_RCVTIMEO - if (sys_arch_mbox_fetch(&conn->recvmbox, &buf, conn->recv_timeout) == SYS_ARCH_TIMEOUT) { - NETCONN_SET_SAFE_ERR(conn, ERR_TIMEOUT); - return ERR_TIMEOUT; - } -#else - sys_arch_mbox_fetch(&conn->recvmbox, &buf, 0); -#endif /* LWIP_SO_RCVTIMEO*/ - -#if LWIP_TCP - if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) { - if (!netconn_get_noautorecved(conn) || (buf == NULL)) { - /* Let the stack know that we have taken the data. */ - /* TODO: Speedup: Don't block and wait for the answer here - (to prevent multiple thread-switches). */ - msg.function = do_recv; - msg.msg.conn = conn; - if (buf != NULL) { - msg.msg.msg.r.len = ((struct pbuf *)buf)->tot_len; - } else { - msg.msg.msg.r.len = 1; - } - /* don't care for the return value of do_recv */ - TCPIP_APIMSG(&msg); - } - - /* If we are closed, we indicate that we no longer wish to use the socket */ - if (buf == NULL) { - API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0); - /* Avoid to lose any previous error code */ - NETCONN_SET_SAFE_ERR(conn, ERR_CLSD); - return ERR_CLSD; - } - len = ((struct pbuf *)buf)->tot_len; - } -#endif /* LWIP_TCP */ -#if LWIP_TCP && (LWIP_UDP || LWIP_RAW) - else -#endif /* LWIP_TCP && (LWIP_UDP || LWIP_RAW) */ -#if (LWIP_UDP || LWIP_RAW) - { - LWIP_ASSERT("buf != NULL", buf != NULL); - len = netbuf_len((struct netbuf *)buf); - } -#endif /* (LWIP_UDP || LWIP_RAW) */ - -#if LWIP_SO_RCVBUF - SYS_ARCH_DEC(conn->recv_avail, len); -#endif /* LWIP_SO_RCVBUF */ - /* Register event with callback */ - API_EVENT(conn, NETCONN_EVT_RCVMINUS, len); - - LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_recv_data: received %p, len=%"U16_F"\n", buf, len)); - - *new_buf = buf; - /* don't set conn->last_err: it's only ERR_OK, anyway */ - return ERR_OK; -} - -/** - * Receive data (in form of a pbuf) from a TCP netconn - * - * @param conn the netconn from which to receive data - * @param new_buf pointer where a new pbuf is stored when received data - * @return ERR_OK if data has been received, an error code otherwise (timeout, - * memory error or another error) - * ERR_ARG if conn is not a TCP netconn - */ -err_t -netconn_recv_tcp_pbuf(struct netconn *conn, struct pbuf **new_buf) -{ - LWIP_ERROR("netconn_recv: invalid conn", (conn != NULL) && - NETCONNTYPE_GROUP(netconn_type(conn)) == NETCONN_TCP, return ERR_ARG;); - - return netconn_recv_data(conn, (void **)new_buf); -} - -/** - * Receive data (in form of a netbuf containing a packet buffer) from a netconn - * - * @param conn the netconn from which to receive data - * @param new_buf pointer where a new netbuf is stored when received data - * @return ERR_OK if data has been received, an error code otherwise (timeout, - * memory error or another error) - */ -err_t -netconn_recv(struct netconn *conn, struct netbuf **new_buf) -{ -#if LWIP_TCP - struct netbuf *buf = NULL; - err_t err; -#endif /* LWIP_TCP */ - - LWIP_ERROR("netconn_recv: invalid pointer", (new_buf != NULL), return ERR_ARG;); - *new_buf = NULL; - LWIP_ERROR("netconn_recv: invalid conn", (conn != NULL), return ERR_ARG;); - LWIP_ERROR("netconn_accept: invalid recvmbox", sys_mbox_valid(&conn->recvmbox), return ERR_CONN;); - -#if LWIP_TCP - if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) { - struct pbuf *p = NULL; - /* This is not a listening netconn, since recvmbox is set */ - - buf = (struct netbuf *)memp_malloc(MEMP_NETBUF); - if (buf == NULL) { - NETCONN_SET_SAFE_ERR(conn, ERR_MEM); - return ERR_MEM; - } - - err = netconn_recv_data(conn, (void **)&p); - if (err != ERR_OK) { - memp_free(MEMP_NETBUF, buf); - return err; - } - LWIP_ASSERT("p != NULL", p != NULL); - - buf->p = p; - buf->ptr = p; - buf->port = 0; - ipX_addr_set_any(LWIP_IPV6, &buf->addr); - *new_buf = buf; - /* don't set conn->last_err: it's only ERR_OK, anyway */ - return ERR_OK; - } else -#endif /* LWIP_TCP */ - { -#if (LWIP_UDP || LWIP_RAW) - return netconn_recv_data(conn, (void **)new_buf); -#endif /* (LWIP_UDP || LWIP_RAW) */ - } -} - -/** - * TCP: update the receive window: by calling this, the application - * tells the stack that it has processed data and is able to accept - * new data. - * ATTENTION: use with care, this is mainly used for sockets! - * Can only be used when calling netconn_set_noautorecved(conn, 1) before. - * - * @param conn the netconn for which to update the receive window - * @param length amount of data processed (ATTENTION: this must be accurate!) - */ -void -netconn_recved(struct netconn *conn, u32_t length) -{ -#if LWIP_TCP - if ((conn != NULL) && (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) && - (netconn_get_noautorecved(conn))) { - struct api_msg msg; - /* Let the stack know that we have taken the data. */ - /* TODO: Speedup: Don't block and wait for the answer here - (to prevent multiple thread-switches). */ - msg.function = do_recv; - msg.msg.conn = conn; - msg.msg.msg.r.len = length; - /* don't care for the return value of do_recv */ - TCPIP_APIMSG(&msg); - } -#else /* LWIP_TCP */ - LWIP_UNUSED_ARG(conn); - LWIP_UNUSED_ARG(length); -#endif /* LWIP_TCP */ -} - -/** - * Send data (in form of a netbuf) to a specific remote IP address and port. - * Only to be used for UDP and RAW netconns (not TCP). - * - * @param conn the netconn over which to send data - * @param buf a netbuf containing the data to send - * @param addr the remote IP address to which to send the data - * @param port the remote port to which to send the data - * @return ERR_OK if data was sent, any other err_t on error - */ -err_t -netconn_sendto(struct netconn *conn, struct netbuf *buf, ip_addr_t *addr, u16_t port) -{ - if (buf != NULL) { - ipX_addr_set_ipaddr(PCB_ISIPV6(conn->pcb.ip), &buf->addr, addr); - buf->port = port; - return netconn_send(conn, buf); - } - return ERR_VAL; -} - -/** - * Send data over a UDP or RAW netconn (that is already connected). - * - * @param conn the UDP or RAW netconn over which to send data - * @param buf a netbuf containing the data to send - * @return ERR_OK if data was sent, any other err_t on error - */ -err_t -netconn_send(struct netconn *conn, struct netbuf *buf) -{ - struct api_msg msg; - err_t err; - - LWIP_ERROR("netconn_send: invalid conn", (conn != NULL), return ERR_ARG;); - - LWIP_DEBUGF(API_LIB_DEBUG, ("netconn_send: sending %"U16_F" bytes\n", buf->p->tot_len)); - msg.function = do_send; - msg.msg.conn = conn; - msg.msg.msg.b = buf; - err = TCPIP_APIMSG(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} - -/** - * Send data over a TCP netconn. - * - * @param conn the TCP netconn over which to send data - * @param dataptr pointer to the application buffer that contains the data to send - * @param size size of the application data to send - * @param apiflags combination of following flags : - * - NETCONN_COPY: data will be copied into memory belonging to the stack - * - NETCONN_MORE: for TCP connection, PSH flag will be set on last segment sent - * - NETCONN_DONTBLOCK: only write the data if all dat can be written at once - * @param bytes_written pointer to a location that receives the number of written bytes - * @return ERR_OK if data was sent, any other err_t on error - */ -err_t -netconn_write_partly(struct netconn *conn, const void *dataptr, size_t size, - u8_t apiflags, size_t *bytes_written) -{ - struct api_msg msg; - err_t err; - u8_t dontblock; - - LWIP_ERROR("netconn_write: invalid conn", (conn != NULL), return ERR_ARG;); - LWIP_ERROR("netconn_write: invalid conn->type", (NETCONNTYPE_GROUP(conn->type)== NETCONN_TCP), return ERR_VAL;); - if (size == 0) { - return ERR_OK; - } - dontblock = netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK); - if (dontblock && !bytes_written) { - /* This implies netconn_write() cannot be used for non-blocking send, since - it has no way to return the number of bytes written. */ - return ERR_VAL; - } - - /* non-blocking write sends as much */ - msg.function = do_write; - msg.msg.conn = conn; - msg.msg.msg.w.dataptr = dataptr; - msg.msg.msg.w.apiflags = apiflags; - msg.msg.msg.w.len = size; - /* For locking the core: this _can_ be delayed on low memory/low send buffer, - but if it is, this is done inside api_msg.c:do_write(), so we can use the - non-blocking version here. */ - err = TCPIP_APIMSG(&msg); - if ((err == ERR_OK) && (bytes_written != NULL)) { - if (dontblock) { - /* nonblocking write: maybe the data has been sent partly */ - *bytes_written = msg.msg.msg.w.len; - } else { - /* blocking call succeeded: all data has been sent if it */ - *bytes_written = size; - } - } - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} - -/** - * Close ot shutdown a TCP netconn (doesn't delete it). - * - * @param conn the TCP netconn to close or shutdown - * @param how fully close or only shutdown one side? - * @return ERR_OK if the netconn was closed, any other err_t on error - */ -static err_t -netconn_close_shutdown(struct netconn *conn, u8_t how) -{ - struct api_msg msg; - err_t err; - - LWIP_ERROR("netconn_close: invalid conn", (conn != NULL), return ERR_ARG;); - - msg.function = do_close; - msg.msg.conn = conn; - /* shutting down both ends is the same as closing */ - msg.msg.msg.sd.shut = how; - /* because of the LWIP_TCPIP_CORE_LOCKING implementation of do_close, - don't use TCPIP_APIMSG here */ - err = tcpip_apimsg(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} - -/** - * Close a TCP netconn (doesn't delete it). - * - * @param conn the TCP netconn to close - * @return ERR_OK if the netconn was closed, any other err_t on error - */ -err_t -netconn_close(struct netconn *conn) -{ - /* shutting down both ends is the same as closing */ - return netconn_close_shutdown(conn, NETCONN_SHUT_RDWR); -} - -/** - * Shut down one or both sides of a TCP netconn (doesn't delete it). - * - * @param conn the TCP netconn to shut down - * @return ERR_OK if the netconn was closed, any other err_t on error - */ -err_t -netconn_shutdown(struct netconn *conn, u8_t shut_rx, u8_t shut_tx) -{ - return netconn_close_shutdown(conn, (shut_rx ? NETCONN_SHUT_RD : 0) | (shut_tx ? NETCONN_SHUT_WR : 0)); -} - -#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) -/** - * Join multicast groups for UDP netconns. - * - * @param conn the UDP netconn for which to change multicast addresses - * @param multiaddr IP address of the multicast group to join or leave - * @param netif_addr the IP address of the network interface on which to send - * the igmp message - * @param join_or_leave flag whether to send a join- or leave-message - * @return ERR_OK if the action was taken, any err_t on error - */ -err_t -netconn_join_leave_group(struct netconn *conn, - ip_addr_t *multiaddr, - ip_addr_t *netif_addr, - enum netconn_igmp join_or_leave) -{ - struct api_msg msg; - err_t err; - - LWIP_ERROR("netconn_join_leave_group: invalid conn", (conn != NULL), return ERR_ARG;); - - msg.function = do_join_leave_group; - msg.msg.conn = conn; - msg.msg.msg.jl.multiaddr = ip_2_ipX(multiaddr); - msg.msg.msg.jl.netif_addr = ip_2_ipX(netif_addr); - msg.msg.msg.jl.join_or_leave = join_or_leave; - err = TCPIP_APIMSG(&msg); - - NETCONN_SET_SAFE_ERR(conn, err); - return err; -} -#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ - -#if LWIP_DNS -/** - * Execute a DNS query, only one IP address is returned - * - * @param name a string representation of the DNS host name to query - * @param addr a preallocated ip_addr_t where to store the resolved IP address - * @return ERR_OK: resolving succeeded - * ERR_MEM: memory error, try again later - * ERR_ARG: dns client not initialized or invalid hostname - * ERR_VAL: dns server response was invalid - */ -err_t -netconn_gethostbyname(const char *name, ip_addr_t *addr) -{ - struct dns_api_msg msg; - err_t err; - sys_sem_t sem; - - LWIP_ERROR("netconn_gethostbyname: invalid name", (name != NULL), return ERR_ARG;); - LWIP_ERROR("netconn_gethostbyname: invalid addr", (addr != NULL), return ERR_ARG;); - - err = sys_sem_new(&sem, 0); - if (err != ERR_OK) { - return err; - } - - msg.name = name; - msg.addr = addr; - msg.err = &err; - msg.sem = &sem; - - tcpip_callback(do_gethostbyname, &msg); - sys_sem_wait(&sem); - sys_sem_free(&sem); - - return err; -} -#endif /* LWIP_DNS*/ - -#endif /* LWIP_NETCONN */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_msg.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_msg.c deleted file mode 100644 index 9d0895ac1..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/api_msg.c +++ /dev/null @@ -1,1563 +0,0 @@ -/** - * @file - * Sequential API Internal module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/api_msg.h" - -#include "lwip/ip.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/raw.h" - -#include "lwip/memp.h" -#include "lwip/tcpip.h" -#include "lwip/igmp.h" -#include "lwip/dns.h" -#include "lwip/mld6.h" - -#include - -#define SET_NONBLOCKING_CONNECT(conn, val) do { if(val) { \ - (conn)->flags |= NETCONN_FLAG_IN_NONBLOCKING_CONNECT; \ -} else { \ - (conn)->flags &= ~ NETCONN_FLAG_IN_NONBLOCKING_CONNECT; }} while(0) -#define IN_NONBLOCKING_CONNECT(conn) (((conn)->flags & NETCONN_FLAG_IN_NONBLOCKING_CONNECT) != 0) - -/* forward declarations */ -#if LWIP_TCP -static err_t do_writemore(struct netconn *conn); -static void do_close_internal(struct netconn *conn); -#endif - -#if LWIP_RAW -/** - * Receive callback function for RAW netconns. - * Doesn't 'eat' the packet, only references it and sends it to - * conn->recvmbox - * - * @see raw.h (struct raw_pcb.recv) for parameters and return value - */ -static u8_t -recv_raw(void *arg, struct raw_pcb *pcb, struct pbuf *p, - ip_addr_t *addr) -{ - struct pbuf *q; - struct netbuf *buf; - struct netconn *conn; - - LWIP_UNUSED_ARG(addr); - conn = (struct netconn *)arg; - - if ((conn != NULL) && sys_mbox_valid(&conn->recvmbox)) { -#if LWIP_SO_RCVBUF - int recv_avail; - SYS_ARCH_GET(conn->recv_avail, recv_avail); - if ((recv_avail + (int)(p->tot_len)) > conn->recv_bufsize) { - return 0; - } -#endif /* LWIP_SO_RCVBUF */ - /* copy the whole packet into new pbufs */ - q = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); - if(q != NULL) { - if (pbuf_copy(q, p) != ERR_OK) { - pbuf_free(q); - q = NULL; - } - } - - if (q != NULL) { - u16_t len; - buf = (struct netbuf *)memp_malloc(MEMP_NETBUF); - if (buf == NULL) { - pbuf_free(q); - return 0; - } - - buf->p = q; - buf->ptr = q; - ipX_addr_copy(PCB_ISIPV6(pcb), buf->addr, *ipX_current_src_addr()); - buf->port = pcb->protocol; - - len = q->tot_len; - if (sys_mbox_trypost(&conn->recvmbox, buf) != ERR_OK) { - netbuf_delete(buf); - return 0; - } else { -#if LWIP_SO_RCVBUF - SYS_ARCH_INC(conn->recv_avail, len); -#endif /* LWIP_SO_RCVBUF */ - /* Register event with callback */ - API_EVENT(conn, NETCONN_EVT_RCVPLUS, len); - } - } - } - - return 0; /* do not eat the packet */ -} -#endif /* LWIP_RAW*/ - -#if LWIP_UDP -/** - * Receive callback function for UDP netconns. - * Posts the packet to conn->recvmbox or deletes it on memory error. - * - * @see udp.h (struct udp_pcb.recv) for parameters - */ -static void -recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *addr, u16_t port) -{ - struct netbuf *buf; - struct netconn *conn; - u16_t len; -#if LWIP_SO_RCVBUF - int recv_avail; -#endif /* LWIP_SO_RCVBUF */ - - LWIP_UNUSED_ARG(pcb); /* only used for asserts... */ - LWIP_ASSERT("recv_udp must have a pcb argument", pcb != NULL); - LWIP_ASSERT("recv_udp must have an argument", arg != NULL); - conn = (struct netconn *)arg; - LWIP_ASSERT("recv_udp: recv for wrong pcb!", conn->pcb.udp == pcb); - -#if LWIP_SO_RCVBUF - SYS_ARCH_GET(conn->recv_avail, recv_avail); - if ((conn == NULL) || !sys_mbox_valid(&conn->recvmbox) || - ((recv_avail + (int)(p->tot_len)) > conn->recv_bufsize)) { -#else /* LWIP_SO_RCVBUF */ - if ((conn == NULL) || !sys_mbox_valid(&conn->recvmbox)) { -#endif /* LWIP_SO_RCVBUF */ - pbuf_free(p); - return; - } - - buf = (struct netbuf *)memp_malloc(MEMP_NETBUF); - if (buf == NULL) { - pbuf_free(p); - return; - } else { - buf->p = p; - buf->ptr = p; - ipX_addr_set_ipaddr(ip_current_is_v6(), &buf->addr, addr); - buf->port = port; -#if LWIP_NETBUF_RECVINFO - { - /* get the UDP header - always in the first pbuf, ensured by udp_input */ - const struct udp_hdr* udphdr = ipX_next_header_ptr(); -#if LWIP_CHECKSUM_ON_COPY - buf->flags = NETBUF_FLAG_DESTADDR; -#endif /* LWIP_CHECKSUM_ON_COPY */ - ipX_addr_set(ip_current_is_v6(), &buf->toaddr, ipX_current_dest_addr()); - buf->toport_chksum = udphdr->dest; - } -#endif /* LWIP_NETBUF_RECVINFO */ - } - - len = p->tot_len; - if (sys_mbox_trypost(&conn->recvmbox, buf) != ERR_OK) { - netbuf_delete(buf); - return; - } else { -#if LWIP_SO_RCVBUF - SYS_ARCH_INC(conn->recv_avail, len); -#endif /* LWIP_SO_RCVBUF */ - /* Register event with callback */ - API_EVENT(conn, NETCONN_EVT_RCVPLUS, len); - } -} -#endif /* LWIP_UDP */ - -#if LWIP_TCP -/** - * Receive callback function for TCP netconns. - * Posts the packet to conn->recvmbox, but doesn't delete it on errors. - * - * @see tcp.h (struct tcp_pcb.recv) for parameters and return value - */ -static err_t -recv_tcp(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - struct netconn *conn; - u16_t len; - - LWIP_UNUSED_ARG(pcb); - LWIP_ASSERT("recv_tcp must have a pcb argument", pcb != NULL); - LWIP_ASSERT("recv_tcp must have an argument", arg != NULL); - conn = (struct netconn *)arg; - LWIP_ASSERT("recv_tcp: recv for wrong pcb!", conn->pcb.tcp == pcb); - - if (conn == NULL) { - return ERR_VAL; - } - if (!sys_mbox_valid(&conn->recvmbox)) { - /* recvmbox already deleted */ - if (p != NULL) { - tcp_recved(pcb, p->tot_len); - pbuf_free(p); - } - return ERR_OK; - } - /* Unlike for UDP or RAW pcbs, don't check for available space - using recv_avail since that could break the connection - (data is already ACKed) */ - - /* don't overwrite fatal errors! */ - NETCONN_SET_SAFE_ERR(conn, err); - - if (p != NULL) { - len = p->tot_len; - } else { - len = 0; - } - - if (sys_mbox_trypost(&conn->recvmbox, p) != ERR_OK) { - /* don't deallocate p: it is presented to us later again from tcp_fasttmr! */ - return ERR_MEM; - } else { -#if LWIP_SO_RCVBUF - SYS_ARCH_INC(conn->recv_avail, len); -#endif /* LWIP_SO_RCVBUF */ - /* Register event with callback */ - API_EVENT(conn, NETCONN_EVT_RCVPLUS, len); - } - - return ERR_OK; -} - -/** - * Poll callback function for TCP netconns. - * Wakes up an application thread that waits for a connection to close - * or data to be sent. The application thread then takes the - * appropriate action to go on. - * - * Signals the conn->sem. - * netconn_close waits for conn->sem if closing failed. - * - * @see tcp.h (struct tcp_pcb.poll) for parameters and return value - */ -static err_t -poll_tcp(void *arg, struct tcp_pcb *pcb) -{ - struct netconn *conn = (struct netconn *)arg; - - LWIP_UNUSED_ARG(pcb); - LWIP_ASSERT("conn != NULL", (conn != NULL)); - - if (conn->state == NETCONN_WRITE) { - do_writemore(conn); - } else if (conn->state == NETCONN_CLOSE) { - do_close_internal(conn); - } - /* @todo: implement connect timeout here? */ - - /* Did a nonblocking write fail before? Then check available write-space. */ - if (conn->flags & NETCONN_FLAG_CHECK_WRITESPACE) { - /* If the queued byte- or pbuf-count drops below the configured low-water limit, - let select mark this pcb as writable again. */ - if ((conn->pcb.tcp != NULL) && (tcp_sndbuf(conn->pcb.tcp) > TCP_SNDLOWAT) && - (tcp_sndqueuelen(conn->pcb.tcp) < TCP_SNDQUEUELOWAT)) { - conn->flags &= ~NETCONN_FLAG_CHECK_WRITESPACE; - API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0); - } - } - - return ERR_OK; -} - -/** - * Sent callback function for TCP netconns. - * Signals the conn->sem and calls API_EVENT. - * netconn_write waits for conn->sem if send buffer is low. - * - * @see tcp.h (struct tcp_pcb.sent) for parameters and return value - */ -static err_t -sent_tcp(void *arg, struct tcp_pcb *pcb, u16_t len) -{ - struct netconn *conn = (struct netconn *)arg; - - LWIP_UNUSED_ARG(pcb); - LWIP_ASSERT("conn != NULL", (conn != NULL)); - - if (conn->state == NETCONN_WRITE) { - do_writemore(conn); - } else if (conn->state == NETCONN_CLOSE) { - do_close_internal(conn); - } - - if (conn) { - /* If the queued byte- or pbuf-count drops below the configured low-water limit, - let select mark this pcb as writable again. */ - if ((conn->pcb.tcp != NULL) && (tcp_sndbuf(conn->pcb.tcp) > TCP_SNDLOWAT) && - (tcp_sndqueuelen(conn->pcb.tcp) < TCP_SNDQUEUELOWAT)) { - conn->flags &= ~NETCONN_FLAG_CHECK_WRITESPACE; - API_EVENT(conn, NETCONN_EVT_SENDPLUS, len); - } - } - - return ERR_OK; -} - -/** - * Error callback function for TCP netconns. - * Signals conn->sem, posts to all conn mboxes and calls API_EVENT. - * The application thread has then to decide what to do. - * - * @see tcp.h (struct tcp_pcb.err) for parameters - */ -static void -err_tcp(void *arg, err_t err) -{ - struct netconn *conn; - enum netconn_state old_state; - SYS_ARCH_DECL_PROTECT(lev); - - conn = (struct netconn *)arg; - LWIP_ASSERT("conn != NULL", (conn != NULL)); - - conn->pcb.tcp = NULL; - - /* no check since this is always fatal! */ - SYS_ARCH_PROTECT(lev); - conn->last_err = err; - SYS_ARCH_UNPROTECT(lev); - - /* reset conn->state now before waking up other threads */ - old_state = conn->state; - conn->state = NETCONN_NONE; - - /* Notify the user layer about a connection error. Used to signal - select. */ - API_EVENT(conn, NETCONN_EVT_ERROR, 0); - /* Try to release selects pending on 'read' or 'write', too. - They will get an error if they actually try to read or write. */ - API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0); - API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0); - - /* pass NULL-message to recvmbox to wake up pending recv */ - if (sys_mbox_valid(&conn->recvmbox)) { - /* use trypost to prevent deadlock */ - sys_mbox_trypost(&conn->recvmbox, NULL); - } - /* pass NULL-message to acceptmbox to wake up pending accept */ - if (sys_mbox_valid(&conn->acceptmbox)) { - /* use trypost to preven deadlock */ - sys_mbox_trypost(&conn->acceptmbox, NULL); - } - - if ((old_state == NETCONN_WRITE) || (old_state == NETCONN_CLOSE) || - (old_state == NETCONN_CONNECT)) { - /* calling do_writemore/do_close_internal is not necessary - since the pcb has already been deleted! */ - int was_nonblocking_connect = IN_NONBLOCKING_CONNECT(conn); - SET_NONBLOCKING_CONNECT(conn, 0); - - if (!was_nonblocking_connect) { - /* set error return code */ - LWIP_ASSERT("conn->current_msg != NULL", conn->current_msg != NULL); - conn->current_msg->err = err; - conn->current_msg = NULL; - /* wake up the waiting task */ - sys_sem_signal(&conn->op_completed); - } - } else { - LWIP_ASSERT("conn->current_msg == NULL", conn->current_msg == NULL); - } -} - -/** - * Setup a tcp_pcb with the correct callback function pointers - * and their arguments. - * - * @param conn the TCP netconn to setup - */ -static void -setup_tcp(struct netconn *conn) -{ - struct tcp_pcb *pcb; - - pcb = conn->pcb.tcp; - tcp_arg(pcb, conn); - tcp_recv(pcb, recv_tcp); - tcp_sent(pcb, sent_tcp); - tcp_poll(pcb, poll_tcp, 4); - tcp_err(pcb, err_tcp); -} - -/** - * Accept callback function for TCP netconns. - * Allocates a new netconn and posts that to conn->acceptmbox. - * - * @see tcp.h (struct tcp_pcb_listen.accept) for parameters and return value - */ -static err_t -accept_function(void *arg, struct tcp_pcb *newpcb, err_t err) -{ - struct netconn *newconn; - struct netconn *conn = (struct netconn *)arg; - - LWIP_DEBUGF(API_MSG_DEBUG, ("accept_function: newpcb->tate: %s\n", tcp_debug_state_str(newpcb->state))); - - if (!sys_mbox_valid(&conn->acceptmbox)) { - LWIP_DEBUGF(API_MSG_DEBUG, ("accept_function: acceptmbox already deleted\n")); - return ERR_VAL; - } - - /* We have to set the callback here even though - * the new socket is unknown. conn->socket is marked as -1. */ - newconn = netconn_alloc(conn->type, conn->callback); - if (newconn == NULL) { - return ERR_MEM; - } - newconn->pcb.tcp = newpcb; - setup_tcp(newconn); - /* no protection: when creating the pcb, the netconn is not yet known - to the application thread */ - newconn->last_err = err; - - if (sys_mbox_trypost(&conn->acceptmbox, newconn) != ERR_OK) { - /* When returning != ERR_OK, the pcb is aborted in tcp_process(), - so do nothing here! */ - newconn->pcb.tcp = NULL; - /* no need to drain since we know the recvmbox is empty. */ - sys_mbox_free(&newconn->recvmbox); - sys_mbox_set_invalid(&newconn->recvmbox); - netconn_free(newconn); - return ERR_MEM; - } else { - /* Register event with callback */ - API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0); - } - - return ERR_OK; -} -#endif /* LWIP_TCP */ - -/** - * Create a new pcb of a specific type. - * Called from do_newconn(). - * - * @param msg the api_msg_msg describing the connection type - * @return msg->conn->err, but the return value is currently ignored - */ -static void -pcb_new(struct api_msg_msg *msg) -{ - LWIP_ASSERT("pcb_new: pcb already allocated", msg->conn->pcb.tcp == NULL); - - /* Allocate a PCB for this connection */ - switch(NETCONNTYPE_GROUP(msg->conn->type)) { -#if LWIP_RAW - case NETCONN_RAW: - msg->conn->pcb.raw = raw_new(msg->msg.n.proto); - if(msg->conn->pcb.raw != NULL) { - raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn); - } - break; -#endif /* LWIP_RAW */ -#if LWIP_UDP - case NETCONN_UDP: - msg->conn->pcb.udp = udp_new(); - if(msg->conn->pcb.udp != NULL) { -#if LWIP_UDPLITE - if (NETCONNTYPE_ISUDPLITE(msg->conn->type)) { - udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_UDPLITE); - } -#endif /* LWIP_UDPLITE */ - if (NETCONNTYPE_ISUDPNOCHKSUM(msg->conn->type)) { - udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM); - } - udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn); - } - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case NETCONN_TCP: - msg->conn->pcb.tcp = tcp_new(); - if(msg->conn->pcb.tcp != NULL) { - setup_tcp(msg->conn); - } - break; -#endif /* LWIP_TCP */ - default: - /* Unsupported netconn type, e.g. protocol disabled */ - msg->err = ERR_VAL; - return; - } - if (msg->conn->pcb.ip == NULL) { - msg->err = ERR_MEM; - } -#if LWIP_IPV6 - else { - if (NETCONNTYPE_ISIPV6(msg->conn->type)) { - ip_set_v6(msg->conn->pcb.ip, 1); - } - } -#endif /* LWIP_IPV6 */ -} - -/** - * Create a new pcb of a specific type inside a netconn. - * Called from netconn_new_with_proto_and_callback. - * - * @param msg the api_msg_msg describing the connection type - */ -void -do_newconn(struct api_msg_msg *msg) -{ - msg->err = ERR_OK; - if(msg->conn->pcb.tcp == NULL) { - pcb_new(msg); - } - /* Else? This "new" connection already has a PCB allocated. */ - /* Is this an error condition? Should it be deleted? */ - /* We currently just are happy and return. */ - - TCPIP_APIMSG_ACK(msg); -} - -/** - * Create a new netconn (of a specific type) that has a callback function. - * The corresponding pcb is NOT created! - * - * @param t the type of 'connection' to create (@see enum netconn_type) - * @param proto the IP protocol for RAW IP pcbs - * @param callback a function to call on status changes (RX available, TX'ed) - * @return a newly allocated struct netconn or - * NULL on memory error - */ -struct netconn* -netconn_alloc(enum netconn_type t, netconn_callback callback) -{ - struct netconn *conn; - int size; - - conn = (struct netconn *)memp_malloc(MEMP_NETCONN); - if (conn == NULL) { - return NULL; - } - - conn->last_err = ERR_OK; - conn->type = t; - conn->pcb.tcp = NULL; - -#if (DEFAULT_RAW_RECVMBOX_SIZE == DEFAULT_UDP_RECVMBOX_SIZE) && \ - (DEFAULT_RAW_RECVMBOX_SIZE == DEFAULT_TCP_RECVMBOX_SIZE) - size = DEFAULT_RAW_RECVMBOX_SIZE; -#else - switch(NETCONNTYPE_GROUP(t)) { -#if LWIP_RAW - case NETCONN_RAW: - size = DEFAULT_RAW_RECVMBOX_SIZE; - break; -#endif /* LWIP_RAW */ -#if LWIP_UDP - case NETCONN_UDP: - size = DEFAULT_UDP_RECVMBOX_SIZE; - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case NETCONN_TCP: - size = DEFAULT_TCP_RECVMBOX_SIZE; - break; -#endif /* LWIP_TCP */ - default: - LWIP_ASSERT("netconn_alloc: undefined netconn_type", 0); - break; - } -#endif - - if (sys_sem_new(&conn->op_completed, 0) != ERR_OK) { - memp_free(MEMP_NETCONN, conn); - return NULL; - } - if (sys_mbox_new(&conn->recvmbox, size) != ERR_OK) { - sys_sem_free(&conn->op_completed); - memp_free(MEMP_NETCONN, conn); - return NULL; - } - -#if LWIP_TCP - sys_mbox_set_invalid(&conn->acceptmbox); -#endif - conn->state = NETCONN_NONE; -#if LWIP_SOCKET - /* initialize socket to -1 since 0 is a valid socket */ - conn->socket = -1; -#endif /* LWIP_SOCKET */ - conn->callback = callback; -#if LWIP_TCP - conn->current_msg = NULL; - conn->write_offset = 0; -#endif /* LWIP_TCP */ -#if LWIP_SO_RCVTIMEO - conn->recv_timeout = 0; -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - conn->recv_bufsize = RECV_BUFSIZE_DEFAULT; - conn->recv_avail = 0; -#endif /* LWIP_SO_RCVBUF */ - conn->flags = 0; - return conn; -} - -/** - * Delete a netconn and all its resources. - * The pcb is NOT freed (since we might not be in the right thread context do this). - * - * @param conn the netconn to free - */ -void -netconn_free(struct netconn *conn) -{ - LWIP_ASSERT("PCB must be deallocated outside this function", conn->pcb.tcp == NULL); - LWIP_ASSERT("recvmbox must be deallocated before calling this function", - !sys_mbox_valid(&conn->recvmbox)); -#if LWIP_TCP - LWIP_ASSERT("acceptmbox must be deallocated before calling this function", - !sys_mbox_valid(&conn->acceptmbox)); -#endif /* LWIP_TCP */ - - sys_sem_free(&conn->op_completed); - sys_sem_set_invalid(&conn->op_completed); - - memp_free(MEMP_NETCONN, conn); -} - -/** - * Delete rcvmbox and acceptmbox of a netconn and free the left-over data in - * these mboxes - * - * @param conn the netconn to free - * @bytes_drained bytes drained from recvmbox - * @accepts_drained pending connections drained from acceptmbox - */ -static void -netconn_drain(struct netconn *conn) -{ - void *mem; -#if LWIP_TCP - struct pbuf *p; -#endif /* LWIP_TCP */ - - /* This runs in tcpip_thread, so we don't need to lock against rx packets */ - - /* Delete and drain the recvmbox. */ - if (sys_mbox_valid(&conn->recvmbox)) { - while (sys_mbox_tryfetch(&conn->recvmbox, &mem) != SYS_MBOX_EMPTY) { -#if LWIP_TCP - if (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) { - if(mem != NULL) { - p = (struct pbuf*)mem; - /* pcb might be set to NULL already by err_tcp() */ - if (conn->pcb.tcp != NULL) { - tcp_recved(conn->pcb.tcp, p->tot_len); - } - pbuf_free(p); - } - } else -#endif /* LWIP_TCP */ - { - netbuf_delete((struct netbuf *)mem); - } - } - sys_mbox_free(&conn->recvmbox); - sys_mbox_set_invalid(&conn->recvmbox); - } - - /* Delete and drain the acceptmbox. */ -#if LWIP_TCP - if (sys_mbox_valid(&conn->acceptmbox)) { - while (sys_mbox_tryfetch(&conn->acceptmbox, &mem) != SYS_MBOX_EMPTY) { - struct netconn *newconn = (struct netconn *)mem; - /* Only tcp pcbs have an acceptmbox, so no need to check conn->type */ - /* pcb might be set to NULL already by err_tcp() */ - if (conn->pcb.tcp != NULL) { - tcp_accepted(conn->pcb.tcp); - } - /* drain recvmbox */ - netconn_drain(newconn); - if (newconn->pcb.tcp != NULL) { - tcp_abort(newconn->pcb.tcp); - newconn->pcb.tcp = NULL; - } - netconn_free(newconn); - } - sys_mbox_free(&conn->acceptmbox); - sys_mbox_set_invalid(&conn->acceptmbox); - } -#endif /* LWIP_TCP */ -} - -#if LWIP_TCP -/** - * Internal helper function to close a TCP netconn: since this sometimes - * doesn't work at the first attempt, this function is called from multiple - * places. - * - * @param conn the TCP netconn to close - */ -static void -do_close_internal(struct netconn *conn) -{ - err_t err; - u8_t shut, shut_rx, shut_tx, close; - - LWIP_ASSERT("invalid conn", (conn != NULL)); - LWIP_ASSERT("this is for tcp netconns only", (NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP)); - LWIP_ASSERT("conn must be in state NETCONN_CLOSE", (conn->state == NETCONN_CLOSE)); - LWIP_ASSERT("pcb already closed", (conn->pcb.tcp != NULL)); - LWIP_ASSERT("conn->current_msg != NULL", conn->current_msg != NULL); - - shut = conn->current_msg->msg.sd.shut; - shut_rx = shut & NETCONN_SHUT_RD; - shut_tx = shut & NETCONN_SHUT_WR; - /* shutting down both ends is the same as closing */ - close = shut == NETCONN_SHUT_RDWR; - - /* Set back some callback pointers */ - if (close) { - tcp_arg(conn->pcb.tcp, NULL); - } - if (conn->pcb.tcp->state == LISTEN) { - tcp_accept(conn->pcb.tcp, NULL); - } else { - /* some callbacks have to be reset if tcp_close is not successful */ - if (shut_rx) { - tcp_recv(conn->pcb.tcp, NULL); - tcp_accept(conn->pcb.tcp, NULL); - } - if (shut_tx) { - tcp_sent(conn->pcb.tcp, NULL); - } - if (close) { - tcp_poll(conn->pcb.tcp, NULL, 4); - tcp_err(conn->pcb.tcp, NULL); - } - } - /* Try to close the connection */ - if (shut == NETCONN_SHUT_RDWR) { - err = tcp_close(conn->pcb.tcp); - } else { - err = tcp_shutdown(conn->pcb.tcp, shut & NETCONN_SHUT_RD, shut & NETCONN_SHUT_WR); - } - if (err == ERR_OK) { - /* Closing succeeded */ - conn->current_msg->err = ERR_OK; - conn->current_msg = NULL; - conn->state = NETCONN_NONE; - /* Set back some callback pointers as conn is going away */ - conn->pcb.tcp = NULL; - /* Trigger select() in socket layer. Make sure everybody notices activity - on the connection, error first! */ - if (close) { - API_EVENT(conn, NETCONN_EVT_ERROR, 0); - } - if (shut_rx) { - API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0); - } - if (shut_tx) { - API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0); - } - /* wake up the application task */ - sys_sem_signal(&conn->op_completed); - } else { - /* Closing failed, restore some of the callbacks */ - /* Closing of listen pcb will never fail! */ - LWIP_ASSERT("Closing a listen pcb may not fail!", (conn->pcb.tcp->state != LISTEN)); - tcp_sent(conn->pcb.tcp, sent_tcp); - tcp_poll(conn->pcb.tcp, poll_tcp, 4); - tcp_err(conn->pcb.tcp, err_tcp); - tcp_arg(conn->pcb.tcp, conn); - /* don't restore recv callback: we don't want to receive any more data */ - } - /* If closing didn't succeed, we get called again either - from poll_tcp or from sent_tcp */ -} -#endif /* LWIP_TCP */ - -/** - * Delete the pcb inside a netconn. - * Called from netconn_delete. - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_delconn(struct api_msg_msg *msg) -{ - /* @todo TCP: abort running write/connect? */ - if ((msg->conn->state != NETCONN_NONE) && - (msg->conn->state != NETCONN_LISTEN) && - (msg->conn->state != NETCONN_CONNECT)) { - /* this only happens for TCP netconns */ - LWIP_ASSERT("NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP", - NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP); - msg->err = ERR_INPROGRESS; - } else { - LWIP_ASSERT("blocking connect in progress", - (msg->conn->state != NETCONN_CONNECT) || IN_NONBLOCKING_CONNECT(msg->conn)); - /* Drain and delete mboxes */ - netconn_drain(msg->conn); - - if (msg->conn->pcb.tcp != NULL) { - - switch (NETCONNTYPE_GROUP(msg->conn->type)) { -#if LWIP_RAW - case NETCONN_RAW: - raw_remove(msg->conn->pcb.raw); - break; -#endif /* LWIP_RAW */ -#if LWIP_UDP - case NETCONN_UDP: - msg->conn->pcb.udp->recv_arg = NULL; - udp_remove(msg->conn->pcb.udp); - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case NETCONN_TCP: - LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL && - msg->conn->write_offset == 0); - msg->conn->state = NETCONN_CLOSE; - msg->msg.sd.shut = NETCONN_SHUT_RDWR; - msg->conn->current_msg = msg; - do_close_internal(msg->conn); - /* API_EVENT is called inside do_close_internal, before releasing - the application thread, so we can return at this point! */ - return; -#endif /* LWIP_TCP */ - default: - break; - } - msg->conn->pcb.tcp = NULL; - } - /* tcp netconns don't come here! */ - - /* @todo: this lets select make the socket readable and writable, - which is wrong! errfd instead? */ - API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0); - API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0); - } - if (sys_sem_valid(&msg->conn->op_completed)) { - sys_sem_signal(&msg->conn->op_completed); - } -} - -/** - * Bind a pcb contained in a netconn - * Called from netconn_bind. - * - * @param msg the api_msg_msg pointing to the connection and containing - * the IP address and port to bind to - */ -void -do_bind(struct api_msg_msg *msg) -{ - if (ERR_IS_FATAL(msg->conn->last_err)) { - msg->err = msg->conn->last_err; - } else { - msg->err = ERR_VAL; - if (msg->conn->pcb.tcp != NULL) { - switch (NETCONNTYPE_GROUP(msg->conn->type)) { -#if LWIP_RAW - case NETCONN_RAW: - msg->err = raw_bind(msg->conn->pcb.raw, msg->msg.bc.ipaddr); - break; -#endif /* LWIP_RAW */ -#if LWIP_UDP - case NETCONN_UDP: - msg->err = udp_bind(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port); - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case NETCONN_TCP: - msg->err = tcp_bind(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port); - break; -#endif /* LWIP_TCP */ - default: - break; - } - } - } - TCPIP_APIMSG_ACK(msg); -} - -#if LWIP_TCP -/** - * TCP callback function if a connection (opened by tcp_connect/do_connect) has - * been established (or reset by the remote host). - * - * @see tcp.h (struct tcp_pcb.connected) for parameters and return values - */ -static err_t -do_connected(void *arg, struct tcp_pcb *pcb, err_t err) -{ - struct netconn *conn; - int was_blocking; - - LWIP_UNUSED_ARG(pcb); - - conn = (struct netconn *)arg; - - if (conn == NULL) { - return ERR_VAL; - } - - LWIP_ASSERT("conn->state == NETCONN_CONNECT", conn->state == NETCONN_CONNECT); - LWIP_ASSERT("(conn->current_msg != NULL) || conn->in_non_blocking_connect", - (conn->current_msg != NULL) || IN_NONBLOCKING_CONNECT(conn)); - - if (conn->current_msg != NULL) { - conn->current_msg->err = err; - } - if ((NETCONNTYPE_GROUP(conn->type) == NETCONN_TCP) && (err == ERR_OK)) { - setup_tcp(conn); - } - was_blocking = !IN_NONBLOCKING_CONNECT(conn); - SET_NONBLOCKING_CONNECT(conn, 0); - conn->current_msg = NULL; - conn->state = NETCONN_NONE; - if (!was_blocking) { - NETCONN_SET_SAFE_ERR(conn, ERR_OK); - } - API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0); - - if (was_blocking) { - sys_sem_signal(&conn->op_completed); - } - return ERR_OK; -} -#endif /* LWIP_TCP */ - -/** - * Connect a pcb contained inside a netconn - * Called from netconn_connect. - * - * @param msg the api_msg_msg pointing to the connection and containing - * the IP address and port to connect to - */ -void -do_connect(struct api_msg_msg *msg) -{ - if (msg->conn->pcb.tcp == NULL) { - /* This may happen when calling netconn_connect() a second time */ - msg->err = ERR_CLSD; - } else { - switch (NETCONNTYPE_GROUP(msg->conn->type)) { -#if LWIP_RAW - case NETCONN_RAW: - msg->err = raw_connect(msg->conn->pcb.raw, msg->msg.bc.ipaddr); - break; -#endif /* LWIP_RAW */ -#if LWIP_UDP - case NETCONN_UDP: - msg->err = udp_connect(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port); - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case NETCONN_TCP: - /* Prevent connect while doing any other action. */ - if (msg->conn->state != NETCONN_NONE) { - msg->err = ERR_ISCONN; - } else { - setup_tcp(msg->conn); - msg->err = tcp_connect(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, - msg->msg.bc.port, do_connected); - if (msg->err == ERR_OK) { - u8_t non_blocking = netconn_is_nonblocking(msg->conn); - msg->conn->state = NETCONN_CONNECT; - SET_NONBLOCKING_CONNECT(msg->conn, non_blocking); - if (non_blocking) { - msg->err = ERR_INPROGRESS; - } else { - msg->conn->current_msg = msg; - /* sys_sem_signal() is called from do_connected (or err_tcp()), - * when the connection is established! */ - return; - } - } - } - break; -#endif /* LWIP_TCP */ - default: - LWIP_ERROR("Invalid netconn type", 0, do{ msg->err = ERR_VAL; }while(0)); - break; - } - } - sys_sem_signal(&msg->conn->op_completed); -} - -/** - * Connect a pcb contained inside a netconn - * Only used for UDP netconns. - * Called from netconn_disconnect. - * - * @param msg the api_msg_msg pointing to the connection to disconnect - */ -void -do_disconnect(struct api_msg_msg *msg) -{ -#if LWIP_UDP - if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) { - udp_disconnect(msg->conn->pcb.udp); - msg->err = ERR_OK; - } else -#endif /* LWIP_UDP */ - { - msg->err = ERR_VAL; - } - TCPIP_APIMSG_ACK(msg); -} - -#if LWIP_TCP -/** - * Set a TCP pcb contained in a netconn into listen mode - * Called from netconn_listen. - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_listen(struct api_msg_msg *msg) -{ - if (ERR_IS_FATAL(msg->conn->last_err)) { - msg->err = msg->conn->last_err; - } else { - msg->err = ERR_CONN; - if (msg->conn->pcb.tcp != NULL) { - if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) { - if (msg->conn->state == NETCONN_NONE) { -#if TCP_LISTEN_BACKLOG - struct tcp_pcb* lpcb = tcp_listen_with_backlog(msg->conn->pcb.tcp, msg->msg.lb.backlog); -#else /* TCP_LISTEN_BACKLOG */ - struct tcp_pcb* lpcb = tcp_listen(msg->conn->pcb.tcp); -#endif /* TCP_LISTEN_BACKLOG */ - if (lpcb == NULL) { - /* in this case, the old pcb is still allocated */ - msg->err = ERR_MEM; - } else { - /* delete the recvmbox and allocate the acceptmbox */ - if (sys_mbox_valid(&msg->conn->recvmbox)) { - /** @todo: should we drain the recvmbox here? */ - sys_mbox_free(&msg->conn->recvmbox); - sys_mbox_set_invalid(&msg->conn->recvmbox); - } - msg->err = ERR_OK; - if (!sys_mbox_valid(&msg->conn->acceptmbox)) { - msg->err = sys_mbox_new(&msg->conn->acceptmbox, DEFAULT_ACCEPTMBOX_SIZE); - } - if (msg->err == ERR_OK) { - msg->conn->state = NETCONN_LISTEN; - msg->conn->pcb.tcp = lpcb; - tcp_arg(msg->conn->pcb.tcp, msg->conn); - tcp_accept(msg->conn->pcb.tcp, accept_function); - } else { - /* since the old pcb is already deallocated, free lpcb now */ - tcp_close(lpcb); - msg->conn->pcb.tcp = NULL; - } - } - } - } - } - } - TCPIP_APIMSG_ACK(msg); -} -#endif /* LWIP_TCP */ - -/** - * Send some data on a RAW or UDP pcb contained in a netconn - * Called from netconn_send - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_send(struct api_msg_msg *msg) -{ - if (ERR_IS_FATAL(msg->conn->last_err)) { - msg->err = msg->conn->last_err; - } else { - msg->err = ERR_CONN; - if (msg->conn->pcb.tcp != NULL) { - switch (NETCONNTYPE_GROUP(msg->conn->type)) { -#if LWIP_RAW - case NETCONN_RAW: - if (ipX_addr_isany(PCB_ISIPV6(msg->conn->pcb.ip), &msg->msg.b->addr)) { - msg->err = raw_send(msg->conn->pcb.raw, msg->msg.b->p); - } else { - msg->err = raw_sendto(msg->conn->pcb.raw, msg->msg.b->p, ipX_2_ip(&msg->msg.b->addr)); - } - break; -#endif -#if LWIP_UDP - case NETCONN_UDP: -#if LWIP_CHECKSUM_ON_COPY - if (ipX_addr_isany(PCB_ISIPV6(msg->conn->pcb.ip), &msg->msg.b->addr)) { - msg->err = udp_send_chksum(msg->conn->pcb.udp, msg->msg.b->p, - msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum); - } else { - msg->err = udp_sendto_chksum(msg->conn->pcb.udp, msg->msg.b->p, - ipX_2_ip(&msg->msg.b->addr), msg->msg.b->port, - msg->msg.b->flags & NETBUF_FLAG_CHKSUM, msg->msg.b->toport_chksum); - } -#else /* LWIP_CHECKSUM_ON_COPY */ - if (ipX_addr_isany(PCB_ISIPV6(msg->conn->pcb.ip), &msg->msg.b->addr)) { - msg->err = udp_send(msg->conn->pcb.udp, msg->msg.b->p); - } else { - msg->err = udp_sendto(msg->conn->pcb.udp, msg->msg.b->p, ipX_2_ip(&msg->msg.b->addr), msg->msg.b->port); - } -#endif /* LWIP_CHECKSUM_ON_COPY */ - break; -#endif /* LWIP_UDP */ - default: - break; - } - } - } - TCPIP_APIMSG_ACK(msg); -} - -#if LWIP_TCP -/** - * Indicate data has been received from a TCP pcb contained in a netconn - * Called from netconn_recv - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_recv(struct api_msg_msg *msg) -{ - msg->err = ERR_OK; - if (msg->conn->pcb.tcp != NULL) { - if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) { -#if TCP_LISTEN_BACKLOG - if (msg->conn->pcb.tcp->state == LISTEN) { - tcp_accepted(msg->conn->pcb.tcp); - } else -#endif /* TCP_LISTEN_BACKLOG */ - { - u32_t remaining = msg->msg.r.len; - do { - u16_t recved = (remaining > 0xffff) ? 0xffff : (u16_t)remaining; - tcp_recved(msg->conn->pcb.tcp, recved); - remaining -= recved; - }while(remaining != 0); - } - } - } - TCPIP_APIMSG_ACK(msg); -} - -/** - * See if more data needs to be written from a previous call to netconn_write. - * Called initially from do_write. If the first call can't send all data - * (because of low memory or empty send-buffer), this function is called again - * from sent_tcp() or poll_tcp() to send more data. If all data is sent, the - * blocking application thread (waiting in netconn_write) is released. - * - * @param conn netconn (that is currently in state NETCONN_WRITE) to process - * @return ERR_OK - * ERR_MEM if LWIP_TCPIP_CORE_LOCKING=1 and sending hasn't yet finished - */ -static err_t -do_writemore(struct netconn *conn) -{ - err_t err; - void *dataptr; - u16_t len, available; - u8_t write_finished = 0; - size_t diff; - u8_t dontblock = netconn_is_nonblocking(conn) || - (conn->current_msg->msg.w.apiflags & NETCONN_DONTBLOCK); - u8_t apiflags = conn->current_msg->msg.w.apiflags; - - LWIP_ASSERT("conn != NULL", conn != NULL); - LWIP_ASSERT("conn->state == NETCONN_WRITE", (conn->state == NETCONN_WRITE)); - LWIP_ASSERT("conn->current_msg != NULL", conn->current_msg != NULL); - LWIP_ASSERT("conn->pcb.tcp != NULL", conn->pcb.tcp != NULL); - LWIP_ASSERT("conn->write_offset < conn->current_msg->msg.w.len", - conn->write_offset < conn->current_msg->msg.w.len); - - dataptr = (u8_t*)conn->current_msg->msg.w.dataptr + conn->write_offset; - diff = conn->current_msg->msg.w.len - conn->write_offset; - if (diff > 0xffffUL) { /* max_u16_t */ - len = 0xffff; -#if LWIP_TCPIP_CORE_LOCKING - conn->flags |= NETCONN_FLAG_WRITE_DELAYED; -#endif - apiflags |= TCP_WRITE_FLAG_MORE; - } else { - len = (u16_t)diff; - } - available = tcp_sndbuf(conn->pcb.tcp); - if (available < len) { - /* don't try to write more than sendbuf */ - len = available; - if (dontblock){ - if (!len) { - err = ERR_WOULDBLOCK; - goto err_mem; - } - } else { -#if LWIP_TCPIP_CORE_LOCKING - conn->flags |= NETCONN_FLAG_WRITE_DELAYED; -#endif - apiflags |= TCP_WRITE_FLAG_MORE; - } - } - LWIP_ASSERT("do_writemore: invalid length!", ((conn->write_offset + len) <= conn->current_msg->msg.w.len)); - err = tcp_write(conn->pcb.tcp, dataptr, len, apiflags); - /* if OK or memory error, check available space */ - if ((err == ERR_OK) || (err == ERR_MEM)) { -err_mem: - if (dontblock && (len < conn->current_msg->msg.w.len)) { - /* non-blocking write did not write everything: mark the pcb non-writable - and let poll_tcp check writable space to mark the pcb writable again */ - API_EVENT(conn, NETCONN_EVT_SENDMINUS, len); - conn->flags |= NETCONN_FLAG_CHECK_WRITESPACE; - } else if ((tcp_sndbuf(conn->pcb.tcp) <= TCP_SNDLOWAT) || - (tcp_sndqueuelen(conn->pcb.tcp) >= TCP_SNDQUEUELOWAT)) { - /* The queued byte- or pbuf-count exceeds the configured low-water limit, - let select mark this pcb as non-writable. */ - API_EVENT(conn, NETCONN_EVT_SENDMINUS, len); - } - } - - if (err == ERR_OK) { - conn->write_offset += len; - if ((conn->write_offset == conn->current_msg->msg.w.len) || dontblock) { - /* return sent length */ - conn->current_msg->msg.w.len = conn->write_offset; - /* everything was written */ - write_finished = 1; - conn->write_offset = 0; - } - tcp_output(conn->pcb.tcp); - } else if ((err == ERR_MEM) && !dontblock) { - /* If ERR_MEM, we wait for sent_tcp or poll_tcp to be called - we do NOT return to the application thread, since ERR_MEM is - only a temporary error! */ - - /* tcp_write returned ERR_MEM, try tcp_output anyway */ - tcp_output(conn->pcb.tcp); - -#if LWIP_TCPIP_CORE_LOCKING - conn->flags |= NETCONN_FLAG_WRITE_DELAYED; -#endif - } else { - /* On errors != ERR_MEM, we don't try writing any more but return - the error to the application thread. */ - write_finished = 1; - conn->current_msg->msg.w.len = 0; - } - - if (write_finished) { - /* everything was written: set back connection state - and back to application task */ - conn->current_msg->err = err; - conn->current_msg = NULL; - conn->state = NETCONN_NONE; -#if LWIP_TCPIP_CORE_LOCKING - if ((conn->flags & NETCONN_FLAG_WRITE_DELAYED) != 0) -#endif - { - sys_sem_signal(&conn->op_completed); - } - } -#if LWIP_TCPIP_CORE_LOCKING - else - return ERR_MEM; -#endif - return ERR_OK; -} -#endif /* LWIP_TCP */ - -/** - * Send some data on a TCP pcb contained in a netconn - * Called from netconn_write - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_write(struct api_msg_msg *msg) -{ - if (ERR_IS_FATAL(msg->conn->last_err)) { - msg->err = msg->conn->last_err; - } else { - if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP) { -#if LWIP_TCP - if (msg->conn->state != NETCONN_NONE) { - /* netconn is connecting, closing or in blocking write */ - msg->err = ERR_INPROGRESS; - } else if (msg->conn->pcb.tcp != NULL) { - msg->conn->state = NETCONN_WRITE; - /* set all the variables used by do_writemore */ - LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL && - msg->conn->write_offset == 0); - LWIP_ASSERT("msg->msg.w.len != 0", msg->msg.w.len != 0); - msg->conn->current_msg = msg; - msg->conn->write_offset = 0; -#if LWIP_TCPIP_CORE_LOCKING - msg->conn->flags &= ~NETCONN_FLAG_WRITE_DELAYED; - if (do_writemore(msg->conn) != ERR_OK) { - LWIP_ASSERT("state!", msg->conn->state == NETCONN_WRITE); - UNLOCK_TCPIP_CORE(); - sys_arch_sem_wait(&msg->conn->op_completed, 0); - LOCK_TCPIP_CORE(); - LWIP_ASSERT("state!", msg->conn->state == NETCONN_NONE); - } -#else /* LWIP_TCPIP_CORE_LOCKING */ - do_writemore(msg->conn); -#endif /* LWIP_TCPIP_CORE_LOCKING */ - /* for both cases: if do_writemore was called, don't ACK the APIMSG - since do_writemore ACKs it! */ - return; - } else { - msg->err = ERR_CONN; - } -#else /* LWIP_TCP */ - msg->err = ERR_VAL; -#endif /* LWIP_TCP */ -#if (LWIP_UDP || LWIP_RAW) - } else { - msg->err = ERR_VAL; -#endif /* (LWIP_UDP || LWIP_RAW) */ - } - } - TCPIP_APIMSG_ACK(msg); -} - -/** - * Return a connection's local or remote address - * Called from netconn_getaddr - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_getaddr(struct api_msg_msg *msg) -{ - if (msg->conn->pcb.ip != NULL) { - if (msg->msg.ad.local) { - ipX_addr_copy(PCB_ISIPV6(msg->conn->pcb.ip), *(msg->msg.ad.ipaddr), - msg->conn->pcb.ip->local_ip); - } else { - ipX_addr_copy(PCB_ISIPV6(msg->conn->pcb.ip), *(msg->msg.ad.ipaddr), - msg->conn->pcb.ip->remote_ip); - } - msg->err = ERR_OK; - switch (NETCONNTYPE_GROUP(msg->conn->type)) { -#if LWIP_RAW - case NETCONN_RAW: - if (msg->msg.ad.local) { - *(msg->msg.ad.port) = msg->conn->pcb.raw->protocol; - } else { - /* return an error as connecting is only a helper for upper layers */ - msg->err = ERR_CONN; - } - break; -#endif /* LWIP_RAW */ -#if LWIP_UDP - case NETCONN_UDP: - if (msg->msg.ad.local) { - *(msg->msg.ad.port) = msg->conn->pcb.udp->local_port; - } else { - if ((msg->conn->pcb.udp->flags & UDP_FLAGS_CONNECTED) == 0) { - msg->err = ERR_CONN; - } else { - *(msg->msg.ad.port) = msg->conn->pcb.udp->remote_port; - } - } - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case NETCONN_TCP: - *(msg->msg.ad.port) = (msg->msg.ad.local?msg->conn->pcb.tcp->local_port:msg->conn->pcb.tcp->remote_port); - break; -#endif /* LWIP_TCP */ - default: - LWIP_ASSERT("invalid netconn_type", 0); - break; - } - } else { - msg->err = ERR_CONN; - } - TCPIP_APIMSG_ACK(msg); -} - -/** - * Close a TCP pcb contained in a netconn - * Called from netconn_close - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_close(struct api_msg_msg *msg) -{ -#if LWIP_TCP - /* @todo: abort running write/connect? */ - if ((msg->conn->state != NETCONN_NONE) && (msg->conn->state != NETCONN_LISTEN)) { - /* this only happens for TCP netconns */ - LWIP_ASSERT("NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP", - NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP); - msg->err = ERR_INPROGRESS; - } else if ((msg->conn->pcb.tcp != NULL) && (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_TCP)) { - if ((msg->msg.sd.shut != NETCONN_SHUT_RDWR) && (msg->conn->state == NETCONN_LISTEN)) { - /* LISTEN doesn't support half shutdown */ - msg->err = ERR_CONN; - } else { - if (msg->msg.sd.shut & NETCONN_SHUT_RD) { - /* Drain and delete mboxes */ - netconn_drain(msg->conn); - } - LWIP_ASSERT("already writing or closing", msg->conn->current_msg == NULL && - msg->conn->write_offset == 0); - msg->conn->state = NETCONN_CLOSE; - msg->conn->current_msg = msg; - do_close_internal(msg->conn); - /* for tcp netconns, do_close_internal ACKs the message */ - return; - } - } else -#endif /* LWIP_TCP */ - { - msg->err = ERR_VAL; - } - sys_sem_signal(&msg->conn->op_completed); -} - -#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) -/** - * Join multicast groups for UDP netconns. - * Called from netconn_join_leave_group - * - * @param msg the api_msg_msg pointing to the connection - */ -void -do_join_leave_group(struct api_msg_msg *msg) -{ - if (ERR_IS_FATAL(msg->conn->last_err)) { - msg->err = msg->conn->last_err; - } else { - if (msg->conn->pcb.tcp != NULL) { - if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) { -#if LWIP_UDP -#if LWIP_IPV6 && LWIP_IPV6_MLD - if (PCB_ISIPV6(msg->conn->pcb.udp)) { - if (msg->msg.jl.join_or_leave == NETCONN_JOIN) { - msg->err = mld6_joingroup(ipX_2_ip6(msg->msg.jl.netif_addr), - ipX_2_ip6(msg->msg.jl.multiaddr)); - } else { - msg->err = mld6_leavegroup(ipX_2_ip6(msg->msg.jl.netif_addr), - ipX_2_ip6(msg->msg.jl.multiaddr)); - } - } - else -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ - { -#if LWIP_IGMP - if (msg->msg.jl.join_or_leave == NETCONN_JOIN) { - msg->err = igmp_joingroup(ipX_2_ip(msg->msg.jl.netif_addr), - ipX_2_ip(msg->msg.jl.multiaddr)); - } else { - msg->err = igmp_leavegroup(ipX_2_ip(msg->msg.jl.netif_addr), - ipX_2_ip(msg->msg.jl.multiaddr)); - } -#endif /* LWIP_IGMP */ - } -#endif /* LWIP_UDP */ -#if (LWIP_TCP || LWIP_RAW) - } else { - msg->err = ERR_VAL; -#endif /* (LWIP_TCP || LWIP_RAW) */ - } - } else { - msg->err = ERR_CONN; - } - } - TCPIP_APIMSG_ACK(msg); -} -#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ - -#if LWIP_DNS -/** - * Callback function that is called when DNS name is resolved - * (or on timeout). A waiting application thread is waked up by - * signaling the semaphore. - */ -static void -do_dns_found(const char *name, ip_addr_t *ipaddr, void *arg) -{ - struct dns_api_msg *msg = (struct dns_api_msg*)arg; - - LWIP_ASSERT("DNS response for wrong host name", strcmp(msg->name, name) == 0); - LWIP_UNUSED_ARG(name); - - if (ipaddr == NULL) { - /* timeout or memory error */ - *msg->err = ERR_VAL; - } else { - /* address was resolved */ - *msg->err = ERR_OK; - *msg->addr = *ipaddr; - } - /* wake up the application task waiting in netconn_gethostbyname */ - sys_sem_signal(msg->sem); -} - -/** - * Execute a DNS query - * Called from netconn_gethostbyname - * - * @param arg the dns_api_msg pointing to the query - */ -void -do_gethostbyname(void *arg) -{ - struct dns_api_msg *msg = (struct dns_api_msg*)arg; - - *msg->err = dns_gethostbyname(msg->name, msg->addr, do_dns_found, msg); - if (*msg->err != ERR_INPROGRESS) { - /* on error or immediate success, wake up the application - * task waiting in netconn_gethostbyname */ - sys_sem_signal(msg->sem); - } -} -#endif /* LWIP_DNS */ - -#endif /* LWIP_NETCONN */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/err.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/err.c deleted file mode 100644 index 92fa8b7db..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/err.c +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @file - * Error Management module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/err.h" - -#ifdef LWIP_DEBUG - -static const char *err_strerr[] = { - "Ok.", /* ERR_OK 0 */ - "Out of memory error.", /* ERR_MEM -1 */ - "Buffer error.", /* ERR_BUF -2 */ - "Timeout.", /* ERR_TIMEOUT -3 */ - "Routing problem.", /* ERR_RTE -4 */ - "Operation in progress.", /* ERR_INPROGRESS -5 */ - "Illegal value.", /* ERR_VAL -6 */ - "Operation would block.", /* ERR_WOULDBLOCK -7 */ - "Address in use.", /* ERR_USE -8 */ - "Already connected.", /* ERR_ISCONN -9 */ - "Connection aborted.", /* ERR_ABRT -10 */ - "Connection reset.", /* ERR_RST -11 */ - "Connection closed.", /* ERR_CLSD -12 */ - "Not connected.", /* ERR_CONN -13 */ - "Illegal argument.", /* ERR_ARG -14 */ - "Low-level netif error.", /* ERR_IF -15 */ -}; - -/** - * Convert an lwip internal error to a string representation. - * - * @param err an lwip internal err_t - * @return a string representation for err - */ -const char * -lwip_strerr(err_t err) -{ - return err_strerr[-err]; - -} - -#endif /* LWIP_DEBUG */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netbuf.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netbuf.c deleted file mode 100644 index 0ccd2bce3..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netbuf.c +++ /dev/null @@ -1,245 +0,0 @@ -/** - * @file - * Network buffer management - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netbuf.h" -#include "lwip/memp.h" - -#include - -/** - * Create (allocate) and initialize a new netbuf. - * The netbuf doesn't yet contain a packet buffer! - * - * @return a pointer to a new netbuf - * NULL on lack of memory - */ -struct -netbuf *netbuf_new(void) -{ - struct netbuf *buf; - - buf = (struct netbuf *)memp_malloc(MEMP_NETBUF); - if (buf != NULL) { - buf->p = NULL; - buf->ptr = NULL; - ipX_addr_set_any(LWIP_IPV6, &buf->addr); - buf->port = 0; -#if LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY -#if LWIP_CHECKSUM_ON_COPY - buf->flags = 0; -#endif /* LWIP_CHECKSUM_ON_COPY */ - buf->toport_chksum = 0; -#if LWIP_NETBUF_RECVINFO - ipX_addr_set_any(LWIP_IPV6, &buf->toaddr); -#endif /* LWIP_NETBUF_RECVINFO */ -#endif /* LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY */ - return buf; - } else { - return NULL; - } -} - -/** - * Deallocate a netbuf allocated by netbuf_new(). - * - * @param buf pointer to a netbuf allocated by netbuf_new() - */ -void -netbuf_delete(struct netbuf *buf) -{ - if (buf != NULL) { - if (buf->p != NULL) { - pbuf_free(buf->p); - buf->p = buf->ptr = NULL; - } - memp_free(MEMP_NETBUF, buf); - } -} - -/** - * Allocate memory for a packet buffer for a given netbuf. - * - * @param buf the netbuf for which to allocate a packet buffer - * @param size the size of the packet buffer to allocate - * @return pointer to the allocated memory - * NULL if no memory could be allocated - */ -void * -netbuf_alloc(struct netbuf *buf, u16_t size) -{ - LWIP_ERROR("netbuf_alloc: invalid buf", (buf != NULL), return NULL;); - - /* Deallocate any previously allocated memory. */ - if (buf->p != NULL) { - pbuf_free(buf->p); - } - buf->p = pbuf_alloc(PBUF_TRANSPORT, size, PBUF_RAM); - if (buf->p == NULL) { - return NULL; - } - LWIP_ASSERT("check that first pbuf can hold size", - (buf->p->len >= size)); - buf->ptr = buf->p; - return buf->p->payload; -} - -/** - * Free the packet buffer included in a netbuf - * - * @param buf pointer to the netbuf which contains the packet buffer to free - */ -void -netbuf_free(struct netbuf *buf) -{ - LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return;); - if (buf->p != NULL) { - pbuf_free(buf->p); - } - buf->p = buf->ptr = NULL; -} - -/** - * Let a netbuf reference existing (non-volatile) data. - * - * @param buf netbuf which should reference the data - * @param dataptr pointer to the data to reference - * @param size size of the data - * @return ERR_OK if data is referenced - * ERR_MEM if data couldn't be referenced due to lack of memory - */ -err_t -netbuf_ref(struct netbuf *buf, const void *dataptr, u16_t size) -{ - LWIP_ERROR("netbuf_ref: invalid buf", (buf != NULL), return ERR_ARG;); - if (buf->p != NULL) { - pbuf_free(buf->p); - } - buf->p = pbuf_alloc(PBUF_TRANSPORT, 0, PBUF_REF); - if (buf->p == NULL) { - buf->ptr = NULL; - return ERR_MEM; - } - buf->p->payload = (void*)dataptr; - buf->p->len = buf->p->tot_len = size; - buf->ptr = buf->p; - return ERR_OK; -} - -/** - * Chain one netbuf to another (@see pbuf_chain) - * - * @param head the first netbuf - * @param tail netbuf to chain after head, freed by this function, may not be reference after returning - */ -void -netbuf_chain(struct netbuf *head, struct netbuf *tail) -{ - LWIP_ERROR("netbuf_ref: invalid head", (head != NULL), return;); - LWIP_ERROR("netbuf_chain: invalid tail", (tail != NULL), return;); - pbuf_cat(head->p, tail->p); - head->ptr = head->p; - memp_free(MEMP_NETBUF, tail); -} - -/** - * Get the data pointer and length of the data inside a netbuf. - * - * @param buf netbuf to get the data from - * @param dataptr pointer to a void pointer where to store the data pointer - * @param len pointer to an u16_t where the length of the data is stored - * @return ERR_OK if the information was retreived, - * ERR_BUF on error. - */ -err_t -netbuf_data(struct netbuf *buf, void **dataptr, u16_t *len) -{ - LWIP_ERROR("netbuf_data: invalid buf", (buf != NULL), return ERR_ARG;); - LWIP_ERROR("netbuf_data: invalid dataptr", (dataptr != NULL), return ERR_ARG;); - LWIP_ERROR("netbuf_data: invalid len", (len != NULL), return ERR_ARG;); - - if (buf->ptr == NULL) { - return ERR_BUF; - } - *dataptr = buf->ptr->payload; - *len = buf->ptr->len; - return ERR_OK; -} - -/** - * Move the current data pointer of a packet buffer contained in a netbuf - * to the next part. - * The packet buffer itself is not modified. - * - * @param buf the netbuf to modify - * @return -1 if there is no next part - * 1 if moved to the next part but now there is no next part - * 0 if moved to the next part and there are still more parts - */ -s8_t -netbuf_next(struct netbuf *buf) -{ - LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return -1;); - if (buf->ptr->next == NULL) { - return -1; - } - buf->ptr = buf->ptr->next; - if (buf->ptr->next == NULL) { - return 1; - } - return 0; -} - -/** - * Move the current data pointer of a packet buffer contained in a netbuf - * to the beginning of the packet. - * The packet buffer itself is not modified. - * - * @param buf the netbuf to modify - */ -void -netbuf_first(struct netbuf *buf) -{ - LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return;); - buf->ptr = buf->p; -} - -#endif /* LWIP_NETCONN */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netdb.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netdb.c deleted file mode 100644 index a7e4e06bc..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netdb.c +++ /dev/null @@ -1,352 +0,0 @@ -/** - * @file - * API functions for name resolving - * - */ - -/* - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Simon Goldschmidt - * - */ - -#include "lwip/netdb.h" - -#if LWIP_DNS && LWIP_SOCKET - -#include "lwip/err.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/ip_addr.h" -#include "lwip/api.h" -#include "lwip/dns.h" - -#include -#include - -/** helper struct for gethostbyname_r to access the char* buffer */ -struct gethostbyname_r_helper { - ip_addr_t *addrs; - ip_addr_t addr; - char *aliases; -}; - -/** h_errno is exported in netdb.h for access by applications. */ -#if LWIP_DNS_API_DECLARE_H_ERRNO -int h_errno; -#endif /* LWIP_DNS_API_DECLARE_H_ERRNO */ - -/** define "hostent" variables storage: 0 if we use a static (but unprotected) - * set of variables for lwip_gethostbyname, 1 if we use a local storage */ -#ifndef LWIP_DNS_API_HOSTENT_STORAGE -#define LWIP_DNS_API_HOSTENT_STORAGE 0 -#endif - -/** define "hostent" variables storage */ -#if LWIP_DNS_API_HOSTENT_STORAGE -#define HOSTENT_STORAGE -#else -#define HOSTENT_STORAGE static -#endif /* LWIP_DNS_API_STATIC_HOSTENT */ - -/** - * Returns an entry containing addresses of address family AF_INET - * for the host with name name. - * Due to dns_gethostbyname limitations, only one address is returned. - * - * @param name the hostname to resolve - * @return an entry containing addresses of address family AF_INET - * for the host with name name - */ -struct hostent* -lwip_gethostbyname(const char *name) -{ - err_t err; - ip_addr_t addr; - - /* buffer variables for lwip_gethostbyname() */ - HOSTENT_STORAGE struct hostent s_hostent; - HOSTENT_STORAGE char *s_aliases; - HOSTENT_STORAGE ip_addr_t s_hostent_addr; - HOSTENT_STORAGE ip_addr_t *s_phostent_addr[2]; - - /* query host IP address */ - err = netconn_gethostbyname(name, &addr); - if (err != ERR_OK) { - LWIP_DEBUGF(DNS_DEBUG, ("lwip_gethostbyname(%s) failed, err=%d\n", name, err)); - h_errno = HOST_NOT_FOUND; - return NULL; - } - - /* fill hostent */ - s_hostent_addr = addr; - s_phostent_addr[0] = &s_hostent_addr; - s_phostent_addr[1] = NULL; - s_hostent.h_name = (char*)name; - s_hostent.h_aliases = &s_aliases; - s_hostent.h_addrtype = AF_INET; - s_hostent.h_length = sizeof(ip_addr_t); - s_hostent.h_addr_list = (char**)&s_phostent_addr; - -#if DNS_DEBUG - /* dump hostent */ - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_name == %s\n", s_hostent.h_name)); - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_aliases == %p\n", s_hostent.h_aliases)); - if (s_hostent.h_aliases != NULL) { - u8_t idx; - for ( idx=0; s_hostent.h_aliases[idx]; idx++) { - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_aliases[%i]-> == %p\n", idx, s_hostent.h_aliases[idx])); - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_aliases[%i]-> == %s\n", idx, s_hostent.h_aliases[idx])); - } - } - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_addrtype == %d\n", s_hostent.h_addrtype)); - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_length == %d\n", s_hostent.h_length)); - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_addr_list == %p\n", s_hostent.h_addr_list)); - if (s_hostent.h_addr_list != NULL) { - u8_t idx; - for ( idx=0; s_hostent.h_addr_list[idx]; idx++) { - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_addr_list[%i] == %p\n", idx, s_hostent.h_addr_list[idx])); - LWIP_DEBUGF(DNS_DEBUG, ("hostent.h_addr_list[%i]-> == %s\n", idx, ip_ntoa((ip_addr_t*)s_hostent.h_addr_list[idx]))); - } - } -#endif /* DNS_DEBUG */ - -#if LWIP_DNS_API_HOSTENT_STORAGE - /* this function should return the "per-thread" hostent after copy from s_hostent */ - return sys_thread_hostent(&s_hostent); -#else - return &s_hostent; -#endif /* LWIP_DNS_API_HOSTENT_STORAGE */ -} - -/** - * Thread-safe variant of lwip_gethostbyname: instead of using a static - * buffer, this function takes buffer and errno pointers as arguments - * and uses these for the result. - * - * @param name the hostname to resolve - * @param ret pre-allocated struct where to store the result - * @param buf pre-allocated buffer where to store additional data - * @param buflen the size of buf - * @param result pointer to a hostent pointer that is set to ret on success - * and set to zero on error - * @param h_errnop pointer to an int where to store errors (instead of modifying - * the global h_errno) - * @return 0 on success, non-zero on error, additional error information - * is stored in *h_errnop instead of h_errno to be thread-safe - */ -int -lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf, - size_t buflen, struct hostent **result, int *h_errnop) -{ - err_t err; - struct gethostbyname_r_helper *h; - char *hostname; - size_t namelen; - int lh_errno; - - if (h_errnop == NULL) { - /* ensure h_errnop is never NULL */ - h_errnop = &lh_errno; - } - - if (result == NULL) { - /* not all arguments given */ - *h_errnop = EINVAL; - return -1; - } - /* first thing to do: set *result to nothing */ - *result = NULL; - if ((name == NULL) || (ret == NULL) || (buf == 0)) { - /* not all arguments given */ - *h_errnop = EINVAL; - return -1; - } - - namelen = strlen(name); - if (buflen < (sizeof(struct gethostbyname_r_helper) + namelen + 1 + (MEM_ALIGNMENT - 1))) { - /* buf can't hold the data needed + a copy of name */ - *h_errnop = ERANGE; - return -1; - } - - h = (struct gethostbyname_r_helper*)LWIP_MEM_ALIGN(buf); - hostname = ((char*)h) + sizeof(struct gethostbyname_r_helper); - - /* query host IP address */ - err = netconn_gethostbyname(name, &(h->addr)); - if (err != ERR_OK) { - LWIP_DEBUGF(DNS_DEBUG, ("lwip_gethostbyname(%s) failed, err=%d\n", name, err)); - *h_errnop = ENSRNOTFOUND; - return -1; - } - - /* copy the hostname into buf */ - MEMCPY(hostname, name, namelen); - hostname[namelen] = 0; - - /* fill hostent */ - h->addrs = &(h->addr); - h->aliases = NULL; - ret->h_name = (char*)hostname; - ret->h_aliases = &(h->aliases); - ret->h_addrtype = AF_INET; - ret->h_length = sizeof(ip_addr_t); - ret->h_addr_list = (char**)&(h->addrs); - - /* set result != NULL */ - *result = ret; - - /* return success */ - return 0; -} - -/** - * Frees one or more addrinfo structures returned by getaddrinfo(), along with - * any additional storage associated with those structures. If the ai_next field - * of the structure is not null, the entire list of structures is freed. - * - * @param ai struct addrinfo to free - */ -void -lwip_freeaddrinfo(struct addrinfo *ai) -{ - struct addrinfo *next; - - while (ai != NULL) { - next = ai->ai_next; - memp_free(MEMP_NETDB, ai); - ai = next; - } -} - -/** - * Translates the name of a service location (for example, a host name) and/or - * a service name and returns a set of socket addresses and associated - * information to be used in creating a socket with which to address the - * specified service. - * Memory for the result is allocated internally and must be freed by calling - * lwip_freeaddrinfo()! - * - * Due to a limitation in dns_gethostbyname, only the first address of a - * host is returned. - * Also, service names are not supported (only port numbers)! - * - * @param nodename descriptive name or address string of the host - * (may be NULL -> local address) - * @param servname port number as string of NULL - * @param hints structure containing input values that set socktype and protocol - * @param res pointer to a pointer where to store the result (set to NULL on failure) - * @return 0 on success, non-zero on failure - */ -int -lwip_getaddrinfo(const char *nodename, const char *servname, - const struct addrinfo *hints, struct addrinfo **res) -{ - err_t err; - ip_addr_t addr; - struct addrinfo *ai; - struct sockaddr_in *sa = NULL; - int port_nr = 0; - size_t total_size; - size_t namelen = 0; - - if (res == NULL) { - return EAI_FAIL; - } - *res = NULL; - if ((nodename == NULL) && (servname == NULL)) { - return EAI_NONAME; - } - - if (servname != NULL) { - /* service name specified: convert to port number - * @todo?: currently, only ASCII integers (port numbers) are supported! */ - port_nr = atoi(servname); - if ((port_nr <= 0) || (port_nr > 0xffff)) { - return EAI_SERVICE; - } - } - - if (nodename != NULL) { - /* service location specified, try to resolve */ - err = netconn_gethostbyname(nodename, &addr); - if (err != ERR_OK) { - return EAI_FAIL; - } - } else { - /* service location specified, use loopback address */ - ip_addr_set_loopback(&addr); - } - - total_size = sizeof(struct addrinfo) + sizeof(struct sockaddr_in); - if (nodename != NULL) { - namelen = strlen(nodename); - LWIP_ASSERT("namelen is too long", (namelen + 1) <= (mem_size_t)-1); - total_size += namelen + 1; - } - /* If this fails, please report to lwip-devel! :-) */ - LWIP_ASSERT("total_size <= NETDB_ELEM_SIZE: please report this!", - total_size <= NETDB_ELEM_SIZE); - ai = (struct addrinfo *)memp_malloc(MEMP_NETDB); - if (ai == NULL) { - goto memerr; - } - memset(ai, 0, total_size); - sa = (struct sockaddr_in*)((u8_t*)ai + sizeof(struct addrinfo)); - /* set up sockaddr */ - inet_addr_from_ipaddr(&sa->sin_addr, &addr); - sa->sin_family = AF_INET; - sa->sin_len = sizeof(struct sockaddr_in); - sa->sin_port = htons((u16_t)port_nr); - - /* set up addrinfo */ - ai->ai_family = AF_INET; - if (hints != NULL) { - /* copy socktype & protocol from hints if specified */ - ai->ai_socktype = hints->ai_socktype; - ai->ai_protocol = hints->ai_protocol; - } - if (nodename != NULL) { - /* copy nodename to canonname if specified */ - ai->ai_canonname = ((char*)ai + sizeof(struct addrinfo) + sizeof(struct sockaddr_in)); - MEMCPY(ai->ai_canonname, nodename, namelen); - ai->ai_canonname[namelen] = 0; - } - ai->ai_addrlen = sizeof(struct sockaddr_in); - ai->ai_addr = (struct sockaddr*)sa; - - *res = ai; - - return 0; -memerr: - if (ai != NULL) { - memp_free(MEMP_NETDB, ai); - } - return EAI_MEMORY; -} - -#endif /* LWIP_DNS && LWIP_SOCKET */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netifapi.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netifapi.c deleted file mode 100644 index 43e47203a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/netifapi.c +++ /dev/null @@ -1,160 +0,0 @@ -/** - * @file - * Network Interface Sequential API module - * - */ - -/* - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - */ - -#include "lwip/opt.h" - -#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netifapi.h" -#include "lwip/tcpip.h" - -/** - * Call netif_add() inside the tcpip_thread context. - */ -void -do_netifapi_netif_add(struct netifapi_msg_msg *msg) -{ - if (!netif_add( msg->netif, - msg->msg.add.ipaddr, - msg->msg.add.netmask, - msg->msg.add.gw, - msg->msg.add.state, - msg->msg.add.init, - msg->msg.add.input)) { - msg->err = ERR_IF; - } else { - msg->err = ERR_OK; - } - TCPIP_NETIFAPI_ACK(msg); -} - -/** - * Call netif_set_addr() inside the tcpip_thread context. - */ -void -do_netifapi_netif_set_addr(struct netifapi_msg_msg *msg) -{ - netif_set_addr( msg->netif, - msg->msg.add.ipaddr, - msg->msg.add.netmask, - msg->msg.add.gw); - msg->err = ERR_OK; - TCPIP_NETIFAPI_ACK(msg); -} - -/** - * Call the "errtfunc" (or the "voidfunc" if "errtfunc" is NULL) inside the - * tcpip_thread context. - */ -void -do_netifapi_netif_common(struct netifapi_msg_msg *msg) -{ - if (msg->msg.common.errtfunc != NULL) { - msg->err = msg->msg.common.errtfunc(msg->netif); - } else { - msg->err = ERR_OK; - msg->msg.common.voidfunc(msg->netif); - } - TCPIP_NETIFAPI_ACK(msg); -} - -/** - * Call netif_add() in a thread-safe way by running that function inside the - * tcpip_thread context. - * - * @note for params @see netif_add() - */ -err_t -netifapi_netif_add(struct netif *netif, - ip_addr_t *ipaddr, - ip_addr_t *netmask, - ip_addr_t *gw, - void *state, - netif_init_fn init, - netif_input_fn input) -{ - struct netifapi_msg msg; - msg.function = do_netifapi_netif_add; - msg.msg.netif = netif; - msg.msg.msg.add.ipaddr = ipaddr; - msg.msg.msg.add.netmask = netmask; - msg.msg.msg.add.gw = gw; - msg.msg.msg.add.state = state; - msg.msg.msg.add.init = init; - msg.msg.msg.add.input = input; - TCPIP_NETIFAPI(&msg); - return msg.msg.err; -} - -/** - * Call netif_set_addr() in a thread-safe way by running that function inside the - * tcpip_thread context. - * - * @note for params @see netif_set_addr() - */ -err_t -netifapi_netif_set_addr(struct netif *netif, - ip_addr_t *ipaddr, - ip_addr_t *netmask, - ip_addr_t *gw) -{ - struct netifapi_msg msg; - msg.function = do_netifapi_netif_set_addr; - msg.msg.netif = netif; - msg.msg.msg.add.ipaddr = ipaddr; - msg.msg.msg.add.netmask = netmask; - msg.msg.msg.add.gw = gw; - TCPIP_NETIFAPI(&msg); - return msg.msg.err; -} - -/** - * call the "errtfunc" (or the "voidfunc" if "errtfunc" is NULL) in a thread-safe - * way by running that function inside the tcpip_thread context. - * - * @note use only for functions where there is only "netif" parameter. - */ -err_t -netifapi_netif_common(struct netif *netif, netifapi_void_fn voidfunc, - netifapi_errt_fn errtfunc) -{ - struct netifapi_msg msg; - msg.function = do_netifapi_netif_common; - msg.msg.netif = netif; - msg.msg.msg.common.voidfunc = voidfunc; - msg.msg.msg.common.errtfunc = errtfunc; - TCPIP_NETIFAPI(&msg); - return msg.msg.err; -} - -#endif /* LWIP_NETIF_API */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/sockets.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/sockets.c deleted file mode 100644 index e3e01ca4f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/sockets.c +++ /dev/null @@ -1,2435 +0,0 @@ -/** - * @file - * Sockets BSD-Like API module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - * Improved by Marc Boucher and David Haas - * - */ - -#include "lwip/opt.h" - -#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/sockets.h" -#include "lwip/api.h" -#include "lwip/sys.h" -#include "lwip/igmp.h" -#include "lwip/inet.h" -#include "lwip/tcp.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcpip.h" -#include "lwip/pbuf.h" -#if LWIP_CHECKSUM_ON_COPY -#include "lwip/inet_chksum.h" -#endif - -#include - -#define IP4ADDR_PORT_TO_SOCKADDR(sin, ipXaddr, port) do { \ - (sin)->sin_len = sizeof(struct sockaddr_in); \ - (sin)->sin_family = AF_INET; \ - (sin)->sin_port = htons((port)); \ - inet_addr_from_ipaddr(&(sin)->sin_addr, ipX_2_ip(ipXaddr)); \ - memset((sin)->sin_zero, 0, SIN_ZERO_LEN); }while(0) -#define SOCKADDR4_TO_IP4ADDR_PORT(sin, ipXaddr, port) do { \ - inet_addr_to_ipaddr(ipX_2_ip(ipXaddr), &((sin)->sin_addr)); \ - (port) = ntohs((sin)->sin_port); }while(0) - -#if LWIP_IPV6 -#define IS_SOCK_ADDR_LEN_VALID(namelen) (((namelen) == sizeof(struct sockaddr_in)) || \ - ((namelen) == sizeof(struct sockaddr_in6))) -#define IS_SOCK_ADDR_TYPE_VALID(name) (((name)->sa_family == AF_INET) || \ - ((name)->sa_family == AF_INET6)) -#define SOCK_ADDR_TYPE_MATCH(name, sock) \ - ((((name)->sa_family == AF_INET) && !(NETCONNTYPE_ISIPV6((sock)->conn->type))) || \ - (((name)->sa_family == AF_INET6) && (NETCONNTYPE_ISIPV6((sock)->conn->type)))) -#define IP6ADDR_PORT_TO_SOCKADDR(sin6, ipXaddr, port) do { \ - (sin6)->sin6_len = sizeof(struct sockaddr_in6); \ - (sin6)->sin6_family = AF_INET6; \ - (sin6)->sin6_port = htons((port)); \ - (sin6)->sin6_flowinfo = 0; \ - inet6_addr_from_ip6addr(&(sin6)->sin6_addr, ipX_2_ip6(ipXaddr)); }while(0) -#define IPXADDR_PORT_TO_SOCKADDR(isipv6, sockaddr, ipXaddr, port) do { \ - if (isipv6) { \ - IP6ADDR_PORT_TO_SOCKADDR((struct sockaddr_in6*)(void*)(sockaddr), ipXaddr, port); \ - } else { \ - IP4ADDR_PORT_TO_SOCKADDR((struct sockaddr_in*)(void*)(sockaddr), ipXaddr, port); \ - } } while(0) -#define SOCKADDR6_TO_IP6ADDR_PORT(sin6, ipXaddr, port) do { \ - inet6_addr_to_ip6addr(ipX_2_ip6(ipXaddr), &((sin6)->sin6_addr)); \ - (port) = ntohs((sin6)->sin6_port); }while(0) -#define SOCKADDR_TO_IPXADDR_PORT(isipv6, sockaddr, ipXaddr, port) do { \ - if (isipv6) { \ - SOCKADDR6_TO_IP6ADDR_PORT((struct sockaddr_in6*)(void*)(sockaddr), ipXaddr, port); \ - } else { \ - SOCKADDR4_TO_IP4ADDR_PORT((struct sockaddr_in*)(void*)(sockaddr), ipXaddr, port); \ - } } while(0) -#define DOMAIN_TO_NETCONN_TYPE(domain, type) (((domain) == AF_INET) ? \ - (type) : (enum netconn_type)((type) | NETCONN_TYPE_IPV6)) -#else /* LWIP_IPV6 */ -#define IS_SOCK_ADDR_LEN_VALID(namelen) ((namelen) == sizeof(struct sockaddr_in)) -#define IS_SOCK_ADDR_TYPE_VALID(name) ((name)->sa_family == AF_INET) -#define SOCK_ADDR_TYPE_MATCH(name, sock) 1 -#define IPXADDR_PORT_TO_SOCKADDR(isipv6, sockaddr, ipXaddr, port) \ - IP4ADDR_PORT_TO_SOCKADDR((struct sockaddr_in*)(void*)(sockaddr), ipXaddr, port) -#define SOCKADDR_TO_IPXADDR_PORT(isipv6, sockaddr, ipXaddr, port) \ - SOCKADDR4_TO_IP4ADDR_PORT((struct sockaddr_in*)(void*)(sockaddr), ipXaddr, port) -#define DOMAIN_TO_NETCONN_TYPE(domain, netconn_type) (netconn_type) -#endif /* LWIP_IPV6 */ - -#define IS_SOCK_ADDR_TYPE_VALID_OR_UNSPEC(name) (((name)->sa_family == AF_UNSPEC) || \ - IS_SOCK_ADDR_TYPE_VALID(name)) -#define SOCK_ADDR_TYPE_MATCH_OR_UNSPEC(name, sock) (((name)->sa_family == AF_UNSPEC) || \ - SOCK_ADDR_TYPE_MATCH(name, sock)) -#define IS_SOCK_ADDR_ALIGNED(name) ((((mem_ptr_t)(name)) % 4) == 0) - - - -#define NUM_SOCKETS MEMP_NUM_NETCONN - -/** Contains all internal pointers and states used for a socket */ -struct lwip_sock { - /** sockets currently are built on netconns, each socket has one netconn */ - struct netconn *conn; - /** data that was left from the previous read */ - void *lastdata; - /** offset in the data that was left from the previous read */ - u16_t lastoffset; - /** number of times data was received, set by event_callback(), - tested by the receive and select functions */ - s16_t rcvevent; - /** number of times data was ACKed (free send buffer), set by event_callback(), - tested by select */ - u16_t sendevent; - /** error happened for this socket, set by event_callback(), tested by select */ - u16_t errevent; - /** last error that occurred on this socket */ - int err; - /** counter of how many threads are waiting for this socket using select */ - int select_waiting; -}; - -/** Description for a task waiting in select */ -struct lwip_select_cb { - /** Pointer to the next waiting task */ - struct lwip_select_cb *next; - /** Pointer to the previous waiting task */ - struct lwip_select_cb *prev; - /** readset passed to select */ - fd_set *readset; - /** writeset passed to select */ - fd_set *writeset; - /** unimplemented: exceptset passed to select */ - fd_set *exceptset; - /** don't signal the same semaphore twice: set to 1 when signalled */ - int sem_signalled; - /** semaphore to wake up a task waiting for select */ - sys_sem_t sem; -}; - -/** This struct is used to pass data to the set/getsockopt_internal - * functions running in tcpip_thread context (only a void* is allowed) */ -struct lwip_setgetsockopt_data { - /** socket struct for which to change options */ - struct lwip_sock *sock; -#ifdef LWIP_DEBUG - /** socket index for which to change options */ - int s; -#endif /* LWIP_DEBUG */ - /** level of the option to process */ - int level; - /** name of the option to process */ - int optname; - /** set: value to set the option to - * get: value of the option is stored here */ - void *optval; - /** size of *optval */ - socklen_t *optlen; - /** if an error occures, it is temporarily stored here */ - err_t err; -}; - -/** A struct sockaddr replacement that has the same alignment as sockaddr_in/ - * sockaddr_in6 if instantiated. - */ -union sockaddr_aligned { - struct sockaddr sa; -#if LWIP_IPV6 - struct sockaddr_in6 sin6; -#endif /* LWIP_IPV6 */ - struct sockaddr_in sin; -}; - - -/** The global array of available sockets */ -static struct lwip_sock sockets[NUM_SOCKETS]; -/** The global list of tasks waiting for select */ -static struct lwip_select_cb *select_cb_list; -/** This counter is increased from lwip_select when the list is chagned - and checked in event_callback to see if it has changed. */ -static volatile int select_cb_ctr; - -/** Table to quickly map an lwIP error (err_t) to a socket error - * by using -err as an index */ -static const int err_to_errno_table[] = { - 0, /* ERR_OK 0 No error, everything OK. */ - ENOMEM, /* ERR_MEM -1 Out of memory error. */ - ENOBUFS, /* ERR_BUF -2 Buffer error. */ - EWOULDBLOCK, /* ERR_TIMEOUT -3 Timeout */ - EHOSTUNREACH, /* ERR_RTE -4 Routing problem. */ - EINPROGRESS, /* ERR_INPROGRESS -5 Operation in progress */ - EINVAL, /* ERR_VAL -6 Illegal value. */ - EWOULDBLOCK, /* ERR_WOULDBLOCK -7 Operation would block. */ - EADDRINUSE, /* ERR_USE -8 Address in use. */ - EALREADY, /* ERR_ISCONN -9 Already connected. */ - ECONNABORTED, /* ERR_ABRT -10 Connection aborted. */ - ECONNRESET, /* ERR_RST -11 Connection reset. */ - ENOTCONN, /* ERR_CLSD -12 Connection closed. */ - ENOTCONN, /* ERR_CONN -13 Not connected. */ - EIO, /* ERR_ARG -14 Illegal argument. */ - -1, /* ERR_IF -15 Low-level netif error */ -}; - -#define ERR_TO_ERRNO_TABLE_SIZE \ - (sizeof(err_to_errno_table)/sizeof(err_to_errno_table[0])) - -#define err_to_errno(err) \ - ((unsigned)(-(err)) < ERR_TO_ERRNO_TABLE_SIZE ? \ - err_to_errno_table[-(err)] : EIO) - -#ifdef ERRNO -#ifndef set_errno -#define set_errno(err) errno = (err) -#endif -#else /* ERRNO */ -#define set_errno(err) -#endif /* ERRNO */ - -#define sock_set_errno(sk, e) do { \ - sk->err = (e); \ - set_errno(sk->err); \ -} while (0) - -/* Forward delcaration of some functions */ -static void event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len); -static void lwip_getsockopt_internal(void *arg); -static void lwip_setsockopt_internal(void *arg); - -/** - * Initialize this module. This function has to be called before any other - * functions in this module! - */ -void -lwip_socket_init(void) -{ -} - -/** - * Map a externally used socket index to the internal socket representation. - * - * @param s externally used socket index - * @return struct lwip_sock for the socket or NULL if not found - */ -static struct lwip_sock * -get_socket(int s) -{ - struct lwip_sock *sock; - - if ((s < 0) || (s >= NUM_SOCKETS)) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%d): invalid\n", s)); - set_errno(EBADF); - return NULL; - } - - sock = &sockets[s]; - - if (!sock->conn) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("get_socket(%d): not active\n", s)); - set_errno(EBADF); - return NULL; - } - - return sock; -} - -/** - * Same as get_socket but doesn't set errno - * - * @param s externally used socket index - * @return struct lwip_sock for the socket or NULL if not found - */ -static struct lwip_sock * -tryget_socket(int s) -{ - if ((s < 0) || (s >= NUM_SOCKETS)) { - return NULL; - } - if (!sockets[s].conn) { - return NULL; - } - return &sockets[s]; -} - -/** - * Allocate a new socket for a given netconn. - * - * @param newconn the netconn for which to allocate a socket - * @param accepted 1 if socket has been created by accept(), - * 0 if socket has been created by socket() - * @return the index of the new socket; -1 on error - */ -static int -alloc_socket(struct netconn *newconn, int accepted) -{ - int i; - SYS_ARCH_DECL_PROTECT(lev); - - /* allocate a new socket identifier */ - for (i = 0; i < NUM_SOCKETS; ++i) { - /* Protect socket array */ - SYS_ARCH_PROTECT(lev); - if (!sockets[i].conn) { - sockets[i].conn = newconn; - /* The socket is not yet known to anyone, so no need to protect - after having marked it as used. */ - SYS_ARCH_UNPROTECT(lev); - sockets[i].lastdata = NULL; - sockets[i].lastoffset = 0; - sockets[i].rcvevent = 0; - /* TCP sendbuf is empty, but the socket is not yet writable until connected - * (unless it has been created by accept()). */ - sockets[i].sendevent = (NETCONNTYPE_GROUP(newconn->type) == NETCONN_TCP ? (accepted != 0) : 1); - sockets[i].errevent = 0; - sockets[i].err = 0; - sockets[i].select_waiting = 0; - return i; - } - SYS_ARCH_UNPROTECT(lev); - } - return -1; -} - -/** Free a socket. The socket's netconn must have been - * delete before! - * - * @param sock the socket to free - * @param is_tcp != 0 for TCP sockets, used to free lastdata - */ -static void -free_socket(struct lwip_sock *sock, int is_tcp) -{ - void *lastdata; - SYS_ARCH_DECL_PROTECT(lev); - - lastdata = sock->lastdata; - sock->lastdata = NULL; - sock->lastoffset = 0; - sock->err = 0; - - /* Protect socket array */ - SYS_ARCH_PROTECT(lev); - sock->conn = NULL; - SYS_ARCH_UNPROTECT(lev); - /* don't use 'sock' after this line, as another task might have allocated it */ - - if (lastdata != NULL) { - if (is_tcp) { - pbuf_free((struct pbuf *)lastdata); - } else { - netbuf_delete((struct netbuf *)lastdata); - } - } -} - -/* Below this, the well-known socket functions are implemented. - * Use google.com or opengroup.org to get a good description :-) - * - * Exceptions are documented! - */ - -int -lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen) -{ - struct lwip_sock *sock, *nsock; - struct netconn *newconn; - ipX_addr_t naddr; - u16_t port; - int newsock; - err_t err; - SYS_ARCH_DECL_PROTECT(lev); - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d)...\n", s)); - sock = get_socket(s); - if (!sock) { - return -1; - } - - if (netconn_is_nonblocking(sock->conn) && (sock->rcvevent <= 0)) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d): returning EWOULDBLOCK\n", s)); - sock_set_errno(sock, EWOULDBLOCK); - return -1; - } - - /* wait for a new connection */ - err = netconn_accept(sock->conn, &newconn); - if (err != ERR_OK) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d): netconn_acept failed, err=%d\n", s, err)); - sock_set_errno(sock, err_to_errno(err)); - return -1; - } - LWIP_ASSERT("newconn != NULL", newconn != NULL); - /* Prevent automatic window updates, we do this on our own! */ - netconn_set_noautorecved(newconn, 1); - - /* Note that POSIX only requires us to check addr is non-NULL. addrlen must - * not be NULL if addr is valid. - */ - if (addr != NULL) { - union sockaddr_aligned tempaddr; - /* get the IP address and port of the remote host */ - err = netconn_peer(newconn, ipX_2_ip(&naddr), &port); - if (err != ERR_OK) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d): netconn_peer failed, err=%d\n", s, err)); - netconn_delete(newconn); - sock_set_errno(sock, err_to_errno(err)); - return -1; - } - LWIP_ASSERT("addr valid but addrlen NULL", addrlen != NULL); - - IPXADDR_PORT_TO_SOCKADDR(NETCONNTYPE_ISIPV6(newconn->type), &tempaddr, &naddr, port); - if (*addrlen > tempaddr.sa.sa_len) { - *addrlen = tempaddr.sa.sa_len; - } - MEMCPY(addr, &tempaddr, *addrlen); - } - - newsock = alloc_socket(newconn, 1); - if (newsock == -1) { - netconn_delete(newconn); - sock_set_errno(sock, ENFILE); - return -1; - } - LWIP_ASSERT("invalid socket index", (newsock >= 0) && (newsock < NUM_SOCKETS)); - LWIP_ASSERT("newconn->callback == event_callback", newconn->callback == event_callback); - nsock = &sockets[newsock]; - - /* See event_callback: If data comes in right away after an accept, even - * though the server task might not have created a new socket yet. - * In that case, newconn->socket is counted down (newconn->socket--), - * so nsock->rcvevent is >= 1 here! - */ - SYS_ARCH_PROTECT(lev); - nsock->rcvevent += (s16_t)(-1 - newconn->socket); - newconn->socket = newsock; - SYS_ARCH_UNPROTECT(lev); - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_accept(%d) returning new sock=%d", s, newsock)); - if (addr != NULL) { - LWIP_DEBUGF(SOCKETS_DEBUG, (" addr=")); - ipX_addr_debug_print(NETCONNTYPE_ISIPV6(newconn->type), SOCKETS_DEBUG, &naddr); - LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F"\n", port)); - } - - sock_set_errno(sock, 0); - return newsock; -} - -int -lwip_bind(int s, const struct sockaddr *name, socklen_t namelen) -{ - struct lwip_sock *sock; - ipX_addr_t local_addr; - u16_t local_port; - err_t err; - - sock = get_socket(s); - if (!sock) { - return -1; - } - - if (!SOCK_ADDR_TYPE_MATCH(name, sock)) { - /* sockaddr does not match socket type (IPv4/IPv6) */ - sock_set_errno(sock, err_to_errno(ERR_VAL)); - return -1; - } - - /* check size, familiy and alignment of 'name' */ - LWIP_ERROR("lwip_bind: invalid address", (IS_SOCK_ADDR_LEN_VALID(namelen) && - IS_SOCK_ADDR_TYPE_VALID(name) && IS_SOCK_ADDR_ALIGNED(name)), - sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); - LWIP_UNUSED_ARG(namelen); - - SOCKADDR_TO_IPXADDR_PORT((name->sa_family == AF_INET6), name, &local_addr, local_port); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_bind(%d, addr=", s)); - ipX_addr_debug_print(name->sa_family == AF_INET6, SOCKETS_DEBUG, &local_addr); - LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F")\n", local_port)); - - err = netconn_bind(sock->conn, ipX_2_ip(&local_addr), local_port); - - if (err != ERR_OK) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_bind(%d) failed, err=%d\n", s, err)); - sock_set_errno(sock, err_to_errno(err)); - return -1; - } - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_bind(%d) succeeded\n", s)); - sock_set_errno(sock, 0); - return 0; -} - -int -lwip_close(int s) -{ - struct lwip_sock *sock; - int is_tcp = 0; - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_close(%d)\n", s)); - - sock = get_socket(s); - if (!sock) { - return -1; - } - - if(sock->conn != NULL) { - is_tcp = NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP; - } else { - LWIP_ASSERT("sock->lastdata == NULL", sock->lastdata == NULL); - } - - netconn_delete(sock->conn); - - free_socket(sock, is_tcp); - set_errno(0); - return 0; -} - -int -lwip_connect(int s, const struct sockaddr *name, socklen_t namelen) -{ - struct lwip_sock *sock; - err_t err; - - sock = get_socket(s); - if (!sock) { - return -1; - } - - if (!SOCK_ADDR_TYPE_MATCH_OR_UNSPEC(name, sock)) { - /* sockaddr does not match socket type (IPv4/IPv6) */ - sock_set_errno(sock, err_to_errno(ERR_VAL)); - return -1; - } - - /* check size, familiy and alignment of 'name' */ - LWIP_ERROR("lwip_connect: invalid address", IS_SOCK_ADDR_LEN_VALID(namelen) && - IS_SOCK_ADDR_TYPE_VALID_OR_UNSPEC(name) && IS_SOCK_ADDR_ALIGNED(name), - sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); - LWIP_UNUSED_ARG(namelen); - if (name->sa_family == AF_UNSPEC) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d, AF_UNSPEC)\n", s)); - err = netconn_disconnect(sock->conn); - } else { - ipX_addr_t remote_addr; - u16_t remote_port; - SOCKADDR_TO_IPXADDR_PORT((name->sa_family == AF_INET6), name, &remote_addr, remote_port); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d, addr=", s)); - ipX_addr_debug_print(name->sa_family == AF_INET6, SOCKETS_DEBUG, &remote_addr); - LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F")\n", remote_port)); - - err = netconn_connect(sock->conn, ipX_2_ip(&remote_addr), remote_port); - } - - if (err != ERR_OK) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d) failed, err=%d\n", s, err)); - sock_set_errno(sock, err_to_errno(err)); - return -1; - } - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d) succeeded\n", s)); - sock_set_errno(sock, 0); - return 0; -} - -/** - * Set a socket into listen mode. - * The socket may not have been used for another connection previously. - * - * @param s the socket to set to listening mode - * @param backlog (ATTENTION: needs TCP_LISTEN_BACKLOG=1) - * @return 0 on success, non-zero on failure - */ -int -lwip_listen(int s, int backlog) -{ - struct lwip_sock *sock; - err_t err; - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_listen(%d, backlog=%d)\n", s, backlog)); - - sock = get_socket(s); - if (!sock) { - return -1; - } - - /* limit the "backlog" parameter to fit in an u8_t */ - backlog = LWIP_MIN(LWIP_MAX(backlog, 0), 0xff); - - err = netconn_listen_with_backlog(sock->conn, (u8_t)backlog); - - if (err != ERR_OK) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_listen(%d) failed, err=%d\n", s, err)); - sock_set_errno(sock, err_to_errno(err)); - return -1; - } - - sock_set_errno(sock, 0); - return 0; -} - -int -lwip_recvfrom(int s, void *mem, size_t len, int flags, - struct sockaddr *from, socklen_t *fromlen) -{ - struct lwip_sock *sock; - void *buf = NULL; - struct pbuf *p; - u16_t buflen, copylen; - int off = 0; - u8_t done = 0; - err_t err; - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom(%d, %p, %"SZT_F", 0x%x, ..)\n", s, mem, len, flags)); - sock = get_socket(s); - if (!sock) { - return -1; - } - - do { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom: top while sock->lastdata=%p\n", sock->lastdata)); - /* Check if there is data left from the last recv operation. */ - if (sock->lastdata) { - buf = sock->lastdata; - } else { - /* If this is non-blocking call, then check first */ - if (((flags & MSG_DONTWAIT) || netconn_is_nonblocking(sock->conn)) && - (sock->rcvevent <= 0)) { - if (off > 0) { - /* update receive window */ - netconn_recved(sock->conn, (u32_t)off); - /* already received data, return that */ - sock_set_errno(sock, 0); - return off; - } - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom(%d): returning EWOULDBLOCK\n", s)); - sock_set_errno(sock, EWOULDBLOCK); - return -1; - } - - /* No data was left from the previous operation, so we try to get - some from the network. */ - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { - err = netconn_recv_tcp_pbuf(sock->conn, (struct pbuf **)&buf); - } else { - err = netconn_recv(sock->conn, (struct netbuf **)&buf); - } - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom: netconn_recv err=%d, netbuf=%p\n", - err, buf)); - - if (err != ERR_OK) { - if (off > 0) { - /* update receive window */ - netconn_recved(sock->conn, (u32_t)off); - /* already received data, return that */ - sock_set_errno(sock, 0); - return off; - } - /* We should really do some error checking here. */ - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom(%d): buf == NULL, error is \"%s\"!\n", - s, lwip_strerr(err))); - sock_set_errno(sock, err_to_errno(err)); - if (err == ERR_CLSD) { - return 0; - } else { - return -1; - } - } - LWIP_ASSERT("buf != NULL", buf != NULL); - sock->lastdata = buf; - } - - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { - p = (struct pbuf *)buf; - } else { - p = ((struct netbuf *)buf)->p; - } - buflen = p->tot_len; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom: buflen=%"U16_F" len=%"SZT_F" off=%d sock->lastoffset=%"U16_F"\n", - buflen, len, off, sock->lastoffset)); - - buflen -= sock->lastoffset; - - if (len > buflen) { - copylen = buflen; - } else { - copylen = (u16_t)len; - } - - /* copy the contents of the received buffer into - the supplied memory pointer mem */ - pbuf_copy_partial(p, (u8_t*)mem + off, copylen, sock->lastoffset); - - off += copylen; - - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { - LWIP_ASSERT("invalid copylen, len would underflow", len >= copylen); - len -= copylen; - if ( (len <= 0) || - (p->flags & PBUF_FLAG_PUSH) || - (sock->rcvevent <= 0) || - ((flags & MSG_PEEK)!=0)) { - done = 1; - } - } else { - done = 1; - } - - /* Check to see from where the data was.*/ - if (done) { -#if !SOCKETS_DEBUG - if (from && fromlen) -#endif /* !SOCKETS_DEBUG */ - { - u16_t port; - ipX_addr_t tmpaddr; - ipX_addr_t *fromaddr; - union sockaddr_aligned saddr; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom(%d): addr=", s)); - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { - fromaddr = &tmpaddr; - /* @todo: this does not work for IPv6, yet */ - netconn_getaddr(sock->conn, ipX_2_ip(fromaddr), &port, 0); - } else { - port = netbuf_fromport((struct netbuf *)buf); - fromaddr = netbuf_fromaddr_ipX((struct netbuf *)buf); - } - IPXADDR_PORT_TO_SOCKADDR(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), - &saddr, fromaddr, port); - ipX_addr_debug_print(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), - SOCKETS_DEBUG, fromaddr); - LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F" len=%d\n", port, off)); - if (*fromlen > saddr.sa.sa_len) { - *fromlen = saddr.sa.sa_len; - } - MEMCPY(from, &saddr, *fromlen); - } - } - - /* If we don't peek the incoming message... */ - if ((flags & MSG_PEEK) == 0) { - /* If this is a TCP socket, check if there is data left in the - buffer. If so, it should be saved in the sock structure for next - time around. */ - if ((NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) && (buflen - copylen > 0)) { - sock->lastdata = buf; - sock->lastoffset += copylen; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom: lastdata now netbuf=%p\n", buf)); - } else { - sock->lastdata = NULL; - sock->lastoffset = 0; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_recvfrom: deleting netbuf=%p\n", buf)); - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { - pbuf_free((struct pbuf *)buf); - } else { - netbuf_delete((struct netbuf *)buf); - } - } - } - } while (!done); - - if ((off > 0) && (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP)) { - /* update receive window */ - netconn_recved(sock->conn, (u32_t)off); - } - sock_set_errno(sock, 0); - return off; -} - -int -lwip_read(int s, void *mem, size_t len) -{ - return lwip_recvfrom(s, mem, len, 0, NULL, NULL); -} - -int -lwip_recv(int s, void *mem, size_t len, int flags) -{ - return lwip_recvfrom(s, mem, len, flags, NULL, NULL); -} - -int -lwip_send(int s, const void *data, size_t size, int flags) -{ - struct lwip_sock *sock; - err_t err; - u8_t write_flags; - size_t written; - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_send(%d, data=%p, size=%"SZT_F", flags=0x%x)\n", - s, data, size, flags)); - - sock = get_socket(s); - if (!sock) { - return -1; - } - - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { -#if (LWIP_UDP || LWIP_RAW) - return lwip_sendto(s, data, size, flags, NULL, 0); -#else /* (LWIP_UDP || LWIP_RAW) */ - sock_set_errno(sock, err_to_errno(ERR_ARG)); - return -1; -#endif /* (LWIP_UDP || LWIP_RAW) */ - } - - write_flags = NETCONN_COPY | - ((flags & MSG_MORE) ? NETCONN_MORE : 0) | - ((flags & MSG_DONTWAIT) ? NETCONN_DONTBLOCK : 0); - written = 0; - err = netconn_write_partly(sock->conn, data, size, write_flags, &written); - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_send(%d) err=%d written=%"SZT_F"\n", s, err, written)); - sock_set_errno(sock, err_to_errno(err)); - return (err == ERR_OK ? (int)written : -1); -} - -int -lwip_sendto(int s, const void *data, size_t size, int flags, - const struct sockaddr *to, socklen_t tolen) -{ - struct lwip_sock *sock; - err_t err; - u16_t short_size; - u16_t remote_port; -#if !LWIP_TCPIP_CORE_LOCKING - struct netbuf buf; -#endif - - sock = get_socket(s); - if (!sock) { - return -1; - } - - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_TCP) { -#if LWIP_TCP - return lwip_send(s, data, size, flags); -#else /* LWIP_TCP */ - LWIP_UNUSED_ARG(flags); - sock_set_errno(sock, err_to_errno(ERR_ARG)); - return -1; -#endif /* LWIP_TCP */ - } - - if ((to != NULL) && !SOCK_ADDR_TYPE_MATCH(to, sock)) { - /* sockaddr does not match socket type (IPv4/IPv6) */ - sock_set_errno(sock, err_to_errno(ERR_VAL)); - return -1; - } - - /* @todo: split into multiple sendto's? */ - LWIP_ASSERT("lwip_sendto: size must fit in u16_t", size <= 0xffff); - short_size = (u16_t)size; - LWIP_ERROR("lwip_sendto: invalid address", (((to == NULL) && (tolen == 0)) || - (IS_SOCK_ADDR_LEN_VALID(tolen) && - IS_SOCK_ADDR_TYPE_VALID(to) && IS_SOCK_ADDR_ALIGNED(to))), - sock_set_errno(sock, err_to_errno(ERR_ARG)); return -1;); - LWIP_UNUSED_ARG(tolen); - -#if LWIP_TCPIP_CORE_LOCKING - /* Special speedup for fast UDP/RAW sending: call the raw API directly - instead of using the netconn functions. */ - { - struct pbuf* p; - ipX_addr_t *remote_addr; - ipX_addr_t remote_addr_tmp; - -#if LWIP_NETIF_TX_SINGLE_PBUF - p = pbuf_alloc(PBUF_TRANSPORT, short_size, PBUF_RAM); - if (p != NULL) { -#if LWIP_CHECKSUM_ON_COPY - u16_t chksum = 0; - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_RAW) { - chksum = LWIP_CHKSUM_COPY(p->payload, data, short_size); - } else -#endif /* LWIP_CHECKSUM_ON_COPY */ - MEMCPY(p->payload, data, size); -#else /* LWIP_NETIF_TX_SINGLE_PBUF */ - p = pbuf_alloc(PBUF_TRANSPORT, short_size, PBUF_REF); - if (p != NULL) { - p->payload = (void*)data; -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - - if (to != NULL) { - SOCKADDR_TO_IPXADDR_PORT(to->sa_family == AF_INET6, - to, &remote_addr_tmp, remote_port); - remote_addr = &remote_addr_tmp; - } else { - remote_addr = &sock->conn->pcb.raw->remote_ip; - if (NETCONNTYPE_GROUP(sock->conn->type) == NETCONN_RAW) { - remote_port = 0; - } else { - remote_port = sock->conn->pcb.udp->remote_port; - } - } - - LOCK_TCPIP_CORE(); - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) == NETCONN_RAW) { - err = sock->conn->last_err = raw_sendto(sock->conn->pcb.raw, p, ipX_2_ip(remote_addr)); - } else { -#if LWIP_UDP -#if LWIP_CHECKSUM_ON_COPY && LWIP_NETIF_TX_SINGLE_PBUF - err = sock->conn->last_err = udp_sendto_chksum(sock->conn->pcb.udp, p, - ipX_2_ip(remote_addr), remote_port, 1, chksum); -#else /* LWIP_CHECKSUM_ON_COPY && LWIP_NETIF_TX_SINGLE_PBUF */ - err = sock->conn->last_err = udp_sendto(sock->conn->pcb.udp, p, - ipX_2_ip(remote_addr), remote_port); -#endif /* LWIP_CHECKSUM_ON_COPY && LWIP_NETIF_TX_SINGLE_PBUF */ -#else /* LWIP_UDP */ - err = ERR_ARG; -#endif /* LWIP_UDP */ - } - UNLOCK_TCPIP_CORE(); - - pbuf_free(p); - } else { - err = ERR_MEM; - } - } -#else /* LWIP_TCPIP_CORE_LOCKING */ - /* initialize a buffer */ - buf.p = buf.ptr = NULL; -#if LWIP_CHECKSUM_ON_COPY - buf.flags = 0; -#endif /* LWIP_CHECKSUM_ON_COPY */ - if (to) { - SOCKADDR_TO_IPXADDR_PORT((to->sa_family) == AF_INET6, to, &buf.addr, remote_port); - } else { - remote_port = 0; - ipX_addr_set_any(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), &buf.addr); - } - netbuf_fromport(&buf) = remote_port; - - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_sendto(%d, data=%p, short_size=%"U16_F", flags=0x%x to=", - s, data, short_size, flags)); - ipX_addr_debug_print(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), - SOCKETS_DEBUG, &buf.addr); - LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F"\n", remote_port)); - - /* make the buffer point to the data that should be sent */ -#if LWIP_NETIF_TX_SINGLE_PBUF - /* Allocate a new netbuf and copy the data into it. */ - if (netbuf_alloc(&buf, short_size) == NULL) { - err = ERR_MEM; - } else { -#if LWIP_CHECKSUM_ON_COPY - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_RAW) { - u16_t chksum = LWIP_CHKSUM_COPY(buf.p->payload, data, short_size); - netbuf_set_chksum(&buf, chksum); - err = ERR_OK; - } else -#endif /* LWIP_CHECKSUM_ON_COPY */ - { - err = netbuf_take(&buf, data, short_size); - } - } -#else /* LWIP_NETIF_TX_SINGLE_PBUF */ - err = netbuf_ref(&buf, data, short_size); -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - if (err == ERR_OK) { - /* send the data */ - err = netconn_send(sock->conn, &buf); - } - - /* deallocated the buffer */ - netbuf_free(&buf); -#endif /* LWIP_TCPIP_CORE_LOCKING */ - sock_set_errno(sock, err_to_errno(err)); - return (err == ERR_OK ? short_size : -1); -} - -int -lwip_socket(int domain, int type, int protocol) -{ - struct netconn *conn; - int i; - -#if !LWIP_IPV6 - LWIP_UNUSED_ARG(domain); /* @todo: check this */ -#endif /* LWIP_IPV6 */ - - /* create a netconn */ - switch (type) { - case SOCK_RAW: - conn = netconn_new_with_proto_and_callback(DOMAIN_TO_NETCONN_TYPE(domain, NETCONN_RAW), - (u8_t)protocol, event_callback); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_RAW, %d) = ", - domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol)); - break; - case SOCK_DGRAM: - conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain, - ((protocol == IPPROTO_UDPLITE) ? NETCONN_UDPLITE : NETCONN_UDP)) , - event_callback); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_DGRAM, %d) = ", - domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol)); - break; - case SOCK_STREAM: - conn = netconn_new_with_callback(DOMAIN_TO_NETCONN_TYPE(domain, NETCONN_TCP), event_callback); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%s, SOCK_STREAM, %d) = ", - domain == PF_INET ? "PF_INET" : "UNKNOWN", protocol)); - if (conn != NULL) { - /* Prevent automatic window updates, we do this on our own! */ - netconn_set_noautorecved(conn, 1); - } - break; - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_socket(%d, %d/UNKNOWN, %d) = -1\n", - domain, type, protocol)); - set_errno(EINVAL); - return -1; - } - - if (!conn) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("-1 / ENOBUFS (could not create netconn)\n")); - set_errno(ENOBUFS); - return -1; - } - - i = alloc_socket(conn, 0); - - if (i == -1) { - netconn_delete(conn); - set_errno(ENFILE); - return -1; - } - conn->socket = i; - LWIP_DEBUGF(SOCKETS_DEBUG, ("%d\n", i)); - set_errno(0); - return i; -} - -int -lwip_write(int s, const void *data, size_t size) -{ - return lwip_send(s, data, size, 0); -} - -/** - * Go through the readset and writeset lists and see which socket of the sockets - * set in the sets has events. On return, readset, writeset and exceptset have - * the sockets enabled that had events. - * - * exceptset is not used for now!!! - * - * @param maxfdp1 the highest socket index in the sets - * @param readset_in: set of sockets to check for read events - * @param writeset_in: set of sockets to check for write events - * @param exceptset_in: set of sockets to check for error events - * @param readset_out: set of sockets that had read events - * @param writeset_out: set of sockets that had write events - * @param exceptset_out: set os sockets that had error events - * @return number of sockets that had events (read/write/exception) (>= 0) - */ -static int -lwip_selscan(int maxfdp1, fd_set *readset_in, fd_set *writeset_in, fd_set *exceptset_in, - fd_set *readset_out, fd_set *writeset_out, fd_set *exceptset_out) -{ - int i, nready = 0; - fd_set lreadset, lwriteset, lexceptset; - struct lwip_sock *sock; - SYS_ARCH_DECL_PROTECT(lev); - - FD_ZERO(&lreadset); - FD_ZERO(&lwriteset); - FD_ZERO(&lexceptset); - - /* Go through each socket in each list to count number of sockets which - currently match */ - for(i = 0; i < maxfdp1; i++) { - void* lastdata = NULL; - s16_t rcvevent = 0; - u16_t sendevent = 0; - u16_t errevent = 0; - /* First get the socket's status (protected)... */ - SYS_ARCH_PROTECT(lev); - sock = tryget_socket(i); - if (sock != NULL) { - lastdata = sock->lastdata; - rcvevent = sock->rcvevent; - sendevent = sock->sendevent; - errevent = sock->errevent; - } - SYS_ARCH_UNPROTECT(lev); - /* ... then examine it: */ - /* See if netconn of this socket is ready for read */ - if (readset_in && FD_ISSET(i, readset_in) && ((lastdata != NULL) || (rcvevent > 0))) { - FD_SET(i, &lreadset); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_selscan: fd=%d ready for reading\n", i)); - nready++; - } - /* See if netconn of this socket is ready for write */ - if (writeset_in && FD_ISSET(i, writeset_in) && (sendevent != 0)) { - FD_SET(i, &lwriteset); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_selscan: fd=%d ready for writing\n", i)); - nready++; - } - /* See if netconn of this socket had an error */ - if (exceptset_in && FD_ISSET(i, exceptset_in) && (errevent != 0)) { - FD_SET(i, &lexceptset); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_selscan: fd=%d ready for exception\n", i)); - nready++; - } - } - /* copy local sets to the ones provided as arguments */ - *readset_out = lreadset; - *writeset_out = lwriteset; - *exceptset_out = lexceptset; - - LWIP_ASSERT("nready >= 0", nready >= 0); - return nready; -} - -/** - * Processing exceptset is not yet implemented. - */ -int -lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, - struct timeval *timeout) -{ - u32_t waitres = 0; - int nready; - fd_set lreadset, lwriteset, lexceptset; - u32_t msectimeout; - struct lwip_select_cb select_cb; - err_t err; - int i; - SYS_ARCH_DECL_PROTECT(lev); - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_select(%d, %p, %p, %p, tvsec=%"S32_F" tvusec=%"S32_F")\n", - maxfdp1, (void *)readset, (void *) writeset, (void *) exceptset, - timeout ? (s32_t)timeout->tv_sec : (s32_t)-1, - timeout ? (s32_t)timeout->tv_usec : (s32_t)-1)); - - /* Go through each socket in each list to count number of sockets which - currently match */ - nready = lwip_selscan(maxfdp1, readset, writeset, exceptset, &lreadset, &lwriteset, &lexceptset); - - /* If we don't have any current events, then suspend if we are supposed to */ - if (!nready) { - if (timeout && timeout->tv_sec == 0 && timeout->tv_usec == 0) { - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_select: no timeout, returning 0\n")); - /* This is OK as the local fdsets are empty and nready is zero, - or we would have returned earlier. */ - goto return_copy_fdsets; - } - - /* None ready: add our semaphore to list: - We don't actually need any dynamic memory. Our entry on the - list is only valid while we are in this function, so it's ok - to use local variables. */ - - select_cb.next = NULL; - select_cb.prev = NULL; - select_cb.readset = readset; - select_cb.writeset = writeset; - select_cb.exceptset = exceptset; - select_cb.sem_signalled = 0; - err = sys_sem_new(&select_cb.sem, 0); - if (err != ERR_OK) { - /* failed to create semaphore */ - set_errno(ENOMEM); - return -1; - } - - /* Protect the select_cb_list */ - SYS_ARCH_PROTECT(lev); - - /* Put this select_cb on top of list */ - select_cb.next = select_cb_list; - if (select_cb_list != NULL) { - select_cb_list->prev = &select_cb; - } - select_cb_list = &select_cb; - /* Increasing this counter tells even_callback that the list has changed. */ - select_cb_ctr++; - - /* Now we can safely unprotect */ - SYS_ARCH_UNPROTECT(lev); - - /* Increase select_waiting for each socket we are interested in */ - for(i = 0; i < maxfdp1; i++) { - if ((readset && FD_ISSET(i, readset)) || - (writeset && FD_ISSET(i, writeset)) || - (exceptset && FD_ISSET(i, exceptset))) { - struct lwip_sock *sock = tryget_socket(i); - LWIP_ASSERT("sock != NULL", sock != NULL); - SYS_ARCH_PROTECT(lev); - sock->select_waiting++; - LWIP_ASSERT("sock->select_waiting > 0", sock->select_waiting > 0); - SYS_ARCH_UNPROTECT(lev); - } - } - - /* Call lwip_selscan again: there could have been events between - the last scan (whithout us on the list) and putting us on the list! */ - nready = lwip_selscan(maxfdp1, readset, writeset, exceptset, &lreadset, &lwriteset, &lexceptset); - if (!nready) { - /* Still none ready, just wait to be woken */ - if (timeout == 0) { - /* Wait forever */ - msectimeout = 0; - } else { - msectimeout = ((timeout->tv_sec * 1000) + ((timeout->tv_usec + 500)/1000)); - if (msectimeout == 0) { - /* Wait 1ms at least (0 means wait forever) */ - msectimeout = 1; - } - } - - waitres = sys_arch_sem_wait(&select_cb.sem, msectimeout); - } - /* Increase select_waiting for each socket we are interested in */ - for(i = 0; i < maxfdp1; i++) { - if ((readset && FD_ISSET(i, readset)) || - (writeset && FD_ISSET(i, writeset)) || - (exceptset && FD_ISSET(i, exceptset))) { - struct lwip_sock *sock = tryget_socket(i); - LWIP_ASSERT("sock != NULL", sock != NULL); - SYS_ARCH_PROTECT(lev); - sock->select_waiting--; - LWIP_ASSERT("sock->select_waiting >= 0", sock->select_waiting >= 0); - SYS_ARCH_UNPROTECT(lev); - } - } - /* Take us off the list */ - SYS_ARCH_PROTECT(lev); - if (select_cb.next != NULL) { - select_cb.next->prev = select_cb.prev; - } - if (select_cb_list == &select_cb) { - LWIP_ASSERT("select_cb.prev == NULL", select_cb.prev == NULL); - select_cb_list = select_cb.next; - } else { - LWIP_ASSERT("select_cb.prev != NULL", select_cb.prev != NULL); - select_cb.prev->next = select_cb.next; - } - /* Increasing this counter tells even_callback that the list has changed. */ - select_cb_ctr++; - SYS_ARCH_UNPROTECT(lev); - - sys_sem_free(&select_cb.sem); - if (waitres == SYS_ARCH_TIMEOUT) { - /* Timeout */ - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_select: timeout expired\n")); - /* This is OK as the local fdsets are empty and nready is zero, - or we would have returned earlier. */ - goto return_copy_fdsets; - } - - /* See what's set */ - nready = lwip_selscan(maxfdp1, readset, writeset, exceptset, &lreadset, &lwriteset, &lexceptset); - } - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_select: nready=%d\n", nready)); -return_copy_fdsets: - set_errno(0); - if (readset) { - *readset = lreadset; - } - if (writeset) { - *writeset = lwriteset; - } - if (exceptset) { - *exceptset = lexceptset; - } - return nready; -} - -/** - * Callback registered in the netconn layer for each socket-netconn. - * Processes recvevent (data available) and wakes up tasks waiting for select. - */ -static void -event_callback(struct netconn *conn, enum netconn_evt evt, u16_t len) -{ - int s; - struct lwip_sock *sock; - struct lwip_select_cb *scb; - int last_select_cb_ctr; - SYS_ARCH_DECL_PROTECT(lev); - - LWIP_UNUSED_ARG(len); - - /* Get socket */ - if (conn) { - s = conn->socket; - if (s < 0) { - /* Data comes in right away after an accept, even though - * the server task might not have created a new socket yet. - * Just count down (or up) if that's the case and we - * will use the data later. Note that only receive events - * can happen before the new socket is set up. */ - SYS_ARCH_PROTECT(lev); - if (conn->socket < 0) { - if (evt == NETCONN_EVT_RCVPLUS) { - conn->socket--; - } - SYS_ARCH_UNPROTECT(lev); - return; - } - s = conn->socket; - SYS_ARCH_UNPROTECT(lev); - } - - sock = get_socket(s); - if (!sock) { - return; - } - } else { - return; - } - - SYS_ARCH_PROTECT(lev); - /* Set event as required */ - switch (evt) { - case NETCONN_EVT_RCVPLUS: - sock->rcvevent++; - break; - case NETCONN_EVT_RCVMINUS: - sock->rcvevent--; - break; - case NETCONN_EVT_SENDPLUS: - sock->sendevent = 1; - break; - case NETCONN_EVT_SENDMINUS: - sock->sendevent = 0; - break; - case NETCONN_EVT_ERROR: - sock->errevent = 1; - break; - default: - LWIP_ASSERT("unknown event", 0); - break; - } - - if (sock->select_waiting == 0) { - /* noone is waiting for this socket, no need to check select_cb_list */ - SYS_ARCH_UNPROTECT(lev); - return; - } - - /* Now decide if anyone is waiting for this socket */ - /* NOTE: This code goes through the select_cb_list list multiple times - ONLY IF a select was actually waiting. We go through the list the number - of waiting select calls + 1. This list is expected to be small. */ - - /* At this point, SYS_ARCH is still protected! */ -again: - for (scb = select_cb_list; scb != NULL; scb = scb->next) { - if (scb->sem_signalled == 0) { - /* semaphore not signalled yet */ - int do_signal = 0; - /* Test this select call for our socket */ - if (sock->rcvevent > 0) { - if (scb->readset && FD_ISSET(s, scb->readset)) { - do_signal = 1; - } - } - if (sock->sendevent != 0) { - if (!do_signal && scb->writeset && FD_ISSET(s, scb->writeset)) { - do_signal = 1; - } - } - if (sock->errevent != 0) { - if (!do_signal && scb->exceptset && FD_ISSET(s, scb->exceptset)) { - do_signal = 1; - } - } - if (do_signal) { - scb->sem_signalled = 1; - /* Don't call SYS_ARCH_UNPROTECT() before signaling the semaphore, as this might - lead to the select thread taking itself off the list, invalidagin the semaphore. */ - sys_sem_signal(&scb->sem); - } - } - /* unlock interrupts with each step */ - last_select_cb_ctr = select_cb_ctr; - SYS_ARCH_UNPROTECT(lev); - /* this makes sure interrupt protection time is short */ - SYS_ARCH_PROTECT(lev); - if (last_select_cb_ctr != select_cb_ctr) { - /* someone has changed select_cb_list, restart at the beginning */ - goto again; - } - } - SYS_ARCH_UNPROTECT(lev); -} - -/** - * Unimplemented: Close one end of a full-duplex connection. - * Currently, the full connection is closed. - */ -int -lwip_shutdown(int s, int how) -{ - struct lwip_sock *sock; - err_t err; - u8_t shut_rx = 0, shut_tx = 0; - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_shutdown(%d, how=%d)\n", s, how)); - - sock = get_socket(s); - if (!sock) { - return -1; - } - - if (sock->conn != NULL) { - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { - sock_set_errno(sock, EOPNOTSUPP); - return EOPNOTSUPP; - } - } else { - sock_set_errno(sock, ENOTCONN); - return ENOTCONN; - } - - if (how == SHUT_RD) { - shut_rx = 1; - } else if (how == SHUT_WR) { - shut_tx = 1; - } else if(how == SHUT_RDWR) { - shut_rx = 1; - shut_tx = 1; - } else { - sock_set_errno(sock, EINVAL); - return EINVAL; - } - err = netconn_shutdown(sock->conn, shut_rx, shut_tx); - - sock_set_errno(sock, err_to_errno(err)); - return (err == ERR_OK ? 0 : -1); -} - -static int -lwip_getaddrname(int s, struct sockaddr *name, socklen_t *namelen, u8_t local) -{ - struct lwip_sock *sock; - union sockaddr_aligned saddr; - ipX_addr_t naddr; - u16_t port; - - sock = get_socket(s); - if (!sock) { - return -1; - } - - /* get the IP address and port */ - /* @todo: this does not work for IPv6, yet */ - netconn_getaddr(sock->conn, ipX_2_ip(&naddr), &port, local); - IPXADDR_PORT_TO_SOCKADDR(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), - &saddr, &naddr, port); - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getaddrname(%d, addr=", s)); - ipX_addr_debug_print(NETCONNTYPE_ISIPV6(netconn_type(sock->conn)), - SOCKETS_DEBUG, &naddr); - LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F")\n", port)); - - if (*namelen > saddr.sa.sa_len) { - *namelen = saddr.sa.sa_len; - } - MEMCPY(name, &saddr, *namelen); - - sock_set_errno(sock, 0); - return 0; -} - -int -lwip_getpeername(int s, struct sockaddr *name, socklen_t *namelen) -{ - return lwip_getaddrname(s, name, namelen, 0); -} - -int -lwip_getsockname(int s, struct sockaddr *name, socklen_t *namelen) -{ - return lwip_getaddrname(s, name, namelen, 1); -} - -int -lwip_getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen) -{ - err_t err = ERR_OK; - struct lwip_sock *sock = get_socket(s); - struct lwip_setgetsockopt_data data; - - if (!sock) { - return -1; - } - - if ((NULL == optval) || (NULL == optlen)) { - sock_set_errno(sock, EFAULT); - return -1; - } - - /* Do length and type checks for the various options first, to keep it readable. */ - switch (level) { - -/* Level: SOL_SOCKET */ - case SOL_SOCKET: - switch (optname) { - - case SO_ACCEPTCONN: - case SO_BROADCAST: - /* UNIMPL case SO_DEBUG: */ - /* UNIMPL case SO_DONTROUTE: */ - case SO_ERROR: - case SO_KEEPALIVE: - /* UNIMPL case SO_CONTIMEO: */ - /* UNIMPL case SO_SNDTIMEO: */ -#if LWIP_SO_RCVTIMEO - case SO_RCVTIMEO: -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - case SO_RCVBUF: -#endif /* LWIP_SO_RCVBUF */ - /* UNIMPL case SO_OOBINLINE: */ - /* UNIMPL case SO_SNDBUF: */ - /* UNIMPL case SO_RCVLOWAT: */ - /* UNIMPL case SO_SNDLOWAT: */ -#if SO_REUSE - case SO_REUSEADDR: - case SO_REUSEPORT: -#endif /* SO_REUSE */ - case SO_TYPE: - /* UNIMPL case SO_USELOOPBACK: */ - if (*optlen < sizeof(int)) { - err = EINVAL; - } - break; - - case SO_NO_CHECK: - if (*optlen < sizeof(int)) { - err = EINVAL; - } -#if LWIP_UDP - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP || - ((udp_flags(sock->conn->pcb.udp) & UDP_FLAGS_UDPLITE) != 0)) { - /* this flag is only available for UDP, not for UDP lite */ - err = EAFNOSUPPORT; - } -#endif /* LWIP_UDP */ - break; - - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, SOL_SOCKET, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; - -/* Level: IPPROTO_IP */ - case IPPROTO_IP: - switch (optname) { - /* UNIMPL case IP_HDRINCL: */ - /* UNIMPL case IP_RCVDSTADDR: */ - /* UNIMPL case IP_RCVIF: */ - case IP_TTL: - case IP_TOS: - if (*optlen < sizeof(int)) { - err = EINVAL; - } - break; -#if LWIP_IGMP - case IP_MULTICAST_TTL: - if (*optlen < sizeof(u8_t)) { - err = EINVAL; - } - break; - case IP_MULTICAST_IF: - if (*optlen < sizeof(struct in_addr)) { - err = EINVAL; - } - break; - case IP_MULTICAST_LOOP: - if (*optlen < sizeof(u8_t)) { - err = EINVAL; - } - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) { - err = EAFNOSUPPORT; - } - break; -#endif /* LWIP_IGMP */ - - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; - -#if LWIP_TCP -/* Level: IPPROTO_TCP */ - case IPPROTO_TCP: - if (*optlen < sizeof(int)) { - err = EINVAL; - break; - } - - /* If this is no TCP socket, ignore any options. */ - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) - return 0; - - switch (optname) { - case TCP_NODELAY: - case TCP_KEEPALIVE: -#if LWIP_TCP_KEEPALIVE - case TCP_KEEPIDLE: - case TCP_KEEPINTVL: - case TCP_KEEPCNT: -#endif /* LWIP_TCP_KEEPALIVE */ - break; - - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_TCP, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; -#endif /* LWIP_TCP */ -#if LWIP_UDP && LWIP_UDPLITE -/* Level: IPPROTO_UDPLITE */ - case IPPROTO_UDPLITE: - if (*optlen < sizeof(int)) { - err = EINVAL; - break; - } - - /* If this is no UDP lite socket, ignore any options. */ - if (!NETCONNTYPE_ISUDPLITE(netconn_type(sock->conn))) { - return 0; - } - - switch (optname) { - case UDPLITE_SEND_CSCOV: - case UDPLITE_RECV_CSCOV: - break; - - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_UDPLITE, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; -#endif /* LWIP_UDP && LWIP_UDPLITE*/ -/* UNDEFINED LEVEL */ - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, level=0x%x, UNIMPL: optname=0x%x, ..)\n", - s, level, optname)); - err = ENOPROTOOPT; - } /* switch */ - - - if (err != ERR_OK) { - sock_set_errno(sock, err); - return -1; - } - - /* Now do the actual option processing */ - data.sock = sock; -#ifdef LWIP_DEBUG - data.s = s; -#endif /* LWIP_DEBUG */ - data.level = level; - data.optname = optname; - data.optval = optval; - data.optlen = optlen; - data.err = err; - tcpip_callback(lwip_getsockopt_internal, &data); - sys_arch_sem_wait(&sock->conn->op_completed, 0); - /* maybe lwip_getsockopt_internal has changed err */ - err = data.err; - - sock_set_errno(sock, err); - return err ? -1 : 0; -} - -static void -lwip_getsockopt_internal(void *arg) -{ - struct lwip_sock *sock; -#ifdef LWIP_DEBUG - int s; -#endif /* LWIP_DEBUG */ - int level, optname; - void *optval; - struct lwip_setgetsockopt_data *data; - - LWIP_ASSERT("arg != NULL", arg != NULL); - - data = (struct lwip_setgetsockopt_data*)arg; - sock = data->sock; -#ifdef LWIP_DEBUG - s = data->s; -#endif /* LWIP_DEBUG */ - level = data->level; - optname = data->optname; - optval = data->optval; - - switch (level) { - -/* Level: SOL_SOCKET */ - case SOL_SOCKET: - switch (optname) { - - /* The option flags */ - case SO_ACCEPTCONN: - case SO_BROADCAST: - /* UNIMPL case SO_DEBUG: */ - /* UNIMPL case SO_DONTROUTE: */ - case SO_KEEPALIVE: - /* UNIMPL case SO_OOBINCLUDE: */ -#if SO_REUSE - case SO_REUSEADDR: - case SO_REUSEPORT: -#endif /* SO_REUSE */ - /*case SO_USELOOPBACK: UNIMPL */ - *(int*)optval = sock->conn->pcb.ip->so_options & optname; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, SOL_SOCKET, optname=0x%x, ..) = %s\n", - s, optname, (*(int*)optval?"on":"off"))); - break; - - case SO_TYPE: - switch (NETCONNTYPE_GROUP(netconn_type(sock->conn))) { - case NETCONN_RAW: - *(int*)optval = SOCK_RAW; - break; - case NETCONN_TCP: - *(int*)optval = SOCK_STREAM; - break; - case NETCONN_UDP: - *(int*)optval = SOCK_DGRAM; - break; - default: /* unrecognized socket type */ - *(int*)optval = netconn_type(sock->conn); - LWIP_DEBUGF(SOCKETS_DEBUG, - ("lwip_getsockopt(%d, SOL_SOCKET, SO_TYPE): unrecognized socket type %d\n", - s, *(int *)optval)); - } /* switch (netconn_type(sock->conn)) */ - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, SOL_SOCKET, SO_TYPE) = %d\n", - s, *(int *)optval)); - break; - - case SO_ERROR: - /* only overwrite ERR_OK or tempoary errors */ - if ((sock->err == 0) || (sock->err == EINPROGRESS)) { - sock_set_errno(sock, err_to_errno(sock->conn->last_err)); - } - *(int *)optval = sock->err; - sock->err = 0; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, SOL_SOCKET, SO_ERROR) = %d\n", - s, *(int *)optval)); - break; - -#if LWIP_SO_RCVTIMEO - case SO_RCVTIMEO: - *(int *)optval = netconn_get_recvtimeout(sock->conn); - break; -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - case SO_RCVBUF: - *(int *)optval = netconn_get_recvbufsize(sock->conn); - break; -#endif /* LWIP_SO_RCVBUF */ -#if LWIP_UDP - case SO_NO_CHECK: - *(int*)optval = (udp_flags(sock->conn->pcb.udp) & UDP_FLAGS_NOCHKSUM) ? 1 : 0; - break; -#endif /* LWIP_UDP*/ - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; - -/* Level: IPPROTO_IP */ - case IPPROTO_IP: - switch (optname) { - case IP_TTL: - *(int*)optval = sock->conn->pcb.ip->ttl; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, IP_TTL) = %d\n", - s, *(int *)optval)); - break; - case IP_TOS: - *(int*)optval = sock->conn->pcb.ip->tos; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, IP_TOS) = %d\n", - s, *(int *)optval)); - break; -#if LWIP_IGMP - case IP_MULTICAST_TTL: - *(u8_t*)optval = sock->conn->pcb.ip->ttl; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, IP_MULTICAST_TTL) = %d\n", - s, *(int *)optval)); - break; - case IP_MULTICAST_IF: - inet_addr_from_ipaddr((struct in_addr*)optval, &sock->conn->pcb.udp->multicast_ip); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, IP_MULTICAST_IF) = 0x%"X32_F"\n", - s, *(u32_t *)optval)); - break; - case IP_MULTICAST_LOOP: - if ((sock->conn->pcb.udp->flags & UDP_FLAGS_MULTICAST_LOOP) != 0) { - *(u8_t*)optval = 1; - } else { - *(u8_t*)optval = 0; - } - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, IP_MULTICAST_LOOP) = %d\n", - s, *(int *)optval)); - break; -#endif /* LWIP_IGMP */ - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; - -#if LWIP_TCP -/* Level: IPPROTO_TCP */ - case IPPROTO_TCP: - switch (optname) { - case TCP_NODELAY: - *(int*)optval = tcp_nagle_disabled(sock->conn->pcb.tcp); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_TCP, TCP_NODELAY) = %s\n", - s, (*(int*)optval)?"on":"off") ); - break; - case TCP_KEEPALIVE: - *(int*)optval = (int)sock->conn->pcb.tcp->keep_idle; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPALIVE) = %d\n", - s, *(int *)optval)); - break; - -#if LWIP_TCP_KEEPALIVE - case TCP_KEEPIDLE: - *(int*)optval = (int)(sock->conn->pcb.tcp->keep_idle/1000); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPIDLE) = %d\n", - s, *(int *)optval)); - break; - case TCP_KEEPINTVL: - *(int*)optval = (int)(sock->conn->pcb.tcp->keep_intvl/1000); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPINTVL) = %d\n", - s, *(int *)optval)); - break; - case TCP_KEEPCNT: - *(int*)optval = (int)sock->conn->pcb.tcp->keep_cnt; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, TCP_KEEPCNT) = %d\n", - s, *(int *)optval)); - break; -#endif /* LWIP_TCP_KEEPALIVE */ - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; -#endif /* LWIP_TCP */ -#if LWIP_UDP && LWIP_UDPLITE - /* Level: IPPROTO_UDPLITE */ - case IPPROTO_UDPLITE: - switch (optname) { - case UDPLITE_SEND_CSCOV: - *(int*)optval = sock->conn->pcb.udp->chksum_len_tx; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV) = %d\n", - s, (*(int*)optval)) ); - break; - case UDPLITE_RECV_CSCOV: - *(int*)optval = sock->conn->pcb.udp->chksum_len_rx; - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV) = %d\n", - s, (*(int*)optval)) ); - break; - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; -#endif /* LWIP_UDP */ - default: - LWIP_ASSERT("unhandled level", 0); - break; - } /* switch (level) */ - sys_sem_signal(&sock->conn->op_completed); -} - -int -lwip_setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen) -{ - struct lwip_sock *sock = get_socket(s); - err_t err = ERR_OK; - struct lwip_setgetsockopt_data data; - - if (!sock) { - return -1; - } - - if (NULL == optval) { - sock_set_errno(sock, EFAULT); - return -1; - } - - /* Do length and type checks for the various options first, to keep it readable. */ - switch (level) { - -/* Level: SOL_SOCKET */ - case SOL_SOCKET: - switch (optname) { - - case SO_BROADCAST: - /* UNIMPL case SO_DEBUG: */ - /* UNIMPL case SO_DONTROUTE: */ - case SO_KEEPALIVE: - /* UNIMPL case case SO_CONTIMEO: */ - /* UNIMPL case case SO_SNDTIMEO: */ -#if LWIP_SO_RCVTIMEO - case SO_RCVTIMEO: -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - case SO_RCVBUF: -#endif /* LWIP_SO_RCVBUF */ - /* UNIMPL case SO_OOBINLINE: */ - /* UNIMPL case SO_SNDBUF: */ - /* UNIMPL case SO_RCVLOWAT: */ - /* UNIMPL case SO_SNDLOWAT: */ -#if SO_REUSE - case SO_REUSEADDR: - case SO_REUSEPORT: -#endif /* SO_REUSE */ - /* UNIMPL case SO_USELOOPBACK: */ - if (optlen < sizeof(int)) { - err = EINVAL; - } - break; - case SO_NO_CHECK: - if (optlen < sizeof(int)) { - err = EINVAL; - } -#if LWIP_UDP - if ((NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) || - ((udp_flags(sock->conn->pcb.udp) & UDP_FLAGS_UDPLITE) != 0)) { - /* this flag is only available for UDP, not for UDP lite */ - err = EAFNOSUPPORT; - } -#endif /* LWIP_UDP */ - break; - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, SOL_SOCKET, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; - -/* Level: IPPROTO_IP */ - case IPPROTO_IP: - switch (optname) { - /* UNIMPL case IP_HDRINCL: */ - /* UNIMPL case IP_RCVDSTADDR: */ - /* UNIMPL case IP_RCVIF: */ - case IP_TTL: - case IP_TOS: - if (optlen < sizeof(int)) { - err = EINVAL; - } - break; -#if LWIP_IGMP - case IP_MULTICAST_TTL: - if (optlen < sizeof(u8_t)) { - err = EINVAL; - } - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) { - err = EAFNOSUPPORT; - } - break; - case IP_MULTICAST_IF: - if (optlen < sizeof(struct in_addr)) { - err = EINVAL; - } - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) { - err = EAFNOSUPPORT; - } - break; - case IP_MULTICAST_LOOP: - if (optlen < sizeof(u8_t)) { - err = EINVAL; - } - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) { - err = EAFNOSUPPORT; - } - break; - case IP_ADD_MEMBERSHIP: - case IP_DROP_MEMBERSHIP: - if (optlen < sizeof(struct ip_mreq)) { - err = EINVAL; - } - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_UDP) { - err = EAFNOSUPPORT; - } - break; -#endif /* LWIP_IGMP */ - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_IP, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; - -#if LWIP_TCP -/* Level: IPPROTO_TCP */ - case IPPROTO_TCP: - if (optlen < sizeof(int)) { - err = EINVAL; - break; - } - - /* If this is no TCP socket, ignore any options. */ - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) - return 0; - - switch (optname) { - case TCP_NODELAY: - case TCP_KEEPALIVE: -#if LWIP_TCP_KEEPALIVE - case TCP_KEEPIDLE: - case TCP_KEEPINTVL: - case TCP_KEEPCNT: -#endif /* LWIP_TCP_KEEPALIVE */ - break; - - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; -#endif /* LWIP_TCP */ -#if LWIP_UDP && LWIP_UDPLITE -/* Level: IPPROTO_UDPLITE */ - case IPPROTO_UDPLITE: - if (optlen < sizeof(int)) { - err = EINVAL; - break; - } - - /* If this is no UDP lite socket, ignore any options. */ - if (!NETCONNTYPE_ISUDPLITE(netconn_type(sock->conn))) - return 0; - - switch (optname) { - case UDPLITE_SEND_CSCOV: - case UDPLITE_RECV_CSCOV: - break; - - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_UDPLITE, UNIMPL: optname=0x%x, ..)\n", - s, optname)); - err = ENOPROTOOPT; - } /* switch (optname) */ - break; -#endif /* LWIP_UDP && LWIP_UDPLITE */ -/* UNDEFINED LEVEL */ - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, level=0x%x, UNIMPL: optname=0x%x, ..)\n", - s, level, optname)); - err = ENOPROTOOPT; - } /* switch (level) */ - - - if (err != ERR_OK) { - sock_set_errno(sock, err); - return -1; - } - - - /* Now do the actual option processing */ - data.sock = sock; -#ifdef LWIP_DEBUG - data.s = s; -#endif /* LWIP_DEBUG */ - data.level = level; - data.optname = optname; - data.optval = (void*)optval; - data.optlen = &optlen; - data.err = err; - tcpip_callback(lwip_setsockopt_internal, &data); - sys_arch_sem_wait(&sock->conn->op_completed, 0); - /* maybe lwip_setsockopt_internal has changed err */ - err = data.err; - - sock_set_errno(sock, err); - return err ? -1 : 0; -} - -static void -lwip_setsockopt_internal(void *arg) -{ - struct lwip_sock *sock; -#ifdef LWIP_DEBUG - int s; -#endif /* LWIP_DEBUG */ - int level, optname; - const void *optval; - struct lwip_setgetsockopt_data *data; - - LWIP_ASSERT("arg != NULL", arg != NULL); - - data = (struct lwip_setgetsockopt_data*)arg; - sock = data->sock; -#ifdef LWIP_DEBUG - s = data->s; -#endif /* LWIP_DEBUG */ - level = data->level; - optname = data->optname; - optval = data->optval; - - switch (level) { - -/* Level: SOL_SOCKET */ - case SOL_SOCKET: - switch (optname) { - - /* The option flags */ - case SO_BROADCAST: - /* UNIMPL case SO_DEBUG: */ - /* UNIMPL case SO_DONTROUTE: */ - case SO_KEEPALIVE: - /* UNIMPL case SO_OOBINCLUDE: */ -#if SO_REUSE - case SO_REUSEADDR: - case SO_REUSEPORT: -#endif /* SO_REUSE */ - /* UNIMPL case SO_USELOOPBACK: */ - if (*(int*)optval) { - sock->conn->pcb.ip->so_options |= optname; - } else { - sock->conn->pcb.ip->so_options &= ~optname; - } - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, SOL_SOCKET, optname=0x%x, ..) -> %s\n", - s, optname, (*(int*)optval?"on":"off"))); - break; -#if LWIP_SO_RCVTIMEO - case SO_RCVTIMEO: - netconn_set_recvtimeout(sock->conn, *(int*)optval); - break; -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - case SO_RCVBUF: - netconn_set_recvbufsize(sock->conn, *(int*)optval); - break; -#endif /* LWIP_SO_RCVBUF */ -#if LWIP_UDP - case SO_NO_CHECK: - if (*(int*)optval) { - udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) | UDP_FLAGS_NOCHKSUM); - } else { - udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) & ~UDP_FLAGS_NOCHKSUM); - } - break; -#endif /* LWIP_UDP */ - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; - -/* Level: IPPROTO_IP */ - case IPPROTO_IP: - switch (optname) { - case IP_TTL: - sock->conn->pcb.ip->ttl = (u8_t)(*(int*)optval); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_IP, IP_TTL, ..) -> %d\n", - s, sock->conn->pcb.ip->ttl)); - break; - case IP_TOS: - sock->conn->pcb.ip->tos = (u8_t)(*(int*)optval); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_IP, IP_TOS, ..)-> %d\n", - s, sock->conn->pcb.ip->tos)); - break; -#if LWIP_IGMP - case IP_MULTICAST_TTL: - sock->conn->pcb.udp->ttl = (u8_t)(*(u8_t*)optval); - break; - case IP_MULTICAST_IF: - inet_addr_to_ipaddr(&sock->conn->pcb.udp->multicast_ip, (struct in_addr*)optval); - break; - case IP_MULTICAST_LOOP: - if (*(u8_t*)optval) { - udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) | UDP_FLAGS_MULTICAST_LOOP); - } else { - udp_setflags(sock->conn->pcb.udp, udp_flags(sock->conn->pcb.udp) & ~UDP_FLAGS_MULTICAST_LOOP); - } - break; - case IP_ADD_MEMBERSHIP: - case IP_DROP_MEMBERSHIP: - { - /* If this is a TCP or a RAW socket, ignore these options. */ - struct ip_mreq *imr = (struct ip_mreq *)optval; - ip_addr_t if_addr; - ip_addr_t multi_addr; - inet_addr_to_ipaddr(&if_addr, &imr->imr_interface); - inet_addr_to_ipaddr(&multi_addr, &imr->imr_multiaddr); - if(optname == IP_ADD_MEMBERSHIP){ - data->err = igmp_joingroup(&if_addr, &multi_addr); - } else { - data->err = igmp_leavegroup(&if_addr, &multi_addr); - } - if(data->err != ERR_OK) { - data->err = EADDRNOTAVAIL; - } - } - break; -#endif /* LWIP_IGMP */ - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; - -#if LWIP_TCP -/* Level: IPPROTO_TCP */ - case IPPROTO_TCP: - switch (optname) { - case TCP_NODELAY: - if (*(int*)optval) { - tcp_nagle_disable(sock->conn->pcb.tcp); - } else { - tcp_nagle_enable(sock->conn->pcb.tcp); - } - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_NODELAY) -> %s\n", - s, (*(int *)optval)?"on":"off") ); - break; - case TCP_KEEPALIVE: - sock->conn->pcb.tcp->keep_idle = (u32_t)(*(int*)optval); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPALIVE) -> %"U32_F"\n", - s, sock->conn->pcb.tcp->keep_idle)); - break; - -#if LWIP_TCP_KEEPALIVE - case TCP_KEEPIDLE: - sock->conn->pcb.tcp->keep_idle = 1000*(u32_t)(*(int*)optval); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPIDLE) -> %"U32_F"\n", - s, sock->conn->pcb.tcp->keep_idle)); - break; - case TCP_KEEPINTVL: - sock->conn->pcb.tcp->keep_intvl = 1000*(u32_t)(*(int*)optval); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPINTVL) -> %"U32_F"\n", - s, sock->conn->pcb.tcp->keep_intvl)); - break; - case TCP_KEEPCNT: - sock->conn->pcb.tcp->keep_cnt = (u32_t)(*(int*)optval); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_TCP, TCP_KEEPCNT) -> %"U32_F"\n", - s, sock->conn->pcb.tcp->keep_cnt)); - break; -#endif /* LWIP_TCP_KEEPALIVE */ - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; -#endif /* LWIP_TCP*/ -#if LWIP_UDP && LWIP_UDPLITE - /* Level: IPPROTO_UDPLITE */ - case IPPROTO_UDPLITE: - switch (optname) { - case UDPLITE_SEND_CSCOV: - if ((*(int*)optval != 0) && ((*(int*)optval < 8)) || (*(int*)optval > 0xffff)) { - /* don't allow illegal values! */ - sock->conn->pcb.udp->chksum_len_tx = 8; - } else { - sock->conn->pcb.udp->chksum_len_tx = (u16_t)*(int*)optval; - } - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV) -> %d\n", - s, (*(int*)optval)) ); - break; - case UDPLITE_RECV_CSCOV: - if ((*(int*)optval != 0) && ((*(int*)optval < 8)) || (*(int*)optval > 0xffff)) { - /* don't allow illegal values! */ - sock->conn->pcb.udp->chksum_len_rx = 8; - } else { - sock->conn->pcb.udp->chksum_len_rx = (u16_t)*(int*)optval; - } - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV) -> %d\n", - s, (*(int*)optval)) ); - break; - default: - LWIP_ASSERT("unhandled optname", 0); - break; - } /* switch (optname) */ - break; -#endif /* LWIP_UDP */ - default: - LWIP_ASSERT("unhandled level", 0); - break; - } /* switch (level) */ - sys_sem_signal(&sock->conn->op_completed); -} - -int -lwip_ioctl(int s, long cmd, void *argp) -{ - struct lwip_sock *sock = get_socket(s); - u8_t val; -#if LWIP_SO_RCVBUF - u16_t buflen = 0; - s16_t recv_avail; -#endif /* LWIP_SO_RCVBUF */ - - if (!sock) { - return -1; - } - - switch (cmd) { -#if LWIP_SO_RCVBUF || LWIP_FIONREAD_LINUXMODE - case FIONREAD: - if (!argp) { - sock_set_errno(sock, EINVAL); - return -1; - } -#if LWIP_FIONREAD_LINUXMODE - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { - struct pbuf *p; - if (sock->lastdata) { - p = ((struct netbuf *)sock->lastdata)->p; - } else { - struct netbuf *rxbuf; - err_t err; - if (sock->rcvevent <= 0) { - *((u16_t*)argp) = 0; - } else { - err = netconn_recv(sock->conn, &rxbuf); - if (err != ERR_OK) { - *((u16_t*)argp) = 0; - } else { - sock->lastdata = rxbuf; - *((u16_t*)argp) = rxbuf->p->tot_len; - } - } - } - return 0; - } -#endif /* LWIP_FIONREAD_LINUXMODE */ - -#if LWIP_SO_RCVBUF - /* we come here if either LWIP_FIONREAD_LINUXMODE==0 or this is a TCP socket */ - SYS_ARCH_GET(sock->conn->recv_avail, recv_avail); - if (recv_avail < 0) { - recv_avail = 0; - } - *((u16_t*)argp) = (u16_t)recv_avail; - - /* Check if there is data left from the last recv operation. /maq 041215 */ - if (sock->lastdata) { - struct pbuf *p = (struct pbuf *)sock->lastdata; - if (NETCONNTYPE_GROUP(netconn_type(sock->conn)) != NETCONN_TCP) { - p = ((struct netbuf *)p)->p; - } - buflen = p->tot_len; - buflen -= sock->lastoffset; - - *((u16_t*)argp) += buflen; - } - - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_ioctl(%d, FIONREAD, %p) = %"U16_F"\n", s, argp, *((u16_t*)argp))); - sock_set_errno(sock, 0); - return 0; -#else /* LWIP_SO_RCVBUF */ - break; -#endif /* LWIP_SO_RCVBUF */ -#endif /* LWIP_SO_RCVBUF || LWIP_FIONREAD_LINUXMODE */ - - case FIONBIO: - val = 0; - if (argp && *(u32_t*)argp) { - val = 1; - } - netconn_set_nonblocking(sock->conn, val); - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_ioctl(%d, FIONBIO, %d)\n", s, val)); - sock_set_errno(sock, 0); - return 0; - - default: - break; - } /* switch (cmd) */ - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_ioctl(%d, UNIMPL: 0x%lx, %p)\n", s, cmd, argp)); - sock_set_errno(sock, ENOSYS); /* not yet implemented */ - return -1; -} - -/** A minimal implementation of fcntl. - * Currently only the commands F_GETFL and F_SETFL are implemented. - * Only the flag O_NONBLOCK is implemented. - */ -int -lwip_fcntl(int s, int cmd, int val) -{ - struct lwip_sock *sock = get_socket(s); - int ret = -1; - - if (!sock || !sock->conn) { - return -1; - } - - switch (cmd) { - case F_GETFL: - ret = netconn_is_nonblocking(sock->conn) ? O_NONBLOCK : 0; - break; - case F_SETFL: - if ((val & ~O_NONBLOCK) == 0) { - /* only O_NONBLOCK, all other bits are zero */ - netconn_set_nonblocking(sock->conn, val & O_NONBLOCK); - ret = 0; - } - break; - default: - LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_fcntl(%d, UNIMPL: %d, %d)\n", s, cmd, val)); - break; - } - return ret; -} - -#endif /* LWIP_SOCKET */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/tcpip.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/tcpip.c deleted file mode 100644 index ef6fed5fc..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/api/tcpip.c +++ /dev/null @@ -1,516 +0,0 @@ -/** - * @file - * Sequential API Main thread module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if !NO_SYS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/sys.h" -#include "lwip/memp.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/tcpip.h" -#include "lwip/init.h" -#include "netif/etharp.h" -#include "netif/ppp_oe.h" - -/* global variables */ -static tcpip_init_done_fn tcpip_init_done; -static void *tcpip_init_done_arg; -static sys_mbox_t mbox; - -#if LWIP_TCPIP_CORE_LOCKING -/** The global semaphore to lock the stack. */ -sys_mutex_t lock_tcpip_core; -#endif /* LWIP_TCPIP_CORE_LOCKING */ - - -/** - * The main lwIP thread. This thread has exclusive access to lwIP core functions - * (unless access to them is not locked). Other threads communicate with this - * thread using message boxes. - * - * It also starts all the timers to make sure they are running in the right - * thread context. - * - * @param arg unused argument - */ -static void -tcpip_thread(void *arg) -{ - struct tcpip_msg *msg; - LWIP_UNUSED_ARG(arg); - - if (tcpip_init_done != NULL) { - tcpip_init_done(tcpip_init_done_arg); - } - - LOCK_TCPIP_CORE(); - while (1) { /* MAIN Loop */ - UNLOCK_TCPIP_CORE(); - LWIP_TCPIP_THREAD_ALIVE(); - /* wait for a message, timeouts are processed while waiting */ - sys_timeouts_mbox_fetch(&mbox, (void **)&msg); - LOCK_TCPIP_CORE(); - switch (msg->type) { -#if LWIP_NETCONN - case TCPIP_MSG_API: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: API message %p\n", (void *)msg)); - msg->msg.apimsg->function(&(msg->msg.apimsg->msg)); - break; -#endif /* LWIP_NETCONN */ - -#if !LWIP_TCPIP_CORE_LOCKING_INPUT - case TCPIP_MSG_INPKT: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: PACKET %p\n", (void *)msg)); -#if LWIP_ETHERNET - if (msg->msg.inp.netif->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) { - ethernet_input(msg->msg.inp.p, msg->msg.inp.netif); - } else -#endif /* LWIP_ETHERNET */ -#if LWIP_IPV6 - if ((*((unsigned char *)(msg->msg.inp.p->payload)) & 0xf0) == 0x60) { - ip6_input(msg->msg.inp.p, msg->msg.inp.netif); - } else -#endif /* LWIP_IPV6 */ - { - ip_input(msg->msg.inp.p, msg->msg.inp.netif); - } - memp_free(MEMP_TCPIP_MSG_INPKT, msg); - break; -#endif /* LWIP_TCPIP_CORE_LOCKING_INPUT */ - -#if LWIP_NETIF_API - case TCPIP_MSG_NETIFAPI: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: Netif API message %p\n", (void *)msg)); - msg->msg.netifapimsg->function(&(msg->msg.netifapimsg->msg)); - break; -#endif /* LWIP_NETIF_API */ - -#if LWIP_TCPIP_TIMEOUT - case TCPIP_MSG_TIMEOUT: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: TIMEOUT %p\n", (void *)msg)); - sys_timeout(msg->msg.tmo.msecs, msg->msg.tmo.h, msg->msg.tmo.arg); - memp_free(MEMP_TCPIP_MSG_API, msg); - break; - case TCPIP_MSG_UNTIMEOUT: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: UNTIMEOUT %p\n", (void *)msg)); - sys_untimeout(msg->msg.tmo.h, msg->msg.tmo.arg); - memp_free(MEMP_TCPIP_MSG_API, msg); - break; -#endif /* LWIP_TCPIP_TIMEOUT */ - - case TCPIP_MSG_CALLBACK: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: CALLBACK %p\n", (void *)msg)); - msg->msg.cb.function(msg->msg.cb.ctx); - memp_free(MEMP_TCPIP_MSG_API, msg); - break; - - case TCPIP_MSG_CALLBACK_STATIC: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: CALLBACK_STATIC %p\n", (void *)msg)); - msg->msg.cb.function(msg->msg.cb.ctx); - break; - - default: - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: invalid message: %d\n", msg->type)); - LWIP_ASSERT("tcpip_thread: invalid message", 0); - break; - } - } -} - -/** - * Pass a received packet to tcpip_thread for input processing - * - * @param p the received packet, p->payload pointing to the Ethernet header or - * to an IP header (if inp doesn't have NETIF_FLAG_ETHARP or - * NETIF_FLAG_ETHERNET flags) - * @param inp the network interface on which the packet was received - */ -err_t -tcpip_input(struct pbuf *p, struct netif *inp) -{ -#if LWIP_TCPIP_CORE_LOCKING_INPUT - err_t ret; - LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_input: PACKET %p/%p\n", (void *)p, (void *)inp)); - LOCK_TCPIP_CORE(); -#if LWIP_ETHERNET - if (inp->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) { - ret = ethernet_input(p, inp); - } else -#endif /* LWIP_ETHERNET */ - { - ret = ip_input(p, inp); - } - UNLOCK_TCPIP_CORE(); - return ret; -#else /* LWIP_TCPIP_CORE_LOCKING_INPUT */ - struct tcpip_msg *msg; - - if (!sys_mbox_valid(&mbox)) { - return ERR_VAL; - } - msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_INPKT); - if (msg == NULL) { - return ERR_MEM; - } - - msg->type = TCPIP_MSG_INPKT; - msg->msg.inp.p = p; - msg->msg.inp.netif = inp; - if (sys_mbox_trypost(&mbox, msg) != ERR_OK) { - memp_free(MEMP_TCPIP_MSG_INPKT, msg); - return ERR_MEM; - } - return ERR_OK; -#endif /* LWIP_TCPIP_CORE_LOCKING_INPUT */ -} - -/** - * Call a specific function in the thread context of - * tcpip_thread for easy access synchronization. - * A function called in that way may access lwIP core code - * without fearing concurrent access. - * - * @param f the function to call - * @param ctx parameter passed to f - * @param block 1 to block until the request is posted, 0 to non-blocking mode - * @return ERR_OK if the function was called, another err_t if not - */ -err_t -tcpip_callback_with_block(tcpip_callback_fn function, void *ctx, u8_t block) -{ - struct tcpip_msg *msg; - - if (sys_mbox_valid(&mbox)) { - msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_API); - if (msg == NULL) { - return ERR_MEM; - } - - msg->type = TCPIP_MSG_CALLBACK; - msg->msg.cb.function = function; - msg->msg.cb.ctx = ctx; - if (block) { - sys_mbox_post(&mbox, msg); - } else { - if (sys_mbox_trypost(&mbox, msg) != ERR_OK) { - memp_free(MEMP_TCPIP_MSG_API, msg); - return ERR_MEM; - } - } - return ERR_OK; - } - return ERR_VAL; -} - -#if LWIP_TCPIP_TIMEOUT -/** - * call sys_timeout in tcpip_thread - * - * @param msec time in milliseconds for timeout - * @param h function to be called on timeout - * @param arg argument to pass to timeout function h - * @return ERR_MEM on memory error, ERR_OK otherwise - */ -err_t -tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg) -{ - struct tcpip_msg *msg; - - if (sys_mbox_valid(&mbox)) { - msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_API); - if (msg == NULL) { - return ERR_MEM; - } - - msg->type = TCPIP_MSG_TIMEOUT; - msg->msg.tmo.msecs = msecs; - msg->msg.tmo.h = h; - msg->msg.tmo.arg = arg; - sys_mbox_post(&mbox, msg); - return ERR_OK; - } - return ERR_VAL; -} - -/** - * call sys_untimeout in tcpip_thread - * - * @param msec time in milliseconds for timeout - * @param h function to be called on timeout - * @param arg argument to pass to timeout function h - * @return ERR_MEM on memory error, ERR_OK otherwise - */ -err_t -tcpip_untimeout(sys_timeout_handler h, void *arg) -{ - struct tcpip_msg *msg; - - if (sys_mbox_valid(&mbox)) { - msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_API); - if (msg == NULL) { - return ERR_MEM; - } - - msg->type = TCPIP_MSG_UNTIMEOUT; - msg->msg.tmo.h = h; - msg->msg.tmo.arg = arg; - sys_mbox_post(&mbox, msg); - return ERR_OK; - } - return ERR_VAL; -} -#endif /* LWIP_TCPIP_TIMEOUT */ - -#if LWIP_NETCONN -/** - * Call the lower part of a netconn_* function - * This function is then running in the thread context - * of tcpip_thread and has exclusive access to lwIP core code. - * - * @param apimsg a struct containing the function to call and its parameters - * @return ERR_OK if the function was called, another err_t if not - */ -err_t -tcpip_apimsg(struct api_msg *apimsg) -{ - struct tcpip_msg msg; -#ifdef LWIP_DEBUG - /* catch functions that don't set err */ - apimsg->msg.err = ERR_VAL; -#endif - - if (sys_mbox_valid(&mbox)) { - msg.type = TCPIP_MSG_API; - msg.msg.apimsg = apimsg; - sys_mbox_post(&mbox, &msg); - sys_arch_sem_wait(&apimsg->msg.conn->op_completed, 0); - return apimsg->msg.err; - } - return ERR_VAL; -} - -#if LWIP_TCPIP_CORE_LOCKING -/** - * Call the lower part of a netconn_* function - * This function has exclusive access to lwIP core code by locking it - * before the function is called. - * - * @param apimsg a struct containing the function to call and its parameters - * @return ERR_OK (only for compatibility fo tcpip_apimsg()) - */ -err_t -tcpip_apimsg_lock(struct api_msg *apimsg) -{ -#ifdef LWIP_DEBUG - /* catch functions that don't set err */ - apimsg->msg.err = ERR_VAL; -#endif - - LOCK_TCPIP_CORE(); - apimsg->function(&(apimsg->msg)); - UNLOCK_TCPIP_CORE(); - return apimsg->msg.err; - -} -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETCONN */ - -#if LWIP_NETIF_API -#if !LWIP_TCPIP_CORE_LOCKING -/** - * Much like tcpip_apimsg, but calls the lower part of a netifapi_* - * function. - * - * @param netifapimsg a struct containing the function to call and its parameters - * @return error code given back by the function that was called - */ -err_t -tcpip_netifapi(struct netifapi_msg* netifapimsg) -{ - struct tcpip_msg msg; - - if (sys_mbox_valid(&mbox)) { - err_t err = sys_sem_new(&netifapimsg->msg.sem, 0); - if (err != ERR_OK) { - netifapimsg->msg.err = err; - return err; - } - - msg.type = TCPIP_MSG_NETIFAPI; - msg.msg.netifapimsg = netifapimsg; - sys_mbox_post(&mbox, &msg); - sys_sem_wait(&netifapimsg->msg.sem); - sys_sem_free(&netifapimsg->msg.sem); - return netifapimsg->msg.err; - } - return ERR_VAL; -} -#else /* !LWIP_TCPIP_CORE_LOCKING */ -/** - * Call the lower part of a netifapi_* function - * This function has exclusive access to lwIP core code by locking it - * before the function is called. - * - * @param netifapimsg a struct containing the function to call and its parameters - * @return ERR_OK (only for compatibility fo tcpip_netifapi()) - */ -err_t -tcpip_netifapi_lock(struct netifapi_msg* netifapimsg) -{ - LOCK_TCPIP_CORE(); - netifapimsg->function(&(netifapimsg->msg)); - UNLOCK_TCPIP_CORE(); - return netifapimsg->msg.err; -} -#endif /* !LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETIF_API */ - -/** - * Allocate a structure for a static callback message and initialize it. - * This is intended to be used to send "static" messages from interrupt context. - * - * @param function the function to call - * @param ctx parameter passed to function - * @return a struct pointer to pass to tcpip_trycallback(). - */ -struct tcpip_callback_msg* tcpip_callbackmsg_new(tcpip_callback_fn function, void *ctx) -{ - struct tcpip_msg *msg = (struct tcpip_msg *)memp_malloc(MEMP_TCPIP_MSG_API); - if (msg == NULL) { - return NULL; - } - msg->type = TCPIP_MSG_CALLBACK_STATIC; - msg->msg.cb.function = function; - msg->msg.cb.ctx = ctx; - return (struct tcpip_callback_msg*)msg; -} - -/** - * Free a callback message allocated by tcpip_callbackmsg_new(). - * - * @param msg the message to free - */ -void tcpip_callbackmsg_delete(struct tcpip_callback_msg* msg) -{ - memp_free(MEMP_TCPIP_MSG_API, msg); -} - -/** - * Try to post a callback-message to the tcpip_thread mbox - * This is intended to be used to send "static" messages from interrupt context. - * - * @param msg pointer to the message to post - * @return sys_mbox_trypost() return code - */ -err_t -tcpip_trycallback(struct tcpip_callback_msg* msg) -{ - if (!sys_mbox_valid(&mbox)) { - return ERR_VAL; - } - return sys_mbox_trypost(&mbox, msg); -} - -/** - * Initialize this module: - * - initialize all sub modules - * - start the tcpip_thread - * - * @param initfunc a function to call when tcpip_thread is running and finished initializing - * @param arg argument to pass to initfunc - */ -void -tcpip_init(tcpip_init_done_fn initfunc, void *arg) -{ - lwip_init(); - - tcpip_init_done = initfunc; - tcpip_init_done_arg = arg; - if(sys_mbox_new(&mbox, TCPIP_MBOX_SIZE) != ERR_OK) { - LWIP_ASSERT("failed to create tcpip_thread mbox", 0); - } -#if LWIP_TCPIP_CORE_LOCKING - if(sys_mutex_new(&lock_tcpip_core) != ERR_OK) { - LWIP_ASSERT("failed to create lock_tcpip_core", 0); - } -#endif /* LWIP_TCPIP_CORE_LOCKING */ - - sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO); -} - -/** - * Simple callback function used with tcpip_callback to free a pbuf - * (pbuf_free has a wrong signature for tcpip_callback) - * - * @param p The pbuf (chain) to be dereferenced. - */ -static void -pbuf_free_int(void *p) -{ - struct pbuf *q = (struct pbuf *)p; - pbuf_free(q); -} - -/** - * A simple wrapper function that allows you to free a pbuf from interrupt context. - * - * @param p The pbuf (chain) to be dereferenced. - * @return ERR_OK if callback could be enqueued, an err_t if not - */ -err_t -pbuf_free_callback(struct pbuf *p) -{ - return tcpip_callback_with_block(pbuf_free_int, p, 0); -} - -/** - * A simple wrapper function that allows you to free heap memory from - * interrupt context. - * - * @param m the heap memory to free - * @return ERR_OK if callback could be enqueued, an err_t if not - */ -err_t -mem_free_callback(void *m) -{ - return tcpip_callback_with_block(mem_free, m, 0); -} - -#endif /* !NO_SYS */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/def.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/def.c deleted file mode 100644 index 352b55241..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/def.c +++ /dev/null @@ -1,108 +0,0 @@ -/** - * @file - * Common functions used throughout the stack. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Simon Goldschmidt - * - */ - -#include "lwip/opt.h" -#include "lwip/def.h" - -/** - * These are reference implementations of the byte swapping functions. - * Again with the aim of being simple, correct and fully portable. - * Byte swapping is the second thing you would want to optimize. You will - * need to port it to your architecture and in your cc.h: - * - * #define LWIP_PLATFORM_BYTESWAP 1 - * #define LWIP_PLATFORM_HTONS(x) - * #define LWIP_PLATFORM_HTONL(x) - * - * Note ntohs() and ntohl() are merely references to the htonx counterparts. - */ - -#if (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) - -/** - * Convert an u16_t from host- to network byte order. - * - * @param n u16_t in host byte order - * @return n in network byte order - */ -u16_t -lwip_htons(u16_t n) -{ - return ((n & 0xff) << 8) | ((n & 0xff00) >> 8); -} - -/** - * Convert an u16_t from network- to host byte order. - * - * @param n u16_t in network byte order - * @return n in host byte order - */ -u16_t -lwip_ntohs(u16_t n) -{ - return lwip_htons(n); -} - -/** - * Convert an u32_t from host- to network byte order. - * - * @param n u32_t in host byte order - * @return n in network byte order - */ -u32_t -lwip_htonl(u32_t n) -{ - return ((n & 0xff) << 24) | - ((n & 0xff00) << 8) | - ((n & 0xff0000UL) >> 8) | - ((n & 0xff000000UL) >> 24); -} - -/** - * Convert an u32_t from network- to host byte order. - * - * @param n u32_t in network byte order - * @return n in host byte order - */ -u32_t -lwip_ntohl(u32_t n) -{ - return lwip_htonl(n); -} - -#endif /* (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dhcp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dhcp.c deleted file mode 100644 index fe85a7e8d..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dhcp.c +++ /dev/null @@ -1,1747 +0,0 @@ -/** - * @file - * Dynamic Host Configuration Protocol client - * - */ - -/* - * - * Copyright (c) 2001-2004 Leon Woestenberg - * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. - * - * Author: Leon Woestenberg - * - * This is a DHCP client for the lwIP TCP/IP stack. It aims to conform - * with RFC 2131 and RFC 2132. - * - * TODO: - * - Support for interfaces other than Ethernet (SLIP, PPP, ...) - * - * Please coordinate changes and requests with Leon Woestenberg - * - * - * Integration with your code: - * - * In lwip/dhcp.h - * #define DHCP_COARSE_TIMER_SECS (recommended 60 which is a minute) - * #define DHCP_FINE_TIMER_MSECS (recommended 500 which equals TCP coarse timer) - * - * Then have your application call dhcp_coarse_tmr() and - * dhcp_fine_tmr() on the defined intervals. - * - * dhcp_start(struct netif *netif); - * starts a DHCP client instance which configures the interface by - * obtaining an IP address lease and maintaining it. - * - * Use dhcp_release(netif) to end the lease and use dhcp_stop(netif) - * to remove the DHCP client. - * - */ - -#include "lwip/opt.h" - -#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/stats.h" -#include "lwip/mem.h" -#include "lwip/udp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/def.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "lwip/dns.h" -#include "netif/etharp.h" - -#include - -/** Default for DHCP_GLOBAL_XID is 0xABCD0000 - * This can be changed by defining DHCP_GLOBAL_XID and DHCP_GLOBAL_XID_HEADER, e.g. - * #define DHCP_GLOBAL_XID_HEADER "stdlib.h" - * #define DHCP_GLOBAL_XID rand() - */ -#ifdef DHCP_GLOBAL_XID_HEADER -#include DHCP_GLOBAL_XID_HEADER /* include optional starting XID generation prototypes */ -#endif - -/** DHCP_OPTION_MAX_MSG_SIZE is set to the MTU - * MTU is checked to be big enough in dhcp_start */ -#define DHCP_MAX_MSG_LEN(netif) (netif->mtu) -#define DHCP_MAX_MSG_LEN_MIN_REQUIRED 576 -/** Minimum length for reply before packet is parsed */ -#define DHCP_MIN_REPLY_LEN 44 - -#define REBOOT_TRIES 2 - -/** Option handling: options are parsed in dhcp_parse_reply - * and saved in an array where other functions can load them from. - * This might be moved into the struct dhcp (not necessarily since - * lwIP is single-threaded and the array is only used while in recv - * callback). */ -#define DHCP_OPTION_IDX_OVERLOAD 0 -#define DHCP_OPTION_IDX_MSG_TYPE 1 -#define DHCP_OPTION_IDX_SERVER_ID 2 -#define DHCP_OPTION_IDX_LEASE_TIME 3 -#define DHCP_OPTION_IDX_T1 4 -#define DHCP_OPTION_IDX_T2 5 -#define DHCP_OPTION_IDX_SUBNET_MASK 6 -#define DHCP_OPTION_IDX_ROUTER 7 -#define DHCP_OPTION_IDX_DNS_SERVER 8 -#define DHCP_OPTION_IDX_MAX (DHCP_OPTION_IDX_DNS_SERVER + DNS_MAX_SERVERS) - -/** Holds the decoded option values, only valid while in dhcp_recv. - @todo: move this into struct dhcp? */ -u32_t dhcp_rx_options_val[DHCP_OPTION_IDX_MAX]; -/** Holds a flag which option was received and is contained in dhcp_rx_options_val, - only valid while in dhcp_recv. - @todo: move this into struct dhcp? */ -u8_t dhcp_rx_options_given[DHCP_OPTION_IDX_MAX]; - -#ifdef DHCP_GLOBAL_XID -static u32_t xid; -static u8_t xid_initialised; -#endif /* DHCP_GLOBAL_XID */ - -#define dhcp_option_given(dhcp, idx) (dhcp_rx_options_given[idx] != 0) -#define dhcp_got_option(dhcp, idx) (dhcp_rx_options_given[idx] = 1) -#define dhcp_clear_option(dhcp, idx) (dhcp_rx_options_given[idx] = 0) -#define dhcp_clear_all_options(dhcp) (memset(dhcp_rx_options_given, 0, sizeof(dhcp_rx_options_given))) -#define dhcp_get_option_value(dhcp, idx) (dhcp_rx_options_val[idx]) -#define dhcp_set_option_value(dhcp, idx, val) (dhcp_rx_options_val[idx] = (val)) - - -/* DHCP client state machine functions */ -static err_t dhcp_discover(struct netif *netif); -static err_t dhcp_select(struct netif *netif); -static void dhcp_bind(struct netif *netif); -#if DHCP_DOES_ARP_CHECK -static err_t dhcp_decline(struct netif *netif); -#endif /* DHCP_DOES_ARP_CHECK */ -static err_t dhcp_rebind(struct netif *netif); -static err_t dhcp_reboot(struct netif *netif); -static void dhcp_set_state(struct dhcp *dhcp, u8_t new_state); - -/* receive, unfold, parse and free incoming messages */ -static void dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port); - -/* set the DHCP timers */ -static void dhcp_timeout(struct netif *netif); -static void dhcp_t1_timeout(struct netif *netif); -static void dhcp_t2_timeout(struct netif *netif); - -/* build outgoing messages */ -/* create a DHCP message, fill in common headers */ -static err_t dhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type); -/* free a DHCP request */ -static void dhcp_delete_msg(struct dhcp *dhcp); -/* add a DHCP option (type, then length in bytes) */ -static void dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len); -/* add option values */ -static void dhcp_option_byte(struct dhcp *dhcp, u8_t value); -static void dhcp_option_short(struct dhcp *dhcp, u16_t value); -static void dhcp_option_long(struct dhcp *dhcp, u32_t value); -/* always add the DHCP options trailer to end and pad */ -static void dhcp_option_trailer(struct dhcp *dhcp); - -/** - * Back-off the DHCP client (because of a received NAK response). - * - * Back-off the DHCP client because of a received NAK. Receiving a - * NAK means the client asked for something non-sensible, for - * example when it tries to renew a lease obtained on another network. - * - * We clear any existing set IP address and restart DHCP negotiation - * afresh (as per RFC2131 3.2.3). - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_nak(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_nak(netif=%p) %c%c%"U16_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* Set the interface down since the address must no longer be used, as per RFC2131 */ - netif_set_down(netif); - /* remove IP address from interface */ - netif_set_ipaddr(netif, IP_ADDR_ANY); - netif_set_gw(netif, IP_ADDR_ANY); - netif_set_netmask(netif, IP_ADDR_ANY); - /* Change to a defined state */ - dhcp_set_state(dhcp, DHCP_BACKING_OFF); - /* We can immediately restart discovery */ - dhcp_discover(netif); -} - -#if DHCP_DOES_ARP_CHECK -/** - * Checks if the offered IP address is already in use. - * - * It does so by sending an ARP request for the offered address and - * entering CHECKING state. If no ARP reply is received within a small - * interval, the address is assumed to be free for use by us. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_check(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_check(netif=%p) %c%c\n", (void *)netif, (s16_t)netif->name[0], - (s16_t)netif->name[1])); - dhcp_set_state(dhcp, DHCP_CHECKING); - /* create an ARP query for the offered IP address, expecting that no host - responds, as the IP address should not be in use. */ - result = etharp_query(netif, &dhcp->offered_ip_addr, NULL); - if (result != ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_check: could not perform ARP query\n")); - } - dhcp->tries++; - msecs = 500; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_check(): set request timeout %"U16_F" msecs\n", msecs)); -} -#endif /* DHCP_DOES_ARP_CHECK */ - -/** - * Remember the configuration offered by a DHCP server. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_offer(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* obtain the server address */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SERVER_ID)) { - ip4_addr_set_u32(&dhcp->server_ip_addr, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SERVER_ID))); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n", - ip4_addr_get_u32(&dhcp->server_ip_addr))); - /* remember offered address */ - ip_addr_copy(dhcp->offered_ip_addr, dhcp->msg_in->yiaddr); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): offer for 0x%08"X32_F"\n", - ip4_addr_get_u32(&dhcp->offered_ip_addr))); - - dhcp_select(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_handle_offer(netif=%p) did not get server ID!\n", (void*)netif)); - } -} - -/** - * Select a DHCP server offer out of all offers. - * - * Simply select the first offer received. - * - * @param netif the netif under DHCP control - * @return lwIP specific error (see error.h) - */ -static err_t -dhcp_select(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_select(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - dhcp_set_state(dhcp, DHCP_REQUESTING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - /* MUST request the offered IP address */ - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); - - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->server_ip_addr))); - - dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); - dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); - dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); - dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); - dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); - -#if LWIP_NETIF_HOSTNAME - if (netif->hostname != NULL) { - const char *p = (const char*)netif->hostname; - u8_t namelen = (u8_t)strlen(p); - if (namelen > 0) { - LWIP_ASSERT("DHCP: hostname is too long!", namelen < 255); - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, namelen); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - - dhcp_option_trailer(dhcp); - /* shrink the pbuf to the actual content length */ - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* send broadcast to any DHCP server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_msg(dhcp); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_select: REQUESTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_select: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_select(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * The DHCP timer that checks for lease renewal/rebind timeouts. - */ -void -dhcp_coarse_tmr() -{ - struct netif *netif = netif_list; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_coarse_tmr()\n")); - /* iterate through all network interfaces */ - while (netif != NULL) { - /* only act on DHCP configured interfaces */ - if (netif->dhcp != NULL) { - /* timer is active (non zero), and triggers (zeroes) now? */ - if (netif->dhcp->t2_timeout-- == 1) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t2 timeout\n")); - /* this clients' rebind timeout triggered */ - dhcp_t2_timeout(netif); - /* timer is active (non zero), and triggers (zeroes) now */ - } else if (netif->dhcp->t1_timeout-- == 1) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t1 timeout\n")); - /* this clients' renewal timeout triggered */ - dhcp_t1_timeout(netif); - } - } - /* proceed to next netif */ - netif = netif->next; - } -} - -/** - * DHCP transaction timeout handling - * - * A DHCP server is expected to respond within a short period of time. - * This timer checks whether an outstanding DHCP request is timed out. - */ -void -dhcp_fine_tmr() -{ - struct netif *netif = netif_list; - /* loop through netif's */ - while (netif != NULL) { - /* only act on DHCP configured interfaces */ - if (netif->dhcp != NULL) { - /* timer is active (non zero), and is about to trigger now */ - if (netif->dhcp->request_timeout > 1) { - netif->dhcp->request_timeout--; - } - else if (netif->dhcp->request_timeout == 1) { - netif->dhcp->request_timeout--; - /* { netif->dhcp->request_timeout == 0 } */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_fine_tmr(): request timeout\n")); - /* this client's request timeout triggered */ - dhcp_timeout(netif); - } - } - /* proceed to next network interface */ - netif = netif->next; - } -} - -/** - * A DHCP negotiation transaction, or ARP request, has timed out. - * - * The timer that was started with the DHCP or ARP request has - * timed out, indicating no response was received in time. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout()\n")); - /* back-off period has passed, or server selection timed out */ - if ((dhcp->state == DHCP_BACKING_OFF) || (dhcp->state == DHCP_SELECTING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout(): restarting discovery\n")); - dhcp_discover(netif); - /* receiving the requested lease timed out */ - } else if (dhcp->state == DHCP_REQUESTING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, DHCP request timed out\n")); - if (dhcp->tries <= 5) { - dhcp_select(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, releasing, restarting\n")); - dhcp_release(netif); - dhcp_discover(netif); - } -#if DHCP_DOES_ARP_CHECK - /* received no ARP reply for the offered address (which is good) */ - } else if (dhcp->state == DHCP_CHECKING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): CHECKING, ARP request timed out\n")); - if (dhcp->tries <= 1) { - dhcp_check(netif); - /* no ARP replies on the offered address, - looks like the IP address is indeed free */ - } else { - /* bind the interface to the offered address */ - dhcp_bind(netif); - } -#endif /* DHCP_DOES_ARP_CHECK */ - } - /* did not get response to renew request? */ - else if (dhcp->state == DHCP_RENEWING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RENEWING, DHCP request timed out\n")); - /* just retry renewal */ - /* note that the rebind timer will eventually time-out if renew does not work */ - dhcp_renew(netif); - /* did not get response to rebind request? */ - } else if (dhcp->state == DHCP_REBINDING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REBINDING, DHCP request timed out\n")); - if (dhcp->tries <= 8) { - dhcp_rebind(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RELEASING, DISCOVERING\n")); - dhcp_release(netif); - dhcp_discover(netif); - } - } else if (dhcp->state == DHCP_REBOOTING) { - if (dhcp->tries < REBOOT_TRIES) { - dhcp_reboot(netif); - } else { - dhcp_discover(netif); - } - } -} - -/** - * The renewal period has timed out. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t1_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_t1_timeout()\n")); - if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || - (dhcp->state == DHCP_RENEWING)) { - /* just retry to renew - note that the rebind timer (t2) will - * eventually time-out if renew tries fail. */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("dhcp_t1_timeout(): must renew\n")); - /* This slightly different to RFC2131: DHCPREQUEST will be sent from state - DHCP_RENEWING, not DHCP_BOUND */ - dhcp_renew(netif); - } -} - -/** - * The rebind period has timed out. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t2_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout()\n")); - if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || - (dhcp->state == DHCP_RENEWING)) { - /* just retry to rebind */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("dhcp_t2_timeout(): must rebind\n")); - /* This slightly different to RFC2131: DHCPREQUEST will be sent from state - DHCP_REBINDING, not DHCP_BOUND */ - dhcp_rebind(netif); - } -} - -/** - * Handle a DHCP ACK packet - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_ack(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; -#if LWIP_DNS - u8_t n; -#endif /* LWIP_DNS */ - - /* clear options we might not get from the ACK */ - ip_addr_set_zero(&dhcp->offered_sn_mask); - ip_addr_set_zero(&dhcp->offered_gw_addr); -#if LWIP_DHCP_BOOTP_FILE - ip_addr_set_zero(&dhcp->offered_si_addr); -#endif /* LWIP_DHCP_BOOTP_FILE */ - - /* lease time given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_LEASE_TIME)) { - /* remember offered lease time */ - dhcp->offered_t0_lease = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_LEASE_TIME); - } - /* renewal period given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T1)) { - /* remember given renewal period */ - dhcp->offered_t1_renew = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T1); - } else { - /* calculate safe periods for renewal */ - dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2; - } - - /* renewal period given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_T2)) { - /* remember given rebind period */ - dhcp->offered_t2_rebind = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_T2); - } else { - /* calculate safe periods for rebinding */ - dhcp->offered_t2_rebind = dhcp->offered_t0_lease; - } - - /* (y)our internet address */ - ip_addr_copy(dhcp->offered_ip_addr, dhcp->msg_in->yiaddr); - -#if LWIP_DHCP_BOOTP_FILE - /* copy boot server address, - boot file name copied in dhcp_parse_reply if not overloaded */ - ip_addr_copy(dhcp->offered_si_addr, dhcp->msg_in->siaddr); -#endif /* LWIP_DHCP_BOOTP_FILE */ - - /* subnet mask given? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_SUBNET_MASK)) { - /* remember given subnet mask */ - ip4_addr_set_u32(&dhcp->offered_sn_mask, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_SUBNET_MASK))); - dhcp->subnet_mask_given = 1; - } else { - dhcp->subnet_mask_given = 0; - } - - /* gateway router */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_ROUTER)) { - ip4_addr_set_u32(&dhcp->offered_gw_addr, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_ROUTER))); - } - -#if LWIP_DNS - /* DNS servers */ - n = 0; - while(dhcp_option_given(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n) && (n < DNS_MAX_SERVERS)) { - ip_addr_t dns_addr; - ip4_addr_set_u32(&dns_addr, htonl(dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_DNS_SERVER + n))); - dns_setserver(n, &dns_addr); - n++; - } -#endif /* LWIP_DNS */ -} - -/** Set a statically allocated struct dhcp to work with. - * Using this prevents dhcp_start to allocate it using mem_malloc. - * - * @param netif the netif for which to set the struct dhcp - * @param dhcp (uninitialised) dhcp struct allocated by the application - */ -void -dhcp_set_struct(struct netif *netif, struct dhcp *dhcp) -{ - LWIP_ASSERT("netif != NULL", netif != NULL); - LWIP_ASSERT("dhcp != NULL", dhcp != NULL); - LWIP_ASSERT("netif already has a struct dhcp set", netif->dhcp == NULL); - - /* clear data structure */ - memset(dhcp, 0, sizeof(struct dhcp)); - /* dhcp_set_state(&dhcp, DHCP_OFF); */ - netif->dhcp = dhcp; -} - -/** Removes a struct dhcp from a netif. - * - * ATTENTION: Only use this when not using dhcp_set_struct() to allocate the - * struct dhcp since the memory is passed back to the heap. - * - * @param netif the netif from which to remove the struct dhcp - */ -void dhcp_cleanup(struct netif *netif) -{ - LWIP_ASSERT("netif != NULL", netif != NULL); - - if (netif->dhcp != NULL) { - mem_free(netif->dhcp); - netif->dhcp = NULL; - } -} - -/** - * Start DHCP negotiation for a network interface. - * - * If no DHCP client instance was attached to this interface, - * a new client is created first. If a DHCP client instance - * was already present, it restarts negotiation. - * - * @param netif The lwIP network interface - * @return lwIP error code - * - ERR_OK - No error - * - ERR_MEM - Out of memory - */ -err_t -dhcp_start(struct netif *netif) -{ - struct dhcp *dhcp; - err_t result = ERR_OK; - - LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;); - dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* Remove the flag that says this netif is handled by DHCP, - it is set when we succeeded starting. */ - netif->flags &= ~NETIF_FLAG_DHCP; - - /* check hwtype of the netif */ - if ((netif->flags & NETIF_FLAG_ETHARP) == 0) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): No ETHARP netif\n")); - return ERR_ARG; - } - - /* check MTU of the netif */ - if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): Cannot use this netif with DHCP: MTU is too small\n")); - return ERR_MEM; - } - - /* no DHCP client attached yet? */ - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting new DHCP client\n")); - dhcp = (struct dhcp *)mem_malloc(sizeof(struct dhcp)); - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not allocate dhcp\n")); - return ERR_MEM; - } - /* store this dhcp client in the netif */ - netif->dhcp = dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): allocated dhcp")); - /* already has DHCP client attached */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(): restarting DHCP configuration\n")); - if (dhcp->pcb != NULL) { - udp_remove(dhcp->pcb); - } - LWIP_ASSERT("pbuf p_out wasn't freed", dhcp->p_out == NULL); - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL ); - } - - /* clear data structure */ - memset(dhcp, 0, sizeof(struct dhcp)); - /* dhcp_set_state(&dhcp, DHCP_OFF); */ - /* allocate UDP PCB */ - dhcp->pcb = udp_new(); - if (dhcp->pcb == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not obtain pcb\n")); - return ERR_MEM; - } - dhcp->pcb->so_options |= SOF_BROADCAST; - /* set up local and remote port for the pcb */ - udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); - udp_connect(dhcp->pcb, IP_ADDR_ANY, DHCP_SERVER_PORT); - /* set up the recv callback and argument */ - udp_recv(dhcp->pcb, dhcp_recv, netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting DHCP configuration\n")); - /* (re)start the DHCP negotiation */ - result = dhcp_discover(netif); - if (result != ERR_OK) { - /* free resources allocated above */ - dhcp_stop(netif); - return ERR_MEM; - } - /* Set the flag that says this netif is handled by DHCP. */ - netif->flags |= NETIF_FLAG_DHCP; - return result; -} - -/** - * Inform a DHCP server of our manual configuration. - * - * This informs DHCP servers of our fixed IP address configuration - * by sending an INFORM message. It does not involve DHCP address - * configuration, it is just here to be nice to the network. - * - * @param netif The lwIP network interface - */ -void -dhcp_inform(struct netif *netif) -{ - struct dhcp dhcp; - err_t result = ERR_OK; - struct udp_pcb *pcb; - - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - - memset(&dhcp, 0, sizeof(struct dhcp)); - dhcp_set_state(&dhcp, DHCP_INFORM); - - if ((netif->dhcp != NULL) && (netif->dhcp->pcb != NULL)) { - /* re-use existing pcb */ - pcb = netif->dhcp->pcb; - } else { - pcb = udp_new(); - if (pcb == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform(): could not obtain pcb")); - return; - } - dhcp.pcb = pcb; - dhcp.pcb->so_options |= SOF_BROADCAST; - udp_bind(dhcp.pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_inform(): created new udp pcb\n")); - } - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, &dhcp, DHCP_INFORM); - if (result == ERR_OK) { - dhcp_option(&dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(&dhcp, DHCP_MAX_MSG_LEN(netif)); - - dhcp_option_trailer(&dhcp); - - pbuf_realloc(dhcp.p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp.options_out_len); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_inform: INFORMING\n")); - udp_sendto_if(pcb, dhcp.p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_msg(&dhcp); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform: could not allocate DHCP request\n")); - } - - if (dhcp.pcb != NULL) { - /* otherwise, the existing pcb was used */ - udp_remove(dhcp.pcb); - } -} - -/** Handle a possible change in the network configuration. - * - * This enters the REBOOTING state to verify that the currently bound - * address is still valid. - */ -void -dhcp_network_changed(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - if (!dhcp) - return; - switch (dhcp->state) { - case DHCP_REBINDING: - case DHCP_RENEWING: - case DHCP_BOUND: - case DHCP_REBOOTING: - netif_set_down(netif); - dhcp->tries = 0; - dhcp_reboot(netif); - break; - case DHCP_OFF: - /* stay off */ - break; - default: - dhcp->tries = 0; -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) { - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - dhcp_discover(netif); - break; - } -} - -#if DHCP_DOES_ARP_CHECK -/** - * Match an ARP reply with the offered IP address. - * - * @param netif the network interface on which the reply was received - * @param addr The IP address we received a reply from - */ -void dhcp_arp_reply(struct netif *netif, ip_addr_t *addr) -{ - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_arp_reply()\n")); - /* is a DHCP client doing an ARP check? */ - if ((netif->dhcp != NULL) && (netif->dhcp->state == DHCP_CHECKING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_arp_reply(): CHECKING, arp reply for 0x%08"X32_F"\n", - ip4_addr_get_u32(addr))); - /* did a host respond with the address we - were offered by the DHCP server? */ - if (ip_addr_cmp(addr, &netif->dhcp->offered_ip_addr)) { - /* we will not accept the offered address */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("dhcp_arp_reply(): arp reply matched with offered address, declining\n")); - dhcp_decline(netif); - } - } -} - -/** - * Decline an offered lease. - * - * Tell the DHCP server we do not accept the offered address. - * One reason to decline the lease is when we find out the address - * is already in use by another host (through ARP). - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_decline(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result = ERR_OK; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline()\n")); - dhcp_set_state(dhcp, DHCP_BACKING_OFF); - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, dhcp, DHCP_DECLINE); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); - - dhcp_option_trailer(dhcp); - /* resize pbuf to reflect true size of options */ - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* per section 4.4.4, broadcast DECLINE messages */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_msg(dhcp); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_decline: BACKING OFF\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_decline: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = 10*1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} -#endif /* DHCP_DOES_ARP_CHECK */ - - -/** - * Start the DHCP process, discover a DHCP server. - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_discover(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result = ERR_OK; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover()\n")); - ip_addr_set_any(&dhcp->offered_ip_addr); - dhcp_set_state(dhcp, DHCP_SELECTING); - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, dhcp, DHCP_DISCOVER); - if (result == ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: making request\n")); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); - dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); - dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); - dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); - dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); - - dhcp_option_trailer(dhcp); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: realloc()ing\n")); - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: sendto(DISCOVER, IP_ADDR_BROADCAST, DHCP_SERVER_PORT)\n")); - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: deleting()ing\n")); - dhcp_delete_msg(dhcp); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover: SELECTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_discover: could not allocate DHCP request\n")); - } - dhcp->tries++; -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->tries >= LWIP_DHCP_AUTOIP_COOP_TRIES && dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_OFF) { - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_ON; - autoip_start(netif); - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - - -/** - * Bind the interface to the offered IP address. - * - * @param netif network interface to bind to the offered address - */ -static void -dhcp_bind(struct netif *netif) -{ - u32_t timeout; - struct dhcp *dhcp; - ip_addr_t sn_mask, gw_addr; - LWIP_ERROR("dhcp_bind: netif != NULL", (netif != NULL), return;); - dhcp = netif->dhcp; - LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - - /* temporary DHCP lease? */ - if (dhcp->offered_t1_renew != 0xffffffffUL) { - /* set renewal period timer */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t1 renewal timer %"U32_F" secs\n", dhcp->offered_t1_renew)); - timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - if(timeout > 0xffff) { - timeout = 0xffff; - } - dhcp->t1_timeout = (u16_t)timeout; - if (dhcp->t1_timeout == 0) { - dhcp->t1_timeout = 1; - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t1_renew*1000)); - } - /* set renewal period timer */ - if (dhcp->offered_t2_rebind != 0xffffffffUL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t2 rebind timer %"U32_F" secs\n", dhcp->offered_t2_rebind)); - timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - if(timeout > 0xffff) { - timeout = 0xffff; - } - dhcp->t2_timeout = (u16_t)timeout; - if (dhcp->t2_timeout == 0) { - dhcp->t2_timeout = 1; - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t2_rebind*1000)); - } - - if (dhcp->subnet_mask_given) { - /* copy offered network mask */ - ip_addr_copy(sn_mask, dhcp->offered_sn_mask); - } else { - /* subnet mask not given, choose a safe subnet mask given the network class */ - u8_t first_octet = ip4_addr1(&dhcp->offered_ip_addr); - if (first_octet <= 127) { - ip4_addr_set_u32(&sn_mask, PP_HTONL(0xff000000UL)); - } else if (first_octet >= 192) { - ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffffff00UL)); - } else { - ip4_addr_set_u32(&sn_mask, PP_HTONL(0xffff0000UL)); - } - } - - ip_addr_copy(gw_addr, dhcp->offered_gw_addr); - /* gateway address not given? */ - if (ip_addr_isany(&gw_addr)) { - /* copy network address */ - ip_addr_get_network(&gw_addr, &dhcp->offered_ip_addr, &sn_mask); - /* use first host address on network as gateway */ - ip4_addr_set_u32(&gw_addr, ip4_addr_get_u32(&gw_addr) | PP_HTONL(0x00000001UL)); - } - -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) { - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): IP: 0x%08"X32_F"\n", - ip4_addr_get_u32(&dhcp->offered_ip_addr))); - netif_set_ipaddr(netif, &dhcp->offered_ip_addr); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): SN: 0x%08"X32_F"\n", - ip4_addr_get_u32(&sn_mask))); - netif_set_netmask(netif, &sn_mask); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): GW: 0x%08"X32_F"\n", - ip4_addr_get_u32(&gw_addr))); - netif_set_gw(netif, &gw_addr); - /* bring the interface up */ - netif_set_up(netif); - /* netif is now bound to DHCP leased address */ - dhcp_set_state(dhcp, DHCP_BOUND); -} - -/** - * Renew an existing DHCP lease at the involved DHCP server. - * - * @param netif network interface which must renew its lease - */ -err_t -dhcp_renew(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_renew()\n")); - dhcp_set_state(dhcp, DHCP_RENEWING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - -#if LWIP_NETIF_HOSTNAME - if (netif->hostname != NULL) { - const char *p = (const char*)netif->hostname; - u8_t namelen = (u8_t)strlen(p); - if (namelen > 0) { - LWIP_ASSERT("DHCP: hostname is too long!", namelen < 255); - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, namelen); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); -#endif - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); -#endif - /* append DHCP message trailer */ - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); - dhcp_delete_msg(dhcp); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew: RENEWING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_renew: could not allocate DHCP request\n")); - } - dhcp->tries++; - /* back-off on retries, but to a maximum of 20 seconds */ - msecs = dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * Rebind with a DHCP server for an existing DHCP lease. - * - * @param netif network interface which must rebind with a DHCP server - */ -static err_t -dhcp_rebind(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind()\n")); - dhcp_set_state(dhcp, DHCP_REBINDING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - -#if LWIP_NETIF_HOSTNAME - if (netif->hostname != NULL) { - const char *p = (const char*)netif->hostname; - u8_t namelen = (u8_t)strlen(p); - if (namelen > 0) { - LWIP_ASSERT("DHCP: hostname is too long!", namelen < 255); - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, namelen); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); -#endif - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* broadcast to server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_msg(dhcp); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind: REBINDING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_rebind: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * Enter REBOOTING state to verify an existing lease - * - * @param netif network interface which must reboot - */ -static err_t -dhcp_reboot(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot()\n")); - dhcp_set_state(dhcp, DHCP_REBOOTING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, dhcp, DHCP_REQUEST); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, 576); - - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr))); - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* broadcast to server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_msg(dhcp); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot: REBOOTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_reboot: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - - -/** - * Release a DHCP lease. - * - * @param netif network interface which must release its lease - */ -err_t -dhcp_release(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_release()\n")); - - /* idle DHCP client */ - dhcp_set_state(dhcp, DHCP_OFF); - /* clean old DHCP offer */ - ip_addr_set_zero(&dhcp->server_ip_addr); - ip_addr_set_zero(&dhcp->offered_ip_addr); - ip_addr_set_zero(&dhcp->offered_sn_mask); - ip_addr_set_zero(&dhcp->offered_gw_addr); -#if LWIP_DHCP_BOOTP_FILE - ip_addr_set_zero(&dhcp->offered_si_addr); -#endif /* LWIP_DHCP_BOOTP_FILE */ - dhcp->offered_t0_lease = dhcp->offered_t1_renew = dhcp->offered_t2_rebind = 0; - - /* create and initialize the DHCP message header */ - result = dhcp_create_msg(netif, dhcp, DHCP_RELEASE); - if (result == ERR_OK) { - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); - dhcp_delete_msg(dhcp); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release: RELEASED, DHCP_OFF\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_release: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release(): set request timeout %"U16_F" msecs\n", msecs)); - /* bring the interface down */ - netif_set_down(netif); - /* remove IP address from interface */ - netif_set_ipaddr(netif, IP_ADDR_ANY); - netif_set_gw(netif, IP_ADDR_ANY); - netif_set_netmask(netif, IP_ADDR_ANY); - - return result; -} - -/** - * Remove the DHCP client from the interface. - * - * @param netif The network interface to stop DHCP on - */ -void -dhcp_stop(struct netif *netif) -{ - struct dhcp *dhcp; - LWIP_ERROR("dhcp_stop: netif != NULL", (netif != NULL), return;); - dhcp = netif->dhcp; - /* Remove the flag that says this netif is handled by DHCP. */ - netif->flags &= ~NETIF_FLAG_DHCP; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_stop()\n")); - /* netif is DHCP configured? */ - if (dhcp != NULL) { -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) { - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - - if (dhcp->pcb != NULL) { - udp_remove(dhcp->pcb); - dhcp->pcb = NULL; - } - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL); - dhcp_set_state(dhcp, DHCP_OFF); - } -} - -/* - * Set the DHCP state of a DHCP client. - * - * If the state changed, reset the number of tries. - */ -static void -dhcp_set_state(struct dhcp *dhcp, u8_t new_state) -{ - if (new_state != dhcp->state) { - dhcp->state = new_state; - dhcp->tries = 0; - dhcp->request_timeout = 0; - } -} - -/* - * Concatenate an option type and length field to the outgoing - * DHCP message. - * - */ -static void -dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len) -{ - LWIP_ASSERT("dhcp_option: dhcp->options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = option_type; - dhcp->msg_out->options[dhcp->options_out_len++] = option_len; -} -/* - * Concatenate a single byte to the outgoing DHCP message. - * - */ -static void -dhcp_option_byte(struct dhcp *dhcp, u8_t value) -{ - LWIP_ASSERT("dhcp_option_byte: dhcp->options_out_len < DHCP_OPTIONS_LEN", dhcp->options_out_len < DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = value; -} - -static void -dhcp_option_short(struct dhcp *dhcp, u16_t value) -{ - LWIP_ASSERT("dhcp_option_short: dhcp->options_out_len + 2 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff00U) >> 8); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t) (value & 0x00ffU); -} - -static void -dhcp_option_long(struct dhcp *dhcp, u32_t value) -{ - LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x000000ffUL)); -} - -/** - * Extract the DHCP message and the DHCP options. - * - * Extract the DHCP message and the DHCP options, each into a contiguous - * piece of memory. As a DHCP message is variable sized by its options, - * and also allows overriding some fields for options, the easy approach - * is to first unfold the options into a conitguous piece of memory, and - * use that further on. - * - */ -static err_t -dhcp_parse_reply(struct dhcp *dhcp, struct pbuf *p) -{ - u8_t *options; - u16_t offset; - u16_t offset_max; - u16_t options_idx; - u16_t options_idx_max; - struct pbuf *q; - int parse_file_as_options = 0; - int parse_sname_as_options = 0; - - /* clear received options */ - dhcp_clear_all_options(dhcp); - /* check that beginning of dhcp_msg (up to and including chaddr) is in first pbuf */ - if (p->len < DHCP_SNAME_OFS) { - return ERR_BUF; - } - dhcp->msg_in = (struct dhcp_msg *)p->payload; -#if LWIP_DHCP_BOOTP_FILE - /* clear boot file name */ - dhcp->boot_file_name[0] = 0; -#endif /* LWIP_DHCP_BOOTP_FILE */ - - /* parse options */ - - /* start with options field */ - options_idx = DHCP_OPTIONS_OFS; - /* parse options to the end of the received packet */ - options_idx_max = p->tot_len; -again: - q = p; - while((q != NULL) && (options_idx >= q->len)) { - options_idx -= q->len; - options_idx_max -= q->len; - q = q->next; - } - if (q == NULL) { - return ERR_BUF; - } - offset = options_idx; - offset_max = options_idx_max; - options = (u8_t*)q->payload; - /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */ - while((q != NULL) && (options[offset] != DHCP_OPTION_END) && (offset < offset_max)) { - u8_t op = options[offset]; - u8_t len; - u8_t decode_len = 0; - int decode_idx = -1; - u16_t val_offset = offset + 2; - /* len byte might be in the next pbuf */ - if (offset + 1 < q->len) { - len = options[offset + 1]; - } else { - len = (q->next != NULL ? ((u8_t*)q->next->payload)[0] : 0); - } - /* LWIP_DEBUGF(DHCP_DEBUG, ("msg_offset=%"U16_F", q->len=%"U16_F, msg_offset, q->len)); */ - decode_len = len; - switch(op) { - /* case(DHCP_OPTION_END): handled above */ - case(DHCP_OPTION_PAD): - /* special option: no len encoded */ - decode_len = len = 0; - /* will be increased below */ - offset--; - break; - case(DHCP_OPTION_SUBNET_MASK): - LWIP_ASSERT("len == 4", len == 4); - decode_idx = DHCP_OPTION_IDX_SUBNET_MASK; - break; - case(DHCP_OPTION_ROUTER): - decode_len = 4; /* only copy the first given router */ - LWIP_ASSERT("len >= decode_len", len >= decode_len); - decode_idx = DHCP_OPTION_IDX_ROUTER; - break; - case(DHCP_OPTION_DNS_SERVER): - /* special case: there might be more than one server */ - LWIP_ASSERT("len % 4 == 0", len % 4 == 0); - /* limit number of DNS servers */ - decode_len = LWIP_MIN(len, 4 * DNS_MAX_SERVERS); - LWIP_ASSERT("len >= decode_len", len >= decode_len); - decode_idx = DHCP_OPTION_IDX_DNS_SERVER; - break; - case(DHCP_OPTION_LEASE_TIME): - LWIP_ASSERT("len == 4", len == 4); - decode_idx = DHCP_OPTION_IDX_LEASE_TIME; - break; - case(DHCP_OPTION_OVERLOAD): - LWIP_ASSERT("len == 1", len == 1); - decode_idx = DHCP_OPTION_IDX_OVERLOAD; - break; - case(DHCP_OPTION_MESSAGE_TYPE): - LWIP_ASSERT("len == 1", len == 1); - decode_idx = DHCP_OPTION_IDX_MSG_TYPE; - break; - case(DHCP_OPTION_SERVER_ID): - LWIP_ASSERT("len == 4", len == 4); - decode_idx = DHCP_OPTION_IDX_SERVER_ID; - break; - case(DHCP_OPTION_T1): - LWIP_ASSERT("len == 4", len == 4); - decode_idx = DHCP_OPTION_IDX_T1; - break; - case(DHCP_OPTION_T2): - LWIP_ASSERT("len == 4", len == 4); - decode_idx = DHCP_OPTION_IDX_T2; - break; - default: - decode_len = 0; - LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", op)); - break; - } - offset += len + 2; - if (decode_len > 0) { - u32_t value = 0; - u16_t copy_len; -decode_next: - LWIP_ASSERT("check decode_idx", decode_idx >= 0 && decode_idx < DHCP_OPTION_IDX_MAX); - LWIP_ASSERT("option already decoded", !dhcp_option_given(dhcp, decode_idx)); - copy_len = LWIP_MIN(decode_len, 4); - pbuf_copy_partial(q, &value, copy_len, val_offset); - if (decode_len > 4) { - /* decode more than one u32_t */ - LWIP_ASSERT("decode_len % 4 == 0", decode_len % 4 == 0); - dhcp_got_option(dhcp, decode_idx); - dhcp_set_option_value(dhcp, decode_idx, htonl(value)); - decode_len -= 4; - val_offset += 4; - decode_idx++; - goto decode_next; - } else if (decode_len == 4) { - value = ntohl(value); - } else { - LWIP_ASSERT("invalid decode_len", decode_len == 1); - value = ((u8_t*)&value)[0]; - } - dhcp_got_option(dhcp, decode_idx); - dhcp_set_option_value(dhcp, decode_idx, value); - } - if (offset >= q->len) { - offset -= q->len; - offset_max -= q->len; - q = q->next; - options = (u8_t*)q->payload; - } - } - /* is this an overloaded message? */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_OVERLOAD)) { - u32_t overload = dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_OVERLOAD); - dhcp_clear_option(dhcp, DHCP_OPTION_IDX_OVERLOAD); - if (overload == DHCP_OVERLOAD_FILE) { - parse_file_as_options = 1; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded file field\n")); - } else if (overload == DHCP_OVERLOAD_SNAME) { - parse_sname_as_options = 1; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname field\n")); - } else if (overload == DHCP_OVERLOAD_SNAME_FILE) { - parse_sname_as_options = 1; - parse_file_as_options = 1; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname and file field\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("invalid overload option: %d\n", (int)overload)); - } -#if LWIP_DHCP_BOOTP_FILE - if (!parse_file_as_options) { - /* only do this for ACK messages */ - if (dhcp_option_given(dhcp, DHCP_OPTION_IDX_MSG_TYPE) && - (dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_MSG_TYPE) == DHCP_ACK)) - /* copy bootp file name, don't care for sname (server hostname) */ - pbuf_copy_partial(p, dhcp->boot_file_name, DHCP_FILE_LEN-1, DHCP_FILE_OFS); - /* make sure the string is really NULL-terminated */ - dhcp->boot_file_name[DHCP_FILE_LEN-1] = 0; - } -#endif /* LWIP_DHCP_BOOTP_FILE */ - } - if (parse_file_as_options) { - /* if both are overloaded, parse file first and then sname (RFC 2131 ch. 4.1) */ - parse_file_as_options = 0; - options_idx = DHCP_FILE_OFS; - options_idx_max = DHCP_FILE_OFS + DHCP_FILE_LEN; - goto again; - } else if (parse_sname_as_options) { - parse_sname_as_options = 0; - options_idx = DHCP_SNAME_OFS; - options_idx_max = DHCP_SNAME_OFS + DHCP_SNAME_LEN; - goto again; - } - return ERR_OK; -} - -/** - * If an incoming DHCP message is in response to us, then trigger the state machine - */ -static void -dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) -{ - struct netif *netif = (struct netif *)arg; - struct dhcp *dhcp = netif->dhcp; - struct dhcp_msg *reply_msg = (struct dhcp_msg *)p->payload; - u8_t msg_type; - u8_t i; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_recv(pbuf = %p) from DHCP server %"U16_F".%"U16_F".%"U16_F".%"U16_F" port %"U16_F"\n", (void*)p, - ip4_addr1_16(addr), ip4_addr2_16(addr), ip4_addr3_16(addr), ip4_addr4_16(addr), port)); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->len = %"U16_F"\n", p->len)); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->tot_len = %"U16_F"\n", p->tot_len)); - /* prevent warnings about unused arguments */ - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(addr); - LWIP_UNUSED_ARG(port); - - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL); - - if (p->len < DHCP_MIN_REPLY_LEN) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP reply message or pbuf too short\n")); - goto free_pbuf_and_return; - } - - if (reply_msg->op != DHCP_BOOTREPLY) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op)); - goto free_pbuf_and_return; - } - /* iterate through hardware address and match against DHCP message */ - for (i = 0; i < netif->hwaddr_len; i++) { - if (netif->hwaddr[i] != reply_msg->chaddr[i]) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("netif->hwaddr[%"U16_F"]==%02"X16_F" != reply_msg->chaddr[%"U16_F"]==%02"X16_F"\n", - (u16_t)i, (u16_t)netif->hwaddr[i], (u16_t)i, (u16_t)reply_msg->chaddr[i])); - goto free_pbuf_and_return; - } - } - /* match transaction ID against what we expected */ - if (ntohl(reply_msg->xid) != dhcp->xid) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("transaction id mismatch reply_msg->xid(%"X32_F")!=dhcp->xid(%"X32_F")\n",ntohl(reply_msg->xid),dhcp->xid)); - goto free_pbuf_and_return; - } - /* option fields could be unfold? */ - if (dhcp_parse_reply(dhcp, p) != ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("problem unfolding DHCP message - too short on memory?\n")); - goto free_pbuf_and_return; - } - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("searching DHCP_OPTION_MESSAGE_TYPE\n")); - /* obtain pointer to DHCP message type */ - if (!dhcp_option_given(dhcp, DHCP_OPTION_IDX_MSG_TYPE)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP_OPTION_MESSAGE_TYPE option not found\n")); - goto free_pbuf_and_return; - } - - /* read DHCP message type */ - msg_type = (u8_t)dhcp_get_option_value(dhcp, DHCP_OPTION_IDX_MSG_TYPE); - /* message type is DHCP ACK? */ - if (msg_type == DHCP_ACK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_ACK received\n")); - /* in requesting state? */ - if (dhcp->state == DHCP_REQUESTING) { - dhcp_handle_ack(netif); -#if DHCP_DOES_ARP_CHECK - /* check if the acknowledged lease address is already in use */ - dhcp_check(netif); -#else - /* bind interface to the acknowledged lease address */ - dhcp_bind(netif); -#endif - } - /* already bound to the given lease address? */ - else if ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING)) { - dhcp_bind(netif); - } - } - /* received a DHCP_NAK in appropriate state? */ - else if ((msg_type == DHCP_NAK) && - ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REQUESTING) || - (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING ))) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_NAK received\n")); - dhcp_handle_nak(netif); - } - /* received a DHCP_OFFER in DHCP_SELECTING state? */ - else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_SELECTING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_OFFER received in DHCP_SELECTING state\n")); - dhcp->request_timeout = 0; - /* remember offered lease */ - dhcp_handle_offer(netif); - } -free_pbuf_and_return: - dhcp->msg_in = NULL; - pbuf_free(p); -} - -/** - * Create a DHCP request, fill in common headers - * - * @param netif the netif under DHCP control - * @param dhcp dhcp control struct - * @param message_type message type of the request - */ -static err_t -dhcp_create_msg(struct netif *netif, struct dhcp *dhcp, u8_t message_type) -{ - u16_t i; -#ifndef DHCP_GLOBAL_XID - /** default global transaction identifier starting value (easy to match - * with a packet analyser). We simply increment for each new request. - * Predefine DHCP_GLOBAL_XID to a better value or a function call to generate one - * at runtime, any supporting function prototypes can be defined in DHCP_GLOBAL_XID_HEADER */ - static u32_t xid = 0xABCD0000; -#else - if (!xid_initialised) { - xid = DHCP_GLOBAL_XID; - xid_initialised = !xid_initialised; - } -#endif - LWIP_ERROR("dhcp_create_msg: netif != NULL", (netif != NULL), return ERR_ARG;); - LWIP_ERROR("dhcp_create_msg: dhcp != NULL", (dhcp != NULL), return ERR_VAL;); - LWIP_ASSERT("dhcp_create_msg: dhcp->p_out == NULL", dhcp->p_out == NULL); - LWIP_ASSERT("dhcp_create_msg: dhcp->msg_out == NULL", dhcp->msg_out == NULL); - dhcp->p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM); - if (dhcp->p_out == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_create_msg(): could not allocate pbuf\n")); - return ERR_MEM; - } - LWIP_ASSERT("dhcp_create_msg: check that first pbuf can hold struct dhcp_msg", - (dhcp->p_out->len >= sizeof(struct dhcp_msg))); - - /* reuse transaction identifier in retransmissions */ - if (dhcp->tries == 0) { - xid++; - } - dhcp->xid = xid; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, - ("transaction id xid(%"X32_F")\n", xid)); - - dhcp->msg_out = (struct dhcp_msg *)dhcp->p_out->payload; - - dhcp->msg_out->op = DHCP_BOOTREQUEST; - /* TODO: make link layer independent */ - dhcp->msg_out->htype = DHCP_HTYPE_ETH; - dhcp->msg_out->hlen = netif->hwaddr_len; - dhcp->msg_out->hops = 0; - dhcp->msg_out->xid = htonl(dhcp->xid); - dhcp->msg_out->secs = 0; - /* we don't need the broadcast flag since we can receive unicast traffic - before being fully configured! */ - dhcp->msg_out->flags = 0; - ip_addr_set_zero(&dhcp->msg_out->ciaddr); - /* set ciaddr to netif->ip_addr based on message_type and state */ - if ((message_type == DHCP_INFORM) || (message_type == DHCP_DECLINE) || - ((message_type == DHCP_REQUEST) && /* DHCP_BOUND not used for sending! */ - ((dhcp->state==DHCP_RENEWING) || dhcp->state==DHCP_REBINDING))) { - ip_addr_copy(dhcp->msg_out->ciaddr, netif->ip_addr); - } - ip_addr_set_zero(&dhcp->msg_out->yiaddr); - ip_addr_set_zero(&dhcp->msg_out->siaddr); - ip_addr_set_zero(&dhcp->msg_out->giaddr); - for (i = 0; i < DHCP_CHADDR_LEN; i++) { - /* copy netif hardware address, pad with zeroes */ - dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/; - } - for (i = 0; i < DHCP_SNAME_LEN; i++) { - dhcp->msg_out->sname[i] = 0; - } - for (i = 0; i < DHCP_FILE_LEN; i++) { - dhcp->msg_out->file[i] = 0; - } - dhcp->msg_out->cookie = PP_HTONL(DHCP_MAGIC_COOKIE); - dhcp->options_out_len = 0; - /* fill options field with an incrementing array (for debugging purposes) */ - for (i = 0; i < DHCP_OPTIONS_LEN; i++) { - dhcp->msg_out->options[i] = (u8_t)i; /* for debugging only, no matter if truncated */ - } - /* Add option MESSAGE_TYPE */ - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, message_type); - return ERR_OK; -} - -/** - * Free previously allocated memory used to send a DHCP request. - * - * @param dhcp the dhcp struct to free the request from - */ -static void -dhcp_delete_msg(struct dhcp *dhcp) -{ - LWIP_ERROR("dhcp_delete_msg: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_delete_msg: dhcp->p_out != NULL", dhcp->p_out != NULL); - LWIP_ASSERT("dhcp_delete_msg: dhcp->msg_out != NULL", dhcp->msg_out != NULL); - if (dhcp->p_out != NULL) { - pbuf_free(dhcp->p_out); - } - dhcp->p_out = NULL; - dhcp->msg_out = NULL; -} - -/** - * Add a DHCP message trailer - * - * Adds the END option to the DHCP message, and if - * necessary, up to three padding bytes. - * - * @param dhcp DHCP state structure - */ -static void -dhcp_option_trailer(struct dhcp *dhcp) -{ - LWIP_ERROR("dhcp_option_trailer: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_option_trailer: dhcp->msg_out != NULL\n", dhcp->msg_out != NULL); - LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = DHCP_OPTION_END; - /* packet is too small, or not 4 byte aligned? */ - while ((dhcp->options_out_len < DHCP_MIN_OPTIONS_LEN) || (dhcp->options_out_len & 3)) { - /* LWIP_DEBUGF(DHCP_DEBUG,("dhcp_option_trailer:dhcp->options_out_len=%"U16_F", DHCP_OPTIONS_LEN=%"U16_F, dhcp->options_out_len, DHCP_OPTIONS_LEN)); */ - LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN); - /* add a fill/padding byte */ - dhcp->msg_out->options[dhcp->options_out_len++] = 0; - } -} - -#endif /* LWIP_DHCP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dns.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dns.c deleted file mode 100644 index d63361226..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/dns.c +++ /dev/null @@ -1,970 +0,0 @@ -/** - * @file - * DNS - host name to IP address resolver. - * - */ - -/** - - * This file implements a DNS host name to IP address resolver. - - * Port to lwIP from uIP - * by Jim Pettinato April 2007 - - * uIP version Copyright (c) 2002-2003, Adam Dunkels. - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. 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. - * - * - * DNS.C - * - * The lwIP DNS resolver functions are used to lookup a host name and - * map it to a numerical IP address. It maintains a list of resolved - * hostnames that can be queried with the dns_lookup() function. - * New hostnames can be resolved using the dns_query() function. - * - * The lwIP version of the resolver also adds a non-blocking version of - * gethostbyname() that will work with a raw API application. This function - * checks for an IP address string first and converts it if it is valid. - * gethostbyname() then does a dns_lookup() to see if the name is - * already in the table. If so, the IP is returned. If not, a query is - * issued and the function returns with a ERR_INPROGRESS status. The app - * using the dns client must then go into a waiting state. - * - * Once a hostname has been resolved (or found to be non-existent), - * the resolver code calls a specified callback function (which - * must be implemented by the module that uses the resolver). - */ - -/*----------------------------------------------------------------------------- - * RFC 1035 - Domain names - implementation and specification - * RFC 2181 - Clarifications to the DNS Specification - *----------------------------------------------------------------------------*/ - -/** @todo: define good default values (rfc compliance) */ -/** @todo: improve answer parsing, more checkings... */ -/** @todo: check RFC1035 - 7.3. Processing responses */ - -/*----------------------------------------------------------------------------- - * Includes - *----------------------------------------------------------------------------*/ - -#include "lwip/opt.h" - -#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/udp.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/dns.h" - -#include - -/** DNS server IP address */ -#ifndef DNS_SERVER_ADDRESS -#define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */ -#endif - -/** DNS server port address */ -#ifndef DNS_SERVER_PORT -#define DNS_SERVER_PORT 53 -#endif - -/** DNS maximum number of retries when asking for a name, before "timeout". */ -#ifndef DNS_MAX_RETRIES -#define DNS_MAX_RETRIES 4 -#endif - -/** DNS resource record max. TTL (one week as default) */ -#ifndef DNS_MAX_TTL -#define DNS_MAX_TTL 604800 -#endif - -/* DNS protocol flags */ -#define DNS_FLAG1_RESPONSE 0x80 -#define DNS_FLAG1_OPCODE_STATUS 0x10 -#define DNS_FLAG1_OPCODE_INVERSE 0x08 -#define DNS_FLAG1_OPCODE_STANDARD 0x00 -#define DNS_FLAG1_AUTHORATIVE 0x04 -#define DNS_FLAG1_TRUNC 0x02 -#define DNS_FLAG1_RD 0x01 -#define DNS_FLAG2_RA 0x80 -#define DNS_FLAG2_ERR_MASK 0x0f -#define DNS_FLAG2_ERR_NONE 0x00 -#define DNS_FLAG2_ERR_NAME 0x03 - -/* DNS protocol states */ -#define DNS_STATE_UNUSED 0 -#define DNS_STATE_NEW 1 -#define DNS_STATE_ASKING 2 -#define DNS_STATE_DONE 3 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** DNS message header */ -struct dns_hdr { - PACK_STRUCT_FIELD(u16_t id); - PACK_STRUCT_FIELD(u8_t flags1); - PACK_STRUCT_FIELD(u8_t flags2); - PACK_STRUCT_FIELD(u16_t numquestions); - PACK_STRUCT_FIELD(u16_t numanswers); - PACK_STRUCT_FIELD(u16_t numauthrr); - PACK_STRUCT_FIELD(u16_t numextrarr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define SIZEOF_DNS_HDR 12 - -/** DNS query message structure. - No packing needed: only used locally on the stack. */ -struct dns_query { - /* DNS query record starts with either a domain name or a pointer - to a name already present somewhere in the packet. */ - u16_t type; - u16_t cls; -}; -#define SIZEOF_DNS_QUERY 4 - -/** DNS answer message structure. - No packing needed: only used locally on the stack. */ -struct dns_answer { - /* DNS answer record starts with either a domain name or a pointer - to a name already present somewhere in the packet. */ - u16_t type; - u16_t cls; - u32_t ttl; - u16_t len; -}; -#define SIZEOF_DNS_ANSWER 10 - -/** DNS table entry */ -struct dns_table_entry { - u8_t state; - u8_t numdns; - u8_t tmr; - u8_t retries; - u8_t seqno; - u8_t err; - u32_t ttl; - char name[DNS_MAX_NAME_LENGTH]; - ip_addr_t ipaddr; - /* pointer to callback on DNS query done */ - dns_found_callback found; - void *arg; -}; - -#if DNS_LOCAL_HOSTLIST - -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC -/** Local host-list. For hostnames in this list, no - * external name resolution is performed */ -static struct local_hostlist_entry *local_hostlist_dynamic; -#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -/** Defining this allows the local_hostlist_static to be placed in a different - * linker section (e.g. FLASH) */ -#ifndef DNS_LOCAL_HOSTLIST_STORAGE_PRE -#define DNS_LOCAL_HOSTLIST_STORAGE_PRE static -#endif /* DNS_LOCAL_HOSTLIST_STORAGE_PRE */ -/** Defining this allows the local_hostlist_static to be placed in a different - * linker section (e.g. FLASH) */ -#ifndef DNS_LOCAL_HOSTLIST_STORAGE_POST -#define DNS_LOCAL_HOSTLIST_STORAGE_POST -#endif /* DNS_LOCAL_HOSTLIST_STORAGE_POST */ -DNS_LOCAL_HOSTLIST_STORAGE_PRE struct local_hostlist_entry local_hostlist_static[] - DNS_LOCAL_HOSTLIST_STORAGE_POST = DNS_LOCAL_HOSTLIST_INIT; - -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -static void dns_init_local(); -#endif /* DNS_LOCAL_HOSTLIST */ - - -/* forward declarations */ -static void dns_recv(void *s, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port); -static void dns_check_entries(void); - -/*----------------------------------------------------------------------------- - * Globales - *----------------------------------------------------------------------------*/ - -/* DNS variables */ -static struct udp_pcb *dns_pcb; -static u8_t dns_seqno; -static struct dns_table_entry dns_table[DNS_TABLE_SIZE]; -static ip_addr_t dns_servers[DNS_MAX_SERVERS]; -/** Contiguous buffer for processing responses */ -static u8_t dns_payload_buffer[LWIP_MEM_ALIGN_BUFFER(DNS_MSG_SIZE)]; -static u8_t* dns_payload; - -/** - * Initialize the resolver: set up the UDP pcb and configure the default server - * (DNS_SERVER_ADDRESS). - */ -void -dns_init() -{ - ip_addr_t dnsserver; - - dns_payload = (u8_t *)LWIP_MEM_ALIGN(dns_payload_buffer); - - /* initialize default DNS server address */ - DNS_SERVER_ADDRESS(&dnsserver); - - LWIP_DEBUGF(DNS_DEBUG, ("dns_init: initializing\n")); - - /* if dns client not yet initialized... */ - if (dns_pcb == NULL) { - dns_pcb = udp_new(); - - if (dns_pcb != NULL) { - /* initialize DNS table not needed (initialized to zero since it is a - * global variable) */ - LWIP_ASSERT("For implicit initialization to work, DNS_STATE_UNUSED needs to be 0", - DNS_STATE_UNUSED == 0); - - /* initialize DNS client */ - udp_bind(dns_pcb, IP_ADDR_ANY, 0); - udp_recv(dns_pcb, dns_recv, NULL); - - /* initialize default DNS primary server */ - dns_setserver(0, &dnsserver); - } - } -#if DNS_LOCAL_HOSTLIST - dns_init_local(); -#endif -} - -/** - * Initialize one of the DNS servers. - * - * @param numdns the index of the DNS server to set must be < DNS_MAX_SERVERS - * @param dnsserver IP address of the DNS server to set - */ -void -dns_setserver(u8_t numdns, ip_addr_t *dnsserver) -{ - if ((numdns < DNS_MAX_SERVERS) && (dns_pcb != NULL) && - (dnsserver != NULL) && !ip_addr_isany(dnsserver)) { - dns_servers[numdns] = (*dnsserver); - } -} - -/** - * Obtain one of the currently configured DNS server. - * - * @param numdns the index of the DNS server - * @return IP address of the indexed DNS server or "ip_addr_any" if the DNS - * server has not been configured. - */ -ip_addr_t -dns_getserver(u8_t numdns) -{ - if (numdns < DNS_MAX_SERVERS) { - return dns_servers[numdns]; - } else { - return *IP_ADDR_ANY; - } -} - -/** - * The DNS resolver client timer - handle retries and timeouts and should - * be called every DNS_TMR_INTERVAL milliseconds (every second by default). - */ -void -dns_tmr(void) -{ - if (dns_pcb != NULL) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_tmr: dns_check_entries\n")); - dns_check_entries(); - } -} - -#if DNS_LOCAL_HOSTLIST -static void -dns_init_local() -{ -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT) - int i; - struct local_hostlist_entry *entry; - /* Dynamic: copy entries from DNS_LOCAL_HOSTLIST_INIT to list */ - struct local_hostlist_entry local_hostlist_init[] = DNS_LOCAL_HOSTLIST_INIT; - size_t namelen; - for (i = 0; i < sizeof(local_hostlist_init) / sizeof(struct local_hostlist_entry); i++) { - struct local_hostlist_entry *init_entry = &local_hostlist_init[i]; - LWIP_ASSERT("invalid host name (NULL)", init_entry->name != NULL); - namelen = strlen(init_entry->name); - LWIP_ASSERT("namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN", namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN); - entry = (struct local_hostlist_entry *)memp_malloc(MEMP_LOCALHOSTLIST); - LWIP_ASSERT("mem-error in dns_init_local", entry != NULL); - if (entry != NULL) { - entry->name = (char*)entry + sizeof(struct local_hostlist_entry); - MEMCPY((char*)entry->name, init_entry->name, namelen); - ((char*)entry->name)[namelen] = 0; - entry->addr = init_entry->addr; - entry->next = local_hostlist_dynamic; - local_hostlist_dynamic = entry; - } - } -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT) */ -} - -/** - * Scans the local host-list for a hostname. - * - * @param hostname Hostname to look for in the local host-list - * @return The first IP address for the hostname in the local host-list or - * IPADDR_NONE if not found. - */ -static u32_t -dns_lookup_local(const char *hostname) -{ -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC - struct local_hostlist_entry *entry = local_hostlist_dynamic; - while(entry != NULL) { - if(strcmp(entry->name, hostname) == 0) { - return ip4_addr_get_u32(&entry->addr); - } - entry = entry->next; - } -#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - int i; - for (i = 0; i < sizeof(local_hostlist_static) / sizeof(struct local_hostlist_entry); i++) { - if(strcmp(local_hostlist_static[i].name, hostname) == 0) { - return ip4_addr_get_u32(&local_hostlist_static[i].addr); - } - } -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - return IPADDR_NONE; -} - -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC -/** Remove all entries from the local host-list for a specific hostname - * and/or IP addess - * - * @param hostname hostname for which entries shall be removed from the local - * host-list - * @param addr address for which entries shall be removed from the local host-list - * @return the number of removed entries - */ -int -dns_local_removehost(const char *hostname, const ip_addr_t *addr) -{ - int removed = 0; - struct local_hostlist_entry *entry = local_hostlist_dynamic; - struct local_hostlist_entry *last_entry = NULL; - while (entry != NULL) { - if (((hostname == NULL) || !strcmp(entry->name, hostname)) && - ((addr == NULL) || ip_addr_cmp(&entry->addr, addr))) { - struct local_hostlist_entry *free_entry; - if (last_entry != NULL) { - last_entry->next = entry->next; - } else { - local_hostlist_dynamic = entry->next; - } - free_entry = entry; - entry = entry->next; - memp_free(MEMP_LOCALHOSTLIST, free_entry); - removed++; - } else { - last_entry = entry; - entry = entry->next; - } - } - return removed; -} - -/** - * Add a hostname/IP address pair to the local host-list. - * Duplicates are not checked. - * - * @param hostname hostname of the new entry - * @param addr IP address of the new entry - * @return ERR_OK if succeeded or ERR_MEM on memory error - */ -err_t -dns_local_addhost(const char *hostname, const ip_addr_t *addr) -{ - struct local_hostlist_entry *entry; - size_t namelen; - LWIP_ASSERT("invalid host name (NULL)", hostname != NULL); - namelen = strlen(hostname); - LWIP_ASSERT("namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN", namelen <= DNS_LOCAL_HOSTLIST_MAX_NAMELEN); - entry = (struct local_hostlist_entry *)memp_malloc(MEMP_LOCALHOSTLIST); - if (entry == NULL) { - return ERR_MEM; - } - entry->name = (char*)entry + sizeof(struct local_hostlist_entry); - MEMCPY((char*)entry->name, hostname, namelen); - ((char*)entry->name)[namelen] = 0; - ip_addr_copy(entry->addr, *addr); - entry->next = local_hostlist_dynamic; - local_hostlist_dynamic = entry; - return ERR_OK; -} -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC*/ -#endif /* DNS_LOCAL_HOSTLIST */ - -/** - * Look up a hostname in the array of known hostnames. - * - * @note This function only looks in the internal array of known - * hostnames, it does not send out a query for the hostname if none - * was found. The function dns_enqueue() can be used to send a query - * for a hostname. - * - * @param name the hostname to look up - * @return the hostname's IP address, as u32_t (instead of ip_addr_t to - * better check for failure: != IPADDR_NONE) or IPADDR_NONE if the hostname - * was not found in the cached dns_table. - */ -static u32_t -dns_lookup(const char *name) -{ - u8_t i; -#if DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN) - u32_t addr; -#endif /* DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN) */ -#if DNS_LOCAL_HOSTLIST - if ((addr = dns_lookup_local(name)) != IPADDR_NONE) { - return addr; - } -#endif /* DNS_LOCAL_HOSTLIST */ -#ifdef DNS_LOOKUP_LOCAL_EXTERN - if((addr = DNS_LOOKUP_LOCAL_EXTERN(name)) != IPADDR_NONE) { - return addr; - } -#endif /* DNS_LOOKUP_LOCAL_EXTERN */ - - /* Walk through name list, return entry if found. If not, return NULL. */ - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - if ((dns_table[i].state == DNS_STATE_DONE) && - (strcmp(name, dns_table[i].name) == 0)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_lookup: \"%s\": found = ", name)); - ip_addr_debug_print(DNS_DEBUG, &(dns_table[i].ipaddr)); - LWIP_DEBUGF(DNS_DEBUG, ("\n")); - return ip4_addr_get_u32(&dns_table[i].ipaddr); - } - } - - return IPADDR_NONE; -} - -#if DNS_DOES_NAME_CHECK -/** - * Compare the "dotted" name "query" with the encoded name "response" - * to make sure an answer from the DNS server matches the current dns_table - * entry (otherwise, answers might arrive late for hostname not on the list - * any more). - * - * @param query hostname (not encoded) from the dns_table - * @param response encoded hostname in the DNS response - * @return 0: names equal; 1: names differ - */ -static u8_t -dns_compare_name(unsigned char *query, unsigned char *response) -{ - unsigned char n; - - do { - n = *response++; - /** @see RFC 1035 - 4.1.4. Message compression */ - if ((n & 0xc0) == 0xc0) { - /* Compressed name */ - break; - } else { - /* Not compressed name */ - while (n > 0) { - if ((*query) != (*response)) { - return 1; - } - ++response; - ++query; - --n; - }; - ++query; - } - } while (*response != 0); - - return 0; -} -#endif /* DNS_DOES_NAME_CHECK */ - -/** - * Walk through a compact encoded DNS name and return the end of the name. - * - * @param query encoded DNS name in the DNS server response - * @return end of the name - */ -static unsigned char * -dns_parse_name(unsigned char *query) -{ - unsigned char n; - - do { - n = *query++; - /** @see RFC 1035 - 4.1.4. Message compression */ - if ((n & 0xc0) == 0xc0) { - /* Compressed name */ - break; - } else { - /* Not compressed name */ - while (n > 0) { - ++query; - --n; - }; - } - } while (*query != 0); - - return query + 1; -} - -/** - * Send a DNS query packet. - * - * @param numdns index of the DNS server in the dns_servers table - * @param name hostname to query - * @param id index of the hostname in dns_table, used as transaction ID in the - * DNS query packet - * @return ERR_OK if packet is sent; an err_t indicating the problem otherwise - */ -static err_t -dns_send(u8_t numdns, const char* name, u8_t id) -{ - err_t err; - struct dns_hdr *hdr; - struct dns_query qry; - struct pbuf *p; - char *query, *nptr; - const char *pHostname; - u8_t n; - - LWIP_DEBUGF(DNS_DEBUG, ("dns_send: dns_servers[%"U16_F"] \"%s\": request\n", - (u16_t)(numdns), name)); - LWIP_ASSERT("dns server out of array", numdns < DNS_MAX_SERVERS); - LWIP_ASSERT("dns server has no IP address set", !ip_addr_isany(&dns_servers[numdns])); - - /* if here, we have either a new query or a retry on a previous query to process */ - p = pbuf_alloc(PBUF_TRANSPORT, SIZEOF_DNS_HDR + DNS_MAX_NAME_LENGTH + - SIZEOF_DNS_QUERY, PBUF_RAM); - if (p != NULL) { - LWIP_ASSERT("pbuf must be in one piece", p->next == NULL); - /* fill dns header */ - hdr = (struct dns_hdr*)p->payload; - memset(hdr, 0, SIZEOF_DNS_HDR); - hdr->id = htons(id); - hdr->flags1 = DNS_FLAG1_RD; - hdr->numquestions = PP_HTONS(1); - query = (char*)hdr + SIZEOF_DNS_HDR; - pHostname = name; - --pHostname; - - /* convert hostname into suitable query format. */ - do { - ++pHostname; - nptr = query; - ++query; - for(n = 0; *pHostname != '.' && *pHostname != 0; ++pHostname) { - *query = *pHostname; - ++query; - ++n; - } - *nptr = n; - } while(*pHostname != 0); - *query++='\0'; - - /* fill dns query */ - qry.type = PP_HTONS(DNS_RRTYPE_A); - qry.cls = PP_HTONS(DNS_RRCLASS_IN); - SMEMCPY(query, &qry, SIZEOF_DNS_QUERY); - - /* resize pbuf to the exact dns query */ - pbuf_realloc(p, (u16_t)((query + SIZEOF_DNS_QUERY) - ((char*)(p->payload)))); - - /* connect to the server for faster receiving */ - udp_connect(dns_pcb, &dns_servers[numdns], DNS_SERVER_PORT); - /* send dns packet */ - err = udp_sendto(dns_pcb, p, &dns_servers[numdns], DNS_SERVER_PORT); - - /* free pbuf */ - pbuf_free(p); - } else { - err = ERR_MEM; - } - - return err; -} - -/** - * dns_check_entry() - see if pEntry has not yet been queried and, if so, sends out a query. - * Check an entry in the dns_table: - * - send out query for new entries - * - retry old pending entries on timeout (also with different servers) - * - remove completed entries from the table if their TTL has expired - * - * @param i index of the dns_table entry to check - */ -static void -dns_check_entry(u8_t i) -{ - err_t err; - struct dns_table_entry *pEntry = &dns_table[i]; - - LWIP_ASSERT("array index out of bounds", i < DNS_TABLE_SIZE); - - switch(pEntry->state) { - - case DNS_STATE_NEW: { - /* initialize new entry */ - pEntry->state = DNS_STATE_ASKING; - pEntry->numdns = 0; - pEntry->tmr = 1; - pEntry->retries = 0; - - /* send DNS packet for this entry */ - err = dns_send(pEntry->numdns, pEntry->name, i); - if (err != ERR_OK) { - LWIP_DEBUGF(DNS_DEBUG | LWIP_DBG_LEVEL_WARNING, - ("dns_send returned error: %s\n", lwip_strerr(err))); - } - break; - } - - case DNS_STATE_ASKING: { - if (--pEntry->tmr == 0) { - if (++pEntry->retries == DNS_MAX_RETRIES) { - if ((pEntry->numdns+1numdns+1])) { - /* change of server */ - pEntry->numdns++; - pEntry->tmr = 1; - pEntry->retries = 0; - break; - } else { - LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": timeout\n", pEntry->name)); - /* call specified callback function if provided */ - if (pEntry->found) - (*pEntry->found)(pEntry->name, NULL, pEntry->arg); - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - break; - } - } - - /* wait longer for the next retry */ - pEntry->tmr = pEntry->retries; - - /* send DNS packet for this entry */ - err = dns_send(pEntry->numdns, pEntry->name, i); - if (err != ERR_OK) { - LWIP_DEBUGF(DNS_DEBUG | LWIP_DBG_LEVEL_WARNING, - ("dns_send returned error: %s\n", lwip_strerr(err))); - } - } - break; - } - - case DNS_STATE_DONE: { - /* if the time to live is nul */ - if (--pEntry->ttl == 0) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": flush\n", pEntry->name)); - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - } - break; - } - case DNS_STATE_UNUSED: - /* nothing to do */ - break; - default: - LWIP_ASSERT("unknown dns_table entry state:", 0); - break; - } -} - -/** - * Call dns_check_entry for each entry in dns_table - check all entries. - */ -static void -dns_check_entries(void) -{ - u8_t i; - - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - dns_check_entry(i); - } -} - -/** - * Receive input function for DNS response packets arriving for the dns UDP pcb. - * - * @params see udp.h - */ -static void -dns_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) -{ - u16_t i; - char *pHostname; - struct dns_hdr *hdr; - struct dns_answer ans; - struct dns_table_entry *pEntry; - u16_t nquestions, nanswers; - - LWIP_UNUSED_ARG(arg); - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(addr); - LWIP_UNUSED_ARG(port); - - /* is the dns message too big ? */ - if (p->tot_len > DNS_MSG_SIZE) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too big\n")); - /* free pbuf and return */ - goto memerr; - } - - /* is the dns message big enough ? */ - if (p->tot_len < (SIZEOF_DNS_HDR + SIZEOF_DNS_QUERY + SIZEOF_DNS_ANSWER)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too small\n")); - /* free pbuf and return */ - goto memerr; - } - - /* copy dns payload inside static buffer for processing */ - if (pbuf_copy_partial(p, dns_payload, p->tot_len, 0) == p->tot_len) { - /* The ID in the DNS header should be our entry into the name table. */ - hdr = (struct dns_hdr*)dns_payload; - i = htons(hdr->id); - if (i < DNS_TABLE_SIZE) { - pEntry = &dns_table[i]; - if(pEntry->state == DNS_STATE_ASKING) { - /* This entry is now completed. */ - pEntry->state = DNS_STATE_DONE; - pEntry->err = hdr->flags2 & DNS_FLAG2_ERR_MASK; - - /* We only care about the question(s) and the answers. The authrr - and the extrarr are simply discarded. */ - nquestions = htons(hdr->numquestions); - nanswers = htons(hdr->numanswers); - - /* Check for error. If so, call callback to inform. */ - if (((hdr->flags1 & DNS_FLAG1_RESPONSE) == 0) || (pEntry->err != 0) || (nquestions != 1)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in flags\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } - -#if DNS_DOES_NAME_CHECK - /* Check if the name in the "question" part match with the name in the entry. */ - if (dns_compare_name((unsigned char *)(pEntry->name), (unsigned char *)dns_payload + SIZEOF_DNS_HDR) != 0) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response not match to query\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } -#endif /* DNS_DOES_NAME_CHECK */ - - /* Skip the name in the "question" part */ - pHostname = (char *) dns_parse_name((unsigned char *)dns_payload + SIZEOF_DNS_HDR) + SIZEOF_DNS_QUERY; - - while (nanswers > 0) { - /* skip answer resource record's host name */ - pHostname = (char *) dns_parse_name((unsigned char *)pHostname); - - /* Check for IP address type and Internet class. Others are discarded. */ - SMEMCPY(&ans, pHostname, SIZEOF_DNS_ANSWER); - if((ans.type == PP_HTONS(DNS_RRTYPE_A)) && (ans.cls == PP_HTONS(DNS_RRCLASS_IN)) && - (ans.len == PP_HTONS(sizeof(ip_addr_t))) ) { - /* read the answer resource record's TTL, and maximize it if needed */ - pEntry->ttl = ntohl(ans.ttl); - if (pEntry->ttl > DNS_MAX_TTL) { - pEntry->ttl = DNS_MAX_TTL; - } - /* read the IP address after answer resource record's header */ - SMEMCPY(&(pEntry->ipaddr), (pHostname+SIZEOF_DNS_ANSWER), sizeof(ip_addr_t)); - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response = ", pEntry->name)); - ip_addr_debug_print(DNS_DEBUG, (&(pEntry->ipaddr))); - LWIP_DEBUGF(DNS_DEBUG, ("\n")); - /* call specified callback function if provided */ - if (pEntry->found) { - (*pEntry->found)(pEntry->name, &pEntry->ipaddr, pEntry->arg); - } - /* deallocate memory and return */ - goto memerr; - } else { - pHostname = pHostname + SIZEOF_DNS_ANSWER + htons(ans.len); - } - --nanswers; - } - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in response\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } - } - } - - /* deallocate memory and return */ - goto memerr; - -responseerr: - /* ERROR: call specified callback function with NULL as name to indicate an error */ - if (pEntry->found) { - (*pEntry->found)(pEntry->name, NULL, pEntry->arg); - } - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - -memerr: - /* free pbuf */ - pbuf_free(p); - return; -} - -/** - * Queues a new hostname to resolve and sends out a DNS query for that hostname - * - * @param name the hostname that is to be queried - * @param found a callback founction to be called on success, failure or timeout - * @param callback_arg argument to pass to the callback function - * @return @return a err_t return code. - */ -static err_t -dns_enqueue(const char *name, dns_found_callback found, void *callback_arg) -{ - u8_t i; - u8_t lseq, lseqi; - struct dns_table_entry *pEntry = NULL; - size_t namelen; - - /* search an unused entry, or the oldest one */ - lseq = lseqi = 0; - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - pEntry = &dns_table[i]; - /* is it an unused entry ? */ - if (pEntry->state == DNS_STATE_UNUSED) - break; - - /* check if this is the oldest completed entry */ - if (pEntry->state == DNS_STATE_DONE) { - if ((dns_seqno - pEntry->seqno) > lseq) { - lseq = dns_seqno - pEntry->seqno; - lseqi = i; - } - } - } - - /* if we don't have found an unused entry, use the oldest completed one */ - if (i == DNS_TABLE_SIZE) { - if ((lseqi >= DNS_TABLE_SIZE) || (dns_table[lseqi].state != DNS_STATE_DONE)) { - /* no entry can't be used now, table is full */ - LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": DNS entries table is full\n", name)); - return ERR_MEM; - } else { - /* use the oldest completed one */ - i = lseqi; - pEntry = &dns_table[i]; - } - } - - /* use this entry */ - LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": use DNS entry %"U16_F"\n", name, (u16_t)(i))); - - /* fill the entry */ - pEntry->state = DNS_STATE_NEW; - pEntry->seqno = dns_seqno++; - pEntry->found = found; - pEntry->arg = callback_arg; - namelen = LWIP_MIN(strlen(name), DNS_MAX_NAME_LENGTH-1); - MEMCPY(pEntry->name, name, namelen); - pEntry->name[namelen] = 0; - - /* force to send query without waiting timer */ - dns_check_entry(i); - - /* dns query is enqueued */ - return ERR_INPROGRESS; -} - -/** - * Resolve a hostname (string) into an IP address. - * NON-BLOCKING callback version for use with raw API!!! - * - * Returns immediately with one of err_t return codes: - * - ERR_OK if hostname is a valid IP address string or the host - * name is already in the local names table. - * - ERR_INPROGRESS enqueue a request to be sent to the DNS server - * for resolution if no errors are present. - * - ERR_ARG: dns client not initialized or invalid hostname - * - * @param hostname the hostname that is to be queried - * @param addr pointer to a ip_addr_t where to store the address if it is already - * cached in the dns_table (only valid if ERR_OK is returned!) - * @param found a callback function to be called on success, failure or timeout (only if - * ERR_INPROGRESS is returned!) - * @param callback_arg argument to pass to the callback function - * @return a err_t return code. - */ -err_t -dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, - void *callback_arg) -{ - u32_t ipaddr; - /* not initialized or no valid server yet, or invalid addr pointer - * or invalid hostname or invalid hostname length */ - if ((dns_pcb == NULL) || (addr == NULL) || - (!hostname) || (!hostname[0]) || - (strlen(hostname) >= DNS_MAX_NAME_LENGTH)) { - return ERR_ARG; - } - -#if LWIP_HAVE_LOOPIF - if (strcmp(hostname, "localhost")==0) { - ip_addr_set_loopback(addr); - return ERR_OK; - } -#endif /* LWIP_HAVE_LOOPIF */ - - /* host name already in octet notation? set ip addr and return ERR_OK */ - ipaddr = ipaddr_addr(hostname); - if (ipaddr == IPADDR_NONE) { - /* already have this address cached? */ - ipaddr = dns_lookup(hostname); - } - if (ipaddr != IPADDR_NONE) { - ip4_addr_set_u32(addr, ipaddr); - return ERR_OK; - } - - /* queue query with specified callback */ - return dns_enqueue(hostname, found, callback_arg); -} - -#endif /* LWIP_DNS */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/inet_chksum.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/inet_chksum.c deleted file mode 100644 index 8bc42c147..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/inet_chksum.c +++ /dev/null @@ -1,545 +0,0 @@ -/** - * @file - * Incluse internet checksum functions. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/inet_chksum.h" -#include "lwip/def.h" - -#include -#include - -/* These are some reference implementations of the checksum algorithm, with the - * aim of being simple, correct and fully portable. Checksumming is the - * first thing you would want to optimize for your platform. If you create - * your own version, link it in and in your cc.h put: - * - * #define LWIP_CHKSUM - * - * Or you can select from the implementations below by defining - * LWIP_CHKSUM_ALGORITHM to 1, 2 or 3. - */ - -#ifndef LWIP_CHKSUM -# define LWIP_CHKSUM lwip_standard_chksum -# ifndef LWIP_CHKSUM_ALGORITHM -# define LWIP_CHKSUM_ALGORITHM 2 -# endif -u16_t lwip_standard_chksum(void *dataptr, int len); -#endif -/* If none set: */ -#ifndef LWIP_CHKSUM_ALGORITHM -# define LWIP_CHKSUM_ALGORITHM 0 -#endif - -#if (LWIP_CHKSUM_ALGORITHM == 1) /* Version #1 */ -/** - * lwip checksum - * - * @param dataptr points to start of data to be summed at any boundary - * @param len length of data to be summed - * @return host order (!) lwip checksum (non-inverted Internet sum) - * - * @note accumulator size limits summable length to 64k - * @note host endianess is irrelevant (p3 RFC1071) - */ -u16_t -lwip_standard_chksum(void *dataptr, u16_t len) -{ - u32_t acc; - u16_t src; - u8_t *octetptr; - - acc = 0; - /* dataptr may be at odd or even addresses */ - octetptr = (u8_t*)dataptr; - while (len > 1) { - /* declare first octet as most significant - thus assume network order, ignoring host order */ - src = (*octetptr) << 8; - octetptr++; - /* declare second octet as least significant */ - src |= (*octetptr); - octetptr++; - acc += src; - len -= 2; - } - if (len > 0) { - /* accumulate remaining octet */ - src = (*octetptr) << 8; - acc += src; - } - /* add deferred carry bits */ - acc = (acc >> 16) + (acc & 0x0000ffffUL); - if ((acc & 0xffff0000UL) != 0) { - acc = (acc >> 16) + (acc & 0x0000ffffUL); - } - /* This maybe a little confusing: reorder sum using htons() - instead of ntohs() since it has a little less call overhead. - The caller must invert bits for Internet sum ! */ - return htons((u16_t)acc); -} -#endif - -#if (LWIP_CHKSUM_ALGORITHM == 2) /* Alternative version #2 */ -/* - * Curt McDowell - * Broadcom Corp. - * csm@broadcom.com - * - * IP checksum two bytes at a time with support for - * unaligned buffer. - * Works for len up to and including 0x20000. - * by Curt McDowell, Broadcom Corp. 12/08/2005 - * - * @param dataptr points to start of data to be summed at any boundary - * @param len length of data to be summed - * @return host order (!) lwip checksum (non-inverted Internet sum) - */ - -u16_t -lwip_standard_chksum(void *dataptr, int len) -{ - u8_t *pb = (u8_t *)dataptr; - u16_t *ps, t = 0; - u32_t sum = 0; - int odd = ((mem_ptr_t)pb & 1); - - /* Get aligned to u16_t */ - if (odd && len > 0) { - ((u8_t *)&t)[1] = *pb++; - len--; - } - - /* Add the bulk of the data */ - ps = (u16_t *)(void *)pb; - while (len > 1) { - sum += *ps++; - len -= 2; - } - - /* Consume left-over byte, if any */ - if (len > 0) { - ((u8_t *)&t)[0] = *(u8_t *)ps; - } - - /* Add end bytes */ - sum += t; - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - sum = FOLD_U32T(sum); - sum = FOLD_U32T(sum); - - /* Swap if alignment was odd */ - if (odd) { - sum = SWAP_BYTES_IN_WORD(sum); - } - - return (u16_t)sum; -} -#endif - -#if (LWIP_CHKSUM_ALGORITHM == 3) /* Alternative version #3 */ -/** - * An optimized checksum routine. Basically, it uses loop-unrolling on - * the checksum loop, treating the head and tail bytes specially, whereas - * the inner loop acts on 8 bytes at a time. - * - * @arg start of buffer to be checksummed. May be an odd byte address. - * @len number of bytes in the buffer to be checksummed. - * @return host order (!) lwip checksum (non-inverted Internet sum) - * - * by Curt McDowell, Broadcom Corp. December 8th, 2005 - */ - -u16_t -lwip_standard_chksum(void *dataptr, int len) -{ - u8_t *pb = (u8_t *)dataptr; - u16_t *ps, t = 0; - u32_t *pl; - u32_t sum = 0, tmp; - /* starts at odd byte address? */ - int odd = ((mem_ptr_t)pb & 1); - - if (odd && len > 0) { - ((u8_t *)&t)[1] = *pb++; - len--; - } - - ps = (u16_t *)pb; - - if (((mem_ptr_t)ps & 3) && len > 1) { - sum += *ps++; - len -= 2; - } - - pl = (u32_t *)ps; - - while (len > 7) { - tmp = sum + *pl++; /* ping */ - if (tmp < sum) { - tmp++; /* add back carry */ - } - - sum = tmp + *pl++; /* pong */ - if (sum < tmp) { - sum++; /* add back carry */ - } - - len -= 8; - } - - /* make room in upper bits */ - sum = FOLD_U32T(sum); - - ps = (u16_t *)pl; - - /* 16-bit aligned word remaining? */ - while (len > 1) { - sum += *ps++; - len -= 2; - } - - /* dangling tail byte remaining? */ - if (len > 0) { /* include odd byte */ - ((u8_t *)&t)[0] = *(u8_t *)ps; - } - - sum += t; /* add end bytes */ - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - sum = FOLD_U32T(sum); - sum = FOLD_U32T(sum); - - if (odd) { - sum = SWAP_BYTES_IN_WORD(sum); - } - - return (u16_t)sum; -} -#endif - -/** Parts of the pseudo checksum which are common to IPv4 and IPv6 */ -static u16_t -inet_cksum_pseudo_base(struct pbuf *p, u8_t proto, u16_t proto_len, u32_t acc) -{ - struct pbuf *q; - u8_t swapped = 0; - - /* iterate through all pbuf in chain */ - for(q = p; q != NULL; q = q->next) { - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", - (void *)q, (void *)q->next)); - acc += LWIP_CHKSUM(q->payload, q->len); - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/ - /* just executing this next line is probably faster that the if statement needed - to check whether we really need to execute it, and does no harm */ - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/ - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - - acc += (u32_t)htons((u16_t)proto); - acc += (u32_t)htons(proto_len); - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc)); - return (u16_t)~(acc & 0xffffUL); -} - -/* inet_chksum_pseudo: - * - * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain. - * IP addresses are expected to be in network byte order. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ip address (used for checksum of pseudo header) - * @param dst destination ip address (used for checksum of pseudo header) - * @param proto ip protocol (used for checksum of pseudo header) - * @param proto_len length of the ip data part (used for checksum of pseudo header) - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -inet_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, - ip_addr_t *src, ip_addr_t *dest) -{ - u32_t acc; - u32_t addr; - - addr = ip4_addr_get_u32(src); - acc = (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - addr = ip4_addr_get_u32(dest); - acc += (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - /* fold down to 16 bits */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - - return inet_cksum_pseudo_base(p, proto, proto_len, acc); -} -#if LWIP_IPV6 -/** - * Calculates the checksum with IPv6 pseudo header used by TCP and UDP for a pbuf chain. - * IPv6 addresses are expected to be in network byte order. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ipv6 address (used for checksum of pseudo header) - * @param dst destination ipv6 address (used for checksum of pseudo header) - * @param proto ipv6 protocol/next header (used for checksum of pseudo header) - * @param proto_len length of the ipv6 payload (used for checksum of pseudo header) - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -ip6_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, - ip6_addr_t *src, ip6_addr_t *dest) -{ - u32_t acc = 0; - u32_t addr; - u8_t addr_part; - - for (addr_part = 0; addr_part < 4; addr_part++) { - addr = src->addr[addr_part]; - acc += (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - addr = dest->addr[addr_part]; - acc += (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - } - /* fold down to 16 bits */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - - return inet_cksum_pseudo_base(p, proto, proto_len, acc); -} -#endif /* LWIP_IPV6 */ - -/** Parts of the pseudo checksum which are common to IPv4 and IPv6 */ -static u16_t -inet_cksum_pseudo_partial_base(struct pbuf *p, u8_t proto, u16_t proto_len, - u16_t chksum_len, u32_t acc) -{ - struct pbuf *q; - u8_t swapped = 0; - u16_t chklen; - - /* iterate through all pbuf in chain */ - for(q = p; (q != NULL) && (chksum_len > 0); q = q->next) { - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", - (void *)q, (void *)q->next)); - chklen = q->len; - if (chklen > chksum_len) { - chklen = chksum_len; - } - acc += LWIP_CHKSUM(q->payload, chklen); - chksum_len -= chklen; - LWIP_ASSERT("delete me", chksum_len < 0x7fff); - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/ - /* fold the upper bit down */ - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/ - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - - acc += (u32_t)htons((u16_t)proto); - acc += (u32_t)htons(proto_len); - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc)); - return (u16_t)~(acc & 0xffffUL); -} - -/* inet_chksum_pseudo_partial: - * - * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain. - * IP addresses are expected to be in network byte order. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ip address (used for checksum of pseudo header) - * @param dst destination ip address (used for checksum of pseudo header) - * @param proto ip protocol (used for checksum of pseudo header) - * @param proto_len length of the ip data part (used for checksum of pseudo header) - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -inet_chksum_pseudo_partial(struct pbuf *p, u8_t proto, u16_t proto_len, - u16_t chksum_len, ip_addr_t *src, ip_addr_t *dest) -{ - u32_t acc; - u32_t addr; - - addr = ip4_addr_get_u32(src); - acc = (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - addr = ip4_addr_get_u32(dest); - acc += (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - /* fold down to 16 bits */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - - return inet_cksum_pseudo_partial_base(p, proto, proto_len, chksum_len, acc); -} - -#if LWIP_IPV6 -/** - * Calculates the checksum with IPv6 pseudo header used by TCP and UDP for a pbuf chain. - * IPv6 addresses are expected to be in network byte order. Will only compute for a - * portion of the payload. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ipv6 address (used for checksum of pseudo header) - * @param dst destination ipv6 address (used for checksum of pseudo header) - * @param proto ipv6 protocol/next header (used for checksum of pseudo header) - * @param proto_len length of the ipv6 payload (used for checksum of pseudo header) - * @param chksum_len number of payload bytes used to compute chksum - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -ip6_chksum_pseudo_partial(struct pbuf *p, u8_t proto, u16_t proto_len, - u16_t chksum_len, ip6_addr_t *src, ip6_addr_t *dest) -{ - u32_t acc = 0; - u32_t addr; - u8_t addr_part; - - for (addr_part = 0; addr_part < 4; addr_part++) { - addr = src->addr[addr_part]; - acc += (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - addr = dest->addr[addr_part]; - acc += (addr & 0xffffUL); - acc += ((addr >> 16) & 0xffffUL); - } - /* fold down to 16 bits */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - - return inet_cksum_pseudo_partial_base(p, proto, proto_len, chksum_len, acc); -} -#endif /* LWIP_IPV6 */ - -/* inet_chksum: - * - * Calculates the Internet checksum over a portion of memory. Used primarily for IP - * and ICMP. - * - * @param dataptr start of the buffer to calculate the checksum (no alignment needed) - * @param len length of the buffer to calculate the checksum - * @return checksum (as u16_t) to be saved directly in the protocol header - */ - -u16_t -inet_chksum(void *dataptr, u16_t len) -{ - return ~LWIP_CHKSUM(dataptr, len); -} - -/** - * Calculate a checksum over a chain of pbufs (without pseudo-header, much like - * inet_chksum only pbufs are used). - * - * @param p pbuf chain over that the checksum should be calculated - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -inet_chksum_pbuf(struct pbuf *p) -{ - u32_t acc; - struct pbuf *q; - u8_t swapped; - - acc = 0; - swapped = 0; - for(q = p; q != NULL; q = q->next) { - acc += LWIP_CHKSUM(q->payload, q->len); - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - return (u16_t)~(acc & 0xffffUL); -} - -/* These are some implementations for LWIP_CHKSUM_COPY, which copies data - * like MEMCPY but generates a checksum at the same time. Since this is a - * performance-sensitive function, you might want to create your own version - * in assembly targeted at your hardware by defining it in lwipopts.h: - * #define LWIP_CHKSUM_COPY(dst, src, len) your_chksum_copy(dst, src, len) - */ - -#if (LWIP_CHKSUM_COPY_ALGORITHM == 1) /* Version #1 */ -/** Safe but slow: first call MEMCPY, then call LWIP_CHKSUM. - * For architectures with big caches, data might still be in cache when - * generating the checksum after copying. - */ -u16_t -lwip_chksum_copy(void *dst, const void *src, u16_t len) -{ - MEMCPY(dst, src, len); - return LWIP_CHKSUM(dst, len); -} -#endif /* (LWIP_CHKSUM_COPY_ALGORITHM == 1) */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/init.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/init.c deleted file mode 100644 index 3d8e2bb6a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/init.c +++ /dev/null @@ -1,330 +0,0 @@ -/** - * @file - * Modules initialization - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/init.h" -#include "lwip/stats.h" -#include "lwip/sys.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/sockets.h" -#include "lwip/ip.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp_impl.h" -#include "lwip/snmp_msg.h" -#include "lwip/autoip.h" -#include "lwip/igmp.h" -#include "lwip/dns.h" -#include "lwip/timers.h" -#include "netif/etharp.h" -#include "lwip/ip6.h" -#include "lwip/nd6.h" -#include "lwip/mld6.h" -#include "lwip/api.h" - -/* Compile-time sanity checks for configuration errors. - * These can be done independently of LWIP_DEBUG, without penalty. - */ -#ifndef BYTE_ORDER - #error "BYTE_ORDER is not defined, you have to define it in your cc.h" -#endif -#if (!IP_SOF_BROADCAST && IP_SOF_BROADCAST_RECV) - #error "If you want to use broadcast filter per pcb on recv operations, you have to define IP_SOF_BROADCAST=1 in your lwipopts.h" -#endif -#if (!LWIP_ARP && ARP_QUEUEING) - #error "If you want to use ARP Queueing, you have to define LWIP_ARP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_UDPLITE) - #error "If you want to use UDP Lite, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_SNMP) - #error "If you want to use SNMP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_DHCP) - #error "If you want to use DHCP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_IGMP) - #error "If you want to use IGMP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_SNMP) - #error "If you want to use SNMP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_DNS) - #error "If you want to use DNS, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (LWIP_ARP && ARP_QUEUEING && (MEMP_NUM_ARP_QUEUE<=0)) - #error "If you want to use ARP Queueing, you have to define MEMP_NUM_ARP_QUEUE>=1 in your lwipopts.h" -#endif -#if (LWIP_RAW && (MEMP_NUM_RAW_PCB<=0)) - #error "If you want to use RAW, you have to define MEMP_NUM_RAW_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_UDP && (MEMP_NUM_UDP_PCB<=0)) - #error "If you want to use UDP, you have to define MEMP_NUM_UDP_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && (MEMP_NUM_TCP_PCB<=0)) - #error "If you want to use TCP, you have to define MEMP_NUM_TCP_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && (TCP_WND > 0xffff)) - #error "If you want to use TCP, TCP_WND must fit in an u16_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_TCP && (TCP_SND_QUEUELEN > 0xffff)) - #error "If you want to use TCP, TCP_SND_QUEUELEN must fit in an u16_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_TCP && (TCP_SND_QUEUELEN < 2)) - #error "TCP_SND_QUEUELEN must be at least 2 for no-copy TCP writes to work" -#endif -#if (LWIP_TCP && ((TCP_MAXRTX > 12) || (TCP_SYNMAXRTX > 12))) - #error "If you want to use TCP, TCP_MAXRTX and TCP_SYNMAXRTX must less or equal to 12 (due to tcp_backoff table), so, you have to reduce them in your lwipopts.h" -#endif -#if (LWIP_TCP && TCP_LISTEN_BACKLOG && (TCP_DEFAULT_LISTEN_BACKLOG < 0) || (TCP_DEFAULT_LISTEN_BACKLOG > 0xff)) - #error "If you want to use TCP backlog, TCP_DEFAULT_LISTEN_BACKLOG must fit into an u8_t" -#endif -#if (LWIP_IGMP && (MEMP_NUM_IGMP_GROUP<=1)) - #error "If you want to use IGMP, you have to define MEMP_NUM_IGMP_GROUP>1 in your lwipopts.h" -#endif -#if (LWIP_NETIF_API && (NO_SYS==1)) - #error "If you want to use NETIF API, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if ((LWIP_SOCKET || LWIP_NETCONN) && (NO_SYS==1)) - #error "If you want to use Sequential API, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if ((LWIP_NETCONN || LWIP_SOCKET) && (MEMP_NUM_TCPIP_MSG_API<=0)) - #error "If you want to use Sequential API, you have to define MEMP_NUM_TCPIP_MSG_API>=1 in your lwipopts.h" -#endif -#if (!LWIP_NETCONN && LWIP_SOCKET) - #error "If you want to use Socket API, you have to define LWIP_NETCONN=1 in your lwipopts.h" -#endif -#if (((!LWIP_DHCP) || (!LWIP_AUTOIP)) && LWIP_DHCP_AUTOIP_COOP) - #error "If you want to use DHCP/AUTOIP cooperation mode, you have to define LWIP_DHCP=1 and LWIP_AUTOIP=1 in your lwipopts.h" -#endif -#if (((!LWIP_DHCP) || (!LWIP_ARP)) && DHCP_DOES_ARP_CHECK) - #error "If you want to use DHCP ARP checking, you have to define LWIP_DHCP=1 and LWIP_ARP=1 in your lwipopts.h" -#endif -#if (!LWIP_ARP && LWIP_AUTOIP) - #error "If you want to use AUTOIP, you have to define LWIP_ARP=1 in your lwipopts.h" -#endif -#if (LWIP_SNMP && (SNMP_CONCURRENT_REQUESTS<=0)) - #error "If you want to use SNMP, you have to define SNMP_CONCURRENT_REQUESTS>=1 in your lwipopts.h" -#endif -#if (LWIP_SNMP && (SNMP_TRAP_DESTINATIONS<=0)) - #error "If you want to use SNMP, you have to define SNMP_TRAP_DESTINATIONS>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && ((LWIP_EVENT_API && LWIP_CALLBACK_API) || (!LWIP_EVENT_API && !LWIP_CALLBACK_API))) - #error "One and exactly one of LWIP_EVENT_API and LWIP_CALLBACK_API has to be enabled in your lwipopts.h" -#endif -/* There must be sufficient timeouts, taking into account requirements of the subsystems. */ -#if LWIP_TIMERS && (MEMP_NUM_SYS_TIMEOUT < (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_SUPPORT)) - #error "MEMP_NUM_SYS_TIMEOUT is too low to accomodate all required timeouts" -#endif -#if (IP_REASSEMBLY && (MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS)) - #error "MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS doesn't make sense since each struct ip_reassdata must hold 2 pbufs at least!" -#endif -#if (MEM_LIBC_MALLOC && MEM_USE_POOLS) - #error "MEM_LIBC_MALLOC and MEM_USE_POOLS may not both be simultaneously enabled in your lwipopts.h" -#endif -#if (MEM_USE_POOLS && !MEMP_USE_CUSTOM_POOLS) - #error "MEM_USE_POOLS requires custom pools (MEMP_USE_CUSTOM_POOLS) to be enabled in your lwipopts.h" -#endif -#if (PBUF_POOL_BUFSIZE <= MEM_ALIGNMENT) - #error "PBUF_POOL_BUFSIZE must be greater than MEM_ALIGNMENT or the offset may take the full first pbuf" -#endif -#if (TCP_QUEUE_OOSEQ && !LWIP_TCP) - #error "TCP_QUEUE_OOSEQ requires LWIP_TCP" -#endif -#if (DNS_LOCAL_HOSTLIST && !DNS_LOCAL_HOSTLIST_IS_DYNAMIC && !(defined(DNS_LOCAL_HOSTLIST_INIT))) - #error "you have to define define DNS_LOCAL_HOSTLIST_INIT {{'host1', 0x123}, {'host2', 0x234}} to initialize DNS_LOCAL_HOSTLIST" -#endif -#if PPP_SUPPORT && !PPPOS_SUPPORT & !PPPOE_SUPPORT - #error "PPP_SUPPORT needs either PPPOS_SUPPORT or PPPOE_SUPPORT turned on" -#endif -#if !LWIP_ETHERNET && (LWIP_ARP || PPPOE_SUPPORT) - #error "LWIP_ETHERNET needs to be turned on for LWIP_ARP or PPPOE_SUPPORT" -#endif -#if (LWIP_IGMP || LWIP_IPV6) && !defined(LWIP_RAND) - #error "When using IGMP or IPv6, LWIP_RAND() needs to be defined to a random-function returning an u32_t random value" -#endif -#if LWIP_TCPIP_CORE_LOCKING_INPUT && !LWIP_TCPIP_CORE_LOCKING - #error "When using LWIP_TCPIP_CORE_LOCKING_INPUT, LWIP_TCPIP_CORE_LOCKING must be enabled, too" -#endif -#if LWIP_TCP && LWIP_NETIF_TX_SINGLE_PBUF && !TCP_OVERSIZE - #error "LWIP_NETIF_TX_SINGLE_PBUF needs TCP_OVERSIZE enabled to create single-pbuf TCP packets" -#endif -#if IP_FRAG && IP_FRAG_USES_STATIC_BUF && LWIP_NETIF_TX_SINGLE_PBUF - #error "LWIP_NETIF_TX_SINGLE_PBUF does not work with IP_FRAG_USES_STATIC_BUF==1 as that creates pbuf queues" -#endif -#if LWIP_NETCONN && LWIP_TCP -#if NETCONN_COPY != TCP_WRITE_FLAG_COPY - #error "NETCONN_COPY != TCP_WRITE_FLAG_COPY" -#endif -#if NETCONN_MORE != TCP_WRITE_FLAG_MORE - #error "NETCONN_MORE != TCP_WRITE_FLAG_MORE" -#endif -#endif /* LWIP_NETCONN && LWIP_TCP */ -#if LWIP_SOCKET -/* Check that the SO_* socket options and SOF_* lwIP-internal flags match */ -#if SO_ACCEPTCONN != SOF_ACCEPTCONN - #error "SO_ACCEPTCONN != SOF_ACCEPTCONN" -#endif -#if SO_REUSEADDR != SOF_REUSEADDR - #error "WARNING: SO_REUSEADDR != SOF_REUSEADDR" -#endif -#if SO_KEEPALIVE != SOF_KEEPALIVE - #error "WARNING: SO_KEEPALIVE != SOF_KEEPALIVE" -#endif -#if SO_BROADCAST != SOF_BROADCAST - #error "WARNING: SO_BROADCAST != SOF_BROADCAST" -#endif -#if SO_LINGER != SOF_LINGER - #error "WARNING: SO_LINGER != SOF_LINGER" -#endif -#endif /* LWIP_SOCKET */ - - -/* Compile-time checks for deprecated options. - */ -#ifdef MEMP_NUM_TCPIP_MSG - #error "MEMP_NUM_TCPIP_MSG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef MEMP_NUM_API_MSG - #error "MEMP_NUM_API_MSG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef TCP_REXMIT_DEBUG - #error "TCP_REXMIT_DEBUG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef RAW_STATS - #error "RAW_STATS option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef ETHARP_QUEUE_FIRST - #error "ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef ETHARP_ALWAYS_INSERT - #error "ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h." -#endif - -#ifdef LWIP_DEBUG -static void -lwip_sanity_check(void) -{ - /* Warnings */ -#if LWIP_NETCONN - if (MEMP_NUM_NETCONN > (MEMP_NUM_TCP_PCB+MEMP_NUM_TCP_PCB_LISTEN+MEMP_NUM_UDP_PCB+MEMP_NUM_RAW_PCB)) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_NETCONN should be less than the sum of MEMP_NUM_{TCP,RAW,UDP}_PCB+MEMP_NUM_TCP_PCB_LISTEN\n")); -#endif /* LWIP_NETCONN */ -#if LWIP_TCP - if (MEMP_NUM_TCP_SEG < TCP_SND_QUEUELEN) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_TCP_SEG should be at least as big as TCP_SND_QUEUELEN\n")); - if (TCP_SND_BUF < 2 * TCP_MSS) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_BUF must be at least as much as (2 * TCP_MSS) for things to work smoothly\n")); - if (TCP_SND_QUEUELEN < (2 * (TCP_SND_BUF/TCP_MSS))) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_QUEUELEN must be at least as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work\n")); - if (TCP_SNDLOWAT >= TCP_SND_BUF) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SNDLOWAT must be less than TCP_SND_BUF.\n")); - if (TCP_SNDQUEUELOWAT >= TCP_SND_QUEUELEN) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SNDQUEUELOWAT must be less than TCP_SND_QUEUELEN.\n")); - if (TCP_WND > (PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE)) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is larger than space provided by PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE\n")); - if (TCP_WND < TCP_MSS) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is smaller than MSS\n")); -#endif /* LWIP_TCP */ -} -#else /* LWIP_DEBUG */ -#define lwip_sanity_check() -#endif /* LWIP_DEBUG */ - -/** - * Perform Sanity check of user-configurable values, and initialize all modules. - */ -void -lwip_init(void) -{ - /* Sanity check user-configurable values */ - lwip_sanity_check(); - - /* Modules initialization */ - stats_init(); -#if !NO_SYS - sys_init(); -#endif /* !NO_SYS */ - mem_init(); - memp_init(); - pbuf_init(); - netif_init(); -#if LWIP_SOCKET - lwip_socket_init(); -#endif /* LWIP_SOCKET */ - ip_init(); -#if LWIP_ARP - etharp_init(); -#endif /* LWIP_ARP */ -#if LWIP_RAW - raw_init(); -#endif /* LWIP_RAW */ -#if LWIP_UDP - udp_init(); -#endif /* LWIP_UDP */ -#if LWIP_TCP - tcp_init(); -#endif /* LWIP_TCP */ -#if LWIP_SNMP - snmp_init(); -#endif /* LWIP_SNMP */ -#if LWIP_AUTOIP - autoip_init(); -#endif /* LWIP_AUTOIP */ -#if LWIP_IGMP - igmp_init(); -#endif /* LWIP_IGMP */ -#if LWIP_DNS - dns_init(); -#endif /* LWIP_DNS */ -#if LWIP_IPV6 - ip6_init(); - nd6_init(); -#if LWIP_IPV6_MLD - mld6_init(); -#endif /* LWIP_IPV6_MLD */ -#endif /* LWIP_IPV6 */ - -#if LWIP_TIMERS - sys_timeouts_init(); -#endif /* LWIP_TIMERS */ -} diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/autoip.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/autoip.c deleted file mode 100644 index b122da27e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/autoip.c +++ /dev/null @@ -1,528 +0,0 @@ -/** - * @file - * AutoIP Automatic LinkLocal IP Configuration - * - */ - -/* - * - * Copyright (c) 2007 Dominik Spies - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Dominik Spies - * - * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform - * with RFC 3927. - * - * - * Please coordinate changes and requests with Dominik Spies - * - */ - -/******************************************************************************* - * USAGE: - * - * define LWIP_AUTOIP 1 in your lwipopts.h - * - * If you don't use tcpip.c (so, don't call, you don't call tcpip_init): - * - First, call autoip_init(). - * - call autoip_tmr() all AUTOIP_TMR_INTERVAL msces, - * that should be defined in autoip.h. - * I recommend a value of 100. The value must divide 1000 with a remainder almost 0. - * Possible values are 1000, 500, 333, 250, 200, 166, 142, 125, 111, 100 .... - * - * Without DHCP: - * - Call autoip_start() after netif_add(). - * - * With DHCP: - * - define LWIP_DHCP_AUTOIP_COOP 1 in your lwipopts.h. - * - Configure your DHCP Client. - * - */ - -#include "lwip/opt.h" - -#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/mem.h" -#include "lwip/udp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/autoip.h" -#include "netif/etharp.h" - -#include -#include - -/* 169.254.0.0 */ -#define AUTOIP_NET 0xA9FE0000 -/* 169.254.1.0 */ -#define AUTOIP_RANGE_START (AUTOIP_NET | 0x0100) -/* 169.254.254.255 */ -#define AUTOIP_RANGE_END (AUTOIP_NET | 0xFEFF) - - -/** Pseudo random macro based on netif informations. - * You could use "rand()" from the C Library if you define LWIP_AUTOIP_RAND in lwipopts.h */ -#ifndef LWIP_AUTOIP_RAND -#define LWIP_AUTOIP_RAND(netif) ( (((u32_t)((netif->hwaddr[5]) & 0xff) << 24) | \ - ((u32_t)((netif->hwaddr[3]) & 0xff) << 16) | \ - ((u32_t)((netif->hwaddr[2]) & 0xff) << 8) | \ - ((u32_t)((netif->hwaddr[4]) & 0xff))) + \ - (netif->autoip?netif->autoip->tried_llipaddr:0)) -#endif /* LWIP_AUTOIP_RAND */ - -/** - * Macro that generates the initial IP address to be tried by AUTOIP. - * If you want to override this, define it to something else in lwipopts.h. - */ -#ifndef LWIP_AUTOIP_CREATE_SEED_ADDR -#define LWIP_AUTOIP_CREATE_SEED_ADDR(netif) \ - htonl(AUTOIP_RANGE_START + ((u32_t)(((u8_t)(netif->hwaddr[4])) | \ - ((u32_t)((u8_t)(netif->hwaddr[5]))) << 8))) -#endif /* LWIP_AUTOIP_CREATE_SEED_ADDR */ - -/* static functions */ -static void autoip_handle_arp_conflict(struct netif *netif); - -/* creates a pseudo random LL IP-Address for a network interface */ -static void autoip_create_addr(struct netif *netif, ip_addr_t *ipaddr); - -/* sends an ARP probe */ -static err_t autoip_arp_probe(struct netif *netif); - -/* sends an ARP announce */ -static err_t autoip_arp_announce(struct netif *netif); - -/* configure interface for use with current LL IP-Address */ -static err_t autoip_bind(struct netif *netif); - -/* start sending probes for llipaddr */ -static void autoip_start_probing(struct netif *netif); - - -/** Set a statically allocated struct autoip to work with. - * Using this prevents autoip_start to allocate it using mem_malloc. - * - * @param netif the netif for which to set the struct autoip - * @param dhcp (uninitialised) dhcp struct allocated by the application - */ -void -autoip_set_struct(struct netif *netif, struct autoip *autoip) -{ - LWIP_ASSERT("netif != NULL", netif != NULL); - LWIP_ASSERT("autoip != NULL", autoip != NULL); - LWIP_ASSERT("netif already has a struct autoip set", netif->autoip == NULL); - - /* clear data structure */ - memset(autoip, 0, sizeof(struct autoip)); - /* autoip->state = AUTOIP_STATE_OFF; */ - netif->autoip = autoip; -} - -/** Restart AutoIP client and check the next address (conflict detected) - * - * @param netif The netif under AutoIP control - */ -static void -autoip_restart(struct netif *netif) -{ - netif->autoip->tried_llipaddr++; - autoip_start(netif); -} - -/** - * Handle a IP address conflict after an ARP conflict detection - */ -static void -autoip_handle_arp_conflict(struct netif *netif) -{ - /* Somehow detect if we are defending or retreating */ - unsigned char defend = 1; /* tbd */ - - if (defend) { - if (netif->autoip->lastconflict > 0) { - /* retreat, there was a conflicting ARP in the last - * DEFEND_INTERVAL seconds - */ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we are defending, but in DEFEND_INTERVAL, retreating\n")); - - /* TODO: close all TCP sessions */ - autoip_restart(netif); - } else { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we are defend, send ARP Announce\n")); - autoip_arp_announce(netif); - netif->autoip->lastconflict = DEFEND_INTERVAL * AUTOIP_TICKS_PER_SECOND; - } - } else { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we do not defend, retreating\n")); - /* TODO: close all TCP sessions */ - autoip_restart(netif); - } -} - -/** - * Create an IP-Address out of range 169.254.1.0 to 169.254.254.255 - * - * @param netif network interface on which create the IP-Address - * @param ipaddr ip address to initialize - */ -static void -autoip_create_addr(struct netif *netif, ip_addr_t *ipaddr) -{ - /* Here we create an IP-Address out of range 169.254.1.0 to 169.254.254.255 - * compliant to RFC 3927 Section 2.1 - * We have 254 * 256 possibilities */ - - u32_t addr = ntohl(LWIP_AUTOIP_CREATE_SEED_ADDR(netif)); - addr += netif->autoip->tried_llipaddr; - addr = AUTOIP_NET | (addr & 0xffff); - /* Now, 169.254.0.0 <= addr <= 169.254.255.255 */ - - if (addr < AUTOIP_RANGE_START) { - addr += AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1; - } - if (addr > AUTOIP_RANGE_END) { - addr -= AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1; - } - LWIP_ASSERT("AUTOIP address not in range", (addr >= AUTOIP_RANGE_START) && - (addr <= AUTOIP_RANGE_END)); - ip4_addr_set_u32(ipaddr, htonl(addr)); - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_create_addr(): tried_llipaddr=%"U16_F", %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - (u16_t)(netif->autoip->tried_llipaddr), ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), - ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr))); -} - -/** - * Sends an ARP probe from a network interface - * - * @param netif network interface used to send the probe - */ -static err_t -autoip_arp_probe(struct netif *netif) -{ - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, IP_ADDR_ANY, ðzero, - &netif->autoip->llipaddr, ARP_REQUEST); -} - -/** - * Sends an ARP announce from a network interface - * - * @param netif network interface used to send the announce - */ -static err_t -autoip_arp_announce(struct netif *netif) -{ - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, &netif->autoip->llipaddr, ðzero, - &netif->autoip->llipaddr, ARP_REQUEST); -} - -/** - * Configure interface for use with current LL IP-Address - * - * @param netif network interface to configure with current LL IP-Address - */ -static err_t -autoip_bind(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - ip_addr_t sn_mask, gw_addr; - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_bind(netif=%p) %c%c%"U16_F" %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num, - ip4_addr1_16(&autoip->llipaddr), ip4_addr2_16(&autoip->llipaddr), - ip4_addr3_16(&autoip->llipaddr), ip4_addr4_16(&autoip->llipaddr))); - - IP4_ADDR(&sn_mask, 255, 255, 0, 0); - IP4_ADDR(&gw_addr, 0, 0, 0, 0); - - netif_set_ipaddr(netif, &autoip->llipaddr); - netif_set_netmask(netif, &sn_mask); - netif_set_gw(netif, &gw_addr); - - /* bring the interface up */ - netif_set_up(netif); - - return ERR_OK; -} - -/** - * Start AutoIP client - * - * @param netif network interface on which start the AutoIP client - */ -err_t -autoip_start(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - err_t result = ERR_OK; - - if (netif_is_up(netif)) { - netif_set_down(netif); - } - - /* Set IP-Address, Netmask and Gateway to 0 to make sure that - * ARP Packets are formed correctly - */ - ip_addr_set_zero(&netif->ip_addr); - ip_addr_set_zero(&netif->netmask); - ip_addr_set_zero(&netif->gw); - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], - netif->name[1], (u16_t)netif->num)); - if (autoip == NULL) { - /* no AutoIP client attached yet? */ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_start(): starting new AUTOIP client\n")); - autoip = (struct autoip *)mem_malloc(sizeof(struct autoip)); - if (autoip == NULL) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_start(): could not allocate autoip\n")); - return ERR_MEM; - } - memset(autoip, 0, sizeof(struct autoip)); - /* store this AutoIP client in the netif */ - netif->autoip = autoip; - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_start(): allocated autoip")); - } else { - autoip->state = AUTOIP_STATE_OFF; - autoip->ttw = 0; - autoip->sent_num = 0; - ip_addr_set_zero(&autoip->llipaddr); - autoip->lastconflict = 0; - } - - autoip_create_addr(netif, &(autoip->llipaddr)); - autoip_start_probing(netif); - - return result; -} - -static void -autoip_start_probing(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - - autoip->state = AUTOIP_STATE_PROBING; - autoip->sent_num = 0; - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_start_probing(): changing state to PROBING: %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(&netif->autoip->llipaddr), ip4_addr2_16(&netif->autoip->llipaddr), - ip4_addr3_16(&netif->autoip->llipaddr), ip4_addr4_16(&netif->autoip->llipaddr))); - - /* time to wait to first probe, this is randomly - * choosen out of 0 to PROBE_WAIT seconds. - * compliant to RFC 3927 Section 2.2.1 - */ - autoip->ttw = (u16_t)(LWIP_AUTOIP_RAND(netif) % (PROBE_WAIT * AUTOIP_TICKS_PER_SECOND)); - - /* - * if we tried more then MAX_CONFLICTS we must limit our rate for - * accquiring and probing address - * compliant to RFC 3927 Section 2.2.1 - */ - if (autoip->tried_llipaddr > MAX_CONFLICTS) { - autoip->ttw = RATE_LIMIT_INTERVAL * AUTOIP_TICKS_PER_SECOND; - } -} - -/** - * Handle a possible change in the network configuration. - * - * If there is an AutoIP address configured, take the interface down - * and begin probing with the same address. - */ -void -autoip_network_changed(struct netif *netif) -{ - if (netif->autoip && netif->autoip->state != AUTOIP_STATE_OFF) { - netif_set_down(netif); - autoip_start_probing(netif); - } -} - -/** - * Stop AutoIP client - * - * @param netif network interface on which stop the AutoIP client - */ -err_t -autoip_stop(struct netif *netif) -{ - netif->autoip->state = AUTOIP_STATE_OFF; - netif_set_down(netif); - return ERR_OK; -} - -/** - * Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds - */ -void -autoip_tmr() -{ - struct netif *netif = netif_list; - /* loop through netif's */ - while (netif != NULL) { - /* only act on AutoIP configured interfaces */ - if (netif->autoip != NULL) { - if (netif->autoip->lastconflict > 0) { - netif->autoip->lastconflict--; - } - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() AutoIP-State: %"U16_F", ttw=%"U16_F"\n", - (u16_t)(netif->autoip->state), netif->autoip->ttw)); - - switch(netif->autoip->state) { - case AUTOIP_STATE_PROBING: - if (netif->autoip->ttw > 0) { - netif->autoip->ttw--; - } else { - if (netif->autoip->sent_num >= PROBE_NUM) { - netif->autoip->state = AUTOIP_STATE_ANNOUNCING; - netif->autoip->sent_num = 0; - netif->autoip->ttw = ANNOUNCE_WAIT * AUTOIP_TICKS_PER_SECOND; - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_tmr(): changing state to ANNOUNCING: %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(&netif->autoip->llipaddr), ip4_addr2_16(&netif->autoip->llipaddr), - ip4_addr3_16(&netif->autoip->llipaddr), ip4_addr4_16(&netif->autoip->llipaddr))); - } else { - autoip_arp_probe(netif); - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() PROBING Sent Probe\n")); - netif->autoip->sent_num++; - /* calculate time to wait to next probe */ - netif->autoip->ttw = (u16_t)((LWIP_AUTOIP_RAND(netif) % - ((PROBE_MAX - PROBE_MIN) * AUTOIP_TICKS_PER_SECOND) ) + - PROBE_MIN * AUTOIP_TICKS_PER_SECOND); - } - } - break; - - case AUTOIP_STATE_ANNOUNCING: - if (netif->autoip->ttw > 0) { - netif->autoip->ttw--; - } else { - if (netif->autoip->sent_num == 0) { - /* We are here the first time, so we waited ANNOUNCE_WAIT seconds - * Now we can bind to an IP address and use it. - * - * autoip_bind calls netif_set_up. This triggers a gratuitous ARP - * which counts as an announcement. - */ - autoip_bind(netif); - } else { - autoip_arp_announce(netif); - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() ANNOUNCING Sent Announce\n")); - } - netif->autoip->ttw = ANNOUNCE_INTERVAL * AUTOIP_TICKS_PER_SECOND; - netif->autoip->sent_num++; - - if (netif->autoip->sent_num >= ANNOUNCE_NUM) { - netif->autoip->state = AUTOIP_STATE_BOUND; - netif->autoip->sent_num = 0; - netif->autoip->ttw = 0; - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_tmr(): changing state to BOUND: %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(&netif->autoip->llipaddr), ip4_addr2_16(&netif->autoip->llipaddr), - ip4_addr3_16(&netif->autoip->llipaddr), ip4_addr4_16(&netif->autoip->llipaddr))); - } - } - break; - } - } - /* proceed to next network interface */ - netif = netif->next; - } -} - -/** - * Handles every incoming ARP Packet, called by etharp_arp_input. - * - * @param netif network interface to use for autoip processing - * @param hdr Incoming ARP packet - */ -void -autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr) -{ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_arp_reply()\n")); - if ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) { - /* when ip.src == llipaddr && hw.src != netif->hwaddr - * - * when probing ip.dst == llipaddr && hw.src != netif->hwaddr - * we have a conflict and must solve it - */ - ip_addr_t sipaddr, dipaddr; - struct eth_addr netifaddr; - ETHADDR16_COPY(netifaddr.addr, netif->hwaddr); - - /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without - * structure packing (not using structure copy which breaks strict-aliasing rules). - */ - IPADDR2_COPY(&sipaddr, &hdr->sipaddr); - IPADDR2_COPY(&dipaddr, &hdr->dipaddr); - - if ((netif->autoip->state == AUTOIP_STATE_PROBING) || - ((netif->autoip->state == AUTOIP_STATE_ANNOUNCING) && - (netif->autoip->sent_num == 0))) { - /* RFC 3927 Section 2.2.1: - * from beginning to after ANNOUNCE_WAIT - * seconds we have a conflict if - * ip.src == llipaddr OR - * ip.dst == llipaddr && hw.src != own hwaddr - */ - if ((ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr)) || - (ip_addr_cmp(&dipaddr, &netif->autoip->llipaddr) && - !eth_addr_cmp(&netifaddr, &hdr->shwaddr))) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("autoip_arp_reply(): Probe Conflict detected\n")); - autoip_restart(netif); - } - } else { - /* RFC 3927 Section 2.5: - * in any state we have a conflict if - * ip.src == llipaddr && hw.src != own hwaddr - */ - if (ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr) && - !eth_addr_cmp(&netifaddr, &hdr->shwaddr)) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("autoip_arp_reply(): Conflicting ARP-Packet detected\n")); - autoip_handle_arp_conflict(netif); - } - } - } -} - -#endif /* LWIP_AUTOIP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/icmp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/icmp.c deleted file mode 100644 index ca59acfc0..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/icmp.c +++ /dev/null @@ -1,334 +0,0 @@ -/** - * @file - * ICMP - Internet Control Message Protocol - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* Some ICMP messages should be passed to the transport protocols. This - is not implemented. */ - -#include "lwip/opt.h" - -#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/icmp.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip.h" -#include "lwip/def.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" - -#include - -/** Small optimization: set to 0 if incoming PBUF_POOL pbuf always can be - * used to modify and send a response packet (and to 1 if this is not the case, - * e.g. when link header is stripped of when receiving) */ -#ifndef LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN -#define LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN 1 -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ - -/* The amount of data from the original packet to return in a dest-unreachable */ -#define ICMP_DEST_UNREACH_DATASIZE 8 - -static void icmp_send_response(struct pbuf *p, u8_t type, u8_t code); - -/** - * Processes ICMP input packets, called from ip_input(). - * - * Currently only processes icmp echo requests and sends - * out the echo response. - * - * @param p the icmp echo request packet, p->payload pointing to the icmp header - * @param inp the netif on which this packet was received - */ -void -icmp_input(struct pbuf *p, struct netif *inp) -{ - u8_t type; -#ifdef LWIP_DEBUG - u8_t code; -#endif /* LWIP_DEBUG */ - struct icmp_echo_hdr *iecho; - struct ip_hdr *iphdr; - s16_t hlen; - - ICMP_STATS_INC(icmp.recv); - snmp_inc_icmpinmsgs(); - - iphdr = (struct ip_hdr *)ip_current_header(); - hlen = IPH_HL(iphdr) * 4; - if (p->len < sizeof(u16_t)*2) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%"U16_F" bytes) received\n", p->tot_len)); - goto lenerr; - } - - type = *((u8_t *)p->payload); -#ifdef LWIP_DEBUG - code = *(((u8_t *)p->payload)+1); -#endif /* LWIP_DEBUG */ - switch (type) { - case ICMP_ER: - /* This is OK, echo reply might have been parsed by a raw PCB - (as obviously, an echo request has been sent, too). */ - break; - case ICMP_ECHO: -#if !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING - { - int accepted = 1; -#if !LWIP_MULTICAST_PING - /* multicast destination address? */ - if (ip_addr_ismulticast(ip_current_dest_addr())) { - accepted = 0; - } -#endif /* LWIP_MULTICAST_PING */ -#if !LWIP_BROADCAST_PING - /* broadcast destination address? */ - if (ip_addr_isbroadcast(ip_current_dest_addr(), inp)) { - accepted = 0; - } -#endif /* LWIP_BROADCAST_PING */ - /* broadcast or multicast destination address not acceptd? */ - if (!accepted) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to multicast or broadcast pings\n")); - ICMP_STATS_INC(icmp.err); - pbuf_free(p); - return; - } - } -#endif /* !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING */ - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n")); - if (p->tot_len < sizeof(struct icmp_echo_hdr)) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: bad ICMP echo received\n")); - goto lenerr; - } - if (inet_chksum_pbuf(p) != 0) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: checksum failed for received ICMP echo\n")); - pbuf_free(p); - ICMP_STATS_INC(icmp.chkerr); - snmp_inc_icmpinerrors(); - return; - } -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN - if (pbuf_header(p, (PBUF_IP_HLEN + PBUF_LINK_HLEN))) { - /* p is not big enough to contain link headers - * allocate a new one and copy p into it - */ - struct pbuf *r; - /* switch p->payload to ip header */ - if (pbuf_header(p, hlen)) { - LWIP_ASSERT("icmp_input: moving p->payload to ip header failed\n", 0); - goto memerr; - } - /* allocate new packet buffer with space for link headers */ - r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM); - if (r == NULL) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed\n")); - goto memerr; - } - LWIP_ASSERT("check that first pbuf can hold struct the ICMP header", - (r->len >= hlen + sizeof(struct icmp_echo_hdr))); - /* copy the whole packet including ip header */ - if (pbuf_copy(r, p) != ERR_OK) { - LWIP_ASSERT("icmp_input: copying to new pbuf failed\n", 0); - goto memerr; - } - iphdr = (struct ip_hdr *)r->payload; - /* switch r->payload back to icmp header */ - if (pbuf_header(r, -hlen)) { - LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - goto memerr; - } - /* free the original p */ - pbuf_free(p); - /* we now have an identical copy of p that has room for link headers */ - p = r; - } else { - /* restore p->payload to point to icmp header */ - if (pbuf_header(p, -(s16_t)(PBUF_IP_HLEN + PBUF_LINK_HLEN))) { - LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - goto memerr; - } - } -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ - /* At this point, all checks are OK. */ - /* We generate an answer by switching the dest and src ip addresses, - * setting the icmp type to ECHO_RESPONSE and updating the checksum. */ - iecho = (struct icmp_echo_hdr *)p->payload; - ip_addr_copy(iphdr->src, *ip_current_dest_addr()); - ip_addr_copy(iphdr->dest, *ip_current_src_addr()); - ICMPH_TYPE_SET(iecho, ICMP_ER); - /* adjust the checksum */ - if (iecho->chksum >= PP_HTONS(0xffffU - (ICMP_ECHO << 8))) { - iecho->chksum += PP_HTONS(ICMP_ECHO << 8) + 1; - } else { - iecho->chksum += PP_HTONS(ICMP_ECHO << 8); - } - - /* Set the correct TTL and recalculate the header checksum. */ - IPH_TTL_SET(iphdr, ICMP_TTL); - IPH_CHKSUM_SET(iphdr, 0); -#if CHECKSUM_GEN_IP - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN)); -#endif /* CHECKSUM_GEN_IP */ - - ICMP_STATS_INC(icmp.xmit); - /* increase number of messages attempted to send */ - snmp_inc_icmpoutmsgs(); - /* increase number of echo replies attempted to send */ - snmp_inc_icmpoutechoreps(); - - if(pbuf_header(p, hlen)) { - LWIP_ASSERT("Can't move over header in packet", 0); - } else { - err_t ret; - /* send an ICMP packet, src addr is the dest addr of the curren packet */ - ret = ip_output_if(p, ip_current_dest_addr(), IP_HDRINCL, - ICMP_TTL, 0, IP_PROTO_ICMP, inp); - if (ret != ERR_OK) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ip_output_if returned an error: %c.\n", ret)); - } - } - break; - default: - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n", - (s16_t)type, (s16_t)code)); - ICMP_STATS_INC(icmp.proterr); - ICMP_STATS_INC(icmp.drop); - } - pbuf_free(p); - return; -lenerr: - pbuf_free(p); - ICMP_STATS_INC(icmp.lenerr); - snmp_inc_icmpinerrors(); - return; -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN -memerr: - pbuf_free(p); - ICMP_STATS_INC(icmp.err); - snmp_inc_icmpinerrors(); - return; -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ -} - -/** - * Send an icmp 'destination unreachable' packet, called from ip_input() if - * the transport layer protocol is unknown and from udp_input() if the local - * port is not bound. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IP header - * @param t type of the 'unreachable' packet - */ -void -icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t) -{ - icmp_send_response(p, ICMP_DUR, t); -} - -#if IP_FORWARD || IP_REASSEMBLY -/** - * Send a 'time exceeded' packet, called from ip_forward() if TTL is 0. - * - * @param p the input packet for which the 'time exceeded' should be sent, - * p->payload pointing to the IP header - * @param t type of the 'time exceeded' packet - */ -void -icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t) -{ - icmp_send_response(p, ICMP_TE, t); -} - -#endif /* IP_FORWARD || IP_REASSEMBLY */ - -/** - * Send an icmp packet in response to an incoming packet. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IP header - * @param type Type of the ICMP header - * @param code Code of the ICMP header - */ -static void -icmp_send_response(struct pbuf *p, u8_t type, u8_t code) -{ - struct pbuf *q; - struct ip_hdr *iphdr; - /* we can use the echo header here */ - struct icmp_echo_hdr *icmphdr; - ip_addr_t iphdr_src; - - /* ICMP header + IP header + 8 bytes of data */ - q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE, - PBUF_RAM); - if (q == NULL) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMP packet.\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold icmp message", - (q->len >= (sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE))); - - iphdr = (struct ip_hdr *)p->payload; - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded from ")); - ip_addr_debug_print(ICMP_DEBUG, &(iphdr->src)); - LWIP_DEBUGF(ICMP_DEBUG, (" to ")); - ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest)); - LWIP_DEBUGF(ICMP_DEBUG, ("\n")); - - icmphdr = (struct icmp_echo_hdr *)q->payload; - icmphdr->type = type; - icmphdr->code = code; - icmphdr->id = 0; - icmphdr->seqno = 0; - - /* copy fields from original packet */ - SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload, - IP_HLEN + ICMP_DEST_UNREACH_DATASIZE); - - /* calculate checksum */ - icmphdr->chksum = 0; - icmphdr->chksum = inet_chksum(icmphdr, q->len); - ICMP_STATS_INC(icmp.xmit); - /* increase number of messages attempted to send */ - snmp_inc_icmpoutmsgs(); - /* increase number of destination unreachable messages attempted to send */ - snmp_inc_icmpouttimeexcds(); - ip_addr_copy(iphdr_src, iphdr->src); - ip_output(q, NULL, &iphdr_src, ICMP_TTL, 0, IP_PROTO_ICMP); - pbuf_free(q); -} - -#endif /* LWIP_ICMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/igmp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/igmp.c deleted file mode 100644 index 22a1e1619..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/igmp.c +++ /dev/null @@ -1,803 +0,0 @@ -/** - * @file - * IGMP - Internet Group Management Protocol - * - */ - -/* - * Copyright (c) 2002 CITEL Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of CITEL Technologies Ltd nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``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 CITEL TECHNOLOGIES OR CONTRIBUTORS 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. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. -*/ - -/*------------------------------------------------------------- -Note 1) -Although the rfc requires V1 AND V2 capability -we will only support v2 since now V1 is very old (August 1989) -V1 can be added if required - -a debug print and statistic have been implemented to -show this up. -------------------------------------------------------------- -------------------------------------------------------------- -Note 2) -A query for a specific group address (as opposed to ALLHOSTS) -has now been implemented as I am unsure if it is required - -a debug print and statistic have been implemented to -show this up. -------------------------------------------------------------- -------------------------------------------------------------- -Note 3) -The router alert rfc 2113 is implemented in outgoing packets -but not checked rigorously incoming -------------------------------------------------------------- -Steve Reynolds -------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- - * RFC 988 - Host extensions for IP multicasting - V0 - * RFC 1054 - Host extensions for IP multicasting - - * RFC 1112 - Host extensions for IP multicasting - V1 - * RFC 2236 - Internet Group Management Protocol, Version 2 - V2 <- this code is based on this RFC (it's the "de facto" standard) - * RFC 3376 - Internet Group Management Protocol, Version 3 - V3 - * RFC 4604 - Using Internet Group Management Protocol Version 3... - V3+ - * RFC 2113 - IP Router Alert Option - - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- - * Includes - *----------------------------------------------------------------------------*/ - -#include "lwip/opt.h" - -#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/igmp.h" -#include "lwip/debug.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/ip.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/stats.h" - -#include "string.h" - -/* - * IGMP constants - */ -#define IGMP_TTL 1 -#define IGMP_MINLEN 8 -#define ROUTER_ALERT 0x9404U -#define ROUTER_ALERTLEN 4 - -/* - * IGMP message types, including version number. - */ -#define IGMP_MEMB_QUERY 0x11 /* Membership query */ -#define IGMP_V1_MEMB_REPORT 0x12 /* Ver. 1 membership report */ -#define IGMP_V2_MEMB_REPORT 0x16 /* Ver. 2 membership report */ -#define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */ - -/* Group membership states */ -#define IGMP_GROUP_NON_MEMBER 0 -#define IGMP_GROUP_DELAYING_MEMBER 1 -#define IGMP_GROUP_IDLE_MEMBER 2 - -/** - * IGMP packet format. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct igmp_msg { - PACK_STRUCT_FIELD(u8_t igmp_msgtype); - PACK_STRUCT_FIELD(u8_t igmp_maxresp); - PACK_STRUCT_FIELD(u16_t igmp_checksum); - PACK_STRUCT_FIELD(ip_addr_p_t igmp_group_address); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - - -static struct igmp_group *igmp_lookup_group(struct netif *ifp, ip_addr_t *addr); -static err_t igmp_remove_group(struct igmp_group *group); -static void igmp_timeout( struct igmp_group *group); -static void igmp_start_timer(struct igmp_group *group, u8_t max_time); -static void igmp_delaying_member(struct igmp_group *group, u8_t maxresp); -static err_t igmp_ip_output_if(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, struct netif *netif); -static void igmp_send(struct igmp_group *group, u8_t type); - - -static struct igmp_group* igmp_group_list; -static ip_addr_t allsystems; -static ip_addr_t allrouters; - - -/** - * Initialize the IGMP module - */ -void -igmp_init(void) -{ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_init: initializing\n")); - - IP4_ADDR(&allsystems, 224, 0, 0, 1); - IP4_ADDR(&allrouters, 224, 0, 0, 2); -} - -#ifdef LWIP_DEBUG -/** - * Dump global IGMP groups list - */ -void -igmp_dump_group_list() -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_dump_group_list: [%"U32_F"] ", (u32_t)(group->group_state))); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->netif)); - group = group->next; - } - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); -} -#else -#define igmp_dump_group_list() -#endif /* LWIP_DEBUG */ - -/** - * Start IGMP processing on interface - * - * @param netif network interface on which start IGMP processing - */ -err_t -igmp_start(struct netif *netif) -{ - struct igmp_group* group; - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: starting IGMP processing on if %p\n", netif)); - - group = igmp_lookup_group(netif, &allsystems); - - if (group != NULL) { - group->group_state = IGMP_GROUP_IDLE_MEMBER; - group->use++; - - /* Allow the igmp messages at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: igmp_mac_filter(ADD ")); - ip_addr_debug_print(IGMP_DEBUG, &allsystems); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, &allsystems, IGMP_ADD_MAC_FILTER); - } - - return ERR_OK; - } - - return ERR_MEM; -} - -/** - * Stop IGMP processing on interface - * - * @param netif network interface on which stop IGMP processing - */ -err_t -igmp_stop(struct netif *netif) -{ - struct igmp_group *group = igmp_group_list; - struct igmp_group *prev = NULL; - struct igmp_group *next; - - /* look for groups joined on this interface further down the list */ - while (group != NULL) { - next = group->next; - /* is it a group joined on this interface? */ - if (group->netif == netif) { - /* is it the first group of the list? */ - if (group == igmp_group_list) { - igmp_group_list = next; - } - /* is there a "previous" group defined? */ - if (prev != NULL) { - prev->next = next; - } - /* disable the group at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_stop: igmp_mac_filter(DEL ")); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, &(group->group_address), IGMP_DEL_MAC_FILTER); - } - /* free group */ - memp_free(MEMP_IGMP_GROUP, group); - } else { - /* change the "previous" */ - prev = group; - } - /* move to "next" */ - group = next; - } - return ERR_OK; -} - -/** - * Report IGMP memberships for this interface - * - * @param netif network interface on which report IGMP memberships - */ -void -igmp_report_groups(struct netif *netif) -{ - struct igmp_group *group = igmp_group_list; - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_report_groups: sending IGMP reports on if %p\n", netif)); - - while (group != NULL) { - if (group->netif == netif) { - igmp_delaying_member(group, IGMP_JOIN_DELAYING_MEMBER_TMR); - } - group = group->next; - } -} - -/** - * Search for a group in the global igmp_group_list - * - * @param ifp the network interface for which to look - * @param addr the group ip address to search for - * @return a struct igmp_group* if the group has been found, - * NULL if the group wasn't found. - */ -struct igmp_group * -igmp_lookfor_group(struct netif *ifp, ip_addr_t *addr) -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - if ((group->netif == ifp) && (ip_addr_cmp(&(group->group_address), addr))) { - return group; - } - group = group->next; - } - - /* to be clearer, we return NULL here instead of - * 'group' (which is also NULL at this point). - */ - return NULL; -} - -/** - * Search for a specific igmp group and create a new one if not found- - * - * @param ifp the network interface for which to look - * @param addr the group ip address to search - * @return a struct igmp_group*, - * NULL on memory error. - */ -struct igmp_group * -igmp_lookup_group(struct netif *ifp, ip_addr_t *addr) -{ - struct igmp_group *group = igmp_group_list; - - /* Search if the group already exists */ - group = igmp_lookfor_group(ifp, addr); - if (group != NULL) { - /* Group already exists. */ - return group; - } - - /* Group doesn't exist yet, create a new one */ - group = (struct igmp_group *)memp_malloc(MEMP_IGMP_GROUP); - if (group != NULL) { - group->netif = ifp; - ip_addr_set(&(group->group_address), addr); - group->timer = 0; /* Not running */ - group->group_state = IGMP_GROUP_NON_MEMBER; - group->last_reporter_flag = 0; - group->use = 0; - group->next = igmp_group_list; - - igmp_group_list = group; - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_lookup_group: %sallocated a new group with address ", (group?"":"impossible to "))); - ip_addr_debug_print(IGMP_DEBUG, addr); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", ifp)); - - return group; -} - -/** - * Remove a group in the global igmp_group_list - * - * @param group the group to remove from the global igmp_group_list - * @return ERR_OK if group was removed from the list, an err_t otherwise - */ -static err_t -igmp_remove_group(struct igmp_group *group) -{ - err_t err = ERR_OK; - - /* Is it the first group? */ - if (igmp_group_list == group) { - igmp_group_list = group->next; - } else { - /* look for group further down the list */ - struct igmp_group *tmpGroup; - for (tmpGroup = igmp_group_list; tmpGroup != NULL; tmpGroup = tmpGroup->next) { - if (tmpGroup->next == group) { - tmpGroup->next = group->next; - break; - } - } - /* Group not found in the global igmp_group_list */ - if (tmpGroup == NULL) - err = ERR_ARG; - } - /* free group */ - memp_free(MEMP_IGMP_GROUP, group); - - return err; -} - -/** - * Called from ip_input() if a new IGMP packet is received. - * - * @param p received igmp packet, p->payload pointing to the igmp header - * @param inp network interface on which the packet was received - * @param dest destination ip address of the igmp packet - */ -void -igmp_input(struct pbuf *p, struct netif *inp, ip_addr_t *dest) -{ - struct igmp_msg* igmp; - struct igmp_group* group; - struct igmp_group* groupref; - - IGMP_STATS_INC(igmp.recv); - - /* Note that the length CAN be greater than 8 but only 8 are used - All are included in the checksum */ - if (p->len < IGMP_MINLEN) { - pbuf_free(p); - IGMP_STATS_INC(igmp.lenerr); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: length error\n")); - return; - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: message from ")); - ip_addr_debug_print(IGMP_DEBUG, &(ip_current_header()->src)); - LWIP_DEBUGF(IGMP_DEBUG, (" to address ")); - ip_addr_debug_print(IGMP_DEBUG, &(ip_current_header()->dest)); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", inp)); - - /* Now calculate and check the checksum */ - igmp = (struct igmp_msg *)p->payload; - if (inet_chksum(igmp, p->len)) { - pbuf_free(p); - IGMP_STATS_INC(igmp.chkerr); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: checksum error\n")); - return; - } - - /* Packet is ok so find an existing group */ - group = igmp_lookfor_group(inp, dest); /* use the destination IP address of incoming packet */ - - /* If group can be found or create... */ - if (!group) { - pbuf_free(p); - IGMP_STATS_INC(igmp.drop); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP frame not for us\n")); - return; - } - - /* NOW ACT ON THE INCOMING MESSAGE TYPE... */ - switch (igmp->igmp_msgtype) { - case IGMP_MEMB_QUERY: { - /* IGMP_MEMB_QUERY to the "all systems" address ? */ - if ((ip_addr_cmp(dest, &allsystems)) && ip_addr_isany(&igmp->igmp_group_address)) { - /* THIS IS THE GENERAL QUERY */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: General IGMP_MEMB_QUERY on \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - - if (igmp->igmp_maxresp == 0) { - IGMP_STATS_INC(igmp.rx_v1); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: got an all hosts query with time== 0 - this is V1 and not implemented - treat as v2\n")); - igmp->igmp_maxresp = IGMP_V1_DELAYING_MEMBER_TMR; - } else { - IGMP_STATS_INC(igmp.rx_general); - } - - groupref = igmp_group_list; - while (groupref) { - /* Do not send messages on the all systems group address! */ - if ((groupref->netif == inp) && (!(ip_addr_cmp(&(groupref->group_address), &allsystems)))) { - igmp_delaying_member(groupref, igmp->igmp_maxresp); - } - groupref = groupref->next; - } - } else { - /* IGMP_MEMB_QUERY to a specific group ? */ - if (!ip_addr_isany(&igmp->igmp_group_address)) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_MEMB_QUERY to a specific group ")); - ip_addr_debug_print(IGMP_DEBUG, &igmp->igmp_group_address); - if (ip_addr_cmp(dest, &allsystems)) { - ip_addr_t groupaddr; - LWIP_DEBUGF(IGMP_DEBUG, (" using \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - /* we first need to re-look for the group since we used dest last time */ - ip_addr_copy(groupaddr, igmp->igmp_group_address); - group = igmp_lookfor_group(inp, &groupaddr); - } else { - LWIP_DEBUGF(IGMP_DEBUG, (" with the group address as destination [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - } - - if (group != NULL) { - IGMP_STATS_INC(igmp.rx_group); - igmp_delaying_member(group, igmp->igmp_maxresp); - } else { - IGMP_STATS_INC(igmp.drop); - } - } else { - IGMP_STATS_INC(igmp.proterr); - } - } - break; - } - case IGMP_V2_MEMB_REPORT: { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_V2_MEMB_REPORT\n")); - IGMP_STATS_INC(igmp.rx_report); - if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) { - /* This is on a specific group we have already looked up */ - group->timer = 0; /* stopped */ - group->group_state = IGMP_GROUP_IDLE_MEMBER; - group->last_reporter_flag = 0; - } - break; - } - default: { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: unexpected msg %d in state %d on group %p on if %p\n", - igmp->igmp_msgtype, group->group_state, &group, group->netif)); - IGMP_STATS_INC(igmp.proterr); - break; - } - } - - pbuf_free(p); - return; -} - -/** - * Join a group on one network interface. - * - * @param ifaddr ip address of the network interface which should join a new group - * @param groupaddr the ip address of the group which to join - * @return ERR_OK if group was joined on the netif(s), an err_t otherwise - */ -err_t -igmp_joingroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct igmp_group *group; - struct netif *netif; - - /* make sure it is multicast address */ - LWIP_ERROR("igmp_joingroup: attempt to join non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;); - LWIP_ERROR("igmp_joingroup: attempt to join allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;); - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we join this interface ? */ - if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) { - /* find group or create a new one if not found */ - group = igmp_lookup_group(netif, groupaddr); - - if (group != NULL) { - /* This should create a new group, check the state to make sure */ - if (group->group_state != IGMP_GROUP_NON_MEMBER) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to group not in state IGMP_GROUP_NON_MEMBER\n")); - } else { - /* OK - it was new group */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to new group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* If first use of the group, allow the group at the MAC level */ - if ((group->use==0) && (netif->igmp_mac_filter != NULL)) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: igmp_mac_filter(ADD ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, groupaddr, IGMP_ADD_MAC_FILTER); - } - - IGMP_STATS_INC(igmp.tx_join); - igmp_send(group, IGMP_V2_MEMB_REPORT); - - igmp_start_timer(group, IGMP_JOIN_DELAYING_MEMBER_TMR); - - /* Need to work out where this timer comes from */ - group->group_state = IGMP_GROUP_DELAYING_MEMBER; - } - /* Increment group use */ - group->use++; - /* Join on this interface */ - err = ERR_OK; - } else { - /* Return an error even if some network interfaces are joined */ - /** @todo undo any other netif already joined */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: Not enought memory to join to group\n")); - return ERR_MEM; - } - } - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - -/** - * Leave a group on one network interface. - * - * @param ifaddr ip address of the network interface which should leave a group - * @param groupaddr the ip address of the group which to leave - * @return ERR_OK if group was left on the netif(s), an err_t otherwise - */ -err_t -igmp_leavegroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct igmp_group *group; - struct netif *netif; - - /* make sure it is multicast address */ - LWIP_ERROR("igmp_leavegroup: attempt to leave non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;); - LWIP_ERROR("igmp_leavegroup: attempt to leave allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;); - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we leave this interface ? */ - if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) { - /* find group */ - group = igmp_lookfor_group(netif, groupaddr); - - if (group != NULL) { - /* Only send a leave if the flag is set according to the state diagram */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: Leaving group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* If there is no other use of the group */ - if (group->use <= 1) { - /* If we are the last reporter for this group */ - if (group->last_reporter_flag) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: sending leaving group\n")); - IGMP_STATS_INC(igmp.tx_leave); - igmp_send(group, IGMP_LEAVE_GROUP); - } - - /* Disable the group at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: igmp_mac_filter(DEL ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, groupaddr, IGMP_DEL_MAC_FILTER); - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: remove group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* Free the group */ - igmp_remove_group(group); - } else { - /* Decrement group use */ - group->use--; - } - /* Leave on this interface */ - err = ERR_OK; - } else { - /* It's not a fatal error on "leavegroup" */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: not member of group\n")); - } - } - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - -/** - * The igmp timer function (both for NO_SYS=1 and =0) - * Should be called every IGMP_TMR_INTERVAL milliseconds (100 ms is default). - */ -void -igmp_tmr(void) -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - if (group->timer > 0) { - group->timer--; - if (group->timer == 0) { - igmp_timeout(group); - } - } - group = group->next; - } -} - -/** - * Called if a timeout for one group is reached. - * Sends a report for this group. - * - * @param group an igmp_group for which a timeout is reached - */ -static void -igmp_timeout(struct igmp_group *group) -{ - /* If the state is IGMP_GROUP_DELAYING_MEMBER then we send a report for this group */ - if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_timeout: report membership for group with address ")); - ip_addr_debug_print(IGMP_DEBUG, &(group->group_address)); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->netif)); - - IGMP_STATS_INC(igmp.tx_report); - igmp_send(group, IGMP_V2_MEMB_REPORT); - } -} - -/** - * Start a timer for an igmp group - * - * @param group the igmp_group for which to start a timer - * @param max_time the time in multiples of IGMP_TMR_INTERVAL (decrease with - * every call to igmp_tmr()) - */ -static void -igmp_start_timer(struct igmp_group *group, u8_t max_time) -{ - /* ensure the input value is > 0 */ - if (max_time == 0) { - max_time = 1; - } - /* ensure the random value is > 0 */ - group->timer = (LWIP_RAND() % (max_time - 1)) + 1; -} - -/** - * Delaying membership report for a group if necessary - * - * @param group the igmp_group for which "delaying" membership report - * @param maxresp query delay - */ -static void -igmp_delaying_member(struct igmp_group *group, u8_t maxresp) -{ - if ((group->group_state == IGMP_GROUP_IDLE_MEMBER) || - ((group->group_state == IGMP_GROUP_DELAYING_MEMBER) && - ((group->timer == 0) || (maxresp < group->timer)))) { - igmp_start_timer(group, maxresp); - group->group_state = IGMP_GROUP_DELAYING_MEMBER; - } -} - - -/** - * Sends an IP packet on a network interface. This function constructs the IP header - * and calculates the IP header checksum. If the source IP address is NULL, - * the IP address of the outgoing network interface is filled in as source address. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param netif the netif on which to send this packet - * @return ERR_OK if the packet was sent OK - * ERR_BUF if p doesn't have enough space for IP/LINK headers - * returns errors returned by netif->output - */ -static err_t -igmp_ip_output_if(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, struct netif *netif) -{ - /* This is the "router alert" option */ - u16_t ra[2]; - ra[0] = PP_HTONS(ROUTER_ALERT); - ra[1] = 0x0000; /* Router shall examine packet */ - IGMP_STATS_INC(igmp.xmit); - return ip_output_if_opt(p, src, dest, IGMP_TTL, 0, IP_PROTO_IGMP, netif, ra, ROUTER_ALERTLEN); -} - -/** - * Send an igmp packet to a specific group. - * - * @param group the group to which to send the packet - * @param type the type of igmp packet to send - */ -static void -igmp_send(struct igmp_group *group, u8_t type) -{ - struct pbuf* p = NULL; - struct igmp_msg* igmp = NULL; - ip_addr_t src = *IP_ADDR_ANY; - ip_addr_t* dest = NULL; - - /* IP header + "router alert" option + IGMP header */ - p = pbuf_alloc(PBUF_TRANSPORT, IGMP_MINLEN, PBUF_RAM); - - if (p) { - igmp = (struct igmp_msg *)p->payload; - LWIP_ASSERT("igmp_send: check that first pbuf can hold struct igmp_msg", - (p->len >= sizeof(struct igmp_msg))); - ip_addr_copy(src, group->netif->ip_addr); - - if (type == IGMP_V2_MEMB_REPORT) { - dest = &(group->group_address); - ip_addr_copy(igmp->igmp_group_address, group->group_address); - group->last_reporter_flag = 1; /* Remember we were the last to report */ - } else { - if (type == IGMP_LEAVE_GROUP) { - dest = &allrouters; - ip_addr_copy(igmp->igmp_group_address, group->group_address); - } - } - - if ((type == IGMP_V2_MEMB_REPORT) || (type == IGMP_LEAVE_GROUP)) { - igmp->igmp_msgtype = type; - igmp->igmp_maxresp = 0; - igmp->igmp_checksum = 0; - igmp->igmp_checksum = inet_chksum(igmp, IGMP_MINLEN); - - igmp_ip_output_if(p, &src, dest, group->netif); - } - - pbuf_free(p); - } else { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_send: not enough memory for igmp_send\n")); - IGMP_STATS_INC(igmp.memerr); - } -} - -#endif /* LWIP_IGMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4.c deleted file mode 100644 index 8cbaa23fc..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4.c +++ /dev/null @@ -1,906 +0,0 @@ -/** - * @file - * This is the IPv4 layer implementation for incoming and outgoing IP traffic. - * - * @see ip_frag.c - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/ip_frag.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/igmp.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp_impl.h" -#include "lwip/snmp.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "lwip/stats.h" -#include "arch/perf.h" - -#include - -/** Set this to 0 in the rare case of wanting to call an extra function to - * generate the IP checksum (in contrast to calculating it on-the-fly). */ -#ifndef LWIP_INLINE_IP_CHKSUM -#define LWIP_INLINE_IP_CHKSUM 1 -#endif -#if LWIP_INLINE_IP_CHKSUM && CHECKSUM_GEN_IP -#define CHECKSUM_GEN_IP_INLINE 1 -#else -#define CHECKSUM_GEN_IP_INLINE 0 -#endif - -#if LWIP_DHCP || defined(LWIP_IP_ACCEPT_UDP_PORT) -#define IP_ACCEPT_LINK_LAYER_ADDRESSING 1 - -/** Some defines for DHCP to let link-layer-addressed packets through while the - * netif is down. - * To use this in your own application/protocol, define LWIP_IP_ACCEPT_UDP_PORT - * to return 1 if the port is accepted and 0 if the port is not accepted. - */ -#if LWIP_DHCP && defined(LWIP_IP_ACCEPT_UDP_PORT) -/* accept DHCP client port and custom port */ -#define IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(port) (((port) == PP_NTOHS(DHCP_CLIENT_PORT)) \ - || (LWIP_IP_ACCEPT_UDP_PORT(port))) -#elif defined(LWIP_IP_ACCEPT_UDP_PORT) /* LWIP_DHCP && defined(LWIP_IP_ACCEPT_UDP_PORT) */ -/* accept custom port only */ -#define IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(port) (LWIP_IP_ACCEPT_UDP_PORT(dst_port)) -#else /* LWIP_DHCP && defined(LWIP_IP_ACCEPT_UDP_PORT) */ -/* accept DHCP client port only */ -#define IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(port) ((port) == PP_NTOHS(DHCP_CLIENT_PORT)) -#endif /* LWIP_DHCP && defined(LWIP_IP_ACCEPT_UDP_PORT) */ - -#else /* LWIP_DHCP */ -#define IP_ACCEPT_LINK_LAYER_ADDRESSING 0 -#endif /* LWIP_DHCP */ - -/** Global data for both IPv4 and IPv6 */ -struct ip_globals ip_data; - -/** The IP header ID of the next outgoing IP packet */ -static u16_t ip_id; - -/** - * Finds the appropriate network interface for a given IP address. It - * searches the list of network interfaces linearly. A match is found - * if the masked IP address of the network interface equals the masked - * IP address given to the function. - * - * @param dest the destination IP address for which to find the route - * @return the netif on which to send to reach dest - */ -struct netif * -ip_route(ip_addr_t *dest) -{ - struct netif *netif; - -#ifdef LWIP_HOOK_IP4_ROUTE - netif = LWIP_HOOK_IP4_ROUTE(dest); - if (netif != NULL) { - return netif; - } -#endif - - /* iterate through netifs */ - for (netif = netif_list; netif != NULL; netif = netif->next) { - /* network mask matches? */ - if (netif_is_up(netif)) { - if (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask))) { - /* return netif on which to forward IP packet */ - return netif; - } - } - } - if ((netif_default == NULL) || (!netif_is_up(netif_default))) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_route: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest))); - IP_STATS_INC(ip.rterr); - snmp_inc_ipoutnoroutes(); - return NULL; - } - /* no matching netif found, use default netif */ - return netif_default; -} - -#if IP_FORWARD -/** - * Determine whether an IP address is in a reserved set of addresses - * that may not be forwarded, or whether datagrams to that destination - * may be forwarded. - * @param p the packet to forward - * @param dest the destination IP address - * @return 1: can forward 0: discard - */ -static int -ip_canforward(struct pbuf *p) -{ - u32_t addr = ip4_addr_get_u32(ip_current_dest_addr()); - - if (p->flags & PBUF_FLAG_LLBCAST) { - /* don't route link-layer broadcasts */ - return 0; - } - if ((p->flags & PBUF_FLAG_LLMCAST) && !IP_MULTICAST(addr)) { - /* don't route link-layer multicasts unless the destination address is an IP - multicast address */ - return 0; - } - if (IP_EXPERIMENTAL(addr)) { - return 0; - } - if (IP_CLASSA(addr)) { - u32_t net = addr & IP_CLASSA_NET; - if ((net == 0) || (net == (IP_LOOPBACKNET << IP_CLASSA_NSHIFT))) { - /* don't route loopback packets */ - return 0; - } - } - return 1; -} - -/** - * Forwards an IP packet. It finds an appropriate route for the - * packet, decrements the TTL value of the packet, adjusts the - * checksum and outputs the packet on the appropriate interface. - * - * @param p the packet to forward (p->payload points to IP header) - * @param iphdr the IP header of the input packet - * @param inp the netif on which this packet was received - */ -static void -ip_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp) -{ - struct netif *netif; - - PERF_START; - - if (!ip_canforward(p)) { - goto return_noroute; - } - - /* RFC3927 2.7: do not forward link-local addresses */ - if (ip_addr_islinklocal(ip_current_dest_addr())) { - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: not forwarding LLA %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(ip_current_dest_addr()), ip4_addr2_16(ip_current_dest_addr()), - ip4_addr3_16(ip_current_dest_addr()), ip4_addr4_16(ip_current_dest_addr()))); - goto return_noroute; - } - - /* Find network interface where to forward this IP packet to. */ - netif = ip_route(ip_current_dest_addr()); - if (netif == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: no forwarding route for %"U16_F".%"U16_F".%"U16_F".%"U16_F" found\n", - ip4_addr1_16(ip_current_dest_addr()), ip4_addr2_16(ip_current_dest_addr()), - ip4_addr3_16(ip_current_dest_addr()), ip4_addr4_16(ip_current_dest_addr()))); - goto return_noroute; - } -#if !IP_FORWARD_ALLOW_TX_ON_RX_NETIF - /* Do not forward packets onto the same network interface on which - * they arrived. */ - if (netif == inp) { - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: not bouncing packets back on incoming interface.\n")); - goto return_noroute; - } -#endif /* IP_FORWARD_ALLOW_TX_ON_RX_NETIF */ - - /* decrement TTL */ - IPH_TTL_SET(iphdr, IPH_TTL(iphdr) - 1); - /* send ICMP if TTL == 0 */ - if (IPH_TTL(iphdr) == 0) { - snmp_inc_ipinhdrerrors(); -#if LWIP_ICMP - /* Don't send ICMP messages in response to ICMP messages */ - if (IPH_PROTO(iphdr) != IP_PROTO_ICMP) { - icmp_time_exceeded(p, ICMP_TE_TTL); - } -#endif /* LWIP_ICMP */ - return; - } - - /* Incrementally update the IP checksum. */ - if (IPH_CHKSUM(iphdr) >= PP_HTONS(0xffffU - 0x100)) { - IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + PP_HTONS(0x100) + 1); - } else { - IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + PP_HTONS(0x100)); - } - - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: forwarding packet to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(ip_current_dest_addr()), ip4_addr2_16(ip_current_dest_addr()), - ip4_addr3_16(ip_current_dest_addr()), ip4_addr4_16(ip_current_dest_addr()))); - - IP_STATS_INC(ip.fw); - IP_STATS_INC(ip.xmit); - snmp_inc_ipforwdatagrams(); - - PERF_STOP("ip_forward"); - /* transmit pbuf on chosen interface */ - netif->output(netif, p, ip_current_dest_addr()); - return; -return_noroute: - snmp_inc_ipoutnoroutes(); -} -#endif /* IP_FORWARD */ - -/** - * This function is called by the network interface device driver when - * an IP packet is received. The function does the basic checks of the - * IP header such as packet size being at least larger than the header - * size etc. If the packet was not destined for us, the packet is - * forwarded (using ip_forward). The IP checksum is always checked. - * - * Finally, the packet is sent to the upper layer protocol input function. - * - * @param p the received IP packet (p->payload points to IP header) - * @param inp the netif on which this packet was received - * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't - * processed, but currently always returns ERR_OK) - */ -err_t -ip_input(struct pbuf *p, struct netif *inp) -{ - struct ip_hdr *iphdr; - struct netif *netif; - u16_t iphdr_hlen; - u16_t iphdr_len; -#if IP_ACCEPT_LINK_LAYER_ADDRESSING - int check_ip_src=1; -#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */ - - IP_STATS_INC(ip.recv); - snmp_inc_ipinreceives(); - - /* identify the IP header */ - iphdr = (struct ip_hdr *)p->payload; - if (IPH_V(iphdr) != 4) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", IPH_V(iphdr))); - ip_debug_print(p); - pbuf_free(p); - IP_STATS_INC(ip.err); - IP_STATS_INC(ip.drop); - snmp_inc_ipinhdrerrors(); - return ERR_OK; - } - -#ifdef LWIP_HOOK_IP4_INPUT - if (LWIP_HOOK_IP4_INPUT(p, inp)) { - /* the packet has been eaten */ - return ERR_OK; - } -#endif - - /* obtain IP header length in number of 32-bit words */ - iphdr_hlen = IPH_HL(iphdr); - /* calculate IP header length in bytes */ - iphdr_hlen *= 4; - /* obtain ip length in bytes */ - iphdr_len = ntohs(IPH_LEN(iphdr)); - - /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */ - if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len)) { - if (iphdr_hlen > p->len) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IP header (len %"U16_F") does not fit in first pbuf (len %"U16_F"), IP packet dropped.\n", - iphdr_hlen, p->len)); - } - if (iphdr_len > p->tot_len) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n", - iphdr_len, p->tot_len)); - } - /* free (drop) packet pbufs */ - pbuf_free(p); - IP_STATS_INC(ip.lenerr); - IP_STATS_INC(ip.drop); - snmp_inc_ipindiscards(); - return ERR_OK; - } - - /* verify checksum */ -#if CHECKSUM_CHECK_IP - if (inet_chksum(iphdr, iphdr_hlen) != 0) { - - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("Checksum (0x%"X16_F") failed, IP packet dropped.\n", inet_chksum(iphdr, iphdr_hlen))); - ip_debug_print(p); - pbuf_free(p); - IP_STATS_INC(ip.chkerr); - IP_STATS_INC(ip.drop); - snmp_inc_ipinhdrerrors(); - return ERR_OK; - } -#endif - - /* Trim pbuf. This should have been done at the netif layer, - * but we'll do it anyway just to be sure that its done. */ - pbuf_realloc(p, iphdr_len); - - /* copy IP addresses to aligned ip_addr_t */ - ip_addr_copy(*ipX_2_ip(&ip_data.current_iphdr_dest), iphdr->dest); - ip_addr_copy(*ipX_2_ip(&ip_data.current_iphdr_src), iphdr->src); - - /* match packet against an interface, i.e. is this packet for us? */ -#if LWIP_IGMP - if (ip_addr_ismulticast(ip_current_dest_addr())) { - if ((inp->flags & NETIF_FLAG_IGMP) && (igmp_lookfor_group(inp, ip_current_dest_addr()))) { - netif = inp; - } else { - netif = NULL; - } - } else -#endif /* LWIP_IGMP */ - { - /* start trying with inp. if that's not acceptable, start walking the - list of configured netifs. - 'first' is used as a boolean to mark whether we started walking the list */ - int first = 1; - netif = inp; - do { - LWIP_DEBUGF(IP_DEBUG, ("ip_input: iphdr->dest 0x%"X32_F" netif->ip_addr 0x%"X32_F" (0x%"X32_F", 0x%"X32_F", 0x%"X32_F")\n", - ip4_addr_get_u32(&iphdr->dest), ip4_addr_get_u32(&netif->ip_addr), - ip4_addr_get_u32(&iphdr->dest) & ip4_addr_get_u32(&netif->netmask), - ip4_addr_get_u32(&netif->ip_addr) & ip4_addr_get_u32(&netif->netmask), - ip4_addr_get_u32(&iphdr->dest) & ~ip4_addr_get_u32(&netif->netmask))); - - /* interface is up and configured? */ - if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) { - /* unicast to this interface address? */ - if (ip_addr_cmp(ip_current_dest_addr(), &(netif->ip_addr)) || - /* or broadcast on this interface network address? */ - ip_addr_isbroadcast(ip_current_dest_addr(), netif)) { - LWIP_DEBUGF(IP_DEBUG, ("ip_input: packet accepted on interface %c%c\n", - netif->name[0], netif->name[1])); - /* break out of for loop */ - break; - } -#if LWIP_AUTOIP - /* connections to link-local addresses must persist after changing - the netif's address (RFC3927 ch. 1.9) */ - if ((netif->autoip != NULL) && - ip_addr_cmp(ip_current_dest_addr(), &(netif->autoip->llipaddr))) { - LWIP_DEBUGF(IP_DEBUG, ("ip_input: LLA packet accepted on interface %c%c\n", - netif->name[0], netif->name[1])); - /* break out of for loop */ - break; - } -#endif /* LWIP_AUTOIP */ - } - if (first) { - first = 0; - netif = netif_list; - } else { - netif = netif->next; - } - if (netif == inp) { - netif = netif->next; - } - } while(netif != NULL); - } - -#if IP_ACCEPT_LINK_LAYER_ADDRESSING - /* Pass DHCP messages regardless of destination address. DHCP traffic is addressed - * using link layer addressing (such as Ethernet MAC) so we must not filter on IP. - * According to RFC 1542 section 3.1.1, referred by RFC 2131). - * - * If you want to accept private broadcast communication while a netif is down, - * define LWIP_IP_ACCEPT_UDP_PORT(dst_port), e.g.: - * - * #define LWIP_IP_ACCEPT_UDP_PORT(dst_port) ((dst_port) == PP_NTOHS(12345)) - */ - if (netif == NULL) { - /* remote port is DHCP server? */ - if (IPH_PROTO(iphdr) == IP_PROTO_UDP) { - struct udp_hdr *udphdr = (struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen); - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: UDP packet to DHCP client port %"U16_F"\n", - ntohs(udphdr->dest))); - if (IP_ACCEPT_LINK_LAYER_ADDRESSED_PORT(udphdr->dest)) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: DHCP packet accepted.\n")); - netif = inp; - check_ip_src = 0; - } - } - } -#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */ - - /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */ -#if IP_ACCEPT_LINK_LAYER_ADDRESSING - /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */ - if (check_ip_src && !ip_addr_isany(ip_current_src_addr())) -#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */ - { if ((ip_addr_isbroadcast(ip_current_src_addr(), inp)) || - (ip_addr_ismulticast(ip_current_src_addr()))) { - /* packet source is not valid */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("ip_input: packet source is not valid.\n")); - /* free (drop) packet pbufs */ - pbuf_free(p); - IP_STATS_INC(ip.drop); - snmp_inc_ipinaddrerrors(); - snmp_inc_ipindiscards(); - return ERR_OK; - } - } - - /* packet not for us? */ - if (netif == NULL) { - /* packet not for us, route or discard */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: packet not for us.\n")); -#if IP_FORWARD - /* non-broadcast packet? */ - if (!ip_addr_isbroadcast(ip_current_dest_addr(), inp)) { - /* try to forward IP packet on (other) interfaces */ - ip_forward(p, iphdr, inp); - } else -#endif /* IP_FORWARD */ - { - snmp_inc_ipinaddrerrors(); - snmp_inc_ipindiscards(); - } - pbuf_free(p); - return ERR_OK; - } - /* packet consists of multiple fragments? */ - if ((IPH_OFFSET(iphdr) & PP_HTONS(IP_OFFMASK | IP_MF)) != 0) { -#if IP_REASSEMBLY /* packet fragment reassembly code present? */ - LWIP_DEBUGF(IP_DEBUG, ("IP packet is a fragment (id=0x%04"X16_F" tot_len=%"U16_F" len=%"U16_F" MF=%"U16_F" offset=%"U16_F"), calling ip_reass()\n", - ntohs(IPH_ID(iphdr)), p->tot_len, ntohs(IPH_LEN(iphdr)), !!(IPH_OFFSET(iphdr) & PP_HTONS(IP_MF)), (ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)*8)); - /* reassemble the packet*/ - p = ip_reass(p); - /* packet not fully reassembled yet? */ - if (p == NULL) { - return ERR_OK; - } - iphdr = (struct ip_hdr *)p->payload; -#else /* IP_REASSEMBLY == 0, no packet fragment reassembly code present */ - pbuf_free(p); - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since it was fragmented (0x%"X16_F") (while IP_REASSEMBLY == 0).\n", - ntohs(IPH_OFFSET(iphdr)))); - IP_STATS_INC(ip.opterr); - IP_STATS_INC(ip.drop); - /* unsupported protocol feature */ - snmp_inc_ipinunknownprotos(); - return ERR_OK; -#endif /* IP_REASSEMBLY */ - } - -#if IP_OPTIONS_ALLOWED == 0 /* no support for IP options in the IP header? */ - -#if LWIP_IGMP - /* there is an extra "router alert" option in IGMP messages which we allow for but do not police */ - if((iphdr_hlen > IP_HLEN) && (IPH_PROTO(iphdr) != IP_PROTO_IGMP)) { -#else - if (iphdr_hlen > IP_HLEN) { -#endif /* LWIP_IGMP */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since there were IP options (while IP_OPTIONS_ALLOWED == 0).\n")); - pbuf_free(p); - IP_STATS_INC(ip.opterr); - IP_STATS_INC(ip.drop); - /* unsupported protocol feature */ - snmp_inc_ipinunknownprotos(); - return ERR_OK; - } -#endif /* IP_OPTIONS_ALLOWED == 0 */ - - /* send to upper layers */ - LWIP_DEBUGF(IP_DEBUG, ("ip_input: \n")); - ip_debug_print(p); - LWIP_DEBUGF(IP_DEBUG, ("ip_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len)); - - ip_data.current_netif = inp; - ip_data.current_ip4_header = iphdr; - ip_data.current_ip_header_tot_len = IPH_HL(iphdr) * 4; - -#if LWIP_RAW - /* raw input did not eat the packet? */ - if (raw_input(p, inp) == 0) -#endif /* LWIP_RAW */ - { - pbuf_header(p, -iphdr_hlen); /* Move to payload, no check necessary. */ - - switch (IPH_PROTO(iphdr)) { -#if LWIP_UDP - case IP_PROTO_UDP: -#if LWIP_UDPLITE - case IP_PROTO_UDPLITE: -#endif /* LWIP_UDPLITE */ - snmp_inc_ipindelivers(); - udp_input(p, inp); - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case IP_PROTO_TCP: - snmp_inc_ipindelivers(); - tcp_input(p, inp); - break; -#endif /* LWIP_TCP */ -#if LWIP_ICMP - case IP_PROTO_ICMP: - snmp_inc_ipindelivers(); - icmp_input(p, inp); - break; -#endif /* LWIP_ICMP */ -#if LWIP_IGMP - case IP_PROTO_IGMP: - igmp_input(p, inp, ip_current_dest_addr()); - break; -#endif /* LWIP_IGMP */ - default: -#if LWIP_ICMP - /* send ICMP destination protocol unreachable unless is was a broadcast */ - if (!ip_addr_isbroadcast(ip_current_dest_addr(), inp) && - !ip_addr_ismulticast(ip_current_dest_addr())) { - pbuf_header(p, iphdr_hlen); /* Move to ip header, no check necessary. */ - p->payload = iphdr; - icmp_dest_unreach(p, ICMP_DUR_PROTO); - } -#endif /* LWIP_ICMP */ - pbuf_free(p); - - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Unsupported transport protocol %"U16_F"\n", IPH_PROTO(iphdr))); - - IP_STATS_INC(ip.proterr); - IP_STATS_INC(ip.drop); - snmp_inc_ipinunknownprotos(); - } - } - - /* @todo: this is not really necessary... */ - ip_data.current_netif = NULL; - ip_data.current_ip4_header = NULL; - ip_data.current_ip_header_tot_len = 0; - ip_addr_set_any(ip_current_src_addr()); - ip_addr_set_any(ip_current_dest_addr()); - - return ERR_OK; -} - -/** - * Sends an IP packet on a network interface. This function constructs - * the IP header and calculates the IP header checksum. If the source - * IP address is NULL, the IP address of the outgoing network - * interface is filled in as source address. - * If the destination IP address is IP_HDRINCL, p is assumed to already - * include an IP header and p->payload points to it instead of the data. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param netif the netif on which to send this packet - * @return ERR_OK if the packet was sent OK - * ERR_BUF if p doesn't have enough space for IP/LINK headers - * returns errors returned by netif->output - * - * @note ip_id: RFC791 "some host may be able to simply use - * unique identifiers independent of destination" - */ -err_t -ip_output_if(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, - u8_t proto, struct netif *netif) -{ -#if IP_OPTIONS_SEND - return ip_output_if_opt(p, src, dest, ttl, tos, proto, netif, NULL, 0); -} - -/** - * Same as ip_output_if() but with the possibility to include IP options: - * - * @ param ip_options pointer to the IP options, copied into the IP header - * @ param optlen length of ip_options - */ -err_t ip_output_if_opt(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, - u16_t optlen) -{ -#endif /* IP_OPTIONS_SEND */ - struct ip_hdr *iphdr; - ip_addr_t dest_addr; -#if CHECKSUM_GEN_IP_INLINE - u32_t chk_sum = 0; -#endif /* CHECKSUM_GEN_IP_INLINE */ - - /* pbufs passed to IP must have a ref-count of 1 as their payload pointer - gets altered as the packet is passed down the stack */ - LWIP_ASSERT("p->ref == 1", p->ref == 1); - - snmp_inc_ipoutrequests(); - - /* Should the IP header be generated or is it already included in p? */ - if (dest != IP_HDRINCL) { - u16_t ip_hlen = IP_HLEN; -#if IP_OPTIONS_SEND - u16_t optlen_aligned = 0; - if (optlen != 0) { -#if CHECKSUM_GEN_IP_INLINE - int i; -#endif /* CHECKSUM_GEN_IP_INLINE */ - /* round up to a multiple of 4 */ - optlen_aligned = ((optlen + 3) & ~3); - ip_hlen += optlen_aligned; - /* First write in the IP options */ - if (pbuf_header(p, optlen_aligned)) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output_if_opt: not enough room for IP options in pbuf\n")); - IP_STATS_INC(ip.err); - snmp_inc_ipoutdiscards(); - return ERR_BUF; - } - MEMCPY(p->payload, ip_options, optlen); - if (optlen < optlen_aligned) { - /* zero the remaining bytes */ - memset(((char*)p->payload) + optlen, 0, optlen_aligned - optlen); - } -#if CHECKSUM_GEN_IP_INLINE - for (i = 0; i < optlen_aligned/2; i++) { - chk_sum += ((u16_t*)p->payload)[i]; - } -#endif /* CHECKSUM_GEN_IP_INLINE */ - } -#endif /* IP_OPTIONS_SEND */ - /* generate IP header */ - if (pbuf_header(p, IP_HLEN)) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output: not enough room for IP header in pbuf\n")); - - IP_STATS_INC(ip.err); - snmp_inc_ipoutdiscards(); - return ERR_BUF; - } - - iphdr = (struct ip_hdr *)p->payload; - LWIP_ASSERT("check that first pbuf can hold struct ip_hdr", - (p->len >= sizeof(struct ip_hdr))); - - IPH_TTL_SET(iphdr, ttl); - IPH_PROTO_SET(iphdr, proto); -#if CHECKSUM_GEN_IP_INLINE - chk_sum += LWIP_MAKE_U16(proto, ttl); -#endif /* CHECKSUM_GEN_IP_INLINE */ - - /* dest cannot be NULL here */ - ip_addr_copy(iphdr->dest, *dest); -#if CHECKSUM_GEN_IP_INLINE - chk_sum += ip4_addr_get_u32(&iphdr->dest) & 0xFFFF; - chk_sum += ip4_addr_get_u32(&iphdr->dest) >> 16; -#endif /* CHECKSUM_GEN_IP_INLINE */ - - IPH_VHL_SET(iphdr, 4, ip_hlen / 4); - IPH_TOS_SET(iphdr, tos); -#if CHECKSUM_GEN_IP_INLINE - chk_sum += LWIP_MAKE_U16(tos, iphdr->_v_hl); -#endif /* CHECKSUM_GEN_IP_INLINE */ - IPH_LEN_SET(iphdr, htons(p->tot_len)); -#if CHECKSUM_GEN_IP_INLINE - chk_sum += iphdr->_len; -#endif /* CHECKSUM_GEN_IP_INLINE */ - IPH_OFFSET_SET(iphdr, 0); - IPH_ID_SET(iphdr, htons(ip_id)); -#if CHECKSUM_GEN_IP_INLINE - chk_sum += iphdr->_id; -#endif /* CHECKSUM_GEN_IP_INLINE */ - ++ip_id; - - if (ip_addr_isany(src)) { - ip_addr_copy(iphdr->src, netif->ip_addr); - } else { - /* src cannot be NULL here */ - ip_addr_copy(iphdr->src, *src); - } - -#if CHECKSUM_GEN_IP_INLINE - chk_sum += ip4_addr_get_u32(&iphdr->src) & 0xFFFF; - chk_sum += ip4_addr_get_u32(&iphdr->src) >> 16; - chk_sum = (chk_sum >> 16) + (chk_sum & 0xFFFF); - chk_sum = (chk_sum >> 16) + chk_sum; - chk_sum = ~chk_sum; - iphdr->_chksum = chk_sum; /* network order */ -#else /* CHECKSUM_GEN_IP_INLINE */ - IPH_CHKSUM_SET(iphdr, 0); -#if CHECKSUM_GEN_IP - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, ip_hlen)); -#endif -#endif /* CHECKSUM_GEN_IP_INLINE */ - } else { - /* IP header already included in p */ - iphdr = (struct ip_hdr *)p->payload; - ip_addr_copy(dest_addr, iphdr->dest); - dest = &dest_addr; - } - - IP_STATS_INC(ip.xmit); - - LWIP_DEBUGF(IP_DEBUG, ("ip_output_if: %c%c%"U16_F"\n", netif->name[0], netif->name[1], netif->num)); - ip_debug_print(p); - -#if ENABLE_LOOPBACK - if (ip_addr_cmp(dest, &netif->ip_addr)) { - /* Packet to self, enqueue it for loopback */ - LWIP_DEBUGF(IP_DEBUG, ("netif_loop_output()")); - return netif_loop_output(netif, p, dest); - } -#if LWIP_IGMP - if ((p->flags & PBUF_FLAG_MCASTLOOP) != 0) { - netif_loop_output(netif, p, dest); - } -#endif /* LWIP_IGMP */ -#endif /* ENABLE_LOOPBACK */ -#if IP_FRAG - /* don't fragment if interface has mtu set to 0 [loopif] */ - if (netif->mtu && (p->tot_len > netif->mtu)) { - return ip_frag(p, netif, dest); - } -#endif /* IP_FRAG */ - - LWIP_DEBUGF(IP_DEBUG, ("netif->output()")); - return netif->output(netif, p, dest); -} - -/** - * Simple interface to ip_output_if. It finds the outgoing network - * interface and calls upon ip_output_if to do the actual work. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip_output(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto) -{ - struct netif *netif; - - /* pbufs passed to IP must have a ref-count of 1 as their payload pointer - gets altered as the packet is passed down the stack */ - LWIP_ASSERT("p->ref == 1", p->ref == 1); - - if ((netif = ip_route(dest)) == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest))); - IP_STATS_INC(ip.rterr); - return ERR_RTE; - } - - return ip_output_if(p, src, dest, ttl, tos, proto, netif); -} - -#if LWIP_NETIF_HWADDRHINT -/** Like ip_output, but takes and addr_hint pointer that is passed on to netif->addr_hint - * before calling ip_output_if. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param addr_hint address hint pointer set to netif->addr_hint before - * calling ip_output_if() - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip_output_hinted(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint) -{ - struct netif *netif; - err_t err; - - /* pbufs passed to IP must have a ref-count of 1 as their payload pointer - gets altered as the packet is passed down the stack */ - LWIP_ASSERT("p->ref == 1", p->ref == 1); - - if ((netif = ip_route(dest)) == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(dest), ip4_addr2_16(dest), ip4_addr3_16(dest), ip4_addr4_16(dest))); - IP_STATS_INC(ip.rterr); - return ERR_RTE; - } - - NETIF_SET_HWADDRHINT(netif, addr_hint); - err = ip_output_if(p, src, dest, ttl, tos, proto, netif); - NETIF_SET_HWADDRHINT(netif, NULL); - - return err; -} -#endif /* LWIP_NETIF_HWADDRHINT*/ - -#if IP_DEBUG -/* Print an IP header by using LWIP_DEBUGF - * @param p an IP packet, p->payload pointing to the IP header - */ -void -ip_debug_print(struct pbuf *p) -{ - struct ip_hdr *iphdr = (struct ip_hdr *)p->payload; - u8_t *payload; - - payload = (u8_t *)iphdr + IP_HLEN; - - LWIP_DEBUGF(IP_DEBUG, ("IP header:\n")); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("|%2"S16_F" |%2"S16_F" | 0x%02"X16_F" | %5"U16_F" | (v, hl, tos, len)\n", - IPH_V(iphdr), - IPH_HL(iphdr), - IPH_TOS(iphdr), - ntohs(IPH_LEN(iphdr)))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %5"U16_F" |%"U16_F"%"U16_F"%"U16_F"| %4"U16_F" | (id, flags, offset)\n", - ntohs(IPH_ID(iphdr)), - ntohs(IPH_OFFSET(iphdr)) >> 15 & 1, - ntohs(IPH_OFFSET(iphdr)) >> 14 & 1, - ntohs(IPH_OFFSET(iphdr)) >> 13 & 1, - ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | 0x%04"X16_F" | (ttl, proto, chksum)\n", - IPH_TTL(iphdr), - IPH_PROTO(iphdr), - ntohs(IPH_CHKSUM(iphdr)))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (src)\n", - ip4_addr1_16(&iphdr->src), - ip4_addr2_16(&iphdr->src), - ip4_addr3_16(&iphdr->src), - ip4_addr4_16(&iphdr->src))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (dest)\n", - ip4_addr1_16(&iphdr->dest), - ip4_addr2_16(&iphdr->dest), - ip4_addr3_16(&iphdr->dest), - ip4_addr4_16(&iphdr->dest))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); -} -#endif /* IP_DEBUG */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4_addr.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4_addr.c deleted file mode 100644 index 8f633ff23..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip4_addr.c +++ /dev/null @@ -1,312 +0,0 @@ -/** - * @file - * This is the IPv4 address tools implementation. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" - -/* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */ -const ip_addr_t ip_addr_any = { IPADDR_ANY }; -const ip_addr_t ip_addr_broadcast = { IPADDR_BROADCAST }; - -/** - * Determine if an address is a broadcast address on a network interface - * - * @param addr address to be checked - * @param netif the network interface against which the address is checked - * @return returns non-zero if the address is a broadcast address - */ -u8_t -ip4_addr_isbroadcast(u32_t addr, const struct netif *netif) -{ - ip_addr_t ipaddr; - ip4_addr_set_u32(&ipaddr, addr); - - /* all ones (broadcast) or all zeroes (old skool broadcast) */ - if ((~addr == IPADDR_ANY) || - (addr == IPADDR_ANY)) { - return 1; - /* no broadcast support on this network interface? */ - } else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) { - /* the given address cannot be a broadcast address - * nor can we check against any broadcast addresses */ - return 0; - /* address matches network interface address exactly? => no broadcast */ - } else if (addr == ip4_addr_get_u32(&netif->ip_addr)) { - return 0; - /* on the same (sub) network... */ - } else if (ip_addr_netcmp(&ipaddr, &(netif->ip_addr), &(netif->netmask)) - /* ...and host identifier bits are all ones? =>... */ - && ((addr & ~ip4_addr_get_u32(&netif->netmask)) == - (IPADDR_BROADCAST & ~ip4_addr_get_u32(&netif->netmask)))) { - /* => network broadcast address */ - return 1; - } else { - return 0; - } -} - -/** Checks if a netmask is valid (starting with ones, then only zeros) - * - * @param netmask the IPv4 netmask to check (in network byte order!) - * @return 1 if the netmask is valid, 0 if it is not - */ -u8_t -ip4_addr_netmask_valid(u32_t netmask) -{ - u32_t mask; - u32_t nm_hostorder = lwip_htonl(netmask); - - /* first, check for the first zero */ - for (mask = 1UL << 31 ; mask != 0; mask >>= 1) { - if ((nm_hostorder & mask) == 0) { - break; - } - } - /* then check that there is no one */ - for (; mask != 0; mask >>= 1) { - if ((nm_hostorder & mask) != 0) { - /* there is a one after the first zero -> invalid */ - return 0; - } - } - /* no one after the first zero -> valid */ - return 1; -} - -/* Here for now until needed in other places in lwIP */ -#ifndef isprint -#define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up) -#define isprint(c) in_range(c, 0x20, 0x7f) -#define isdigit(c) in_range(c, '0', '9') -#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'A', 'F')) -#define islower(c) in_range(c, 'a', 'z') -#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v') -#endif - -/** - * Ascii internet address interpretation routine. - * The value returned is in network order. - * - * @param cp IP address in ascii represenation (e.g. "127.0.0.1") - * @return ip address in network order - */ -u32_t -ipaddr_addr(const char *cp) -{ - ip_addr_t val; - - if (ipaddr_aton(cp, &val)) { - return ip4_addr_get_u32(&val); - } - return (IPADDR_NONE); -} - -/** - * Check whether "cp" is a valid ascii representation - * of an Internet address and convert to a binary address. - * Returns 1 if the address is valid, 0 if not. - * This replaces inet_addr, the return value from which - * cannot distinguish between failure and a local broadcast address. - * - * @param cp IP address in ascii represenation (e.g. "127.0.0.1") - * @param addr pointer to which to save the ip address in network order - * @return 1 if cp could be converted to addr, 0 on failure - */ -int -ipaddr_aton(const char *cp, ip_addr_t *addr) -{ - u32_t val; - u8_t base; - char c; - u32_t parts[4]; - u32_t *pp = parts; - - c = *cp; - for (;;) { - /* - * Collect number up to ``.''. - * Values are specified as for C: - * 0x=hex, 0=octal, 1-9=decimal. - */ - if (!isdigit(c)) - return (0); - val = 0; - base = 10; - if (c == '0') { - c = *++cp; - if (c == 'x' || c == 'X') { - base = 16; - c = *++cp; - } else - base = 8; - } - for (;;) { - if (isdigit(c)) { - val = (val * base) + (int)(c - '0'); - c = *++cp; - } else if (base == 16 && isxdigit(c)) { - val = (val << 4) | (int)(c + 10 - (islower(c) ? 'a' : 'A')); - c = *++cp; - } else - break; - } - if (c == '.') { - /* - * Internet format: - * a.b.c.d - * a.b.c (with c treated as 16 bits) - * a.b (with b treated as 24 bits) - */ - if (pp >= parts + 3) { - return (0); - } - *pp++ = val; - c = *++cp; - } else - break; - } - /* - * Check for trailing characters. - */ - if (c != '\0' && !isspace(c)) { - return (0); - } - /* - * Concoct the address according to - * the number of parts specified. - */ - switch (pp - parts + 1) { - - case 0: - return (0); /* initial nondigit */ - - case 1: /* a -- 32 bits */ - break; - - case 2: /* a.b -- 8.24 bits */ - if (val > 0xffffffUL) { - return (0); - } - val |= parts[0] << 24; - break; - - case 3: /* a.b.c -- 8.8.16 bits */ - if (val > 0xffff) { - return (0); - } - val |= (parts[0] << 24) | (parts[1] << 16); - break; - - case 4: /* a.b.c.d -- 8.8.8.8 bits */ - if (val > 0xff) { - return (0); - } - val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); - break; - default: - LWIP_ASSERT("unhandled", 0); - break; - } - if (addr) { - ip4_addr_set_u32(addr, htonl(val)); - } - return (1); -} - -/** - * Convert numeric IP address into decimal dotted ASCII representation. - * returns ptr to static buffer; not reentrant! - * - * @param addr ip address in network order to convert - * @return pointer to a global static (!) buffer that holds the ASCII - * represenation of addr - */ -char * -ipaddr_ntoa(const ip_addr_t *addr) -{ - static char str[16]; - return ipaddr_ntoa_r(addr, str, 16); -} - -/** - * Same as ipaddr_ntoa, but reentrant since a user-supplied buffer is used. - * - * @param addr ip address in network order to convert - * @param buf target buffer where the string is stored - * @param buflen length of buf - * @return either pointer to buf which now holds the ASCII - * representation of addr or NULL if buf was too small - */ -char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen) -{ - u32_t s_addr; - char inv[3]; - char *rp; - u8_t *ap; - u8_t rem; - u8_t n; - u8_t i; - int len = 0; - - s_addr = ip4_addr_get_u32(addr); - - rp = buf; - ap = (u8_t *)&s_addr; - for(n = 0; n < 4; n++) { - i = 0; - do { - rem = *ap % (u8_t)10; - *ap /= (u8_t)10; - inv[i++] = '0' + rem; - } while(*ap); - while(i--) { - if (len++ >= buflen) { - return NULL; - } - *rp++ = inv[i]; - } - if (len++ >= buflen) { - return NULL; - } - *rp++ = '.'; - ap++; - } - *--rp = 0; - return buf; -} diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip_frag.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip_frag.c deleted file mode 100644 index 8d184345d..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv4/ip_frag.c +++ /dev/null @@ -1,863 +0,0 @@ -/** - * @file - * This is the IPv4 packet segmentation and reassembly implementation. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Jani Monoses - * Simon Goldschmidt - * original reassembly code by Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip_frag.h" -#include "lwip/def.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/snmp.h" -#include "lwip/stats.h" -#include "lwip/icmp.h" - -#include - -#if IP_REASSEMBLY -/** - * The IP reassembly code currently has the following limitations: - * - IP header options are not supported - * - fragments must not overlap (e.g. due to different routes), - * currently, overlapping or duplicate fragments are thrown away - * if IP_REASS_CHECK_OVERLAP=1 (the default)! - * - * @todo: work with IP header options - */ - -/** Setting this to 0, you can turn off checking the fragments for overlapping - * regions. The code gets a little smaller. Only use this if you know that - * overlapping won't occur on your network! */ -#ifndef IP_REASS_CHECK_OVERLAP -#define IP_REASS_CHECK_OVERLAP 1 -#endif /* IP_REASS_CHECK_OVERLAP */ - -/** Set to 0 to prevent freeing the oldest datagram when the reassembly buffer is - * full (IP_REASS_MAX_PBUFS pbufs are enqueued). The code gets a little smaller. - * Datagrams will be freed by timeout only. Especially useful when MEMP_NUM_REASSDATA - * is set to 1, so one datagram can be reassembled at a time, only. */ -#ifndef IP_REASS_FREE_OLDEST -#define IP_REASS_FREE_OLDEST 1 -#endif /* IP_REASS_FREE_OLDEST */ - -#define IP_REASS_FLAG_LASTFRAG 0x01 - -/** This is a helper struct which holds the starting - * offset and the ending offset of this fragment to - * easily chain the fragments. - * It has the same packing requirements as the IP header, since it replaces - * the IP header in memory in incoming fragments (after copying it) to keep - * track of the various fragments. (-> If the IP header doesn't need packing, - * this struct doesn't need packing, too.) - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_reass_helper { - PACK_STRUCT_FIELD(struct pbuf *next_pbuf); - PACK_STRUCT_FIELD(u16_t start); - PACK_STRUCT_FIELD(u16_t end); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define IP_ADDRESSES_AND_ID_MATCH(iphdrA, iphdrB) \ - (ip_addr_cmp(&(iphdrA)->src, &(iphdrB)->src) && \ - ip_addr_cmp(&(iphdrA)->dest, &(iphdrB)->dest) && \ - IPH_ID(iphdrA) == IPH_ID(iphdrB)) ? 1 : 0 - -/* global variables */ -static struct ip_reassdata *reassdatagrams; -static u16_t ip_reass_pbufcount; - -/* function prototypes */ -static void ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev); -static int ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev); - -/** - * Reassembly timer base function - * for both NO_SYS == 0 and 1 (!). - * - * Should be called every 1000 msec (defined by IP_TMR_INTERVAL). - */ -void -ip_reass_tmr(void) -{ - struct ip_reassdata *r, *prev = NULL; - - r = reassdatagrams; - while (r != NULL) { - /* Decrement the timer. Once it reaches 0, - * clean up the incomplete fragment assembly */ - if (r->timer > 0) { - r->timer--; - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer dec %"U16_F"\n",(u16_t)r->timer)); - prev = r; - r = r->next; - } else { - /* reassembly timed out */ - struct ip_reassdata *tmp; - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer timed out\n")); - tmp = r; - /* get the next pointer before freeing */ - r = r->next; - /* free the helper struct and all enqueued pbufs */ - ip_reass_free_complete_datagram(tmp, prev); - } - } -} - -/** - * Free a datagram (struct ip_reassdata) and all its pbufs. - * Updates the total count of enqueued pbufs (ip_reass_pbufcount), - * SNMP counters and sends an ICMP time exceeded packet. - * - * @param ipr datagram to free - * @param prev the previous datagram in the linked list - * @return the number of pbufs freed - */ -static int -ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - u16_t pbufs_freed = 0; - u8_t clen; - struct pbuf *p; - struct ip_reass_helper *iprh; - - LWIP_ASSERT("prev != ipr", prev != ipr); - if (prev != NULL) { - LWIP_ASSERT("prev->next == ipr", prev->next == ipr); - } - - snmp_inc_ipreasmfails(); -#if LWIP_ICMP - iprh = (struct ip_reass_helper *)ipr->p->payload; - if (iprh->start == 0) { - /* The first fragment was received, send ICMP time exceeded. */ - /* First, de-queue the first pbuf from r->p. */ - p = ipr->p; - ipr->p = iprh->next_pbuf; - /* Then, copy the original header into it. */ - SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN); - icmp_time_exceeded(p, ICMP_TE_FRAG); - clen = pbuf_clen(p); - LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - pbufs_freed += clen; - pbuf_free(p); - } -#endif /* LWIP_ICMP */ - - /* First, free all received pbufs. The individual pbufs need to be released - separately as they have not yet been chained */ - p = ipr->p; - while (p != NULL) { - struct pbuf *pcur; - iprh = (struct ip_reass_helper *)p->payload; - pcur = p; - /* get the next pointer before freeing */ - p = iprh->next_pbuf; - clen = pbuf_clen(pcur); - LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - pbufs_freed += clen; - pbuf_free(pcur); - } - /* Then, unchain the struct ip_reassdata from the list and free it. */ - ip_reass_dequeue_datagram(ipr, prev); - LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= pbufs_freed); - ip_reass_pbufcount -= pbufs_freed; - - return pbufs_freed; -} - -#if IP_REASS_FREE_OLDEST -/** - * Free the oldest datagram to make room for enqueueing new fragments. - * The datagram 'fraghdr' belongs to is not freed! - * - * @param fraghdr IP header of the current fragment - * @param pbufs_needed number of pbufs needed to enqueue - * (used for freeing other datagrams if not enough space) - * @return the number of pbufs freed - */ -static int -ip_reass_remove_oldest_datagram(struct ip_hdr *fraghdr, int pbufs_needed) -{ - /* @todo Can't we simply remove the last datagram in the - * linked list behind reassdatagrams? - */ - struct ip_reassdata *r, *oldest, *prev; - int pbufs_freed = 0, pbufs_freed_current; - int other_datagrams; - - /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs, - * but don't free the datagram that 'fraghdr' belongs to! */ - do { - oldest = NULL; - prev = NULL; - other_datagrams = 0; - r = reassdatagrams; - while (r != NULL) { - if (!IP_ADDRESSES_AND_ID_MATCH(&r->iphdr, fraghdr)) { - /* Not the same datagram as fraghdr */ - other_datagrams++; - if (oldest == NULL) { - oldest = r; - } else if (r->timer <= oldest->timer) { - /* older than the previous oldest */ - oldest = r; - } - } - if (r->next != NULL) { - prev = r; - } - r = r->next; - } - if (oldest != NULL) { - pbufs_freed_current = ip_reass_free_complete_datagram(oldest, prev); - pbufs_freed += pbufs_freed_current; - } - } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1)); - return pbufs_freed; -} -#endif /* IP_REASS_FREE_OLDEST */ - -/** - * Enqueues a new fragment into the fragment queue - * @param fraghdr points to the new fragments IP hdr - * @param clen number of pbufs needed to enqueue (used for freeing other datagrams if not enough space) - * @return A pointer to the queue location into which the fragment was enqueued - */ -static struct ip_reassdata* -ip_reass_enqueue_new_datagram(struct ip_hdr *fraghdr, int clen) -{ - struct ip_reassdata* ipr; - /* No matching previous fragment found, allocate a new reassdata struct */ - ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA); - if (ipr == NULL) { -#if IP_REASS_FREE_OLDEST - if (ip_reass_remove_oldest_datagram(fraghdr, clen) >= clen) { - ipr = (struct ip_reassdata *)memp_malloc(MEMP_REASSDATA); - } - if (ipr == NULL) -#endif /* IP_REASS_FREE_OLDEST */ - { - IPFRAG_STATS_INC(ip_frag.memerr); - LWIP_DEBUGF(IP_REASS_DEBUG,("Failed to alloc reassdata struct\n")); - return NULL; - } - } - memset(ipr, 0, sizeof(struct ip_reassdata)); - ipr->timer = IP_REASS_MAXAGE; - - /* enqueue the new structure to the front of the list */ - ipr->next = reassdatagrams; - reassdatagrams = ipr; - /* copy the ip header for later tests and input */ - /* @todo: no ip options supported? */ - SMEMCPY(&(ipr->iphdr), fraghdr, IP_HLEN); - return ipr; -} - -/** - * Dequeues a datagram from the datagram queue. Doesn't deallocate the pbufs. - * @param ipr points to the queue entry to dequeue - */ -static void -ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - - /* dequeue the reass struct */ - if (reassdatagrams == ipr) { - /* it was the first in the list */ - reassdatagrams = ipr->next; - } else { - /* it wasn't the first, so it must have a valid 'prev' */ - LWIP_ASSERT("sanity check linked list", prev != NULL); - prev->next = ipr->next; - } - - /* now we can free the ip_reass struct */ - memp_free(MEMP_REASSDATA, ipr); -} - -/** - * Chain a new pbuf into the pbuf list that composes the datagram. The pbuf list - * will grow over time as new pbufs are rx. - * Also checks that the datagram passes basic continuity checks (if the last - * fragment was received at least once). - * @param root_p points to the 'root' pbuf for the current datagram being assembled. - * @param new_p points to the pbuf for the current fragment - * @return 0 if invalid, >0 otherwise - */ -static int -ip_reass_chain_frag_into_datagram_and_validate(struct ip_reassdata *ipr, struct pbuf *new_p) -{ - struct ip_reass_helper *iprh, *iprh_tmp, *iprh_prev=NULL; - struct pbuf *q; - u16_t offset,len; - struct ip_hdr *fraghdr; - int valid = 1; - - /* Extract length and fragment offset from current fragment */ - fraghdr = (struct ip_hdr*)new_p->payload; - len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4; - offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8; - - /* overwrite the fragment's ip header from the pbuf with our helper struct, - * and setup the embedded helper structure. */ - /* make sure the struct ip_reass_helper fits into the IP header */ - LWIP_ASSERT("sizeof(struct ip_reass_helper) <= IP_HLEN", - sizeof(struct ip_reass_helper) <= IP_HLEN); - iprh = (struct ip_reass_helper*)new_p->payload; - iprh->next_pbuf = NULL; - iprh->start = offset; - iprh->end = offset + len; - - /* Iterate through until we either get to the end of the list (append), - * or we find on with a larger offset (insert). */ - for (q = ipr->p; q != NULL;) { - iprh_tmp = (struct ip_reass_helper*)q->payload; - if (iprh->start < iprh_tmp->start) { - /* the new pbuf should be inserted before this */ - iprh->next_pbuf = q; - if (iprh_prev != NULL) { - /* not the fragment with the lowest offset */ -#if IP_REASS_CHECK_OVERLAP - if ((iprh->start < iprh_prev->end) || (iprh->end > iprh_tmp->start)) { - /* fragment overlaps with previous or following, throw away */ - goto freepbuf; - } -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - } else { - /* fragment with the lowest offset */ - ipr->p = new_p; - } - break; - } else if(iprh->start == iprh_tmp->start) { - /* received the same datagram twice: no need to keep the datagram */ - goto freepbuf; -#if IP_REASS_CHECK_OVERLAP - } else if(iprh->start < iprh_tmp->end) { - /* overlap: no need to keep the new datagram */ - goto freepbuf; -#endif /* IP_REASS_CHECK_OVERLAP */ - } else { - /* Check if the fragments received so far have no wholes. */ - if (iprh_prev != NULL) { - if (iprh_prev->end != iprh_tmp->start) { - /* There is a fragment missing between the current - * and the previous fragment */ - valid = 0; - } - } - } - q = iprh_tmp->next_pbuf; - iprh_prev = iprh_tmp; - } - - /* If q is NULL, then we made it to the end of the list. Determine what to do now */ - if (q == NULL) { - if (iprh_prev != NULL) { - /* this is (for now), the fragment with the highest offset: - * chain it to the last fragment */ -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start); -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - if (iprh_prev->end != iprh->start) { - valid = 0; - } - } else { -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("no previous fragment, this must be the first fragment!", - ipr->p == NULL); -#endif /* IP_REASS_CHECK_OVERLAP */ - /* this is the first fragment we ever received for this ip datagram */ - ipr->p = new_p; - } - } - - /* At this point, the validation part begins: */ - /* If we already received the last fragment */ - if ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0) { - /* and had no wholes so far */ - if (valid) { - /* then check if the rest of the fragments is here */ - /* Check if the queue starts with the first datagram */ - if (((struct ip_reass_helper*)ipr->p->payload)->start != 0) { - valid = 0; - } else { - /* and check that there are no wholes after this datagram */ - iprh_prev = iprh; - q = iprh->next_pbuf; - while (q != NULL) { - iprh = (struct ip_reass_helper*)q->payload; - if (iprh_prev->end != iprh->start) { - valid = 0; - break; - } - iprh_prev = iprh; - q = iprh->next_pbuf; - } - /* if still valid, all fragments are received - * (because to the MF==0 already arrived */ - if (valid) { - LWIP_ASSERT("sanity check", ipr->p != NULL); - LWIP_ASSERT("sanity check", - ((struct ip_reass_helper*)ipr->p->payload) != iprh); - LWIP_ASSERT("validate_datagram:next_pbuf!=NULL", - iprh->next_pbuf == NULL); - LWIP_ASSERT("validate_datagram:datagram end!=datagram len", - iprh->end == ipr->datagram_len); - } - } - } - /* If valid is 0 here, there are some fragments missing in the middle - * (since MF == 0 has already arrived). Such datagrams simply time out if - * no more fragments are received... */ - return valid; - } - /* If we come here, not all fragments were received, yet! */ - return 0; /* not yet valid! */ -#if IP_REASS_CHECK_OVERLAP -freepbuf: - ip_reass_pbufcount -= pbuf_clen(new_p); - pbuf_free(new_p); - return 0; -#endif /* IP_REASS_CHECK_OVERLAP */ -} - -/** - * Reassembles incoming IP fragments into an IP datagram. - * - * @param p points to a pbuf chain of the fragment - * @return NULL if reassembly is incomplete, ? otherwise - */ -struct pbuf * -ip_reass(struct pbuf *p) -{ - struct pbuf *r; - struct ip_hdr *fraghdr; - struct ip_reassdata *ipr; - struct ip_reass_helper *iprh; - u16_t offset, len; - u8_t clen; - struct ip_reassdata *ipr_prev = NULL; - - IPFRAG_STATS_INC(ip_frag.recv); - snmp_inc_ipreasmreqds(); - - fraghdr = (struct ip_hdr*)p->payload; - - if ((IPH_HL(fraghdr) * 4) != IP_HLEN) { - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: IP options currently not supported!\n")); - IPFRAG_STATS_INC(ip_frag.err); - goto nullreturn; - } - - offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8; - len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4; - - /* Check if we are allowed to enqueue more datagrams. */ - clen = pbuf_clen(p); - if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) { -#if IP_REASS_FREE_OLDEST - if (!ip_reass_remove_oldest_datagram(fraghdr, clen) || - ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS)) -#endif /* IP_REASS_FREE_OLDEST */ - { - /* No datagram could be freed and still too many pbufs enqueued */ - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: Overflow condition: pbufct=%d, clen=%d, MAX=%d\n", - ip_reass_pbufcount, clen, IP_REASS_MAX_PBUFS)); - IPFRAG_STATS_INC(ip_frag.memerr); - /* @todo: send ICMP time exceeded here? */ - /* drop this pbuf */ - goto nullreturn; - } - } - - /* Look for the datagram the fragment belongs to in the current datagram queue, - * remembering the previous in the queue for later dequeueing. */ - for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) { - /* Check if the incoming fragment matches the one currently present - in the reassembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if (IP_ADDRESSES_AND_ID_MATCH(&ipr->iphdr, fraghdr)) { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass: matching previous fragment ID=%"X16_F"\n", - ntohs(IPH_ID(fraghdr)))); - IPFRAG_STATS_INC(ip_frag.cachehit); - break; - } - ipr_prev = ipr; - } - - if (ipr == NULL) { - /* Enqueue a new datagram into the datagram queue */ - ipr = ip_reass_enqueue_new_datagram(fraghdr, clen); - /* Bail if unable to enqueue */ - if(ipr == NULL) { - goto nullreturn; - } - } else { - if (((ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) && - ((ntohs(IPH_OFFSET(&ipr->iphdr)) & IP_OFFMASK) != 0)) { - /* ipr->iphdr is not the header from the first fragment, but fraghdr is - * -> copy fraghdr into ipr->iphdr since we want to have the header - * of the first fragment (for ICMP time exceeded and later, for copying - * all options, if supported)*/ - SMEMCPY(&ipr->iphdr, fraghdr, IP_HLEN); - } - } - /* Track the current number of pbufs current 'in-flight', in order to limit - the number of fragments that may be enqueued at any one time */ - ip_reass_pbufcount += clen; - - /* At this point, we have either created a new entry or pointing - * to an existing one */ - - /* check for 'no more fragments', and update queue entry*/ - if ((IPH_OFFSET(fraghdr) & PP_NTOHS(IP_MF)) == 0) { - ipr->flags |= IP_REASS_FLAG_LASTFRAG; - ipr->datagram_len = offset + len; - LWIP_DEBUGF(IP_REASS_DEBUG, - ("ip_reass: last fragment seen, total len %"S16_F"\n", - ipr->datagram_len)); - } - /* find the right place to insert this pbuf */ - /* @todo: trim pbufs if fragments are overlapping */ - if (ip_reass_chain_frag_into_datagram_and_validate(ipr, p)) { - /* the totally last fragment (flag more fragments = 0) was received at least - * once AND all fragments are received */ - ipr->datagram_len += IP_HLEN; - - /* save the second pbuf before copying the header over the pointer */ - r = ((struct ip_reass_helper*)ipr->p->payload)->next_pbuf; - - /* copy the original ip header back to the first pbuf */ - fraghdr = (struct ip_hdr*)(ipr->p->payload); - SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN); - IPH_LEN_SET(fraghdr, htons(ipr->datagram_len)); - IPH_OFFSET_SET(fraghdr, 0); - IPH_CHKSUM_SET(fraghdr, 0); - /* @todo: do we need to set calculate the correct checksum? */ - IPH_CHKSUM_SET(fraghdr, inet_chksum(fraghdr, IP_HLEN)); - - p = ipr->p; - - /* chain together the pbufs contained within the reass_data list. */ - while(r != NULL) { - iprh = (struct ip_reass_helper*)r->payload; - - /* hide the ip header for every succeding fragment */ - pbuf_header(r, -IP_HLEN); - pbuf_cat(p, r); - r = iprh->next_pbuf; - } - /* release the sources allocate for the fragment queue entry */ - ip_reass_dequeue_datagram(ipr, ipr_prev); - - /* and adjust the number of pbufs currently queued for reassembly. */ - ip_reass_pbufcount -= pbuf_clen(p); - - /* Return the pbuf chain */ - return p; - } - /* the datagram is not (yet?) reassembled completely */ - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass_pbufcount: %d out\n", ip_reass_pbufcount)); - return NULL; - -nullreturn: - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: nullreturn\n")); - IPFRAG_STATS_INC(ip_frag.drop); - pbuf_free(p); - return NULL; -} -#endif /* IP_REASSEMBLY */ - -#if IP_FRAG -#if IP_FRAG_USES_STATIC_BUF -static u8_t buf[LWIP_MEM_ALIGN_SIZE(IP_FRAG_MAX_MTU + MEM_ALIGNMENT - 1)]; -#else /* IP_FRAG_USES_STATIC_BUF */ - -#if !LWIP_NETIF_TX_SINGLE_PBUF -/** Allocate a new struct pbuf_custom_ref */ -static struct pbuf_custom_ref* -ip_frag_alloc_pbuf_custom_ref(void) -{ - return (struct pbuf_custom_ref*)memp_malloc(MEMP_FRAG_PBUF); -} - -/** Free a struct pbuf_custom_ref */ -static void -ip_frag_free_pbuf_custom_ref(struct pbuf_custom_ref* p) -{ - LWIP_ASSERT("p != NULL", p != NULL); - memp_free(MEMP_FRAG_PBUF, p); -} - -/** Free-callback function to free a 'struct pbuf_custom_ref', called by - * pbuf_free. */ -static void -ipfrag_free_pbuf_custom(struct pbuf *p) -{ - struct pbuf_custom_ref *pcr = (struct pbuf_custom_ref*)p; - LWIP_ASSERT("pcr != NULL", pcr != NULL); - LWIP_ASSERT("pcr == p", (void*)pcr == (void*)p); - if (pcr->original != NULL) { - pbuf_free(pcr->original); - } - ip_frag_free_pbuf_custom_ref(pcr); -} -#endif /* !LWIP_NETIF_TX_SINGLE_PBUF */ -#endif /* IP_FRAG_USES_STATIC_BUF */ - -/** - * Fragment an IP datagram if too large for the netif. - * - * Chop the datagram in MTU sized chunks and send them in order - * by using a fixed size static memory buffer (PBUF_REF) or - * point PBUF_REFs into p (depending on IP_FRAG_USES_STATIC_BUF). - * - * @param p ip packet to send - * @param netif the netif on which to send - * @param dest destination ip address to which to send - * - * @return ERR_OK if sent successfully, err_t otherwise - */ -err_t -ip_frag(struct pbuf *p, struct netif *netif, ip_addr_t *dest) -{ - struct pbuf *rambuf; -#if IP_FRAG_USES_STATIC_BUF - struct pbuf *header; -#else -#if !LWIP_NETIF_TX_SINGLE_PBUF - struct pbuf *newpbuf; -#endif - struct ip_hdr *original_iphdr; -#endif - struct ip_hdr *iphdr; - u16_t nfb; - u16_t left, cop; - u16_t mtu = netif->mtu; - u16_t ofo, omf; - u16_t last; - u16_t poff = IP_HLEN; - u16_t tmp; -#if !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF - u16_t newpbuflen = 0; - u16_t left_to_copy; -#endif - - /* Get a RAM based MTU sized pbuf */ -#if IP_FRAG_USES_STATIC_BUF - /* When using a static buffer, we use a PBUF_REF, which we will - * use to reference the packet (without link header). - * Layer and length is irrelevant. - */ - rambuf = pbuf_alloc(PBUF_LINK, 0, PBUF_REF); - if (rambuf == NULL) { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc(PBUF_LINK, 0, PBUF_REF) failed\n")); - return ERR_MEM; - } - rambuf->tot_len = rambuf->len = mtu; - rambuf->payload = LWIP_MEM_ALIGN((void *)buf); - - /* Copy the IP header in it */ - iphdr = (struct ip_hdr *)rambuf->payload; - SMEMCPY(iphdr, p->payload, IP_HLEN); -#else /* IP_FRAG_USES_STATIC_BUF */ - original_iphdr = (struct ip_hdr *)p->payload; - iphdr = original_iphdr; -#endif /* IP_FRAG_USES_STATIC_BUF */ - - /* Save original offset */ - tmp = ntohs(IPH_OFFSET(iphdr)); - ofo = tmp & IP_OFFMASK; - omf = tmp & IP_MF; - - left = p->tot_len - IP_HLEN; - - nfb = (mtu - IP_HLEN) / 8; - - while (left) { - last = (left <= mtu - IP_HLEN); - - /* Set new offset and MF flag */ - tmp = omf | (IP_OFFMASK & (ofo)); - if (!last) { - tmp = tmp | IP_MF; - } - - /* Fill this fragment */ - cop = last ? left : nfb * 8; - -#if IP_FRAG_USES_STATIC_BUF - poff += pbuf_copy_partial(p, (u8_t*)iphdr + IP_HLEN, cop, poff); -#else /* IP_FRAG_USES_STATIC_BUF */ -#if LWIP_NETIF_TX_SINGLE_PBUF - rambuf = pbuf_alloc(PBUF_IP, cop, PBUF_RAM); - if (rambuf == NULL) { - return ERR_MEM; - } - LWIP_ASSERT("this needs a pbuf in one piece!", - (rambuf->len == rambuf->tot_len) && (rambuf->next == NULL)); - poff += pbuf_copy_partial(p, rambuf->payload, cop, poff); - /* make room for the IP header */ - if(pbuf_header(rambuf, IP_HLEN)) { - pbuf_free(rambuf); - return ERR_MEM; - } - /* fill in the IP header */ - SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN); - iphdr = rambuf->payload; -#else /* LWIP_NETIF_TX_SINGLE_PBUF */ - /* When not using a static buffer, create a chain of pbufs. - * The first will be a PBUF_RAM holding the link and IP header. - * The rest will be PBUF_REFs mirroring the pbuf chain to be fragged, - * but limited to the size of an mtu. - */ - rambuf = pbuf_alloc(PBUF_LINK, IP_HLEN, PBUF_RAM); - if (rambuf == NULL) { - return ERR_MEM; - } - LWIP_ASSERT("this needs a pbuf in one piece!", - (p->len >= (IP_HLEN))); - SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN); - iphdr = (struct ip_hdr *)rambuf->payload; - - /* Can just adjust p directly for needed offset. */ - p->payload = (u8_t *)p->payload + poff; - p->len -= poff; - - left_to_copy = cop; - while (left_to_copy) { - struct pbuf_custom_ref *pcr; - newpbuflen = (left_to_copy < p->len) ? left_to_copy : p->len; - /* Is this pbuf already empty? */ - if (!newpbuflen) { - p = p->next; - continue; - } - pcr = ip_frag_alloc_pbuf_custom_ref(); - if (pcr == NULL) { - pbuf_free(rambuf); - return ERR_MEM; - } - /* Mirror this pbuf, although we might not need all of it. */ - newpbuf = pbuf_alloced_custom(PBUF_RAW, newpbuflen, PBUF_REF, &pcr->pc, p->payload, newpbuflen); - if (newpbuf == NULL) { - ip_frag_free_pbuf_custom_ref(pcr); - pbuf_free(rambuf); - return ERR_MEM; - } - pbuf_ref(p); - pcr->original = p; - pcr->pc.custom_free_function = ipfrag_free_pbuf_custom; - - /* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain - * so that it is removed when pbuf_dechain is later called on rambuf. - */ - pbuf_cat(rambuf, newpbuf); - left_to_copy -= newpbuflen; - if (left_to_copy) { - p = p->next; - } - } - poff = newpbuflen; -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ -#endif /* IP_FRAG_USES_STATIC_BUF */ - - /* Correct header */ - IPH_OFFSET_SET(iphdr, htons(tmp)); - IPH_LEN_SET(iphdr, htons(cop + IP_HLEN)); - IPH_CHKSUM_SET(iphdr, 0); - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN)); - -#if IP_FRAG_USES_STATIC_BUF - if (last) { - pbuf_realloc(rambuf, left + IP_HLEN); - } - - /* This part is ugly: we alloc a RAM based pbuf for - * the link level header for each chunk and then - * free it.A PBUF_ROM style pbuf for which pbuf_header - * worked would make things simpler. - */ - header = pbuf_alloc(PBUF_LINK, 0, PBUF_RAM); - if (header != NULL) { - pbuf_chain(header, rambuf); - netif->output(netif, header, dest); - IPFRAG_STATS_INC(ip_frag.xmit); - snmp_inc_ipfragcreates(); - pbuf_free(header); - } else { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc() for header failed\n")); - pbuf_free(rambuf); - return ERR_MEM; - } -#else /* IP_FRAG_USES_STATIC_BUF */ - /* No need for separate header pbuf - we allowed room for it in rambuf - * when allocated. - */ - netif->output(netif, rambuf, dest); - IPFRAG_STATS_INC(ip_frag.xmit); - - /* Unfortunately we can't reuse rambuf - the hardware may still be - * using the buffer. Instead we free it (and the ensuing chain) and - * recreate it next time round the loop. If we're lucky the hardware - * will have already sent the packet, the free will really free, and - * there will be zero memory penalty. - */ - - pbuf_free(rambuf); -#endif /* IP_FRAG_USES_STATIC_BUF */ - left -= cop; - ofo += nfb; - } -#if IP_FRAG_USES_STATIC_BUF - pbuf_free(rambuf); -#endif /* IP_FRAG_USES_STATIC_BUF */ - snmp_inc_ipfragoks(); - return ERR_OK; -} -#endif /* IP_FRAG */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/README b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/README deleted file mode 100644 index 362000486..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/README +++ /dev/null @@ -1 +0,0 @@ -IPv6 support in lwIP is very experimental. diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/dhcp6.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/dhcp6.c deleted file mode 100644 index 9656c3b2b..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/dhcp6.c +++ /dev/null @@ -1,50 +0,0 @@ -/** - * @file - * - * DHCPv6. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#include "lwip/opt.h" - -#if LWIP_IPV6_DHCP6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/ip6_addr.h" -#include "lwip/def.h" - - -#endif /* LWIP_IPV6_DHCP6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ethip6.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ethip6.c deleted file mode 100644 index 994101036..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ethip6.c +++ /dev/null @@ -1,195 +0,0 @@ -/** - * @file - * - * Ethernet output for IPv6. Uses ND tables for link-layer addressing. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#include "lwip/opt.h" - -#if LWIP_IPV6 && LWIP_ETHERNET - -#include "lwip/ethip6.h" -#include "lwip/nd6.h" -#include "lwip/pbuf.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp6.h" - -#include - -#define ETHTYPE_IPV6 0x86DD - -/** The ethernet address */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_addr { - PACK_STRUCT_FIELD(u8_t addr[6]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Ethernet header */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_hdr { -#if ETH_PAD_SIZE - PACK_STRUCT_FIELD(u8_t padding[ETH_PAD_SIZE]); -#endif - PACK_STRUCT_FIELD(struct eth_addr dest); - PACK_STRUCT_FIELD(struct eth_addr src); - PACK_STRUCT_FIELD(u16_t type); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE) - -/** - * Send an IPv6 packet on the network using netif->linkoutput - * The ethernet header is filled in before sending. - * - * @params netif the lwIP network interface on which to send the packet - * @params p the packet to send, p->payload pointing to the (uninitialized) ethernet header - * @params src the source MAC address to be copied into the ethernet header - * @params dst the destination MAC address to be copied into the ethernet header - * @return ERR_OK if the packet was sent, any other err_t on failure - */ -static err_t -ethip6_send(struct netif *netif, struct pbuf *p, struct eth_addr *src, struct eth_addr *dst) -{ - struct eth_hdr *ethhdr = (struct eth_hdr *)p->payload; - - LWIP_ASSERT("netif->hwaddr_len must be 6 for ethip6!", - (netif->hwaddr_len == 6)); - SMEMCPY(ðhdr->dest, dst, 6); - SMEMCPY(ðhdr->src, src, 6); - ethhdr->type = PP_HTONS(ETHTYPE_IPV6); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("ethip6_send: sending packet %p\n", (void *)p)); - /* send the packet */ - return netif->linkoutput(netif, p); -} - -/** - * Resolve and fill-in Ethernet address header for outgoing IPv6 packet. - * - * For IPv6 multicast, corresponding Ethernet addresses - * are selected and the packet is transmitted on the link. - * - * For unicast addresses, ... - * - * @TODO anycast addresses - * - * @param netif The lwIP network interface which the IP packet will be sent on. - * @param q The pbuf(s) containing the IP packet to be sent. - * @param ip6addr The IP address of the packet destination. - * - * @return - * - ERR_RTE No route to destination (no gateway to external networks), - * or the return type of either etharp_query() or etharp_send_ip(). - */ -err_t -ethip6_output(struct netif *netif, struct pbuf *q, ip6_addr_t *ip6addr) -{ - struct eth_addr dest; - s8_t i; - - /* make room for Ethernet header - should not fail */ - if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) { - /* bail out */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_output: could not allocate room for header.\n")); - return ERR_BUF; - } - - /* multicast destination IP address? */ - if (ip6_addr_ismulticast(ip6addr)) { - /* Hash IP multicast address to MAC address.*/ - dest.addr[0] = 0x33; - dest.addr[1] = 0x33; - dest.addr[2] = ((u8_t *)(&(ip6addr->addr[3])))[0]; - dest.addr[3] = ((u8_t *)(&(ip6addr->addr[3])))[1]; - dest.addr[4] = ((u8_t *)(&(ip6addr->addr[3])))[2]; - dest.addr[5] = ((u8_t *)(&(ip6addr->addr[3])))[3]; - - /* Send out. */ - return ethip6_send(netif, q, (struct eth_addr*)(netif->hwaddr), &dest); - } - - /* We have a unicast destination IP address */ - /* TODO anycast? */ - /* Get next hop record. */ - i = nd6_get_next_hop_entry(ip6addr, netif); - if (i < 0) { - /* failed to get a next hop neighbor record. */ - return ERR_MEM; - } - - /* Now that we have a destination record, send or queue the packet. */ - if (neighbor_cache[i].state == ND6_STALE) { - /* Switch to delay state. */ - neighbor_cache[i].state = ND6_DELAY; - neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME; - } - /* TODO should we send or queue if PROBE? send for now, to let unicast NS pass. */ - if ((neighbor_cache[i].state == ND6_REACHABLE) || - (neighbor_cache[i].state == ND6_DELAY) || - (neighbor_cache[i].state == ND6_PROBE)) { - - /* Send out. */ - SMEMCPY(dest.addr, neighbor_cache[i].lladdr, 6); - return ethip6_send(netif, q, (struct eth_addr*)(netif->hwaddr), &dest); - } - - /* We should queue packet on this interface. */ - pbuf_header(q, -(s16_t)SIZEOF_ETH_HDR); - nd6_queue_packet(i, q); - - return ERR_OK; -} - -#endif /* LWIP_IPV6 && LWIP_ETHERNET */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/icmp6.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/icmp6.c deleted file mode 100644 index be725c2dd..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/icmp6.c +++ /dev/null @@ -1,301 +0,0 @@ -/** - * @file - * - * IPv6 version of ICMP, as per RFC 4443. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#include "lwip/opt.h" - -#if LWIP_ICMP6 && LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/icmp6.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/inet_chksum.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/nd6.h" -#include "lwip/mld6.h" -#include "lwip/stats.h" - -#include - -#ifndef LWIP_ICMP6_DATASIZE -#define LWIP_ICMP6_DATASIZE 8 -#endif -#if LWIP_ICMP6_DATASIZE == 0 -#define LWIP_ICMP6_DATASIZE 8 -#endif - -/* Forward declarations */ -static void icmp6_send_response(struct pbuf *p, u8_t code, u32_t data, u8_t type); - - -/** - * Process an input ICMPv6 message. Called by ip6_input. - * - * Will generate a reply for echo requests. Other messages are forwarded - * to nd6_input, or mld6_input. - * - * @param p the mld packet, p->payload pointing to the icmpv6 header - * @param inp the netif on which this packet was received - */ -void -icmp6_input(struct pbuf *p, struct netif *inp) -{ - struct icmp6_hdr *icmp6hdr; - struct pbuf * r; - ip6_addr_t * reply_src; - - ICMP6_STATS_INC(icmp6.recv); - - /* Check that ICMPv6 header fits in payload */ - if (p->len < sizeof(struct icmp6_hdr)) { - /* drop short packets */ - pbuf_free(p); - ICMP6_STATS_INC(icmp6.lenerr); - ICMP6_STATS_INC(icmp6.drop); - return; - } - - icmp6hdr = (struct icmp6_hdr *)p->payload; - -#if LWIP_ICMP6_CHECKSUM_CHECK - if (ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->tot_len, ip6_current_src_addr(), - ip6_current_dest_addr()) != 0) { - /* Checksum failed */ - pbuf_free(p); - ICMP6_STATS_INC(icmp6.chkerr); - ICMP6_STATS_INC(icmp6.drop); - return; - } -#endif /* LWIP_ICMP6_CHECKSUM_CHECK */ - - switch (icmp6hdr->type) { - case ICMP6_TYPE_NA: /* Neighbor advertisement */ - case ICMP6_TYPE_NS: /* Neighbor solicitation */ - case ICMP6_TYPE_RA: /* Router advertisement */ - case ICMP6_TYPE_RD: /* Redirect */ - case ICMP6_TYPE_PTB: /* Packet too big */ - nd6_input(p, inp); - return; - break; - case ICMP6_TYPE_RS: -#if LWIP_IPV6_FORWARD - /* TODO implement router functionality */ -#endif - break; -#if LWIP_IPV6_MLD - case ICMP6_TYPE_MLQ: - case ICMP6_TYPE_MLR: - case ICMP6_TYPE_MLD: - mld6_input(p, inp); - return; - break; -#endif - case ICMP6_TYPE_EREQ: -#if !LWIP_MULTICAST_PING - /* multicast destination address? */ - if (ip6_addr_ismulticast(ip6_current_dest_addr())) { - /* drop */ - pbuf_free(p); - ICMP6_STATS_INC(icmp6.drop); - return; - } -#endif /* LWIP_MULTICAST_PING */ - - /* Allocate reply. */ - r = pbuf_alloc(PBUF_IP, p->tot_len, PBUF_RAM); - if (r == NULL) { - /* drop */ - pbuf_free(p); - ICMP6_STATS_INC(icmp6.memerr); - return; - } - - /* Copy echo request. */ - if (pbuf_copy(r, p) != ERR_OK) { - /* drop */ - pbuf_free(p); - pbuf_free(r); - ICMP6_STATS_INC(icmp6.err); - return; - } - - /* Determine reply source IPv6 address. */ - reply_src = ip6_select_source_address(inp, ip6_current_src_addr()); - if (reply_src == NULL) { - /* drop */ - pbuf_free(p); - pbuf_free(r); - ICMP6_STATS_INC(icmp6.rterr); - return; - } - - /* Set fields in reply. */ - ((struct icmp6_echo_hdr *)(r->payload))->type = ICMP6_TYPE_EREP; - ((struct icmp6_echo_hdr *)(r->payload))->chksum = 0; - ((struct icmp6_echo_hdr *)(r->payload))->chksum = ip6_chksum_pseudo(r, - IP6_NEXTH_ICMP6, r->tot_len, reply_src, ip6_current_src_addr()); - - /* Send reply. */ - ICMP6_STATS_INC(icmp6.xmit); - ip6_output_if(r, reply_src, ip6_current_src_addr(), - LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6, inp); - pbuf_free(r); - - break; - default: - ICMP6_STATS_INC(icmp6.proterr); - ICMP6_STATS_INC(icmp6.drop); - break; - } - - pbuf_free(p); -} - - -/** - * Send an icmpv6 'destination unreachable' packet. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IPv6 header - * @param c ICMPv6 code for the unreachable type - */ -void -icmp6_dest_unreach(struct pbuf *p, enum icmp6_dur_code c) -{ - icmp6_send_response(p, c, 0, ICMP6_TYPE_DUR); -} - -/** - * Send an icmpv6 'packet too big' packet. - * - * @param p the input packet for which the 'packet too big' should be sent, - * p->payload pointing to the IPv6 header - * @param mtu the maximum mtu that we can accept - */ -void -icmp6_packet_too_big(struct pbuf *p, u32_t mtu) -{ - icmp6_send_response(p, 0, mtu, ICMP6_TYPE_PTB); -} - -/** - * Send an icmpv6 'time exceeded' packet. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IPv6 header - * @param c ICMPv6 code for the time exceeded type - */ -void -icmp6_time_exceeded(struct pbuf *p, enum icmp6_te_code c) -{ - icmp6_send_response(p, c, 0, ICMP6_TYPE_TE); -} - -/** - * Send an icmpv6 'parameter problem' packet. - * - * @param p the input packet for which the 'param problem' should be sent, - * p->payload pointing to the IP header - * @param c ICMPv6 code for the param problem type - * @param pointer the pointer to the byte where the parameter is found - */ -void -icmp6_param_problem(struct pbuf *p, enum icmp6_pp_code c, u32_t pointer) -{ - icmp6_send_response(p, c, pointer, ICMP6_TYPE_PP); -} - -/** - * Send an ICMPv6 packet in response to an incoming packet. - * - * @param p the input packet for which the response should be sent, - * p->payload pointing to the IPv6 header - * @param code Code of the ICMPv6 header - * @param data Additional 32-bit parameter in the ICMPv6 header - * @param type Type of the ICMPv6 header - */ -static void -icmp6_send_response(struct pbuf *p, u8_t code, u32_t data, u8_t type) -{ - struct pbuf *q; - struct icmp6_hdr *icmp6hdr; - ip6_addr_t * reply_src; - - /* ICMPv6 header + IPv6 header + data */ - q = pbuf_alloc(PBUF_IP, sizeof(struct icmp6_hdr) + IP6_HLEN + LWIP_ICMP6_DATASIZE, - PBUF_RAM); - if (q == NULL) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMPv6 packet.\n")); - ICMP6_STATS_INC(icmp6.memerr); - return; - } - LWIP_ASSERT("check that first pbuf can hold icmp 6message", - (q->len >= (sizeof(struct icmp6_hdr) + IP6_HLEN + LWIP_ICMP6_DATASIZE))); - - icmp6hdr = (struct icmp6_hdr *)q->payload; - icmp6hdr->type = type; - icmp6hdr->code = code; - icmp6hdr->data = data; - - /* copy fields from original packet */ - SMEMCPY((u8_t *)q->payload + sizeof(struct icmp6_hdr), (u8_t *)p->payload, - IP6_HLEN + LWIP_ICMP6_DATASIZE); - - /* Select an address to use as source. */ - reply_src = ip6_select_source_address(ip_current_netif(), ip6_current_src_addr()); - if (reply_src == NULL) { - /* drop */ - pbuf_free(q); - ICMP6_STATS_INC(icmp6.rterr); - return; - } - - /* calculate checksum */ - icmp6hdr->chksum = 0; - icmp6hdr->chksum = ip6_chksum_pseudo(q, IP6_NEXTH_ICMP6, q->tot_len, - reply_src, ip6_current_src_addr()); - - ICMP6_STATS_INC(icmp6.xmit); - ip6_output(q, reply_src, ip6_current_src_addr(), LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6); - pbuf_free(q); -} - -#endif /* LWIP_ICMP6 && LWIP_IPV6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/inet6.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/inet6.c deleted file mode 100644 index bdf4ff4ff..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/inet6.c +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @file - * - * INET v6 addresses. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#include "lwip/opt.h" - -#if LWIP_IPV6 && LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/inet6.h" - -/** @see ip6_addr.c for implementation of functions. */ - -#endif /* LWIP_IPV6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6.c deleted file mode 100644 index bae27ecea..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6.c +++ /dev/null @@ -1,986 +0,0 @@ -/** - * @file - * - * IPv6 layer. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - - -#include "lwip/opt.h" - -#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/netif.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/ip6_frag.h" -#include "lwip/icmp6.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp_impl.h" -#include "lwip/dhcp6.h" -#include "lwip/nd6.h" -#include "lwip/mld6.h" -#include "lwip/debug.h" -#include "lwip/stats.h" - - -/** - * Finds the appropriate network interface for a given IPv6 address. It tries to select - * a netif following a sequence of heuristics: - * 1) if there is only 1 netif, return it - * 2) if the destination is a link-local address, try to match the src address to a netif. - * this is a tricky case because with multiple netifs, link-local addresses only have - * meaning within a particular subnet/link. - * 3) tries to match the destination subnet to a configured address - * 4) tries to find a router - * 5) tries to match the source address to the netif - * 6) returns the default netif, if configured - * - * @param src the source IPv6 address, if known - * @param dest the destination IPv6 address for which to find the route - * @return the netif on which to send to reach dest - */ -struct netif * -ip6_route(struct ip6_addr *src, struct ip6_addr *dest) -{ - struct netif *netif; - s8_t i; - - /* If single netif configuration, fast return. */ - if ((netif_list != NULL) && (netif_list->next == NULL)) { - return netif_list; - } - - /* Special processing for link-local addresses. */ - if (ip6_addr_islinklocal(dest)) { - if (ip6_addr_isany(src)) { - /* Use default netif. */ - return netif_default; - } - - /* Try to find the netif for the source address. */ - for(netif = netif_list; netif != NULL; netif = netif->next) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_cmp(src, netif_ip6_addr(netif, i))) { - return netif; - } - } - } - - /* netif not found, use default netif */ - return netif_default; - } - - /* See if the destination subnet matches a configured address. */ - for(netif = netif_list; netif != NULL; netif = netif->next) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_netcmp(dest, netif_ip6_addr(netif, i))) { - return netif; - } - } - } - - /* Get the netif for a suitable router. */ - i = nd6_select_router(dest, NULL); - if (i >= 0) { - if (default_router_list[i].neighbor_entry != NULL) { - if (default_router_list[i].neighbor_entry->netif != NULL) { - return default_router_list[i].neighbor_entry->netif; - } - } - } - - /* try with the netif that matches the source address. */ - if (!ip6_addr_isany(src)) { - for(netif = netif_list; netif != NULL; netif = netif->next) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_cmp(src, netif_ip6_addr(netif, i))) { - return netif; - } - } - } - } - - /* no matching netif found, use default netif */ - return netif_default; -} - -/** - * Select the best IPv6 source address for a given destination - * IPv6 address. Loosely follows RFC 3484. "Strong host" behavior - * is assumed. - * - * @param netif the netif on which to send a packet - * @param dest the destination we are trying to reach - * @return the most suitable source address to use, or NULL if no suitable - * source address is found - */ -ip6_addr_t * -ip6_select_source_address(struct netif *netif, ip6_addr_t * dest) -{ - ip6_addr_t * src = NULL; - u8_t i; - - /* If dest is link-local, choose a link-local source. */ - if (ip6_addr_islinklocal(dest) || ip6_addr_ismulticast_linklocal(dest) || ip6_addr_ismulticast_iflocal(dest)) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_islinklocal(netif_ip6_addr(netif, i))) { - return netif_ip6_addr(netif, i); - } - } - } - - /* Choose a site-local with matching prefix. */ - if (ip6_addr_issitelocal(dest) || ip6_addr_ismulticast_sitelocal(dest)) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_issitelocal(netif_ip6_addr(netif, i)) && - ip6_addr_netcmp(dest, netif_ip6_addr(netif, i))) { - return netif_ip6_addr(netif, i); - } - } - } - - /* Choose a unique-local with matching prefix. */ - if (ip6_addr_isuniquelocal(dest) || ip6_addr_ismulticast_orglocal(dest)) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_isuniquelocal(netif_ip6_addr(netif, i)) && - ip6_addr_netcmp(dest, netif_ip6_addr(netif, i))) { - return netif_ip6_addr(netif, i); - } - } - } - - /* Choose a global with best matching prefix. */ - if (ip6_addr_isglobal(dest) || ip6_addr_ismulticast_global(dest)) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_isglobal(netif_ip6_addr(netif, i))) { - if (src == NULL) { - src = netif_ip6_addr(netif, i); - } - else { - /* Replace src only if we find a prefix match. */ - /* TODO find longest matching prefix. */ - if ((!(ip6_addr_netcmp(src, dest))) && - ip6_addr_netcmp(netif_ip6_addr(netif, i), dest)) { - src = netif_ip6_addr(netif, i); - } - } - } - } - if (src != NULL) { - return src; - } - } - - /* Last resort: see if arbitrary prefix matches. */ - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_netcmp(dest, netif_ip6_addr(netif, i))) { - return netif_ip6_addr(netif, i); - } - } - - return NULL; -} - -#if LWIP_IPV6_FORWARD -/** - * Forwards an IPv6 packet. It finds an appropriate route for the - * packet, decrements the HL value of the packet, and outputs - * the packet on the appropriate interface. - * - * @param p the packet to forward (p->payload points to IP header) - * @param iphdr the IPv6 header of the input packet - * @param inp the netif on which this packet was received - */ -static void -ip6_forward(struct pbuf *p, struct ip6_hdr *iphdr, struct netif *inp) -{ - struct netif *netif; - - /* do not forward link-local addresses */ - if (ip6_addr_islinklocal(ip6_current_dest_addr())) { - LWIP_DEBUGF(IP6_DEBUG, ("ip6_forward: not forwarding link-local address.\n")); - IP6_STATS_INC(ip6.rterr); - IP6_STATS_INC(ip6.drop); - return; - } - - /* Find network interface where to forward this IP packet to. */ - netif = ip6_route(IP6_ADDR_ANY, ip6_current_dest_addr()); - if (netif == NULL) { - LWIP_DEBUGF(IP6_DEBUG, ("ip6_forward: no route for %"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F"\n", - IP6_ADDR_BLOCK1(ip6_current_dest_addr()), - IP6_ADDR_BLOCK2(ip6_current_dest_addr()), - IP6_ADDR_BLOCK3(ip6_current_dest_addr()), - IP6_ADDR_BLOCK4(ip6_current_dest_addr()), - IP6_ADDR_BLOCK5(ip6_current_dest_addr()), - IP6_ADDR_BLOCK6(ip6_current_dest_addr()), - IP6_ADDR_BLOCK7(ip6_current_dest_addr()), - IP6_ADDR_BLOCK8(ip6_current_dest_addr()))); -#if LWIP_ICMP6 - /* Don't send ICMP messages in response to ICMP messages */ - if (IP6H_NEXTH(iphdr) != IP6_NEXTH_ICMP6) { - icmp6_dest_unreach(p, ICMP6_DUR_NO_ROUTE); - } -#endif /* LWIP_ICMP6 */ - IP6_STATS_INC(ip6.rterr); - IP6_STATS_INC(ip6.drop); - return; - } - /* Do not forward packets onto the same network interface on which - * they arrived. */ - if (netif == inp) { - LWIP_DEBUGF(IP6_DEBUG, ("ip6_forward: not bouncing packets back on incoming interface.\n")); - IP6_STATS_INC(ip6.rterr); - IP6_STATS_INC(ip6.drop); - return; - } - - /* decrement HL */ - IP6H_HOPLIM_SET(iphdr, IP6H_HOPLIM(iphdr) - 1); - /* send ICMP6 if HL == 0 */ - if (IP6H_HOPLIM(iphdr) == 0) { -#if LWIP_ICMP6 - /* Don't send ICMP messages in response to ICMP messages */ - if (IP6H_NEXTH(iphdr) != IP6_NEXTH_ICMP6) { - icmp6_time_exceeded(p, ICMP6_TE_HL); - } -#endif /* LWIP_ICMP6 */ - IP6_STATS_INC(ip6.drop); - return; - } - - if (netif->mtu && (p->tot_len > netif->mtu)) { -#if LWIP_ICMP6 - /* Don't send ICMP messages in response to ICMP messages */ - if (IP6H_NEXTH(iphdr) != IP6_NEXTH_ICMP6) { - icmp6_packet_too_big(p, netif->mtu); - } -#endif /* LWIP_ICMP6 */ - IP6_STATS_INC(ip6.drop); - return; - } - - LWIP_DEBUGF(IP6_DEBUG, ("ip6_forward: forwarding packet to %"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F"\n", - IP6_ADDR_BLOCK1(ip6_current_dest_addr()), - IP6_ADDR_BLOCK2(ip6_current_dest_addr()), - IP6_ADDR_BLOCK3(ip6_current_dest_addr()), - IP6_ADDR_BLOCK4(ip6_current_dest_addr()), - IP6_ADDR_BLOCK5(ip6_current_dest_addr()), - IP6_ADDR_BLOCK6(ip6_current_dest_addr()), - IP6_ADDR_BLOCK7(ip6_current_dest_addr()), - IP6_ADDR_BLOCK8(ip6_current_dest_addr()))); - - /* transmit pbuf on chosen interface */ - netif->output_ip6(netif, p, ip6_current_dest_addr()); - IP6_STATS_INC(ip6.fw); - IP6_STATS_INC(ip6.xmit); - return; -} -#endif /* LWIP_IPV6_FORWARD */ - - -/** - * This function is called by the network interface device driver when - * an IPv6 packet is received. The function does the basic checks of the - * IP header such as packet size being at least larger than the header - * size etc. If the packet was not destined for us, the packet is - * forwarded (using ip6_forward). - * - * Finally, the packet is sent to the upper layer protocol input function. - * - * @param p the received IPv6 packet (p->payload points to IPv6 header) - * @param inp the netif on which this packet was received - * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't - * processed, but currently always returns ERR_OK) - */ -err_t -ip6_input(struct pbuf *p, struct netif *inp) -{ - struct ip6_hdr *ip6hdr; - struct netif *netif; - u8_t nexth; - u16_t hlen; /* the current header length */ - u8_t i; -#if IP_ACCEPT_LINK_LAYER_ADDRESSING - int check_ip_src=1; -#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */ - - IP6_STATS_INC(ip6.recv); - - /* identify the IP header */ - ip6hdr = (struct ip6_hdr *)p->payload; - if (IP6H_V(ip6hdr) != 6) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IPv6 packet dropped due to bad version number %"U16_F"\n", - IP6H_V(ip6hdr))); - pbuf_free(p); - IP6_STATS_INC(ip6.err); - IP6_STATS_INC(ip6.drop); - return ERR_OK; - } - - /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */ - if ((IP6_HLEN > p->len) || ((IP6H_PLEN(ip6hdr) + IP6_HLEN) > p->tot_len)) { - if (IP6_HLEN > p->len) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IPv6 header (len %"U16_F") does not fit in first pbuf (len %"U16_F"), IP packet dropped.\n", - IP6_HLEN, p->len)); - } - if ((IP6H_PLEN(ip6hdr) + IP6_HLEN) > p->tot_len) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IPv6 (plen %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n", - IP6H_PLEN(ip6hdr) + IP6_HLEN, p->tot_len)); - } - /* free (drop) packet pbufs */ - pbuf_free(p); - IP6_STATS_INC(ip6.lenerr); - IP6_STATS_INC(ip6.drop); - return ERR_OK; - } - - /* Trim pbuf. This should have been done at the netif layer, - * but we'll do it anyway just to be sure that its done. */ - pbuf_realloc(p, IP6_HLEN + IP6H_PLEN(ip6hdr)); - - /* copy IP addresses to aligned ip6_addr_t */ - ip6_addr_copy(ip_data.current_iphdr_dest.ip6, ip6hdr->dest); - ip6_addr_copy(ip_data.current_iphdr_src.ip6, ip6hdr->src); - - /* current header pointer. */ - ip_data.current_ip6_header = ip6hdr; - - /* match packet against an interface, i.e. is this packet for us? */ - if (ip6_addr_ismulticast(ip6_current_dest_addr())) { - /* Always joined to multicast if-local and link-local all-nodes group. */ - if (ip6_addr_isallnodes_iflocal(ip6_current_dest_addr()) || - ip6_addr_isallnodes_linklocal(ip6_current_dest_addr())) { - netif = inp; - } -#if LWIP_IPV6_MLD - else if (mld6_lookfor_group(inp, ip6_current_dest_addr())) { - netif = inp; - } -#else /* LWIP_IPV6_MLD */ - else if (ip6_addr_issolicitednode(ip6_current_dest_addr())) { - /* Accept all solicited node packets when MLD is not enabled - * (for Neighbor discovery). */ - netif = inp; - } -#endif /* LWIP_IPV6_MLD */ - else { - netif = NULL; - } - } - else { - /* start trying with inp. if that's not acceptable, start walking the - list of configured netifs. - 'first' is used as a boolean to mark whether we started walking the list */ - int first = 1; - netif = inp; - do { - /* interface is up? */ - if (netif_is_up(netif)) { - /* unicast to this interface address? address configured? */ - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_cmp(ip6_current_dest_addr(), netif_ip6_addr(netif, i))) { - /* exit outer loop */ - goto netif_found; - } - } - } - if (first) { - first = 0; - netif = netif_list; - } else { - netif = netif->next; - } - if (netif == inp) { - netif = netif->next; - } - } while(netif != NULL); -netif_found: - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet accepted on interface %c%c\n", - netif->name[0], netif->name[1])); - } - - /* "::" packet source address? (used in duplicate address detection) */ - if (ip6_addr_isany(ip6_current_src_addr()) && - (!ip6_addr_issolicitednode(ip6_current_dest_addr()))) { - /* packet source is not valid */ - /* free (drop) packet pbufs */ - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with src ANY_ADDRESS dropped\n")); - pbuf_free(p); - IP6_STATS_INC(ip6.drop); - goto ip6_input_cleanup; - } - - /* packet not for us? */ - if (netif == NULL) { - /* packet not for us, route or discard */ - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_TRACE, ("ip6_input: packet not for us.\n")); -#if LWIP_IPV6_FORWARD - /* non-multicast packet? */ - if (!ip6_addr_ismulticast(ip6_current_dest_addr())) { - /* try to forward IP packet on (other) interfaces */ - ip6_forward(p, ip6hdr, inp); - } -#endif /* LWIP_IPV6_FORWARD */ - pbuf_free(p); - goto ip6_input_cleanup; - } - - /* current netif pointer. */ - ip_data.current_netif = inp; - - /* Save next header type. */ - nexth = IP6H_NEXTH(ip6hdr); - - /* Init header length. */ - hlen = ip_data.current_ip_header_tot_len = IP6_HLEN; - - /* Move to payload. */ - pbuf_header(p, -IP6_HLEN); - - /* Process known option extension headers, if present. */ - while (nexth != IP6_NEXTH_NONE) - { - switch (nexth) { - case IP6_NEXTH_HOPBYHOP: - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with Hop-by-Hop options header\n")); - /* Get next header type. */ - nexth = *((u8_t *)p->payload); - - /* Get the header length. */ - hlen = 8 * (1 + *((u8_t *)p->payload) + 1); - ip_data.current_ip_header_tot_len += hlen; - - /* Skip over this header. */ - if (hlen > p->len) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IPv6 options header (hlen %"U16_F") does not fit in first pbuf (len %"U16_F"), IPv6 packet dropped.\n", - hlen, p->len)); - /* free (drop) packet pbufs */ - pbuf_free(p); - IP6_STATS_INC(ip6.lenerr); - IP6_STATS_INC(ip6.drop); - goto ip6_input_cleanup; - } - - pbuf_header(p, -hlen); - break; - case IP6_NEXTH_DESTOPTS: - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with Destination options header\n")); - /* Get next header type. */ - nexth = *((u8_t *)p->payload); - - /* Get the header length. */ - hlen = 8 * (1 + *((u8_t *)p->payload) + 1); - ip_data.current_ip_header_tot_len += hlen; - - /* Skip over this header. */ - if (hlen > p->len) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IPv6 options header (hlen %"U16_F") does not fit in first pbuf (len %"U16_F"), IPv6 packet dropped.\n", - hlen, p->len)); - /* free (drop) packet pbufs */ - pbuf_free(p); - IP6_STATS_INC(ip6.lenerr); - IP6_STATS_INC(ip6.drop); - goto ip6_input_cleanup; - } - - pbuf_header(p, -hlen); - break; - case IP6_NEXTH_ROUTING: - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with Routing header\n")); - /* Get next header type. */ - nexth = *((u8_t *)p->payload); - - /* Get the header length. */ - hlen = 8 * (1 + *((u8_t *)p->payload) + 1); - ip_data.current_ip_header_tot_len += hlen; - - /* Skip over this header. */ - if (hlen > p->len) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IPv6 options header (hlen %"U16_F") does not fit in first pbuf (len %"U16_F"), IPv6 packet dropped.\n", - hlen, p->len)); - /* free (drop) packet pbufs */ - pbuf_free(p); - IP6_STATS_INC(ip6.lenerr); - IP6_STATS_INC(ip6.drop); - goto ip6_input_cleanup; - } - - pbuf_header(p, -hlen); - break; - - case IP6_NEXTH_FRAGMENT: - { - struct ip6_frag_hdr * frag_hdr; - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with Fragment header\n")); - - frag_hdr = (struct ip6_frag_hdr *)p->payload; - - /* Get next header type. */ - nexth = frag_hdr->_nexth; - - /* Fragment Header length. */ - hlen = 8; - ip_data.current_ip_header_tot_len += hlen; - - /* Make sure this header fits in current pbuf. */ - if (hlen > p->len) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IPv6 options header (hlen %"U16_F") does not fit in first pbuf (len %"U16_F"), IPv6 packet dropped.\n", - hlen, p->len)); - /* free (drop) packet pbufs */ - pbuf_free(p); - IP6_FRAG_STATS_INC(ip6_frag.lenerr); - IP6_FRAG_STATS_INC(ip6_frag.drop); - goto ip6_input_cleanup; - } - - /* Offset == 0 and more_fragments == 0? */ - if (((frag_hdr->_fragment_offset & IP6_FRAG_OFFSET_MASK) == 0) && - ((frag_hdr->_fragment_offset & IP6_FRAG_MORE_FLAG) == 0)) { - - /* This is a 1-fragment packet, usually a packet that we have - * already reassembled. Skip this header anc continue. */ - pbuf_header(p, -hlen); - } - else { -#if LWIP_IPV6_REASS - - /* reassemble the packet */ - p = ip6_reass(p); - /* packet not fully reassembled yet? */ - if (p == NULL) { - goto ip6_input_cleanup; - } - - /* Returned p point to IPv6 header. - * Update all our variables and pointers and continue. */ - ip6hdr = (struct ip6_hdr *)p->payload; - nexth = IP6H_NEXTH(ip6hdr); - hlen = ip_data.current_ip_header_tot_len = IP6_HLEN; - pbuf_header(p, -IP6_HLEN); - -#else /* LWIP_IPV6_REASS */ - /* free (drop) packet pbufs */ - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: packet with Fragment header dropped (with LWIP_IPV6_REASS==0)\n")); - pbuf_free(p); - IP6_STATS_INC(ip6.opterr); - IP6_STATS_INC(ip6.drop); - goto ip6_input_cleanup; -#endif /* LWIP_IPV6_REASS */ - } - break; - } - default: - goto options_done; - break; - } - } -options_done: - - /* p points to IPv6 header again. */ - pbuf_header(p, ip_data.current_ip_header_tot_len); - - /* send to upper layers */ - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: \n")); - ip6_debug_print(p); - LWIP_DEBUGF(IP6_DEBUG, ("ip6_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len)); - -#if LWIP_RAW - /* raw input did not eat the packet? */ - if (raw_input(p, inp) == 0) -#endif /* LWIP_RAW */ - { - switch (nexth) { - case IP6_NEXTH_NONE: - pbuf_free(p); - break; -#if LWIP_UDP - case IP6_NEXTH_UDP: -#if LWIP_UDPLITE - case IP6_NEXTH_UDPLITE: -#endif /* LWIP_UDPLITE */ - /* Point to payload. */ - pbuf_header(p, -ip_data.current_ip_header_tot_len); - udp_input(p, inp); - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case IP6_NEXTH_TCP: - /* Point to payload. */ - pbuf_header(p, -ip_data.current_ip_header_tot_len); - tcp_input(p, inp); - break; -#endif /* LWIP_TCP */ -#if LWIP_ICMP6 - case IP6_NEXTH_ICMP6: - /* Point to payload. */ - pbuf_header(p, -ip_data.current_ip_header_tot_len); - icmp6_input(p, inp); - break; -#endif /* LWIP_ICMP */ - default: -#if LWIP_ICMP6 - /* send ICMP parameter problem unless it was a multicast or ICMPv6 */ - if ((!ip6_addr_ismulticast(ip6_current_dest_addr())) && - (IP6H_NEXTH(ip6hdr) != IP6_NEXTH_ICMP6)) { - icmp6_param_problem(p, ICMP6_PP_HEADER, ip_data.current_ip_header_tot_len - hlen); - } -#endif /* LWIP_ICMP */ - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip6_input: Unsupported transport protocol %"U16_F"\n", IP6H_NEXTH(ip6hdr))); - pbuf_free(p); - IP6_STATS_INC(ip6.proterr); - IP6_STATS_INC(ip6.drop); - break; - } - } - -ip6_input_cleanup: - ip_data.current_netif = NULL; - ip_data.current_ip6_header = NULL; - ip_data.current_ip_header_tot_len = 0; - ip6_addr_set_any(&ip_data.current_iphdr_src.ip6); - ip6_addr_set_any(&ip_data.current_iphdr_dest.ip6); - - return ERR_OK; -} - - -/** - * Sends an IPv6 packet on a network interface. This function constructs - * the IPv6 header. If the source IPv6 address is NULL, the IPv6 "ANY" address is - * used as source (usually during network startup). If the source IPv6 address it - * IP6_ADDR_ANY, the most appropriate IPv6 address of the outgoing network - * interface is filled in as source address. If the destination IPv6 address is - * IP_HDRINCL, p is assumed to already include an IPv6 header and p->payload points - * to it instead of the data. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an - IPv6 header and p->payload points to that IPv6 header) - * @param src the source IPv6 address to send from (if src == IP6_ADDR_ANY, an - * IP address of the netif is selected and used as source address. - * if src == NULL, IP6_ADDR_ANY is used as source) - * @param dest the destination IPv6 address to send the packet to - * @param hl the Hop Limit value to be set in the IPv6 header - * @param tc the Traffic Class value to be set in the IPv6 header - * @param nexth the Next Header to be set in the IPv6 header - * @param netif the netif on which to send this packet - * @return ERR_OK if the packet was sent OK - * ERR_BUF if p doesn't have enough space for IPv6/LINK headers - * returns errors returned by netif->output - */ -err_t -ip6_output_if(struct pbuf *p, ip6_addr_t *src, ip6_addr_t *dest, - u8_t hl, u8_t tc, - u8_t nexth, struct netif *netif) -{ - struct ip6_hdr *ip6hdr; - ip6_addr_t dest_addr; - - /* pbufs passed to IP must have a ref-count of 1 as their payload pointer - gets altered as the packet is passed down the stack */ - LWIP_ASSERT("p->ref == 1", p->ref == 1); - - /* Should the IPv6 header be generated or is it already included in p? */ - if (dest != IP_HDRINCL) { - /* generate IPv6 header */ - if (pbuf_header(p, IP6_HLEN)) { - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip6_output: not enough room for IPv6 header in pbuf\n")); - IP6_STATS_INC(ip6.err); - return ERR_BUF; - } - - ip6hdr = (struct ip6_hdr *)p->payload; - LWIP_ASSERT("check that first pbuf can hold struct ip6_hdr", - (p->len >= sizeof(struct ip6_hdr))); - - IP6H_HOPLIM_SET(ip6hdr, hl); - IP6H_NEXTH_SET(ip6hdr, nexth); - - /* dest cannot be NULL here */ - ip6_addr_copy(ip6hdr->dest, *dest); - - IP6H_VTCFL_SET(ip6hdr, 6, tc, 0); - IP6H_PLEN_SET(ip6hdr, p->tot_len - IP6_HLEN); - - if (src == NULL) { - src = IP6_ADDR_ANY; - } - else if (ip6_addr_isany(src)) { - src = ip6_select_source_address(netif, dest); - if ((src == NULL) || ip6_addr_isany(src)) { - /* No appropriate source address was found for this packet. */ - LWIP_DEBUGF(IP6_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip6_output: No suitable source address for packet.\n")); - IP6_STATS_INC(ip6.rterr); - return ERR_RTE; - } - } - /* src cannot be NULL here */ - ip6_addr_copy(ip6hdr->src, *src); - - } else { - /* IP header already included in p */ - ip6hdr = (struct ip6_hdr *)p->payload; - ip6_addr_copy(dest_addr, ip6hdr->dest); - dest = &dest_addr; - } - - IP6_STATS_INC(ip6.xmit); - - LWIP_DEBUGF(IP6_DEBUG, ("ip6_output_if: %c%c%"U16_F"\n", netif->name[0], netif->name[1], netif->num)); - ip6_debug_print(p); - -#if ENABLE_LOOPBACK - /* TODO implement loopback for v6 - if (ip6_addr_cmp(dest, netif_ip6_addr(0))) { - return netif_loop_output(netif, p, dest); - }*/ -#endif /* ENABLE_LOOPBACK */ -#if LWIP_IPV6_FRAG - /* don't fragment if interface has mtu set to 0 [loopif] */ - if (netif->mtu && (p->tot_len > nd6_get_destination_mtu(dest, netif))) { - return ip6_frag(p, netif, dest); - } -#endif /* LWIP_IPV6_FRAG */ - - LWIP_DEBUGF(IP6_DEBUG, ("netif->output_ip6()")); - return netif->output_ip6(netif, p, dest); -} - -/** - * Simple interface to ip6_output_if. It finds the outgoing network - * interface and calls upon ip6_output_if to do the actual work. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an - IPv6 header and p->payload points to that IPv6 header) - * @param src the source IPv6 address to send from (if src == IP6_ADDR_ANY, an - * IP address of the netif is selected and used as source address. - * if src == NULL, IP6_ADDR_ANY is used as source) - * @param dest the destination IPv6 address to send the packet to - * @param hl the Hop Limit value to be set in the IPv6 header - * @param tc the Traffic Class value to be set in the IPv6 header - * @param nexth the Next Header to be set in the IPv6 header - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip6_output(struct pbuf *p, ip6_addr_t *src, ip6_addr_t *dest, - u8_t hl, u8_t tc, u8_t nexth) -{ - struct netif *netif; - - /* pbufs passed to IPv6 must have a ref-count of 1 as their payload pointer - gets altered as the packet is passed down the stack */ - LWIP_ASSERT("p->ref == 1", p->ref == 1); - - if ((netif = ip6_route(src, dest)) == NULL) { - LWIP_DEBUGF(IP6_DEBUG, ("ip6_output: no route for %"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F"\n", - IP6_ADDR_BLOCK1(dest), - IP6_ADDR_BLOCK2(dest), - IP6_ADDR_BLOCK3(dest), - IP6_ADDR_BLOCK4(dest), - IP6_ADDR_BLOCK5(dest), - IP6_ADDR_BLOCK6(dest), - IP6_ADDR_BLOCK7(dest), - IP6_ADDR_BLOCK8(dest))); - IP6_STATS_INC(ip6.rterr); - return ERR_RTE; - } - - return ip6_output_if(p, src, dest, hl, tc, nexth, netif); -} - - -#if LWIP_NETIF_HWADDRHINT -/** Like ip6_output, but takes and addr_hint pointer that is passed on to netif->addr_hint - * before calling ip6_output_if. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an - IPv6 header and p->payload points to that IPv6 header) - * @param src the source IPv6 address to send from (if src == IP6_ADDR_ANY, an - * IP address of the netif is selected and used as source address. - * if src == NULL, IP6_ADDR_ANY is used as source) - * @param dest the destination IPv6 address to send the packet to - * @param hl the Hop Limit value to be set in the IPv6 header - * @param tc the Traffic Class value to be set in the IPv6 header - * @param nexth the Next Header to be set in the IPv6 header - * @param addr_hint address hint pointer set to netif->addr_hint before - * calling ip_output_if() - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip6_output_hinted(struct pbuf *p, ip6_addr_t *src, ip6_addr_t *dest, - u8_t hl, u8_t tc, u8_t nexth, u8_t *addr_hint) -{ - struct netif *netif; - err_t err; - - /* pbufs passed to IP must have a ref-count of 1 as their payload pointer - gets altered as the packet is passed down the stack */ - LWIP_ASSERT("p->ref == 1", p->ref == 1); - - if ((netif = ip6_route(src, dest)) == NULL) { - LWIP_DEBUGF(IP6_DEBUG, ("ip6_output: no route for %"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F"\n", - IP6_ADDR_BLOCK1(dest), - IP6_ADDR_BLOCK2(dest), - IP6_ADDR_BLOCK3(dest), - IP6_ADDR_BLOCK4(dest), - IP6_ADDR_BLOCK5(dest), - IP6_ADDR_BLOCK6(dest), - IP6_ADDR_BLOCK7(dest), - IP6_ADDR_BLOCK8(dest))); - IP6_STATS_INC(ip6.rterr); - return ERR_RTE; - } - - NETIF_SET_HWADDRHINT(netif, addr_hint); - err = ip6_output_if(p, src, dest, hl, tc, nexth, netif); - NETIF_SET_HWADDRHINT(netif, NULL); - - return err; -} -#endif /* LWIP_NETIF_HWADDRHINT*/ - -#if LWIP_IPV6_MLD -/** - * Add a hop-by-hop options header with a router alert option and padding. - * - * Used by MLD when sending a Multicast listener report/done message. - * - * @param p the packet to which we will prepend the options header - * @param nexth the next header protocol number (e.g. IP6_NEXTH_ICMP6) - * @param value the value of the router alert option data (e.g. IP6_ROUTER_ALERT_VALUE_MLD) - * @return ERR_OK if hop-by-hop header was added, ERR_* otherwise - */ -err_t -ip6_options_add_hbh_ra(struct pbuf * p, u8_t nexth, u8_t value) -{ - struct ip6_hbh_hdr * hbh_hdr; - - /* Move pointer to make room for hop-by-hop options header. */ - if (pbuf_header(p, sizeof(struct ip6_hbh_hdr))) { - LWIP_DEBUGF(IP6_DEBUG, ("ip6_options: no space for options header\n")); - IP6_STATS_INC(ip6.err); - return ERR_BUF; - } - - hbh_hdr = (struct ip6_hbh_hdr *)p->payload; - - /* Set fields. */ - hbh_hdr->_nexth = nexth; - hbh_hdr->_hlen = 0; - hbh_hdr->_ra_opt_type = IP6_ROUTER_ALERT_OPTION; - hbh_hdr->_ra_opt_dlen = 2; - hbh_hdr->_ra_opt_data = value; - hbh_hdr->_padn_opt_type = IP6_PADN_ALERT_OPTION; - hbh_hdr->_padn_opt_dlen = 0; - - return ERR_OK; -} -#endif /* LWIP_IPV6_MLD */ - -#if IP6_DEBUG -/* Print an IPv6 header by using LWIP_DEBUGF - * @param p an IPv6 packet, p->payload pointing to the IPv6 header - */ -void -ip6_debug_print(struct pbuf *p) -{ - struct ip6_hdr *ip6hdr = (struct ip6_hdr *)p->payload; - - LWIP_DEBUGF(IP6_DEBUG, ("IPv6 header:\n")); - LWIP_DEBUGF(IP6_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP6_DEBUG, ("| %2"U16_F" | %3"U16_F" | %7"U32_F" | (ver, class, flow)\n", - IP6H_V(ip6hdr), - IP6H_TC(ip6hdr), - IP6H_FL(ip6hdr))); - LWIP_DEBUGF(IP6_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP6_DEBUG, ("| %5"U16_F" | %3"U16_F" | %3"U16_F" | (plen, nexth, hopl)\n", - ntohs(IP6H_PLEN(ip6hdr)), - ntohs(IP6H_NEXTH(ip6hdr)), - ntohs(IP6H_HOPLIM(ip6hdr)))); - LWIP_DEBUGF(IP6_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP6_DEBUG, ("| %4"X32_F" | %4"X32_F" | %4"X32_F" | %4"X32_F" | (src)\n", - IP6_ADDR_BLOCK1(&(ip6hdr->src)), - IP6_ADDR_BLOCK2(&(ip6hdr->src)), - IP6_ADDR_BLOCK3(&(ip6hdr->src)), - IP6_ADDR_BLOCK4(&(ip6hdr->src)))); - LWIP_DEBUGF(IP6_DEBUG, ("| %4"X32_F" | %4"X32_F" | %4"X32_F" | %4"X32_F" |\n", - IP6_ADDR_BLOCK5(&(ip6hdr->src)), - IP6_ADDR_BLOCK6(&(ip6hdr->src)), - IP6_ADDR_BLOCK7(&(ip6hdr->src)), - IP6_ADDR_BLOCK8(&(ip6hdr->src)))); - LWIP_DEBUGF(IP6_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP6_DEBUG, ("| %4"X32_F" | %4"X32_F" | %4"X32_F" | %4"X32_F" | (dest)\n", - IP6_ADDR_BLOCK1(&(ip6hdr->dest)), - IP6_ADDR_BLOCK2(&(ip6hdr->dest)), - IP6_ADDR_BLOCK3(&(ip6hdr->dest)), - IP6_ADDR_BLOCK4(&(ip6hdr->dest)))); - LWIP_DEBUGF(IP6_DEBUG, ("| %4"X32_F" | %4"X32_F" | %4"X32_F" | %4"X32_F" |\n", - IP6_ADDR_BLOCK5(&(ip6hdr->dest)), - IP6_ADDR_BLOCK6(&(ip6hdr->dest)), - IP6_ADDR_BLOCK7(&(ip6hdr->dest)), - IP6_ADDR_BLOCK8(&(ip6hdr->dest)))); - LWIP_DEBUGF(IP6_DEBUG, ("+-------------------------------+\n")); -} -#endif /* IP6_DEBUG */ - -#endif /* LWIP_IPV6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_addr.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_addr.c deleted file mode 100644 index 6c047491c..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_addr.c +++ /dev/null @@ -1,244 +0,0 @@ -/** - * @file - * - * IPv6 addresses. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * Functions for handling IPv6 addresses. - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#include "lwip/opt.h" - -#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/ip6_addr.h" -#include "lwip/def.h" - -/* used by IP6_ADDR_ANY in ip6_addr.h */ -const ip6_addr_t ip6_addr_any = { { 0ul, 0ul, 0ul, 0ul } }; - -#ifndef isprint -#define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up) -#define isprint(c) in_range(c, 0x20, 0x7f) -#define isdigit(c) in_range(c, '0', '9') -#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'A', 'F')) -#define islower(c) in_range(c, 'a', 'z') -#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v') -#define xchar(i) ((i) < 10 ? '0' + (i) : 'A' + (i) - 10) -#endif - -/** - * Check whether "cp" is a valid ascii representation - * of an IPv6 address and convert to a binary address. - * Returns 1 if the address is valid, 0 if not. - * - * @param cp IPv6 address in ascii represenation (e.g. "FF01::1") - * @param addr pointer to which to save the ip address in network order - * @return 1 if cp could be converted to addr, 0 on failure - */ -int -ip6addr_aton(const char *cp, ip6_addr_t *addr) -{ - u32_t addr_index, zero_blocks, current_block_index, current_block_value; - const char * s; - - /* Count the number of colons, to count the number of blocks in a "::" sequence - zero_blocks may be 1 even if there are no :: sequences */ - zero_blocks = 8; - for (s = cp; *s != 0; s++) { - if (*s == ':') - zero_blocks--; - else if (!isxdigit(*s)) - break; - } - - /* parse each block */ - addr_index = 0; - current_block_index = 0; - current_block_value = 0; - for (s = cp; *s != 0; s++) { - if (*s == ':') { - if (current_block_index & 0x1) { - addr->addr[addr_index++] |= current_block_value; - } - else { - addr->addr[addr_index] = current_block_value << 16; - } - current_block_index++; - current_block_value = 0; - if (current_block_index > 7) { - /* address too long! */ - return 0; - } if (s[1] == ':') { - s++; - /* "::" found, set zeros */ - while (zero_blocks-- > 0) { - if (current_block_index & 0x1) { - addr_index++; - } - else { - addr->addr[addr_index] = 0; - } - current_block_index++; - } - } - } else if (isxdigit(*s)) { - /* add current digit */ - current_block_value = (current_block_value << 4) + - (isdigit(*s) ? *s - '0' : - 10 + (islower(*s) ? *s - 'a' : *s - 'A')); - } else { - /* unexpected digit, space? CRLF? */ - break; - } - } - - if (current_block_index & 0x1) { - addr->addr[addr_index++] |= current_block_value; - } - else { - addr->addr[addr_index] = current_block_value << 16; - } - - /* convert to network byte order. */ - for (addr_index = 0; addr_index < 4; addr_index++) { - addr->addr[addr_index] = htonl(addr->addr[addr_index]); - } - - if (current_block_index != 7) { - return 0; - } - - return 1; - -} - -/** - * Convert numeric IPv6 address into ASCII representation. - * returns ptr to static buffer; not reentrant! - * - * @param addr ip6 address in network order to convert - * @return pointer to a global static (!) buffer that holds the ASCII - * represenation of addr - */ -char * -ip6addr_ntoa(const ip6_addr_t *addr) -{ - static char str[40]; - return ip6addr_ntoa_r(addr, str, 40); -} - -/** - * Same as ipaddr_ntoa, but reentrant since a user-supplied buffer is used. - * - * @param addr ip6 address in network order to convert - * @param buf target buffer where the string is stored - * @param buflen length of buf - * @return either pointer to buf which now holds the ASCII - * representation of addr or NULL if buf was too small - */ -char * -ip6addr_ntoa_r(const ip6_addr_t *addr, char *buf, int buflen) -{ - u32_t current_block_index, current_block_value; - s32_t zero_flag, i; - - i = 0; - zero_flag = 0; /* used to indicate a zero chain for "::' */ - - for (current_block_index = 0; current_block_index < 8; current_block_index++) { - /* get the current 16-bit block */ - current_block_value = htonl(addr->addr[current_block_index >> 1]); - if ((current_block_index & 0x1) == 0) { - current_block_value = current_block_value >> 16; - } - current_block_value &= 0xffff; - - if (current_block_value == 0) { - /* generate empty block "::" */ - if (!zero_flag) { - if (current_block_index > 0) { - zero_flag = 1; - buf[i++] = ':'; - if (i >= buflen) return NULL; - } - } - } - else { - if (current_block_index > 0) { - buf[i++] = ':'; - if (i >= buflen) return NULL; - } - - if ((current_block_value & 0xf000) == 0) { - zero_flag = 1; - } - else { - buf[i++] = xchar(((current_block_value & 0xf000) >> 12)); - zero_flag = 0; - if (i >= buflen) return NULL; - } - - if (((current_block_value & 0xf00) == 0) && (zero_flag)) { - /* do nothing */ - } - else { - buf[i++] = xchar(((current_block_value & 0xf00) >> 8)); - zero_flag = 0; - if (i >= buflen) return NULL; - } - - if (((current_block_value & 0xf0) == 0) && (zero_flag)) { - /* do nothing */ - } - else { - buf[i++] = xchar(((current_block_value & 0xf0) >> 4)); - zero_flag = 0; - if (i >= buflen) return NULL; - } - - buf[i++] = xchar((current_block_value & 0xf)); - if (i >= buflen) return NULL; - - zero_flag = 0; - } - } - - buf[i] = 0; - - return buf; -} -#endif /* LWIP_IPV6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_frag.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_frag.c deleted file mode 100644 index f33f4fb9a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/ip6_frag.c +++ /dev/null @@ -1,689 +0,0 @@ -/** - * @file - * - * IPv6 fragmentation and reassembly. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#include "lwip/opt.h" -#include "lwip/ip6_frag.h" -#include "lwip/ip6.h" -#include "lwip/icmp6.h" -#include "lwip/nd6.h" - -#include "lwip/pbuf.h" -#include "lwip/memp.h" -#include "lwip/stats.h" - -#include - -#if LWIP_IPV6 && LWIP_IPV6_REASS /* don't build if not configured for use in lwipopts.h */ - - -/** Setting this to 0, you can turn off checking the fragments for overlapping - * regions. The code gets a little smaller. Only use this if you know that - * overlapping won't occur on your network! */ -#ifndef IP_REASS_CHECK_OVERLAP -#define IP_REASS_CHECK_OVERLAP 1 -#endif /* IP_REASS_CHECK_OVERLAP */ - -/** Set to 0 to prevent freeing the oldest datagram when the reassembly buffer is - * full (IP_REASS_MAX_PBUFS pbufs are enqueued). The code gets a little smaller. - * Datagrams will be freed by timeout only. Especially useful when MEMP_NUM_REASSDATA - * is set to 1, so one datagram can be reassembled at a time, only. */ -#ifndef IP_REASS_FREE_OLDEST -#define IP_REASS_FREE_OLDEST 1 -#endif /* IP_REASS_FREE_OLDEST */ - -#define IP_REASS_FLAG_LASTFRAG 0x01 - -/** This is a helper struct which holds the starting - * offset and the ending offset of this fragment to - * easily chain the fragments. - * It has the same packing requirements as the IPv6 header, since it replaces - * the Fragment Header in memory in incoming fragments to keep - * track of the various fragments. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip6_reass_helper { - PACK_STRUCT_FIELD(struct pbuf *next_pbuf); - PACK_STRUCT_FIELD(u16_t start); - PACK_STRUCT_FIELD(u16_t end); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* static variables */ -static struct ip6_reassdata *reassdatagrams; -static u16_t ip6_reass_pbufcount; - -/* Forward declarations. */ -static void ip6_reass_free_complete_datagram(struct ip6_reassdata *ipr); -#if IP_REASS_FREE_OLDEST -static void ip6_reass_remove_oldest_datagram(struct ip6_reassdata *ipr, int pbufs_needed); -#endif /* IP_REASS_FREE_OLDEST */ - -void -ip6_reass_tmr(void) -{ - struct ip6_reassdata *r, *tmp; - - r = reassdatagrams; - while (r != NULL) { - /* Decrement the timer. Once it reaches 0, - * clean up the incomplete fragment assembly */ - if (r->timer > 0) { - r->timer--; - r = r->next; - } else { - /* reassembly timed out */ - tmp = r; - /* get the next pointer before freeing */ - r = r->next; - /* free the helper struct and all enqueued pbufs */ - ip6_reass_free_complete_datagram(tmp); - } - } -} - -/** - * Free a datagram (struct ip6_reassdata) and all its pbufs. - * Updates the total count of enqueued pbufs (ip6_reass_pbufcount), - * sends an ICMP time exceeded packet. - * - * @param ipr datagram to free - */ -static void -ip6_reass_free_complete_datagram(struct ip6_reassdata *ipr) -{ - struct ip6_reassdata *prev; - u16_t pbufs_freed = 0; - u8_t clen; - struct pbuf *p; - struct ip6_reass_helper *iprh; - -#if LWIP_ICMP6 - iprh = (struct ip6_reass_helper *)ipr->p->payload; - if (iprh->start == 0) { - /* The first fragment was received, send ICMP time exceeded. */ - /* First, de-queue the first pbuf from r->p. */ - p = ipr->p; - ipr->p = iprh->next_pbuf; - /* Then, move back to the original header (we are now pointing to Fragment header). */ - pbuf_header(p, (u8_t*)p->payload - (u8_t*)ipr->iphdr); - icmp6_time_exceeded(p, ICMP6_TE_FRAG); - clen = pbuf_clen(p); - LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - pbufs_freed += clen; - pbuf_free(p); - } -#endif /* LWIP_ICMP6 */ - - /* First, free all received pbufs. The individual pbufs need to be released - separately as they have not yet been chained */ - p = ipr->p; - while (p != NULL) { - struct pbuf *pcur; - iprh = (struct ip6_reass_helper *)p->payload; - pcur = p; - /* get the next pointer before freeing */ - p = iprh->next_pbuf; - clen = pbuf_clen(pcur); - LWIP_ASSERT("pbufs_freed + clen <= 0xffff", pbufs_freed + clen <= 0xffff); - pbufs_freed += clen; - pbuf_free(pcur); - } - - /* Then, unchain the struct ip6_reassdata from the list and free it. */ - if (ipr == reassdatagrams) { - reassdatagrams = ipr->next; - } else { - prev = reassdatagrams; - while (prev != NULL) { - if (prev->next == ipr) { - break; - } - prev = prev->next; - } - if (prev != NULL) { - prev->next = ipr->next; - } - } - memp_free(MEMP_IP6_REASSDATA, ipr); - - /* Finally, update number of pbufs in reassembly queue */ - LWIP_ASSERT("ip_reass_pbufcount >= clen", ip6_reass_pbufcount >= pbufs_freed); - ip6_reass_pbufcount -= pbufs_freed; -} - -#if IP_REASS_FREE_OLDEST -/** - * Free the oldest datagram to make room for enqueueing new fragments. - * The datagram ipr is not freed! - * - * @param ipr ip6_reassdata for the current fragment - * @param pbufs_needed number of pbufs needed to enqueue - * (used for freeing other datagrams if not enough space) - */ -static void -ip6_reass_remove_oldest_datagram(struct ip6_reassdata *ipr, int pbufs_needed) -{ - struct ip6_reassdata *r, *oldest; - - /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs, - * but don't free the current datagram! */ - do { - r = oldest = reassdatagrams; - while (r != NULL) { - if (r != ipr) { - if (r->timer <= oldest->timer) { - /* older than the previous oldest */ - oldest = r; - } - } - r = r->next; - } - if (oldest != NULL) { - ip6_reass_free_complete_datagram(oldest); - } - } while (((ip6_reass_pbufcount + pbufs_needed) > IP_REASS_MAX_PBUFS) && (reassdatagrams != NULL)); -} -#endif /* IP_REASS_FREE_OLDEST */ - -/** - * Reassembles incoming IPv6 fragments into an IPv6 datagram. - * - * @param p points to the IPv6 Fragment Header - * @param len the length of the payload (after Fragment Header) - * @return NULL if reassembly is incomplete, pbuf pointing to - * IPv6 Header if reassembly is complete - */ -struct pbuf * -ip6_reass(struct pbuf *p) -{ - struct ip6_reassdata *ipr, *ipr_prev; - struct ip6_reass_helper *iprh, *iprh_tmp, *iprh_prev=NULL; - struct ip6_frag_hdr * frag_hdr; - u16_t offset, len; - u8_t clen, valid = 1; - struct pbuf *q; - - IP6_FRAG_STATS_INC(ip6_frag.recv); - - frag_hdr = (struct ip6_frag_hdr *) p->payload; - - clen = pbuf_clen(p); - - offset = ntohs(frag_hdr->_fragment_offset); - - /* Calculate fragment length from IPv6 payload length. - * Adjust for headers before Fragment Header. - * And finally adjust by Fragment Header length. */ - len = ntohs(ip6_current_header()->_plen); - len -= ((u8_t*)p->payload - (u8_t*)ip6_current_header()) - IP6_HLEN; - len -= IP6_FRAG_HLEN; - - /* Look for the datagram the fragment belongs to in the current datagram queue, - * remembering the previous in the queue for later dequeueing. */ - for (ipr = reassdatagrams, ipr_prev = NULL; ipr != NULL; ipr = ipr->next) { - /* Check if the incoming fragment matches the one currently present - in the reassembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if ((frag_hdr->_identification == ipr->identification) && - ip6_addr_cmp(ip6_current_src_addr(), &(ipr->iphdr->src)) && - ip6_addr_cmp(ip6_current_dest_addr(), &(ipr->iphdr->dest))) { - IP6_FRAG_STATS_INC(ip6_frag.cachehit); - break; - } - ipr_prev = ipr; - } - - if (ipr == NULL) { - /* Enqueue a new datagram into the datagram queue */ - ipr = (struct ip6_reassdata *)memp_malloc(MEMP_IP6_REASSDATA); - if (ipr == NULL) { -#if IP_REASS_FREE_OLDEST - /* Make room and try again. */ - ip6_reass_remove_oldest_datagram(ipr, clen); - ipr = (struct ip6_reassdata *)memp_malloc(MEMP_IP6_REASSDATA); - if (ipr == NULL) -#endif /* IP_REASS_FREE_OLDEST */ - { - IP6_FRAG_STATS_INC(ip6_frag.memerr); - IP6_FRAG_STATS_INC(ip6_frag.drop); - goto nullreturn; - } - } - - memset(ipr, 0, sizeof(struct ip6_reassdata)); - ipr->timer = IP_REASS_MAXAGE; - - /* enqueue the new structure to the front of the list */ - ipr->next = reassdatagrams; - reassdatagrams = ipr; - - /* Use the current IPv6 header for src/dest address reference. - * Eventually, we will replace it when we get the first fragment - * (it might be this one, in any case, it is done later). */ - ipr->iphdr = (struct ip6_hdr *)ip6_current_header(); - - /* copy the fragmented packet id. */ - ipr->identification = frag_hdr->_identification; - - /* copy the nexth field */ - ipr->nexth = frag_hdr->_nexth; - } - - /* Check if we are allowed to enqueue more datagrams. */ - if ((ip6_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) { -#if IP_REASS_FREE_OLDEST - ip6_reass_remove_oldest_datagram(ipr, clen); - if ((ip6_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) -#endif /* IP_REASS_FREE_OLDEST */ - { - /* @todo: send ICMPv6 time exceeded here? */ - /* drop this pbuf */ - IP6_FRAG_STATS_INC(ip6_frag.memerr); - IP6_FRAG_STATS_INC(ip6_frag.drop); - goto nullreturn; - } - } - - /* Overwrite Fragment Header with our own helper struct. */ - iprh = (struct ip6_reass_helper *)p->payload; - iprh->next_pbuf = NULL; - iprh->start = (offset & IP6_FRAG_OFFSET_MASK); - iprh->end = (offset & IP6_FRAG_OFFSET_MASK) + len; - - /* find the right place to insert this pbuf */ - /* Iterate through until we either get to the end of the list (append), - * or we find on with a larger offset (insert). */ - for (q = ipr->p; q != NULL;) { - iprh_tmp = (struct ip6_reass_helper*)q->payload; - if (iprh->start < iprh_tmp->start) { -#if IP_REASS_CHECK_OVERLAP - if (iprh->end > iprh_tmp->start) { - /* fragment overlaps with following, throw away */ - IP6_FRAG_STATS_INC(ip6_frag.proterr); - IP6_FRAG_STATS_INC(ip6_frag.drop); - goto nullreturn; - } - if (iprh_prev != NULL) { - if (iprh->start < iprh_prev->end) { - /* fragment overlaps with previous, throw away */ - IP6_FRAG_STATS_INC(ip6_frag.proterr); - IP6_FRAG_STATS_INC(ip6_frag.drop); - goto nullreturn; - } - } -#endif /* IP_REASS_CHECK_OVERLAP */ - /* the new pbuf should be inserted before this */ - iprh->next_pbuf = q; - if (iprh_prev != NULL) { - /* not the fragment with the lowest offset */ - iprh_prev->next_pbuf = p; - } else { - /* fragment with the lowest offset */ - ipr->p = p; - } - break; - } else if(iprh->start == iprh_tmp->start) { - /* received the same datagram twice: no need to keep the datagram */ - IP6_FRAG_STATS_INC(ip6_frag.drop); - goto nullreturn; -#if IP_REASS_CHECK_OVERLAP - } else if(iprh->start < iprh_tmp->end) { - /* overlap: no need to keep the new datagram */ - IP6_FRAG_STATS_INC(ip6_frag.proterr); - IP6_FRAG_STATS_INC(ip6_frag.drop); - goto nullreturn; -#endif /* IP_REASS_CHECK_OVERLAP */ - } else { - /* Check if the fragments received so far have no gaps. */ - if (iprh_prev != NULL) { - if (iprh_prev->end != iprh_tmp->start) { - /* There is a fragment missing between the current - * and the previous fragment */ - valid = 0; - } - } - } - q = iprh_tmp->next_pbuf; - iprh_prev = iprh_tmp; - } - - /* If q is NULL, then we made it to the end of the list. Determine what to do now */ - if (q == NULL) { - if (iprh_prev != NULL) { - /* this is (for now), the fragment with the highest offset: - * chain it to the last fragment */ -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start); -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = p; - if (iprh_prev->end != iprh->start) { - valid = 0; - } - } else { -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("no previous fragment, this must be the first fragment!", - ipr->p == NULL); -#endif /* IP_REASS_CHECK_OVERLAP */ - /* this is the first fragment we ever received for this ip datagram */ - ipr->p = p; - } - } - - /* Track the current number of pbufs current 'in-flight', in order to limit - the number of fragments that may be enqueued at any one time */ - ip6_reass_pbufcount += clen; - - /* Remember IPv6 header if this is the first fragment. */ - if (iprh->start == 0) { - ipr->iphdr = (struct ip6_hdr *)ip6_current_header(); - } - - /* If this is the last fragment, calculate total packet length. */ - if ((offset & IP6_FRAG_MORE_FLAG) == 0) { - ipr->datagram_len = iprh->end; - } - - /* Additional validity tests: we have received first and last fragment. */ - iprh_tmp = (struct ip6_reass_helper*)ipr->p->payload; - if (iprh_tmp->start != 0) { - valid = 0; - } - if (ipr->datagram_len == 0) { - valid = 0; - } - - /* Final validity test: no gaps between current and last fragment. */ - iprh_prev = iprh; - q = iprh->next_pbuf; - while (q != NULL) { - iprh = (struct ip6_reass_helper*)q->payload; - if (iprh_prev->end != iprh->start) { - valid = 0; - break; - } - iprh_prev = iprh; - q = iprh->next_pbuf; - } - - if (valid) { - /* All fragments have been received */ - - /* chain together the pbufs contained within the ip6_reassdata list. */ - iprh = (struct ip6_reass_helper*) ipr->p->payload; - while(iprh != NULL) { - - if (iprh->next_pbuf != NULL) { - /* Save next helper struct (will be hidden in next step). */ - iprh_tmp = (struct ip6_reass_helper*) iprh->next_pbuf->payload; - - /* hide the fragment header for every succeding fragment */ - pbuf_header(iprh->next_pbuf, -IP6_FRAG_HLEN); - pbuf_cat(ipr->p, iprh->next_pbuf); - } - else { - iprh_tmp = NULL; - } - - iprh = iprh_tmp; - } - - /* Adjust datagram length by adding header lengths. */ - ipr->datagram_len += ((u8_t*)ipr->p->payload - (u8_t*)ipr->iphdr) - + IP6_FRAG_HLEN - - IP6_HLEN ; - - /* Set payload length in ip header. */ - ipr->iphdr->_plen = htons(ipr->datagram_len); - - /* Get the furst pbuf. */ - p = ipr->p; - - /* Restore Fragment Header in first pbuf. Mark as "single fragment" - * packet. Restore nexth. */ - frag_hdr = (struct ip6_frag_hdr *) p->payload; - frag_hdr->_nexth = ipr->nexth; - frag_hdr->reserved = 0; - frag_hdr->_fragment_offset = 0; - frag_hdr->_identification = 0; - - /* Move pbuf back to IPv6 header. */ - pbuf_header(p, (u8_t*)p->payload - (u8_t*)ipr->iphdr); - - /* release the sources allocate for the fragment queue entry */ - if (reassdatagrams == ipr) { - /* it was the first in the list */ - reassdatagrams = ipr->next; - } else { - /* it wasn't the first, so it must have a valid 'prev' */ - LWIP_ASSERT("sanity check linked list", ipr_prev != NULL); - ipr_prev->next = ipr->next; - } - memp_free(MEMP_IP6_REASSDATA, ipr); - - /* and adjust the number of pbufs currently queued for reassembly. */ - ip6_reass_pbufcount -= pbuf_clen(p); - - /* Return the pbuf chain */ - return p; - } - /* the datagram is not (yet?) reassembled completely */ - return NULL; - -nullreturn: - pbuf_free(p); - return NULL; -} - -#endif /* LWIP_IPV6 ^^ LWIP_IPV6_REASS */ - -#if LWIP_IPV6 && LWIP_IPV6_FRAG - -/** Allocate a new struct pbuf_custom_ref */ -static struct pbuf_custom_ref* -ip6_frag_alloc_pbuf_custom_ref(void) -{ - return (struct pbuf_custom_ref*)memp_malloc(MEMP_FRAG_PBUF); -} - -/** Free a struct pbuf_custom_ref */ -static void -ip6_frag_free_pbuf_custom_ref(struct pbuf_custom_ref* p) -{ - LWIP_ASSERT("p != NULL", p != NULL); - memp_free(MEMP_FRAG_PBUF, p); -} - -/** Free-callback function to free a 'struct pbuf_custom_ref', called by - * pbuf_free. */ -static void -ip6_frag_free_pbuf_custom(struct pbuf *p) -{ - struct pbuf_custom_ref *pcr = (struct pbuf_custom_ref*)p; - LWIP_ASSERT("pcr != NULL", pcr != NULL); - LWIP_ASSERT("pcr == p", (void*)pcr == (void*)p); - if (pcr->original != NULL) { - pbuf_free(pcr->original); - } - ip6_frag_free_pbuf_custom_ref(pcr); -} - -/** - * Fragment an IPv6 datagram if too large for the netif or path MTU. - * - * Chop the datagram in MTU sized chunks and send them in order - * by pointing PBUF_REFs into p - * - * @param p ipv6 packet to send - * @param netif the netif on which to send - * @param dest destination ipv6 address to which to send - * - * @return ERR_OK if sent successfully, err_t otherwise - */ -err_t -ip6_frag(struct pbuf *p, struct netif *netif, ip6_addr_t *dest) -{ - struct ip6_hdr *original_ip6hdr; - struct ip6_hdr *ip6hdr; - struct ip6_frag_hdr * frag_hdr; - struct pbuf *rambuf; - struct pbuf *newpbuf; - static u32_t identification; - u16_t nfb; - u16_t left, cop; - u16_t mtu; - u16_t fragment_offset = 0; - u16_t last; - u16_t poff = IP6_HLEN; - u16_t newpbuflen = 0; - u16_t left_to_copy; - - identification++; - - original_ip6hdr = (struct ip6_hdr *)p->payload; - - mtu = nd6_get_destination_mtu(dest, netif); - - /* TODO we assume there are no options in the unfragmentable part (IPv6 header). */ - left = p->tot_len - IP6_HLEN; - - nfb = (mtu - (IP6_HLEN + IP6_FRAG_HLEN)) & IP6_FRAG_OFFSET_MASK; - - while (left) { - last = (left <= nfb); - - /* Fill this fragment */ - cop = last ? left : nfb; - - /* When not using a static buffer, create a chain of pbufs. - * The first will be a PBUF_RAM holding the link, IPv6, and Fragment header. - * The rest will be PBUF_REFs mirroring the pbuf chain to be fragged, - * but limited to the size of an mtu. - */ - rambuf = pbuf_alloc(PBUF_LINK, IP6_HLEN + IP6_FRAG_HLEN, PBUF_RAM); - if (rambuf == NULL) { - IP6_FRAG_STATS_INC(ip6_frag.memerr); - return ERR_MEM; - } - LWIP_ASSERT("this needs a pbuf in one piece!", - (p->len >= (IP6_HLEN + IP6_FRAG_HLEN))); - SMEMCPY(rambuf->payload, original_ip6hdr, IP6_HLEN); - ip6hdr = (struct ip6_hdr *)rambuf->payload; - frag_hdr = (struct ip6_frag_hdr *)((u8_t*)rambuf->payload + IP6_HLEN); - - /* Can just adjust p directly for needed offset. */ - p->payload = (u8_t *)p->payload + poff; - p->len -= poff; - p->tot_len -= poff; - - left_to_copy = cop; - while (left_to_copy) { - struct pbuf_custom_ref *pcr; - newpbuflen = (left_to_copy < p->len) ? left_to_copy : p->len; - /* Is this pbuf already empty? */ - if (!newpbuflen) { - p = p->next; - continue; - } - pcr = ip6_frag_alloc_pbuf_custom_ref(); - if (pcr == NULL) { - pbuf_free(rambuf); - IP6_FRAG_STATS_INC(ip6_frag.memerr); - return ERR_MEM; - } - /* Mirror this pbuf, although we might not need all of it. */ - newpbuf = pbuf_alloced_custom(PBUF_RAW, newpbuflen, PBUF_REF, &pcr->pc, p->payload, newpbuflen); - if (newpbuf == NULL) { - ip6_frag_free_pbuf_custom_ref(pcr); - pbuf_free(rambuf); - IP6_FRAG_STATS_INC(ip6_frag.memerr); - return ERR_MEM; - } - pbuf_ref(p); - pcr->original = p; - pcr->pc.custom_free_function = ip6_frag_free_pbuf_custom; - - /* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain - * so that it is removed when pbuf_dechain is later called on rambuf. - */ - pbuf_cat(rambuf, newpbuf); - left_to_copy -= newpbuflen; - if (left_to_copy) { - p = p->next; - } - } - poff = newpbuflen; - - /* Set headers */ - frag_hdr->_nexth = original_ip6hdr->_nexth; - frag_hdr->reserved = 0; - frag_hdr->_fragment_offset = htons((fragment_offset & IP6_FRAG_OFFSET_MASK) | (last ? 0 : IP6_FRAG_MORE_FLAG)); - frag_hdr->_identification = htonl(identification); - - IP6H_NEXTH_SET(ip6hdr, IP6_NEXTH_FRAGMENT); - IP6H_PLEN_SET(ip6hdr, cop + IP6_FRAG_HLEN); - - /* No need for separate header pbuf - we allowed room for it in rambuf - * when allocated. - */ - IP6_FRAG_STATS_INC(ip6_frag.xmit); - netif->output_ip6(netif, rambuf, dest); - - /* Unfortunately we can't reuse rambuf - the hardware may still be - * using the buffer. Instead we free it (and the ensuing chain) and - * recreate it next time round the loop. If we're lucky the hardware - * will have already sent the packet, the free will really free, and - * there will be zero memory penalty. - */ - - pbuf_free(rambuf); - left -= cop; - fragment_offset += cop; - } - return ERR_OK; -} - -#endif /* LWIP_IPV6 && LWIP_IPV6_FRAG */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/mld6.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/mld6.c deleted file mode 100644 index 9db25babd..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/mld6.c +++ /dev/null @@ -1,578 +0,0 @@ -/** - * @file - * - * Multicast listener discovery for IPv6. Aims to be compliant with RFC 2710. - * No support for MLDv2. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -/* Based on igmp.c implementation of igmp v2 protocol */ - -#include "lwip/opt.h" - -#if LWIP_IPV6 && LWIP_IPV6_MLD /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/mld6.h" -#include "lwip/icmp6.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/inet_chksum.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/memp.h" -#include "lwip/stats.h" - -#include - - -/* - * MLD constants - */ -#define MLD6_HL 1 -#define MLD6_JOIN_DELAYING_MEMBER_TMR_MS (500) - -#define MLD6_GROUP_NON_MEMBER 0 -#define MLD6_GROUP_DELAYING_MEMBER 1 -#define MLD6_GROUP_IDLE_MEMBER 2 - - -/* The list of joined groups. */ -static struct mld_group* mld_group_list; - - -/* Forward declarations. */ -static struct mld_group * mld6_new_group(struct netif *ifp, ip6_addr_t *addr); -static err_t mld6_free_group(struct mld_group *group); -static void mld6_delayed_report(struct mld_group *group, u16_t maxresp); -static void mld6_send(struct mld_group *group, u8_t type); - - -/** - * Stop MLD processing on interface - * - * @param netif network interface on which stop MLD processing - */ -err_t -mld6_stop(struct netif *netif) -{ - struct mld_group *group = mld_group_list; - struct mld_group *prev = NULL; - struct mld_group *next; - - /* look for groups joined on this interface further down the list */ - while (group != NULL) { - next = group->next; - /* is it a group joined on this interface? */ - if (group->netif == netif) { - /* is it the first group of the list? */ - if (group == mld_group_list) { - mld_group_list = next; - } - /* is there a "previous" group defined? */ - if (prev != NULL) { - prev->next = next; - } - /* disable the group at the MAC level */ - if (netif->mld_mac_filter != NULL) { - netif->mld_mac_filter(netif, &(group->group_address), MLD6_DEL_MAC_FILTER); - } - /* free group */ - memp_free(MEMP_MLD6_GROUP, group); - } else { - /* change the "previous" */ - prev = group; - } - /* move to "next" */ - group = next; - } - return ERR_OK; -} - -/** - * Report MLD memberships for this interface - * - * @param netif network interface on which report MLD memberships - */ -void -mld6_report_groups(struct netif *netif) -{ - struct mld_group *group = mld_group_list; - - while (group != NULL) { - if (group->netif == netif) { - mld6_delayed_report(group, MLD6_JOIN_DELAYING_MEMBER_TMR_MS); - } - group = group->next; - } -} - -/** - * Search for a group that is joined on a netif - * - * @param ifp the network interface for which to look - * @param addr the group ipv6 address to search for - * @return a struct mld_group* if the group has been found, - * NULL if the group wasn't found. - */ -struct mld_group * -mld6_lookfor_group(struct netif *ifp, ip6_addr_t *addr) -{ - struct mld_group *group = mld_group_list; - - while (group != NULL) { - if ((group->netif == ifp) && (ip6_addr_cmp(&(group->group_address), addr))) { - return group; - } - group = group->next; - } - - return NULL; -} - - -/** - * create a new group - * - * @param ifp the network interface for which to create - * @param addr the new group ipv6 - * @return a struct mld_group*, - * NULL on memory error. - */ -static struct mld_group * -mld6_new_group(struct netif *ifp, ip6_addr_t *addr) -{ - struct mld_group *group; - - group = (struct mld_group *)memp_malloc(MEMP_MLD6_GROUP); - if (group != NULL) { - group->netif = ifp; - ip6_addr_set(&(group->group_address), addr); - group->timer = 0; /* Not running */ - group->group_state = MLD6_GROUP_IDLE_MEMBER; - group->last_reporter_flag = 0; - group->use = 0; - group->next = mld_group_list; - - mld_group_list = group; - } - - return group; -} - -/** - * Remove a group in the mld_group_list and free - * - * @param group the group to remove - * @return ERR_OK if group was removed from the list, an err_t otherwise - */ -static err_t -mld6_free_group(struct mld_group *group) -{ - err_t err = ERR_OK; - - /* Is it the first group? */ - if (mld_group_list == group) { - mld_group_list = group->next; - } else { - /* look for group further down the list */ - struct mld_group *tmpGroup; - for (tmpGroup = mld_group_list; tmpGroup != NULL; tmpGroup = tmpGroup->next) { - if (tmpGroup->next == group) { - tmpGroup->next = group->next; - break; - } - } - /* Group not find group */ - if (tmpGroup == NULL) - err = ERR_ARG; - } - /* free group */ - memp_free(MEMP_MLD6_GROUP, group); - - return err; -} - - -/** - * Process an input MLD message. Called by icmp6_input. - * - * @param p the mld packet, p->payload pointing to the icmpv6 header - * @param inp the netif on which this packet was received - */ -void -mld6_input(struct pbuf *p, struct netif *inp) -{ - struct mld_header * mld_hdr; - struct mld_group* group; - - MLD6_STATS_INC(mld6.recv); - - /* Check that mld header fits in packet. */ - if (p->len < sizeof(struct mld_header)) { - /* TODO debug message */ - pbuf_free(p); - MLD6_STATS_INC(mld6.lenerr); - MLD6_STATS_INC(mld6.drop); - return; - } - - mld_hdr = (struct mld_header *)p->payload; - - switch (mld_hdr->type) { - case ICMP6_TYPE_MLQ: /* Multicast listener query. */ - { - /* Is it a general query? */ - if (ip6_addr_isallnodes_linklocal(ip6_current_dest_addr()) && - ip6_addr_isany(&(mld_hdr->multicast_address))) { - MLD6_STATS_INC(mld6.rx_general); - /* Report all groups, except all nodes group, and if-local groups. */ - group = mld_group_list; - while (group != NULL) { - if ((group->netif == inp) && - (!(ip6_addr_ismulticast_iflocal(&(group->group_address)))) && - (!(ip6_addr_isallnodes_linklocal(&(group->group_address))))) { - mld6_delayed_report(group, mld_hdr->max_resp_delay); - } - group = group->next; - } - } - else { - /* Have we joined this group? - * We use IP6 destination address to have a memory aligned copy. - * mld_hdr->multicast_address should be the same. */ - MLD6_STATS_INC(mld6.rx_group); - group = mld6_lookfor_group(inp, ip6_current_dest_addr()); - if (group != NULL) { - /* Schedule a report. */ - mld6_delayed_report(group, mld_hdr->max_resp_delay); - } - } - break; /* ICMP6_TYPE_MLQ */ - } - case ICMP6_TYPE_MLR: /* Multicast listener report. */ - { - /* Have we joined this group? - * We use IP6 destination address to have a memory aligned copy. - * mld_hdr->multicast_address should be the same. */ - MLD6_STATS_INC(mld6.rx_report); - group = mld6_lookfor_group(inp, ip6_current_dest_addr()); - if (group != NULL) { - /* If we are waiting to report, cancel it. */ - if (group->group_state == MLD6_GROUP_DELAYING_MEMBER) { - group->timer = 0; /* stopped */ - group->group_state = MLD6_GROUP_IDLE_MEMBER; - group->last_reporter_flag = 0; - } - } - break; /* ICMP6_TYPE_MLR */ - } - case ICMP6_TYPE_MLD: /* Multicast listener done. */ - { - /* Do nothing, router will query us. */ - break; /* ICMP6_TYPE_MLD */ - } - default: - MLD6_STATS_INC(mld6.proterr); - MLD6_STATS_INC(mld6.drop); - break; - } - - pbuf_free(p); -} - -/** - * Join a group on a network interface. - * - * @param srcaddr ipv6 address of the network interface which should - * join a new group. If IP6_ADDR_ANY, join on all netifs - * @param groupaddr the ipv6 address of the group to join - * @return ERR_OK if group was joined on the netif(s), an err_t otherwise - */ -err_t -mld6_joingroup(ip6_addr_t *srcaddr, ip6_addr_t *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct mld_group *group; - struct netif *netif; - u8_t match; - u8_t i; - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we join this interface ? */ - match = 0; - if (ip6_addr_isany(srcaddr)) { - match = 1; - } - else { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_cmp(srcaddr, netif_ip6_addr(netif, i))) { - match = 1; - break; - } - } - } - if (match) { - /* find group or create a new one if not found */ - group = mld6_lookfor_group(netif, groupaddr); - - if (group == NULL) { - /* Joining a new group. Create a new group entry. */ - group = mld6_new_group(netif, groupaddr); - if (group == NULL) { - return ERR_MEM; - } - - /* Activate this address on the MAC layer. */ - if (netif->mld_mac_filter != NULL) { - netif->mld_mac_filter(netif, groupaddr, MLD6_ADD_MAC_FILTER); - } - - /* Report our membership. */ - MLD6_STATS_INC(mld6.tx_report); - mld6_send(group, ICMP6_TYPE_MLR); - mld6_delayed_report(group, MLD6_JOIN_DELAYING_MEMBER_TMR_MS); - } - - /* Increment group use */ - group->use++; - err = ERR_OK; - } - - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - -/** - * Leave a group on a network interface. - * - * @param srcaddr ipv6 address of the network interface which should - * leave the group. If IP6_ISANY, leave on all netifs - * @param groupaddr the ipv6 address of the group to leave - * @return ERR_OK if group was left on the netif(s), an err_t otherwise - */ -err_t -mld6_leavegroup(ip6_addr_t *srcaddr, ip6_addr_t *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct mld_group *group; - struct netif *netif; - u8_t match; - u8_t i; - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we leave this interface ? */ - match = 0; - if (ip6_addr_isany(srcaddr)) { - match = 1; - } - else { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_cmp(srcaddr, netif_ip6_addr(netif, i))) { - match = 1; - break; - } - } - } - if (match) { - /* find group */ - group = mld6_lookfor_group(netif, groupaddr); - - if (group != NULL) { - /* Leave if there is no other use of the group */ - if (group->use <= 1) { - /* If we are the last reporter for this group */ - if (group->last_reporter_flag) { - MLD6_STATS_INC(mld6.tx_leave); - mld6_send(group, ICMP6_TYPE_MLD); - } - - /* Disable the group at the MAC level */ - if (netif->mld_mac_filter != NULL) { - netif->mld_mac_filter(netif, groupaddr, MLD6_DEL_MAC_FILTER); - } - - /* Free the group */ - mld6_free_group(group); - } else { - /* Decrement group use */ - group->use--; - } - /* Leave on this interface */ - err = ERR_OK; - } - } - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - - -/** - * Periodic timer for mld processing. Must be called every - * MLD6_TMR_INTERVAL milliseconds (100). - * - * When a delaying member expires, a membership report is sent. - */ -void -mld6_tmr(void) -{ - struct mld_group *group = mld_group_list; - - while (group != NULL) { - if (group->timer > 0) { - group->timer--; - if (group->timer == 0) { - /* If the state is MLD6_GROUP_DELAYING_MEMBER then we send a report for this group */ - if (group->group_state == MLD6_GROUP_DELAYING_MEMBER) { - MLD6_STATS_INC(mld6.tx_report); - mld6_send(group, ICMP6_TYPE_MLR); - group->group_state = MLD6_GROUP_IDLE_MEMBER; - } - } - } - group = group->next; - } -} - -/** - * Schedule a delayed membership report for a group - * - * @param group the mld_group for which "delaying" membership report - * should be sent - * @param maxresp the max resp delay provided in the query - */ -static void -mld6_delayed_report(struct mld_group *group, u16_t maxresp) -{ - /* Convert maxresp from milliseconds to tmr ticks */ - maxresp = maxresp / MLD6_TMR_INTERVAL; - if (maxresp == 0) { - maxresp = 1; - } - - /* Randomize maxresp. */ - maxresp = (LWIP_RAND() % (maxresp - 1)) + 1; - - /* Apply timer value if no report has been scheduled already. */ - if ((group->group_state == MLD6_GROUP_IDLE_MEMBER) || - ((group->group_state == MLD6_GROUP_DELAYING_MEMBER) && - ((group->timer == 0) || (maxresp < group->timer)))) { - group->timer = maxresp; - group->group_state = MLD6_GROUP_DELAYING_MEMBER; - } -} - -/** - * Send a MLD message (report or done). - * - * An IPv6 hop-by-hop options header with a router alert option - * is prepended. - * - * @param group the group to report or quit - * @param type ICMP6_TYPE_MLR (report) or ICMP6_TYPE_MLD (done) - */ -static void -mld6_send(struct mld_group *group, u8_t type) -{ - struct mld_header * mld_hdr; - struct pbuf * p; - ip6_addr_t * src_addr; - - /* Allocate a packet. Size is MLD header + IPv6 Hop-by-hop options header. */ - p = pbuf_alloc(PBUF_IP, sizeof(struct mld_header) + sizeof(struct ip6_hbh_hdr), PBUF_RAM); - if ((p == NULL) || (p->len < (sizeof(struct mld_header) + sizeof(struct ip6_hbh_hdr)))) { - /* We couldn't allocate a suitable pbuf. drop it. */ - if (p != NULL) { - pbuf_free(p); - } - MLD6_STATS_INC(mld6.memerr); - return; - } - - /* Move to make room for Hop-by-hop options header. */ - if (pbuf_header(p, -IP6_HBH_HLEN)) { - pbuf_free(p); - MLD6_STATS_INC(mld6.lenerr); - return; - } - - /* Select our source address. */ - if (!ip6_addr_isvalid(netif_ip6_addr_state(group->netif, 0))) { - /* This is a special case, when we are performing duplicate address detection. - * We must join the multicast group, but we don't have a valid address yet. */ - src_addr = IP6_ADDR_ANY; - } else { - /* Use link-local address as source address. */ - src_addr = netif_ip6_addr(group->netif, 0); - } - - /* MLD message header pointer. */ - mld_hdr = (struct mld_header *)p->payload; - - /* Set fields. */ - mld_hdr->type = type; - mld_hdr->code = 0; - mld_hdr->chksum = 0; - mld_hdr->max_resp_delay = 0; - mld_hdr->reserved = 0; - ip6_addr_set(&(mld_hdr->multicast_address), &(group->group_address)); - - mld_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len, - src_addr, &(group->group_address)); - - /* Add hop-by-hop headers options: router alert with MLD value. */ - ip6_options_add_hbh_ra(p, IP6_NEXTH_ICMP6, IP6_ROUTER_ALERT_VALUE_MLD); - - /* Send the packet out. */ - MLD6_STATS_INC(mld6.xmit); - ip6_output_if(p, (ip6_addr_isany(src_addr)) ? NULL : src_addr, &(group->group_address), - MLD6_HL, 0, IP6_NEXTH_HOPBYHOP, group->netif); - pbuf_free(p); -} - - - -#endif /* LWIP_IPV6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/nd6.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/nd6.c deleted file mode 100644 index c7402c625..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/ipv6/nd6.c +++ /dev/null @@ -1,1732 +0,0 @@ -/** - * @file - * - * Neighbor discovery and stateless address autoconfiguration for IPv6. - * Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862 - * (Address autoconfiguration). - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#include "lwip/opt.h" - -#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/nd6.h" -#include "lwip/pbuf.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp6.h" -#include "lwip/mld6.h" -#include "lwip/stats.h" - -#include - - -/* Router tables. */ -struct nd6_neighbor_cache_entry neighbor_cache[LWIP_ND6_NUM_NEIGHBORS]; -struct nd6_destination_cache_entry destination_cache[LWIP_ND6_NUM_DESTINATIONS]; -struct nd6_prefix_list_entry prefix_list[LWIP_ND6_NUM_PREFIXES]; -struct nd6_router_list_entry default_router_list[LWIP_ND6_NUM_ROUTERS]; - -/* Default values, can be updated by a RA message. */ -u32_t reachable_time = LWIP_ND6_REACHABLE_TIME; -u32_t retrans_timer = LWIP_ND6_RETRANS_TIMER; /* TODO implement this value in timer */ - -/* Index for cache entries. */ -static u8_t nd6_cached_neighbor_index; -static u8_t nd6_cached_destination_index; - -/* Multicast address holder. */ -static ip6_addr_t multicast_address; - -/* Forward declarations. */ -static s8_t nd6_find_neighbor_cache_entry(ip6_addr_t * ip6addr); -static s8_t nd6_new_neighbor_cache_entry(void); -static void nd6_free_neighbor_cache_entry(s8_t i); -static s8_t nd6_find_destination_cache_entry(ip6_addr_t * ip6addr); -static s8_t nd6_new_destination_cache_entry(void); -static s8_t nd6_is_prefix_in_netif(ip6_addr_t * ip6addr, struct netif * netif); -static s8_t nd6_get_router(ip6_addr_t * router_addr, struct netif * netif); -static s8_t nd6_new_router(ip6_addr_t * router_addr, struct netif * netif); -static s8_t nd6_get_onlink_prefix(ip6_addr_t * prefix, struct netif * netif); -static s8_t nd6_new_onlink_prefix(ip6_addr_t * prefix, struct netif * netif); - -#define ND6_SEND_FLAG_MULTICAST_DEST 0x01 -#define ND6_SEND_FLAG_ALLNODES_DEST 0x02 -static void nd6_send_ns(struct netif * netif, ip6_addr_t * target_addr, u8_t flags); -static void nd6_send_na(struct netif * netif, ip6_addr_t * target_addr, u8_t flags); -#if LWIP_IPV6_SEND_ROUTER_SOLICIT -static void nd6_send_rs(struct netif * netif); -#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ - -#if LWIP_ND6_QUEUEING -static void nd6_free_q(struct nd6_q_entry *q); -static void nd6_send_q(s8_t i); -#endif /* LWIP_ND6_QUEUEING */ - - -/** - * Process an incoming neighbor discovery message - * - * @param p the nd packet, p->payload pointing to the icmpv6 header - * @param inp the netif on which this packet was received - */ -void -nd6_input(struct pbuf *p, struct netif *inp) -{ - u8_t msg_type; - s8_t i; - - ND6_STATS_INC(nd6.recv); - - msg_type = *((u8_t *)p->payload); - switch (msg_type) { - case ICMP6_TYPE_NA: /* Neighbor Advertisement. */ - { - struct na_header * na_hdr; - struct lladdr_option * lladdr_opt; - - /* Check that na header and link-layer address option fit in packet. */ - if (p->len < (sizeof(struct na_header) + sizeof(struct lladdr_option))) { - /* TODO debug message */ - pbuf_free(p); - ND6_STATS_INC(nd6.lenerr); - ND6_STATS_INC(nd6.drop); - return; - } - - na_hdr = (struct na_header *)p->payload; - lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct na_header)); - - /* Unsolicited NA?*/ - if (ip6_addr_ismulticast(ip6_current_dest_addr())) { - /* This is an unsolicited NA. - * link-layer changed? - * part of DAD mechanism? */ - - /* Override ip6_current_dest_addr() so that we have an aligned copy. */ - ip6_addr_set(ip6_current_dest_addr(), &(na_hdr->target_address)); - -#if LWIP_IPV6_DUP_DETECT_ATTEMPTS - /* If the target address matches this netif, it is a DAD response. */ - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_cmp(ip6_current_dest_addr(), netif_ip6_addr(inp, i))) { - /* We are using a duplicate address. */ - netif_ip6_addr_set_state(inp, i, IP6_ADDR_INVALID); - -#if LWIP_IPV6_MLD - /* Leave solicited node multicast group. */ - ip6_addr_set_solicitednode(&multicast_address, netif_ip6_addr(inp, i)->addr[3]); - mld6_leavegroup(netif_ip6_addr(inp, i), &multicast_address); -#endif /* LWIP_IPV6_MLD */ - - - - -#if LWIP_IPV6_AUTOCONFIG - /* Check to see if this address was autoconfigured. */ - if (!ip6_addr_islinklocal(ip6_current_dest_addr())) { - i = nd6_get_onlink_prefix(ip6_current_dest_addr(), inp); - if (i >= 0) { - /* Mark this prefix as duplicate, so that we don't use it - * to generate this address again. */ - prefix_list[i].flags |= ND6_PREFIX_AUTOCONFIG_ADDRESS_DUPLICATE; - } - } -#endif /* LWIP_IPV6_AUTOCONFIG */ - - pbuf_free(p); - return; - } - } -#endif /* LWIP_IPV6_DUP_DETECT_ATTEMPTS */ - - /* This is an unsolicited NA, most likely there was a LLADDR change. */ - i = nd6_find_neighbor_cache_entry(ip6_current_dest_addr()); - if (i >= 0) { - if (na_hdr->flags & ND6_FLAG_OVERRIDE) { - MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len); - } - } - } - else { - /* This is a solicited NA. - * neighbor address resolution response? - * neighbor unreachability detection response? */ - - /* Override ip6_current_dest_addr() so that we have an aligned copy. */ - ip6_addr_set(ip6_current_dest_addr(), &(na_hdr->target_address)); - - /* Find the cache entry corresponding to this na. */ - i = nd6_find_neighbor_cache_entry(ip6_current_dest_addr()); - if (i < 0) { - /* We no longer care about this target address. drop it. */ - pbuf_free(p); - return; - } - - /* Update cache entry. */ - neighbor_cache[i].netif = inp; - neighbor_cache[i].counter.reachable_time = reachable_time; - if ((na_hdr->flags & ND6_FLAG_OVERRIDE) || - (neighbor_cache[i].state == ND6_INCOMPLETE)) { - MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len); - } - neighbor_cache[i].state = ND6_REACHABLE; - -#if LWIP_ND6_QUEUEING - /* Send queued packets, if any. */ - if (neighbor_cache[i].q != NULL) { - nd6_send_q(i); - } -#endif /* LWIP_ND6_QUEUEING */ - } - - break; /* ICMP6_TYPE_NA */ - } - case ICMP6_TYPE_NS: /* Neighbor solicitation. */ - { - struct ns_header * ns_hdr; - struct lladdr_option * lladdr_opt; - u8_t accepted; - - /* Check that ns header fits in packet. */ - if (p->len < sizeof(struct ns_header)) { - /* TODO debug message */ - pbuf_free(p); - ND6_STATS_INC(nd6.lenerr); - ND6_STATS_INC(nd6.drop); - return; - } - - ns_hdr = (struct ns_header *)p->payload; - - /* Check if there is a link-layer address provided. Only point to it if in this buffer. */ - lladdr_opt = NULL; - if (p->len >= (sizeof(struct ns_header) + sizeof(struct lladdr_option))) { - lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct ns_header)); - } - - /* Check if the target address is configured on the receiving netif. */ - accepted = 0; - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) { - if ((ip6_addr_isvalid(netif_ip6_addr_state(inp, i)) || - (ip6_addr_istentative(netif_ip6_addr_state(inp, i)) && - ip6_addr_isany(ip6_current_src_addr()))) && - ip6_addr_cmp(&(ns_hdr->target_address), netif_ip6_addr(inp, i))) { - accepted = 1; - break; - } - } - - /* NS not for us? */ - if (!accepted) { - pbuf_free(p); - return; - } - - /* Check for ANY address in src (DAD algorithm). */ - if (ip6_addr_isany(ip6_current_src_addr())) { - /* Sender is validating this address. */ - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) { - if (ip6_addr_cmp(&(ns_hdr->target_address), netif_ip6_addr(inp, i))) { - /* Send a NA back so that the sender does not use this address. */ - nd6_send_na(inp, netif_ip6_addr(inp, i), ND6_FLAG_OVERRIDE | ND6_SEND_FLAG_ALLNODES_DEST); - if (ip6_addr_istentative(netif_ip6_addr_state(inp, i))) { - /* We shouldn't use this address either. */ - netif_ip6_addr_set_state(inp, i, IP6_ADDR_INVALID); - } - } - } - } - else { - /* Sender is trying to resolve our address. */ - /* Verify that they included their own link-layer address. */ - if (lladdr_opt == NULL) { - /* Not a valid message. */ - pbuf_free(p); - ND6_STATS_INC(nd6.proterr); - ND6_STATS_INC(nd6.drop); - return; - } - - i = nd6_find_neighbor_cache_entry(ip6_current_src_addr()); - if ( i>= 0) { - /* We already have a record for the solicitor. */ - if (neighbor_cache[i].state == ND6_INCOMPLETE) { - neighbor_cache[i].netif = inp; - MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len); - - /* Delay probe in case we get confirmation of reachability from upper layer (TCP). */ - neighbor_cache[i].state = ND6_DELAY; - neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME; - } - } - else - { - /* Add their IPv6 address and link-layer address to neighbor cache. - * We will need it at least to send a unicast NA message, but most - * likely we will also be communicating with this node soon. */ - i = nd6_new_neighbor_cache_entry(); - if (i < 0) { - /* We couldn't assign a cache entry for this neighbor. - * we won't be able to reply. drop it. */ - pbuf_free(p); - ND6_STATS_INC(nd6.memerr); - return; - } - neighbor_cache[i].netif = inp; - MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len); - ip6_addr_set(&(neighbor_cache[i].next_hop_address), ip6_current_src_addr()); - - /* Receiving a message does not prove reachability: only in one direction. - * Delay probe in case we get confirmation of reachability from upper layer (TCP). */ - neighbor_cache[i].state = ND6_DELAY; - neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME; - } - - /* Override ip6_current_dest_addr() so that we have an aligned copy. */ - ip6_addr_set(ip6_current_dest_addr(), &(ns_hdr->target_address)); - - /* Send back a NA for us. Allocate the reply pbuf. */ - nd6_send_na(inp, ip6_current_dest_addr(), ND6_FLAG_SOLICITED | ND6_FLAG_OVERRIDE); - } - - break; /* ICMP6_TYPE_NS */ - } - case ICMP6_TYPE_RA: /* Router Advertisement. */ - { - struct ra_header * ra_hdr; - u8_t * buffer; /* Used to copy options. */ - u16_t offset; - - /* Check that RA header fits in packet. */ - if (p->len < sizeof(struct ra_header)) { - /* TODO debug message */ - pbuf_free(p); - ND6_STATS_INC(nd6.lenerr); - ND6_STATS_INC(nd6.drop); - return; - } - - ra_hdr = (struct ra_header *)p->payload; - - /* If we are sending RS messages, stop. */ -#if LWIP_IPV6_SEND_ROUTER_SOLICIT - if (inp->rs_count > 0) { - inp->rs_count = 0; - } -#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ - - /* Get the matching default router entry. */ - i = nd6_get_router(ip6_current_src_addr(), inp); - if (i < 0) { - /* Create a new router entry. */ - i = nd6_new_router(ip6_current_src_addr(), inp); - } - - if (i < 0) { - /* Could not create a new router entry. */ - pbuf_free(p); - ND6_STATS_INC(nd6.memerr); - return; - } - - /* Re-set invalidation timer. */ - default_router_list[i].invalidation_timer = ra_hdr->router_lifetime; - - /* Re-set default timer values. */ -#if LWIP_ND6_ALLOW_RA_UPDATES - if (ra_hdr->retrans_timer > 0) { - retrans_timer = ra_hdr->retrans_timer; - } - if (ra_hdr->reachable_time > 0) { - reachable_time = ra_hdr->reachable_time; - } -#endif /* LWIP_ND6_ALLOW_RA_UPDATES */ - - /* TODO set default hop limit... */ - /* ra_hdr->current_hop_limit;*/ - - /* Update flags in local entry (incl. preference). */ - default_router_list[i].flags = ra_hdr->flags; - - /* Offset to options. */ - offset = sizeof(struct ra_header); - - /* Allocate buffer to copy options (so we can traverse pbufs). */ - buffer = (u8_t *)mem_malloc(sizeof(struct prefix_option)); /* Size of a prefix option, biggest option. */ - if (buffer == NULL) { - pbuf_free(p); - ND6_STATS_INC(nd6.memerr); - return; - } - - /* Process each option. */ - while ((p->tot_len - offset) > 0) { - pbuf_copy_partial(p, buffer, sizeof(struct prefix_option), offset); - switch (buffer[0]) { - case ND6_OPTION_TYPE_SOURCE_LLADDR: - { - struct lladdr_option * lladdr_opt; - lladdr_opt = (struct lladdr_option *)buffer; - if ((default_router_list[i].neighbor_entry != NULL) && - (default_router_list[i].neighbor_entry->state == ND6_INCOMPLETE)) { - SMEMCPY(default_router_list[i].neighbor_entry->lladdr, lladdr_opt->addr, inp->hwaddr_len); - default_router_list[i].neighbor_entry->state = ND6_REACHABLE; - default_router_list[i].neighbor_entry->counter.reachable_time = reachable_time; - } - break; - } - case ND6_OPTION_TYPE_MTU: - { - struct mtu_option * mtu_opt; - mtu_opt = (struct mtu_option *)buffer; - if (mtu_opt->mtu >= 1280) { -#if LWIP_ND6_ALLOW_RA_UPDATES - inp->mtu = mtu_opt->mtu; -#endif /* LWIP_ND6_ALLOW_RA_UPDATES */ - } - break; - } - case ND6_OPTION_TYPE_PREFIX_INFO: - { - struct prefix_option * prefix_opt; - prefix_opt = (struct prefix_option *)buffer; - - if (prefix_opt->flags & ND6_PREFIX_FLAG_ON_LINK) { - /* Add to on-link prefix list. */ - - /* Get a memory-aligned copy of the prefix. */ - ip6_addr_set(ip6_current_dest_addr(), &(prefix_opt->prefix)); - - /* find cache entry for this prefix. */ - i = nd6_get_onlink_prefix(ip6_current_dest_addr(), inp); - if (i < 0) { - /* Create a new cache entry. */ - i = nd6_new_onlink_prefix(ip6_current_dest_addr(), inp); - } - if (i >= 0) { - prefix_list[i].invalidation_timer = prefix_opt->valid_lifetime; - -#if LWIP_IPV6_AUTOCONFIG - if (prefix_opt->flags & ND6_PREFIX_FLAG_AUTONOMOUS) { - /* Mark prefix as autonomous, so that address autoconfiguration can take place. - * Only OR flag, so that we don't over-write other flags (such as ADDRESS_DUPLICATE)*/ - prefix_list[i].flags |= ND6_PREFIX_AUTOCONFIG_AUTONOMOUS; - } -#endif /* LWIP_IPV6_AUTOCONFIG */ - } - } - - break; - } - case ND6_OPTION_TYPE_ROUTE_INFO: - { - struct route_option * route_opt; - route_opt = (struct route_option *)buffer; - - /* TODO implement preferred routes. */ - - break; - } - default: - /* Unrecognized option, abort. */ - ND6_STATS_INC(nd6.proterr); - break; - } - offset += 8 * ((u16_t)buffer[1]); - } - - - /* free options buffer. */ - mem_free(buffer); - - break; /* ICMP6_TYPE_RA */ - } - case ICMP6_TYPE_RD: /* Redirect */ - { - struct redirect_header * redir_hdr; - struct lladdr_option * lladdr_opt; - - /* Check that Redir header fits in packet. */ - if (p->len < sizeof(struct redirect_header)) { - /* TODO debug message */ - pbuf_free(p); - ND6_STATS_INC(nd6.lenerr); - ND6_STATS_INC(nd6.drop); - return; - } - - redir_hdr = (struct redirect_header *)p->payload; - - lladdr_opt = NULL; - if (p->len >= (sizeof(struct redirect_header) + sizeof(struct lladdr_option))) { - lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct redirect_header)); - } - - /* Copy original destination address to current source address, to have an aligned copy. */ - ip6_addr_set(ip6_current_src_addr(), &(redir_hdr->destination_address)); - - /* Find dest address in cache */ - i = nd6_find_destination_cache_entry(ip6_current_src_addr()); - if (i < 0) { - /* Destination not in cache, drop packet. */ - pbuf_free(p); - return; - } - - /* Set the new target address. */ - ip6_addr_set(&(destination_cache[i].next_hop_addr), &(redir_hdr->target_address)); - - /* If Link-layer address of other router is given, try to add to neighbor cache. */ - if (lladdr_opt != NULL) { - if (lladdr_opt->type == ND6_OPTION_TYPE_TARGET_LLADDR) { - /* Copy target address to current source address, to have an aligned copy. */ - ip6_addr_set(ip6_current_src_addr(), &(redir_hdr->target_address)); - - i = nd6_find_neighbor_cache_entry(ip6_current_src_addr()); - if (i < 0) { - i = nd6_new_neighbor_cache_entry(); - if (i >= 0) { - neighbor_cache[i].netif = inp; - MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len); - ip6_addr_set(&(neighbor_cache[i].next_hop_address), ip6_current_src_addr()); - - /* Receiving a message does not prove reachability: only in one direction. - * Delay probe in case we get confirmation of reachability from upper layer (TCP). */ - neighbor_cache[i].state = ND6_DELAY; - neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME; - } - } - if (i >= 0) { - if (neighbor_cache[i].state == ND6_INCOMPLETE) { - MEMCPY(neighbor_cache[i].lladdr, lladdr_opt->addr, inp->hwaddr_len); - /* Receiving a message does not prove reachability: only in one direction. - * Delay probe in case we get confirmation of reachability from upper layer (TCP). */ - neighbor_cache[i].state = ND6_DELAY; - neighbor_cache[i].counter.delay_time = LWIP_ND6_DELAY_FIRST_PROBE_TIME; - } - } - } - } - break; /* ICMP6_TYPE_RD */ - } - case ICMP6_TYPE_PTB: /* Packet too big */ - { - struct icmp6_hdr *icmp6hdr; /* Packet too big message */ - struct ip6_hdr * ip6hdr; /* IPv6 header of the packet which caused the error */ - - /* Check that ICMPv6 header + IPv6 header fit in payload */ - if (p->len < (sizeof(struct icmp6_hdr) + IP6_HLEN)) { - /* drop short packets */ - pbuf_free(p); - ND6_STATS_INC(nd6.lenerr); - ND6_STATS_INC(nd6.drop); - return; - } - - icmp6hdr = (struct icmp6_hdr *)p->payload; - ip6hdr = (struct ip6_hdr *)((u8_t*)p->payload + sizeof(struct icmp6_hdr)); - - /* Copy original destination address to current source address, to have an aligned copy. */ - ip6_addr_set(ip6_current_src_addr(), &(ip6hdr->dest)); - - /* Look for entry in destination cache. */ - i = nd6_find_destination_cache_entry(ip6_current_src_addr()); - if (i < 0) { - /* Destination not in cache, drop packet. */ - pbuf_free(p); - return; - } - - /* Change the Path MTU. */ - destination_cache[i].pmtu = icmp6hdr->data; - - break; /* ICMP6_TYPE_PTB */ - } - - default: - ND6_STATS_INC(nd6.proterr); - ND6_STATS_INC(nd6.drop); - break; /* default */ - } - - pbuf_free(p); -} - - -/** - * Periodic timer for Neighbor discovery functions: - * - * - Update neighbor reachability states - * - Update destination cache entries age - * - Update invalidation timers of default routers and on-link prefixes - * - Perform duplicate address detection (DAD) for our addresses - * - Send router solicitations - */ -void -nd6_tmr(void) -{ - s8_t i, j; - struct netif * netif; - - /* Process neighbor entries. */ - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - switch (neighbor_cache[i].state) { - case ND6_INCOMPLETE: - if (neighbor_cache[i].counter.probes_sent >= LWIP_ND6_MAX_MULTICAST_SOLICIT) { - /* Retries exceeded. */ - nd6_free_neighbor_cache_entry(i); - } - else { - /* Send a NS for this entry. */ - neighbor_cache[i].counter.probes_sent++; - nd6_send_ns(neighbor_cache[i].netif, &(neighbor_cache[i].next_hop_address), ND6_SEND_FLAG_MULTICAST_DEST); - } - break; - case ND6_REACHABLE: -#if LWIP_ND6_QUEUEING - /* Send queued packets, if any are left. Should have been sent already. */ - if (neighbor_cache[i].q != NULL) { - nd6_send_q(i); - } -#endif /* LWIP_ND6_QUEUEING */ - if (neighbor_cache[i].counter.reachable_time <= ND6_TMR_INTERVAL) { - /* Change to stale state. */ - neighbor_cache[i].state = ND6_STALE; - neighbor_cache[i].counter.stale_time = 0; - } - else { - neighbor_cache[i].counter.reachable_time -= ND6_TMR_INTERVAL; - } - break; - case ND6_STALE: - neighbor_cache[i].counter.stale_time += ND6_TMR_INTERVAL; - break; - case ND6_DELAY: - if (neighbor_cache[i].counter.delay_time <= ND6_TMR_INTERVAL) { - /* Change to PROBE state. */ - neighbor_cache[i].state = ND6_PROBE; - neighbor_cache[i].counter.probes_sent = 0; - } - else { - neighbor_cache[i].counter.delay_time -= ND6_TMR_INTERVAL; - } - break; - case ND6_PROBE: - if (neighbor_cache[i].counter.probes_sent >= LWIP_ND6_MAX_MULTICAST_SOLICIT) { - /* Retries exceeded. */ - nd6_free_neighbor_cache_entry(i); - } - else { - /* Send a NS for this entry. */ - neighbor_cache[i].counter.probes_sent++; - nd6_send_ns(neighbor_cache[i].netif, &(neighbor_cache[i].next_hop_address), 0); - } - break; - case ND6_NO_ENTRY: - default: - /* Do nothing. */ - break; - } - } - - /* Process destination entries. */ - for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) { - destination_cache[i].age++; - } - - /* Process router entries. */ - for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) { - if (default_router_list[i].neighbor_entry != NULL) { - /* Active entry. */ - if (default_router_list[i].invalidation_timer > 0) { - default_router_list[i].invalidation_timer -= ND6_TMR_INTERVAL / 1000; - } - if (default_router_list[i].invalidation_timer < ND6_TMR_INTERVAL / 1000) { - /* Less than 1 second remainig. Clear this entry. */ - default_router_list[i].neighbor_entry->isrouter = 0; - default_router_list[i].neighbor_entry = NULL; - default_router_list[i].invalidation_timer = 0; - default_router_list[i].flags = 0; - } - } - } - - /* Process prefix entries. */ - for (i = 0; i < LWIP_ND6_NUM_PREFIXES; i++) { - if (prefix_list[i].invalidation_timer < ND6_TMR_INTERVAL / 1000) { - prefix_list[i].invalidation_timer = 0; - } - if ((prefix_list[i].invalidation_timer > 0) && - (prefix_list[i].netif != NULL)) { - prefix_list[i].invalidation_timer -= ND6_TMR_INTERVAL / 1000; - -#if LWIP_IPV6_AUTOCONFIG - /* Initiate address autoconfiguration for this prefix, if conditions are met. */ - if (prefix_list[i].netif->ip6_autoconfig_enabled && - (prefix_list[i].flags & ND6_PREFIX_AUTOCONFIG_AUTONOMOUS) && - !(prefix_list[i].flags & ND6_PREFIX_AUTOCONFIG_ADDRESS_GENERATED)) { - /* Try to get an address on this netif that is invalid. - * Skip 0 index (link-local address) */ - for (j = 1; j < LWIP_IPV6_NUM_ADDRESSES; j++) { - if (netif_ip6_addr_state(prefix_list[i].netif, j) == IP6_ADDRESS_STATE_INVALID) { - /* Generate an address using this prefix and interface ID from link-local address. */ - prefix_list[i].netif->ip6_addr[j].addr[0] = prefix_list[i].prefix.addr[0]; - prefix_list[i].netif->ip6_addr[j].addr[1] = prefix_list[i].prefix.addr[1]; - prefix_list[i].netif->ip6_addr[j].addr[2] = prefix_list[i].netif->ip6_addr[0].addr[2]; - prefix_list[i].netif->ip6_addr[j].addr[3] = prefix_list[i].netif->ip6_addr[0].addr[3]; - - /* Mark it as tentative (DAD will be performed if configured). */ - netif_ip6_addr_set_state(prefix_list[i].netif, j, IP6_ADDR_TENTATIVE); - - /* Mark this prefix with ADDRESS_GENERATED, so that we don't try again. */ - prefix_list[i].flags |= ND6_PREFIX_AUTOCONFIG_ADDRESS_GENERATED; - - /* Exit loop. */ - break; - } - } - } -#endif /* LWIP_IPV6_AUTOCONFIG */ - } - } - - - /* Process our own addresses, if DAD configured. */ - for (netif = netif_list; netif != NULL; netif = netif->next) { - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; ++i) { - if (ip6_addr_istentative(netif->ip6_addr_state[i])) { - if ((netif->ip6_addr_state[i] & 0x07) >= LWIP_IPV6_DUP_DETECT_ATTEMPTS) { - /* No NA received in response. Mark address as valid. */ - netif->ip6_addr_state[i] = IP6_ADDR_PREFERRED; - /* TODO implement preferred and valid lifetimes. */ - } - else if (netif->flags & NETIF_FLAG_UP) { -#if LWIP_IPV6_MLD - if ((netif->ip6_addr_state[i] & 0x07) == 0) { - /* Join solicited node multicast group. */ - ip6_addr_set_solicitednode(&multicast_address, netif_ip6_addr(netif, i)->addr[3]); - mld6_joingroup(netif_ip6_addr(netif, i), &multicast_address); - } -#endif /* LWIP_IPV6_MLD */ - /* Send a NS for this address. */ - nd6_send_ns(netif, netif_ip6_addr(netif, i), ND6_SEND_FLAG_MULTICAST_DEST); - (netif->ip6_addr_state[i])++; - /* TODO send max 1 NS per tmr call? enable return*/ - /*return;*/ - } - } - } - } - -#if LWIP_IPV6_SEND_ROUTER_SOLICIT - /* Send router solicitation messages, if necessary. */ - for (netif = netif_list; netif != NULL; netif = netif->next) { - if ((netif->rs_count > 0) && (netif->flags & NETIF_FLAG_UP)) { - nd6_send_rs(netif); - netif->rs_count--; - } - } -#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ - -} - -/** - * Send a neighbor solicitation message - * - * @param netif the netif on which to send the message - * @param target_addr the IPv6 target address for the ND message - * @param flags one of ND6_SEND_FLAG_* - */ -static void -nd6_send_ns(struct netif * netif, ip6_addr_t * target_addr, u8_t flags) -{ - struct ns_header * ns_hdr; - struct lladdr_option * lladdr_opt; - struct pbuf * p; - ip6_addr_t * src_addr; - - if (ip6_addr_isvalid(netif_ip6_addr_state(netif,0))) { - /* Use link-local address as source address. */ - src_addr = netif_ip6_addr(netif, 0); - } else { - src_addr = IP6_ADDR_ANY; - } - - /* Allocate a packet. */ - p = pbuf_alloc(PBUF_IP, sizeof(struct ns_header) + sizeof(struct lladdr_option), PBUF_RAM); - if ((p == NULL) || (p->len < (sizeof(struct ns_header) + sizeof(struct lladdr_option)))) { - /* We couldn't allocate a suitable pbuf for the ns. drop it. */ - if (p != NULL) { - pbuf_free(p); - } - ND6_STATS_INC(nd6.memerr); - return; - } - - /* Set fields. */ - ns_hdr = (struct ns_header *)p->payload; - lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct ns_header)); - - ns_hdr->type = ICMP6_TYPE_NS; - ns_hdr->code = 0; - ns_hdr->chksum = 0; - ns_hdr->reserved = 0; - ip6_addr_set(&(ns_hdr->target_address), target_addr); - - lladdr_opt->type = ND6_OPTION_TYPE_SOURCE_LLADDR; - lladdr_opt->length = ((netif->hwaddr_len + 2) >> 3) + (((netif->hwaddr_len + 2) & 0x07) ? 1 : 0); - SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len); - - /* Generate the solicited node address for the target address. */ - if (flags & ND6_SEND_FLAG_MULTICAST_DEST) { - ip6_addr_set_solicitednode(&multicast_address, target_addr->addr[3]); - target_addr = &multicast_address; - } - - ns_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len, src_addr, - target_addr); - - /* Send the packet out. */ - ND6_STATS_INC(nd6.xmit); - ip6_output_if(p, (src_addr == IP6_ADDR_ANY) ? NULL : src_addr, target_addr, - LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6, netif); - pbuf_free(p); -} - -/** - * Send a neighbor advertisement message - * - * @param netif the netif on which to send the message - * @param target_addr the IPv6 target address for the ND message - * @param flags one of ND6_SEND_FLAG_* - */ -static void -nd6_send_na(struct netif * netif, ip6_addr_t * target_addr, u8_t flags) -{ - struct na_header * na_hdr; - struct lladdr_option * lladdr_opt; - struct pbuf * p; - ip6_addr_t * src_addr; - ip6_addr_t * dest_addr; - - /* Use link-local address as source address. */ - /* src_addr = &(netif->ip6_addr[0]); */ - /* Use target address as source address. */ - src_addr = target_addr; - - /* Allocate a packet. */ - p = pbuf_alloc(PBUF_IP, sizeof(struct na_header) + sizeof(struct lladdr_option), PBUF_RAM); - if ((p == NULL) || (p->len < (sizeof(struct na_header) + sizeof(struct lladdr_option)))) { - /* We couldn't allocate a suitable pbuf for the ns. drop it. */ - if (p != NULL) { - pbuf_free(p); - } - ND6_STATS_INC(nd6.memerr); - return; - } - - /* Set fields. */ - na_hdr = (struct na_header *)p->payload; - lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct ns_header)); - - na_hdr->type = ICMP6_TYPE_NA; - na_hdr->code = 0; - na_hdr->chksum = 0; - na_hdr->flags = flags & 0xf0; - na_hdr->reserved[0] = 0; - na_hdr->reserved[1] = 0; - na_hdr->reserved[2] = 0; - ip6_addr_set(&(na_hdr->target_address), target_addr); - - lladdr_opt->type = ND6_OPTION_TYPE_TARGET_LLADDR; - lladdr_opt->length = ((netif->hwaddr_len + 2) >> 3) + (((netif->hwaddr_len + 2) & 0x07) ? 1 : 0); - SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len); - - /* Generate the solicited node address for the target address. */ - if (flags & ND6_SEND_FLAG_MULTICAST_DEST) { - ip6_addr_set_solicitednode(&multicast_address, target_addr->addr[3]); - dest_addr = &multicast_address; - } - else if (flags & ND6_SEND_FLAG_ALLNODES_DEST) { - ip6_addr_set_allnodes_linklocal(&multicast_address); - dest_addr = &multicast_address; - } - else { - dest_addr = ip6_current_src_addr(); - } - - na_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len, src_addr, - dest_addr); - - /* Send the packet out. */ - ND6_STATS_INC(nd6.xmit); - ip6_output_if(p, src_addr, dest_addr, - LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6, netif); - pbuf_free(p); -} - -#if LWIP_IPV6_SEND_ROUTER_SOLICIT -/** - * Send a router solicitation message - * - * @param netif the netif on which to send the message - */ -static void -nd6_send_rs(struct netif * netif) -{ - struct rs_header * rs_hdr; - struct lladdr_option * lladdr_opt; - struct pbuf * p; - ip6_addr_t * src_addr; - u16_t packet_len; - - /* Link-local source address, or unspecified address? */ - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, 0))) { - src_addr = netif_ip6_addr(netif, 0); - } - else { - src_addr = IP6_ADDR_ANY; - } - - /* Generate the all routers target address. */ - ip6_addr_set_allrouters_linklocal(&multicast_address); - - /* Allocate a packet. */ - packet_len = sizeof(struct rs_header); - if (src_addr != IP6_ADDR_ANY) { - packet_len += sizeof(struct lladdr_option); - } - p = pbuf_alloc(PBUF_IP, packet_len, PBUF_RAM); - if ((p == NULL) || (p->len < packet_len)) { - /* We couldn't allocate a suitable pbuf for the ns. drop it. */ - if (p != NULL) { - pbuf_free(p); - } - ND6_STATS_INC(nd6.memerr); - return; - } - - /* Set fields. */ - rs_hdr = (struct rs_header *)p->payload; - - rs_hdr->type = ICMP6_TYPE_RS; - rs_hdr->code = 0; - rs_hdr->chksum = 0; - rs_hdr->reserved = 0; - - if (src_addr != IP6_ADDR_ANY) { - /* Include our hw address. */ - lladdr_opt = (struct lladdr_option *)((u8_t*)p->payload + sizeof(struct rs_header)); - lladdr_opt->type = ND6_OPTION_TYPE_SOURCE_LLADDR; - lladdr_opt->length = ((netif->hwaddr_len + 2) >> 3) + (((netif->hwaddr_len + 2) & 0x07) ? 1 : 0); - SMEMCPY(lladdr_opt->addr, netif->hwaddr, netif->hwaddr_len); - } - - rs_hdr->chksum = ip6_chksum_pseudo(p, IP6_NEXTH_ICMP6, p->len, src_addr, - &multicast_address); - - /* Send the packet out. */ - ND6_STATS_INC(nd6.xmit); - ip6_output_if(p, src_addr, &multicast_address, - LWIP_ICMP6_HL, 0, IP6_NEXTH_ICMP6, netif); - pbuf_free(p); -} -#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ - -/** - * Search for a neighbor cache entry - * - * @param ip6addr the IPv6 address of the neighbor - * @return The neighbor cache entry index that matched, -1 if no - * entry is found - */ -static s8_t -nd6_find_neighbor_cache_entry(ip6_addr_t * ip6addr) -{ - s8_t i; - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if (ip6_addr_cmp(ip6addr, &(neighbor_cache[i].next_hop_address))) { - return i; - } - } - return -1; -} - -/** - * Create a new neighbor cache entry. - * - * If no unused entry is found, will try to recycle an old entry - * according to ad-hoc "age" heuristic. - * - * @return The neighbor cache entry index that was created, -1 if no - * entry could be created - */ -static s8_t -nd6_new_neighbor_cache_entry(void) -{ - s8_t i; - s8_t j; - u32_t time; - - - /* First, try to find an empty entry. */ - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if (neighbor_cache[i].state == ND6_NO_ENTRY) { - return i; - } - } - - /* We need to recycle an entry. in general, do not recycle if it is a router. */ - - /* Next, try to find a Stale entry. */ - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if ((neighbor_cache[i].state == ND6_STALE) && - (!neighbor_cache[i].isrouter)) { - nd6_free_neighbor_cache_entry(i); - return i; - } - } - - /* Next, try to find a Probe entry. */ - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if ((neighbor_cache[i].state == ND6_PROBE) && - (!neighbor_cache[i].isrouter)) { - nd6_free_neighbor_cache_entry(i); - return i; - } - } - - /* Next, try to find a Delayed entry. */ - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if ((neighbor_cache[i].state == ND6_DELAY) && - (!neighbor_cache[i].isrouter)) { - nd6_free_neighbor_cache_entry(i); - return i; - } - } - - /* Next, try to find the oldest reachable entry. */ - time = 0xfffffffful; - j = -1; - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if ((neighbor_cache[i].state == ND6_REACHABLE) && - (!neighbor_cache[i].isrouter)) { - if (neighbor_cache[i].counter.reachable_time < time) { - j = i; - time = neighbor_cache[i].counter.reachable_time; - } - } - } - if (j >= 0) { - nd6_free_neighbor_cache_entry(j); - return j; - } - - /* Next, find oldest incomplete entry without queued packets. */ - time = 0; - j = -1; - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if ( -#if LWIP_ND6_QUEUEING - (neighbor_cache[i].q == NULL) && -#endif /* LWIP_ND6_QUEUEING */ - (neighbor_cache[i].state == ND6_INCOMPLETE) && - (!neighbor_cache[i].isrouter)) { - if (neighbor_cache[i].counter.probes_sent >= time) { - j = i; - time = neighbor_cache[i].counter.probes_sent; - } - } - } - if (j >= 0) { - nd6_free_neighbor_cache_entry(j); - return j; - } - - /* Next, find oldest incomplete entry with queued packets. */ -#if LWIP_ND6_QUEUEING - time = 0; - j = -1; - for (i = 0; i < LWIP_ND6_NUM_NEIGHBORS; i++) { - if ((neighbor_cache[i].state == ND6_INCOMPLETE) && - (!neighbor_cache[i].isrouter)) { - if (neighbor_cache[i].counter.probes_sent >= time) { - j = i; - time = neighbor_cache[i].counter.probes_sent; - } - } - } - if (j >= 0) { - nd6_free_neighbor_cache_entry(j); - return j; - } -#endif /* LWIP_ND6_QUEUEING */ - - /* No more entries to try. */ - return -1; -} - -/** - * Will free any resources associated with a neighbor cache - * entry, and will mark it as unused. - * - * @param i the neighbor cache entry index to free - */ -static void -nd6_free_neighbor_cache_entry(s8_t i) -{ -#if LWIP_ND6_QUEUEING - /* Free any queued packets. */ - if (neighbor_cache[i].q != NULL) { - nd6_free_q(neighbor_cache[i].q); - neighbor_cache[i].q = NULL; - } -#endif /* LWIP_ND6_QUEUEING */ - - neighbor_cache[i].state = ND6_NO_ENTRY; - neighbor_cache[i].isrouter = 0; - neighbor_cache[i].netif = NULL; - neighbor_cache[i].counter.reachable_time = 0; - ip6_addr_set_zero(&(neighbor_cache[i].next_hop_address)); -} - -/** - * Search for a destination cache entry - * - * @param ip6addr the IPv6 address of the destination - * @return The destination cache entry index that matched, -1 if no - * entry is found - */ -static s8_t -nd6_find_destination_cache_entry(ip6_addr_t * ip6addr) -{ - s8_t i; - for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) { - if (ip6_addr_cmp(ip6addr, &(destination_cache[i].destination_addr))) { - return i; - } - } - return -1; -} - -/** - * Create a new destination cache entry. If no unused entry is found, - * will recycle oldest entry. - * - * @return The destination cache entry index that was created, -1 if no - * entry was created - */ -static s8_t -nd6_new_destination_cache_entry(void) -{ - s8_t i, j; - u32_t age; - - /* Find an empty entry. */ - for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) { - if (ip6_addr_isany(&(destination_cache[i].destination_addr))) { - return i; - } - } - - /* Find oldest entry. */ - age = 0; - j = LWIP_ND6_NUM_DESTINATIONS - 1; - for (i = 0; i < LWIP_ND6_NUM_DESTINATIONS; i++) { - if (destination_cache[i].age > age) { - j = i; - } - } - - return j; -} - -/** - * Determine whether an address matches an on-link prefix. - * - * @param ip6addr the IPv6 address to match - * @return 1 if the address is on-link, 0 otherwise - */ -static s8_t -nd6_is_prefix_in_netif(ip6_addr_t * ip6addr, struct netif * netif) -{ - s8_t i; - for (i = 0; i < LWIP_ND6_NUM_PREFIXES; i++) { - if ((prefix_list[i].netif == netif) && - (prefix_list[i].invalidation_timer > 0) && - ip6_addr_netcmp(ip6addr, &(prefix_list[i].prefix))) { - return 1; - } - } - /* Check to see if address prefix matches a (manually?) configured address. */ - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_isvalid(netif_ip6_addr_state(netif, i)) && - ip6_addr_netcmp(ip6addr, netif_ip6_addr(netif, i))) { - return 1; - } - } - return 0; -} - -/** - * Select a default router for a destination. - * - * @param ip6addr the destination address - * @param netif the netif for the outgoing packet, if known - * @return the default router entry index, or -1 if no suitable - * router is found - */ -s8_t -nd6_select_router(ip6_addr_t * ip6addr, struct netif * netif) -{ - s8_t i; - /* last_router is used for round-robin router selection (as recommended - * in RFC). This is more robust in case one router is not reachable, - * we are not stuck trying to resolve it. */ - static s8_t last_router; - (void)ip6addr; /* TODO match preferred routes!! (must implement ND6_OPTION_TYPE_ROUTE_INFO) */ - - /* TODO: implement default router preference */ - - /* Look for reachable routers. */ - for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) { - if (++last_router >= LWIP_ND6_NUM_ROUTERS) { - last_router = 0; - } - if ((default_router_list[i].neighbor_entry != NULL) && - (netif != NULL ? netif == default_router_list[i].neighbor_entry->netif : 1) && - (default_router_list[i].invalidation_timer > 0) && - (default_router_list[i].neighbor_entry->state == ND6_REACHABLE)) { - return i; - } - } - - /* Look for router in other reachability states, but still valid according to timer. */ - for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) { - if (++last_router >= LWIP_ND6_NUM_ROUTERS) { - last_router = 0; - } - if ((default_router_list[i].neighbor_entry != NULL) && - (netif != NULL ? netif == default_router_list[i].neighbor_entry->netif : 1) && - (default_router_list[i].invalidation_timer > 0)) { - return i; - } - } - - /* Look for any router for which we have any information at all. */ - for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) { - if (++last_router >= LWIP_ND6_NUM_ROUTERS) { - last_router = 0; - } - if (default_router_list[i].neighbor_entry != NULL && - (netif != NULL ? netif == default_router_list[i].neighbor_entry->netif : 1)) { - return i; - } - } - - /* no suitable router found. */ - return -1; -} - -/** - * Find an entry for a default router. - * - * @param router_addr the IPv6 address of the router - * @param netif the netif on which the router is found, if known - * @return the index of the router entry, or -1 if not found - */ -static s8_t -nd6_get_router(ip6_addr_t * router_addr, struct netif * netif) -{ - s8_t i; - - /* Look for router. */ - for (i = 0; i < LWIP_ND6_NUM_ROUTERS; i++) { - if ((default_router_list[i].neighbor_entry != NULL) && - ((netif != NULL) ? netif == default_router_list[i].neighbor_entry->netif : 1) && - ip6_addr_cmp(router_addr, &(default_router_list[i].neighbor_entry->next_hop_address))) { - return i; - } - } - - /* router not found. */ - return -1; -} - -/** - * Create a new entry for a default router. - * - * @param router_addr the IPv6 address of the router - * @param netif the netif on which the router is connected, if known - * @return the index on the router table, or -1 if could not be created - */ -static s8_t -nd6_new_router(ip6_addr_t * router_addr, struct netif * netif) -{ - s8_t router_index; - s8_t neighbor_index; - - /* Do we have a neighbor entry for this router? */ - neighbor_index = nd6_find_neighbor_cache_entry(router_addr); - if (neighbor_index < 0) { - /* Create a neighbor entry for this router. */ - neighbor_index = nd6_new_neighbor_cache_entry(); - if (neighbor_index < 0) { - /* Could not create neighbor entry for this router. */ - return -1; - } - ip6_addr_set(&(neighbor_cache[neighbor_index].next_hop_address), router_addr); - neighbor_cache[neighbor_index].netif = netif; - neighbor_cache[neighbor_index].q = NULL; - neighbor_cache[neighbor_index].state = ND6_INCOMPLETE; - neighbor_cache[neighbor_index].counter.probes_sent = 0; - } - - /* Mark neighbor as router. */ - neighbor_cache[neighbor_index].isrouter = 1; - - /* Look for empty entry. */ - for (router_index = 0; router_index < LWIP_ND6_NUM_ROUTERS; router_index++) { - if (default_router_list[router_index].neighbor_entry == NULL) { - default_router_list[router_index].neighbor_entry = &(neighbor_cache[neighbor_index]); - return router_index; - } - } - - /* Could not create a router entry. */ - - /* Mark neighbor entry as not-router. Entry might be useful as neighbor still. */ - neighbor_cache[neighbor_index].isrouter = 0; - - /* router not found. */ - return -1; -} - -/** - * Find the cached entry for an on-link prefix. - * - * @param prefix the IPv6 prefix that is on-link - * @param netif the netif on which the prefix is on-link - * @return the index on the prefix table, or -1 if not found - */ -static s8_t -nd6_get_onlink_prefix(ip6_addr_t * prefix, struct netif * netif) -{ - s8_t i; - - /* Look for prefix in list. */ - for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) { - if ((ip6_addr_netcmp(&(prefix_list[i].prefix), prefix)) && - (prefix_list[i].netif == netif)) { - return i; - } - } - - /* Entry not available. */ - return -1; -} - -/** - * Creates a new entry for an on-link prefix. - * - * @param prefix the IPv6 prefix that is on-link - * @param netif the netif on which the prefix is on-link - * @return the index on the prefix table, or -1 if not created - */ -static s8_t -nd6_new_onlink_prefix(ip6_addr_t * prefix, struct netif * netif) -{ - s8_t i; - - /* Create new entry. */ - for (i = 0; i < LWIP_ND6_NUM_PREFIXES; ++i) { - if ((prefix_list[i].netif == NULL) || - (prefix_list[i].invalidation_timer == 0)) { - /* Found empty prefix entry. */ - prefix_list[i].netif = netif; - ip6_addr_set(&(prefix_list[i].prefix), prefix); - prefix_list[i].flags = 0; - return i; - } - } - - /* Entry not available. */ - return -1; -} - -/** - * Determine the next hop for a destination. Will determine if the - * destination is on-link, else a suitable on-link router is selected. - * - * The last entry index is cached for fast entry search. - * - * @param ip6addr the destination address - * @param netif the netif on which the packet will be sent - * @return the neighbor cache entry for the next hop, ERR_RTE if no - * suitable next hop was found, ERR_MEM if no cache entry - * could be created - */ -s8_t -nd6_get_next_hop_entry(ip6_addr_t * ip6addr, struct netif * netif) -{ - s8_t i; - -#if LWIP_NETIF_HWADDRHINT - if (netif->addr_hint != NULL) { - /* per-pcb cached entry was given */ - u8_t addr_hint = *(netif->addr_hint); - if (addr_hint < LWIP_ND6_NUM_DESTINATIONS) { - nd6_cached_destination_index = addr_hint; - } - } -#endif /* LWIP_NETIF_HWADDRHINT */ - - /* Look for ip6addr in destination cache. */ - if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) { - /* the cached entry index is the right one! */ - /* do nothing. */ - ND6_STATS_INC(nd6.cachehit); - } else { - /* Search destination cache. */ - i = nd6_find_destination_cache_entry(ip6addr); - if (i >= 0) { - /* found destination entry. make it our new cached index. */ - nd6_cached_destination_index = i; - } - else { - /* Not found. Create a new destination entry. */ - i = nd6_new_destination_cache_entry(); - if (i >= 0) { - /* got new destination entry. make it our new cached index. */ - nd6_cached_destination_index = i; - } else { - /* Could not create a destination cache entry. */ - return ERR_MEM; - } - - /* Copy dest address to destination cache. */ - ip6_addr_set(&(destination_cache[i].destination_addr), ip6addr); - - /* Now find the next hop. is it a neighbor? */ - if (ip6_addr_islinklocal(ip6addr) || - nd6_is_prefix_in_netif(ip6addr, netif)) { - /* Destination in local link. */ - destination_cache[i].pmtu = netif->mtu; - ip6_addr_copy(destination_cache[i].next_hop_addr, destination_cache[nd6_cached_destination_index].destination_addr); - } - else { - /* We need to select a router. */ - i = nd6_select_router(ip6addr, netif); - if (i < 0) { - /* No router found. */ - ip6_addr_set_any(&(destination_cache[nd6_cached_destination_index].destination_addr)); - return ERR_RTE; - } - destination_cache[nd6_cached_destination_index].pmtu = netif->mtu; /* Start with netif mtu, correct through ICMPv6 if necessary */ - ip6_addr_copy(destination_cache[nd6_cached_destination_index].next_hop_addr, default_router_list[i].neighbor_entry->next_hop_address); - } - } - } - -#if LWIP_NETIF_HWADDRHINT - if (netif->addr_hint != NULL) { - /* per-pcb cached entry was given */ - *(netif->addr_hint) = nd6_cached_destination_index; - } -#endif /* LWIP_NETIF_HWADDRHINT */ - - /* Look in neighbor cache for the next-hop address. */ - if (ip6_addr_cmp(&(destination_cache[nd6_cached_destination_index].next_hop_addr), - &(neighbor_cache[nd6_cached_neighbor_index].next_hop_address))) { - /* Cache hit. */ - /* Do nothing. */ - ND6_STATS_INC(nd6.cachehit); - } else { - i = nd6_find_neighbor_cache_entry(&(destination_cache[nd6_cached_destination_index].next_hop_addr)); - if (i >= 0) { - /* Found a matching record, make it new cached entry. */ - nd6_cached_neighbor_index = i; - } - else { - /* Neighbor not in cache. Make a new entry. */ - i = nd6_new_neighbor_cache_entry(); - if (i >= 0) { - /* got new neighbor entry. make it our new cached index. */ - nd6_cached_neighbor_index = i; - } else { - /* Could not create a neighbor cache entry. */ - return ERR_MEM; - } - - /* Initialize fields. */ - ip6_addr_copy(neighbor_cache[i].next_hop_address, - destination_cache[nd6_cached_destination_index].next_hop_addr); - neighbor_cache[i].isrouter = 0; - neighbor_cache[i].netif = netif; - neighbor_cache[i].state = ND6_INCOMPLETE; - neighbor_cache[i].counter.probes_sent = 0; - } - } - - /* Reset this destination's age. */ - destination_cache[nd6_cached_destination_index].age = 0; - - return nd6_cached_neighbor_index; -} - -#if LWIP_ND6_QUEUEING - -/** - * Queue a packet for a neighbor. - * - * @param neighbor_index the index in the neighbor cache table - * @param q packet to be queued - * @return ERR_OK if succeeded, ERR_MEM if out of memory - */ -err_t -nd6_queue_packet(s8_t neighbor_index, struct pbuf * q) -{ - err_t result = ERR_MEM; - struct pbuf *p; - int copy_needed = 0; - struct nd6_q_entry *new_entry, *r; - - /* IF q includes a PBUF_REF, PBUF_POOL or PBUF_RAM, we have no choice but - * to copy the whole queue into a new PBUF_RAM (see bug #11400) - * PBUF_ROMs can be left as they are, since ROM must not get changed. */ - p = q; - while (p) { - if(p->type != PBUF_ROM) { - copy_needed = 1; - break; - } - p = p->next; - } - if(copy_needed) { - /* copy the whole packet into new pbufs */ - p = pbuf_alloc(PBUF_LINK, q->tot_len, PBUF_RAM); - if ((p == NULL) && (neighbor_cache[neighbor_index].q != NULL)) { - /* Free oldest packet (as per RFC recommendation) */ - r = neighbor_cache[neighbor_index].q; - neighbor_cache[neighbor_index].q = r->next; - nd6_free_q(r); - p = pbuf_alloc(PBUF_LINK, q->tot_len, PBUF_RAM); - } - if(p != NULL) { - if (pbuf_copy(p, q) != ERR_OK) { - pbuf_free(p); - p = NULL; - } - } - } else { - /* referencing the old pbuf is enough */ - p = q; - pbuf_ref(p); - } - /* packet was copied/ref'd? */ - if (p != NULL) { - /* queue packet ... */ - /* allocate a new nd6 queue entry */ - new_entry = (struct nd6_q_entry *)memp_malloc(MEMP_ND6_QUEUE); - if ((new_entry == NULL) && (neighbor_cache[neighbor_index].q != NULL)) { - /* Free oldest packet (as per RFC recommendation) */ - r = neighbor_cache[neighbor_index].q; - neighbor_cache[neighbor_index].q = r->next; - nd6_free_q(r); - new_entry = (struct nd6_q_entry *)memp_malloc(MEMP_ND6_QUEUE); - } - if (new_entry != NULL) { - new_entry->next = NULL; - new_entry->p = p; - if(neighbor_cache[neighbor_index].q != NULL) { - /* queue was already existent, append the new entry to the end */ - r = neighbor_cache[neighbor_index].q; - while (r->next != NULL) { - r = r->next; - } - r->next = new_entry; - } else { - /* queue did not exist, first item in queue */ - neighbor_cache[neighbor_index].q = new_entry; - } - LWIP_DEBUGF(LWIP_DBG_TRACE, ("ipv6: queued packet %p on neighbor entry %"S16_F"\n", (void *)q, (s16_t)neighbor_index)); - result = ERR_OK; - } else { - /* the pool MEMP_ND6_QUEUE is empty */ - pbuf_free(p); - LWIP_DEBUGF(LWIP_DBG_TRACE, ("ipv6: could not queue a copy of packet %p (out of memory)\n", (void *)q)); - /* { result == ERR_MEM } through initialization */ - } - } else { - LWIP_DEBUGF(LWIP_DBG_TRACE, ("ipv6: could not queue a copy of packet %p (out of memory)\n", (void *)q)); - /* { result == ERR_MEM } through initialization */ - } - - return result; -} - -/** - * Free a complete queue of nd6 q entries - * - * @param q a queue of nd6_q_entry to free - */ -static void -nd6_free_q(struct nd6_q_entry *q) -{ - struct nd6_q_entry *r; - LWIP_ASSERT("q != NULL", q != NULL); - LWIP_ASSERT("q->p != NULL", q->p != NULL); - while (q) { - r = q; - q = q->next; - LWIP_ASSERT("r->p != NULL", (r->p != NULL)); - pbuf_free(r->p); - memp_free(MEMP_ND6_QUEUE, r); - } -} - -/** - * Send queued packets for a neighbor - * - * @param i the neighbor to send packets to - */ -static void -nd6_send_q(s8_t i) -{ - struct ip6_hdr *ip6hdr; - struct nd6_q_entry *q; - - while (neighbor_cache[i].q != NULL) { - /* remember first in queue */ - q = neighbor_cache[i].q; - /* pop first item off the queue */ - neighbor_cache[i].q = q->next; - /* Get ipv6 header. */ - ip6hdr = (struct ip6_hdr *)(q->p->payload); - /* Override ip6_current_dest_addr() so that we have an aligned copy. */ - ip6_addr_set(ip6_current_dest_addr(), &(ip6hdr->dest)); - /* send the queued IPv6 packet */ - (neighbor_cache[i].netif)->output_ip6(neighbor_cache[i].netif, q->p, ip6_current_dest_addr()); - /* free the queued IP packet */ - pbuf_free(q->p); - /* now queue entry can be freed */ - memp_free(MEMP_ND6_QUEUE, q); - } -} - -#endif /* LWIP_ND6_QUEUEING */ - -/** - * Get the Path MTU for a destination. - * - * @param ip6addr the destination address - * @param netif the netif on which the packet will be sent - * @return the Path MTU, if known, or the netif default MTU - */ -u16_t -nd6_get_destination_mtu(ip6_addr_t * ip6addr, struct netif * netif) -{ - s8_t i; - - i = nd6_find_destination_cache_entry(ip6addr); - if (i >= 0) { - if (destination_cache[i].pmtu > 0) { - return destination_cache[i].pmtu; - } - } - - if (netif != NULL) { - return netif->mtu; - } - - return 1280; /* Minimum MTU */ -} - - -#if LWIP_ND6_TCP_REACHABILITY_HINTS -/** - * Provide the Neighbor discovery process with a hint that a - * destination is reachable. Called by tcp_receive when ACKs are - * received or sent (as per RFC). This is useful to avoid sending - * NS messages every 30 seconds. - * - * @param ip6addr the destination address which is know to be reachable - * by an upper layer protocol (TCP) - */ -void -nd6_reachability_hint(ip6_addr_t * ip6addr) -{ - s8_t i; - - /* Find destination in cache. */ - if (ip6_addr_cmp(ip6addr, &(destination_cache[nd6_cached_destination_index].destination_addr))) { - i = nd6_cached_destination_index; - ND6_STATS_INC(nd6.cachehit); - } - else { - i = nd6_find_destination_cache_entry(ip6addr); - } - if (i < 0) { - return; - } - - /* Find next hop neighbor in cache. */ - if (ip6_addr_cmp(&(destination_cache[i].next_hop_addr), &(neighbor_cache[nd6_cached_neighbor_index].next_hop_address))) { - i = nd6_cached_neighbor_index; - ND6_STATS_INC(nd6.cachehit); - } - else { - i = nd6_find_neighbor_cache_entry(&(destination_cache[i].next_hop_addr)); - } - if (i < 0) { - return; - } - - /* Set reachability state. */ - neighbor_cache[i].state = ND6_REACHABLE; - neighbor_cache[i].counter.reachable_time = reachable_time; -} -#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */ - -#endif /* LWIP_IPV6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/mem.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/mem.c deleted file mode 100644 index 2128a28e3..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/mem.c +++ /dev/null @@ -1,645 +0,0 @@ -/** - * @file - * Dynamic memory manager - * - * This is a lightweight replacement for the standard C library malloc(). - * - * If you want to use the standard C library malloc() instead, define - * MEM_LIBC_MALLOC to 1 in your lwipopts.h - * - * To let mem_malloc() use pools (prevents fragmentation and is much faster than - * a heap but might waste some memory), define MEM_USE_POOLS to 1, define - * MEM_USE_CUSTOM_POOLS to 1 and create a file "lwippools.h" that includes a list - * of pools like this (more pools can be added between _START and _END): - * - * Define three pools with sizes 256, 512, and 1512 bytes - * LWIP_MALLOC_MEMPOOL_START - * LWIP_MALLOC_MEMPOOL(20, 256) - * LWIP_MALLOC_MEMPOOL(10, 512) - * LWIP_MALLOC_MEMPOOL(5, 1512) - * LWIP_MALLOC_MEMPOOL_END - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * Simon Goldschmidt - * - */ - -#include "lwip/opt.h" - -#if !MEM_LIBC_MALLOC /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/sys.h" -#include "lwip/stats.h" -#include "lwip/err.h" - -#include - -#if MEM_USE_POOLS -/* lwIP head implemented with different sized pools */ - -/** - * Allocate memory: determine the smallest pool that is big enough - * to contain an element of 'size' and get an element from that pool. - * - * @param size the size in bytes of the memory needed - * @return a pointer to the allocated memory or NULL if the pool is empty - */ -void * -mem_malloc(mem_size_t size) -{ - void *ret; - struct memp_malloc_helper *element; - memp_t poolnr; - mem_size_t required_size = size + LWIP_MEM_ALIGN_SIZE(sizeof(struct memp_malloc_helper)); - - for (poolnr = MEMP_POOL_FIRST; poolnr <= MEMP_POOL_LAST; poolnr = (memp_t)(poolnr + 1)) { -#if MEM_USE_POOLS_TRY_BIGGER_POOL -again: -#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */ - /* is this pool big enough to hold an element of the required size - plus a struct memp_malloc_helper that saves the pool this element came from? */ - if (required_size <= memp_sizes[poolnr]) { - break; - } - } - if (poolnr > MEMP_POOL_LAST) { - LWIP_ASSERT("mem_malloc(): no pool is that big!", 0); - return NULL; - } - element = (struct memp_malloc_helper*)memp_malloc(poolnr); - if (element == NULL) { - /* No need to DEBUGF or ASSERT: This error is already - taken care of in memp.c */ -#if MEM_USE_POOLS_TRY_BIGGER_POOL - /** Try a bigger pool if this one is empty! */ - if (poolnr < MEMP_POOL_LAST) { - poolnr++; - goto again; - } -#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */ - return NULL; - } - - /* save the pool number this element came from */ - element->poolnr = poolnr; - /* and return a pointer to the memory directly after the struct memp_malloc_helper */ - ret = (u8_t*)element + LWIP_MEM_ALIGN_SIZE(sizeof(struct memp_malloc_helper)); - - return ret; -} - -/** - * Free memory previously allocated by mem_malloc. Loads the pool number - * and calls memp_free with that pool number to put the element back into - * its pool - * - * @param rmem the memory element to free - */ -void -mem_free(void *rmem) -{ - struct memp_malloc_helper *hmem; - - LWIP_ASSERT("rmem != NULL", (rmem != NULL)); - LWIP_ASSERT("rmem == MEM_ALIGN(rmem)", (rmem == LWIP_MEM_ALIGN(rmem))); - - /* get the original struct memp_malloc_helper */ - hmem = (struct memp_malloc_helper*)(void*)((u8_t*)rmem - LWIP_MEM_ALIGN_SIZE(sizeof(struct memp_malloc_helper))); - - LWIP_ASSERT("hmem != NULL", (hmem != NULL)); - LWIP_ASSERT("hmem == MEM_ALIGN(hmem)", (hmem == LWIP_MEM_ALIGN(hmem))); - LWIP_ASSERT("hmem->poolnr < MEMP_MAX", (hmem->poolnr < MEMP_MAX)); - - /* and put it in the pool we saved earlier */ - memp_free(hmem->poolnr, hmem); -} - -#else /* MEM_USE_POOLS */ -/* lwIP replacement for your libc malloc() */ - -/** - * The heap is made up as a list of structs of this type. - * This does not have to be aligned since for getting its size, - * we only use the macro SIZEOF_STRUCT_MEM, which automatically alignes. - */ -struct mem { - /** index (-> ram[next]) of the next struct */ - mem_size_t next; - /** index (-> ram[prev]) of the previous struct */ - mem_size_t prev; - /** 1: this area is used; 0: this area is unused */ - u8_t used; -}; - -/** All allocated blocks will be MIN_SIZE bytes big, at least! - * MIN_SIZE can be overridden to suit your needs. Smaller values save space, - * larger values could prevent too small blocks to fragment the RAM too much. */ -#ifndef MIN_SIZE -#define MIN_SIZE 12 -#endif /* MIN_SIZE */ -/* some alignment macros: we define them here for better source code layout */ -#define MIN_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MIN_SIZE) -#define SIZEOF_STRUCT_MEM LWIP_MEM_ALIGN_SIZE(sizeof(struct mem)) -#define MEM_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEM_SIZE) - -/** If you want to relocate the heap to external memory, simply define - * LWIP_RAM_HEAP_POINTER as a void-pointer to that location. - * If so, make sure the memory at that location is big enough (see below on - * how that space is calculated). */ -#ifndef LWIP_RAM_HEAP_POINTER -/** the heap. we need one struct mem at the end and some room for alignment */ -u8_t ram_heap[MEM_SIZE_ALIGNED + (2*SIZEOF_STRUCT_MEM) + MEM_ALIGNMENT]; -#define LWIP_RAM_HEAP_POINTER ram_heap -#endif /* LWIP_RAM_HEAP_POINTER */ - -/** pointer to the heap (ram_heap): for alignment, ram is now a pointer instead of an array */ -static u8_t *ram; -/** the last entry, always unused! */ -static struct mem *ram_end; -/** pointer to the lowest free block, this is used for faster search */ -static struct mem *lfree; - -/** concurrent access protection */ -#if !NO_SYS -static sys_mutex_t mem_mutex; -#endif - -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - -static volatile u8_t mem_free_count; - -/* Allow mem_free from other (e.g. interrupt) context */ -#define LWIP_MEM_FREE_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_free) -#define LWIP_MEM_FREE_PROTECT() SYS_ARCH_PROTECT(lev_free) -#define LWIP_MEM_FREE_UNPROTECT() SYS_ARCH_UNPROTECT(lev_free) -#define LWIP_MEM_ALLOC_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_alloc) -#define LWIP_MEM_ALLOC_PROTECT() SYS_ARCH_PROTECT(lev_alloc) -#define LWIP_MEM_ALLOC_UNPROTECT() SYS_ARCH_UNPROTECT(lev_alloc) - -#else /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - -/* Protect the heap only by using a semaphore */ -#define LWIP_MEM_FREE_DECL_PROTECT() -#define LWIP_MEM_FREE_PROTECT() sys_mutex_lock(&mem_mutex) -#define LWIP_MEM_FREE_UNPROTECT() sys_mutex_unlock(&mem_mutex) -/* mem_malloc is protected using semaphore AND LWIP_MEM_ALLOC_PROTECT */ -#define LWIP_MEM_ALLOC_DECL_PROTECT() -#define LWIP_MEM_ALLOC_PROTECT() -#define LWIP_MEM_ALLOC_UNPROTECT() - -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - -/** - * "Plug holes" by combining adjacent empty struct mems. - * After this function is through, there should not exist - * one empty struct mem pointing to another empty struct mem. - * - * @param mem this points to a struct mem which just has been freed - * @internal this function is only called by mem_free() and mem_trim() - * - * This assumes access to the heap is protected by the calling function - * already. - */ -static void -plug_holes(struct mem *mem) -{ - struct mem *nmem; - struct mem *pmem; - - LWIP_ASSERT("plug_holes: mem >= ram", (u8_t *)mem >= ram); - LWIP_ASSERT("plug_holes: mem < ram_end", (u8_t *)mem < (u8_t *)ram_end); - LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0); - - /* plug hole forward */ - LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED); - - nmem = (struct mem *)(void *)&ram[mem->next]; - if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { - /* if mem->next is unused and not end of ram, combine mem and mem->next */ - if (lfree == nmem) { - lfree = mem; - } - mem->next = nmem->next; - ((struct mem *)(void *)&ram[nmem->next])->prev = (mem_size_t)((u8_t *)mem - ram); - } - - /* plug hole backward */ - pmem = (struct mem *)(void *)&ram[mem->prev]; - if (pmem != mem && pmem->used == 0) { - /* if mem->prev is unused, combine mem and mem->prev */ - if (lfree == mem) { - lfree = pmem; - } - pmem->next = mem->next; - ((struct mem *)(void *)&ram[mem->next])->prev = (mem_size_t)((u8_t *)pmem - ram); - } -} - -/** - * Zero the heap and initialize start, end and lowest-free - */ -void -mem_init(void) -{ - struct mem *mem; - - LWIP_ASSERT("Sanity check alignment", - (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT-1)) == 0); - - /* align the heap */ - ram = (u8_t *)LWIP_MEM_ALIGN(LWIP_RAM_HEAP_POINTER); - /* initialize the start of the heap */ - mem = (struct mem *)(void *)ram; - mem->next = MEM_SIZE_ALIGNED; - mem->prev = 0; - mem->used = 0; - /* initialize the end of the heap */ - ram_end = (struct mem *)(void *)&ram[MEM_SIZE_ALIGNED]; - ram_end->used = 1; - ram_end->next = MEM_SIZE_ALIGNED; - ram_end->prev = MEM_SIZE_ALIGNED; - - /* initialize the lowest-free pointer to the start of the heap */ - lfree = (struct mem *)(void *)ram; - - MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED); - - if(sys_mutex_new(&mem_mutex) != ERR_OK) { - LWIP_ASSERT("failed to create mem_mutex", 0); - } -} - -/** - * Put a struct mem back on the heap - * - * @param rmem is the data portion of a struct mem as returned by a previous - * call to mem_malloc() - */ -void -mem_free(void *rmem) -{ - struct mem *mem; - LWIP_MEM_FREE_DECL_PROTECT(); - - if (rmem == NULL) { - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("mem_free(p == NULL) was called.\n")); - return; - } - LWIP_ASSERT("mem_free: sanity check alignment", (((mem_ptr_t)rmem) & (MEM_ALIGNMENT-1)) == 0); - - LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram && - (u8_t *)rmem < (u8_t *)ram_end); - - if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - SYS_ARCH_DECL_PROTECT(lev); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n")); - /* protect mem stats from concurrent access */ - SYS_ARCH_PROTECT(lev); - MEM_STATS_INC(illegal); - SYS_ARCH_UNPROTECT(lev); - return; - } - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - /* Get the corresponding struct mem ... */ - mem = (struct mem *)(void *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); - /* ... which has to be in a used state ... */ - LWIP_ASSERT("mem_free: mem->used", mem->used); - /* ... and is now unused. */ - mem->used = 0; - - if (mem < lfree) { - /* the newly freed struct is now the lowest */ - lfree = mem; - } - - MEM_STATS_DEC_USED(used, mem->next - (mem_size_t)(((u8_t *)mem - ram))); - - /* finally, see if prev or next are free also */ - plug_holes(mem); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); -} - -/** - * Shrink memory returned by mem_malloc(). - * - * @param rmem pointer to memory allocated by mem_malloc the is to be shrinked - * @param newsize required size after shrinking (needs to be smaller than or - * equal to the previous size) - * @return for compatibility reasons: is always == rmem, at the moment - * or NULL if newsize is > old size, in which case rmem is NOT touched - * or freed! - */ -void * -mem_trim(void *rmem, mem_size_t newsize) -{ - mem_size_t size; - mem_size_t ptr, ptr2; - struct mem *mem, *mem2; - /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */ - LWIP_MEM_FREE_DECL_PROTECT(); - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - newsize = LWIP_MEM_ALIGN_SIZE(newsize); - - if(newsize < MIN_SIZE_ALIGNED) { - /* every data block must be at least MIN_SIZE_ALIGNED long */ - newsize = MIN_SIZE_ALIGNED; - } - - if (newsize > MEM_SIZE_ALIGNED) { - return NULL; - } - - LWIP_ASSERT("mem_trim: legal memory", (u8_t *)rmem >= (u8_t *)ram && - (u8_t *)rmem < (u8_t *)ram_end); - - if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - SYS_ARCH_DECL_PROTECT(lev); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_trim: illegal memory\n")); - /* protect mem stats from concurrent access */ - SYS_ARCH_PROTECT(lev); - MEM_STATS_INC(illegal); - SYS_ARCH_UNPROTECT(lev); - return rmem; - } - /* Get the corresponding struct mem ... */ - mem = (struct mem *)(void *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); - /* ... and its offset pointer */ - ptr = (mem_size_t)((u8_t *)mem - ram); - - size = mem->next - ptr - SIZEOF_STRUCT_MEM; - LWIP_ASSERT("mem_trim can only shrink memory", newsize <= size); - if (newsize > size) { - /* not supported */ - return NULL; - } - if (newsize == size) { - /* No change in size, simply return */ - return rmem; - } - - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - - mem2 = (struct mem *)(void *)&ram[mem->next]; - if(mem2->used == 0) { - /* The next struct is unused, we can simply move it at little */ - mem_size_t next; - /* remember the old next pointer */ - next = mem2->next; - /* create new struct mem which is moved directly after the shrinked mem */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; - if (lfree == mem2) { - lfree = (struct mem *)(void *)&ram[ptr2]; - } - mem2 = (struct mem *)(void *)&ram[ptr2]; - mem2->used = 0; - /* restore the next pointer */ - mem2->next = next; - /* link it back to mem */ - mem2->prev = ptr; - /* link mem to it */ - mem->next = ptr2; - /* last thing to restore linked list: as we have moved mem2, - * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not - * the end of the heap */ - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2; - } - MEM_STATS_DEC_USED(used, (size - newsize)); - /* no need to plug holes, we've already done that */ - } else if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED <= size) { - /* Next struct is used but there's room for another struct mem with - * at least MIN_SIZE_ALIGNED of data. - * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem - * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED'). - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; - mem2 = (struct mem *)(void *)&ram[ptr2]; - if (mem2 < lfree) { - lfree = mem2; - } - mem2->used = 0; - mem2->next = mem->next; - mem2->prev = ptr; - mem->next = ptr2; - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2; - } - MEM_STATS_DEC_USED(used, (size - newsize)); - /* the original mem->next is used, so no need to plug holes! */ - } - /* else { - next struct mem is used but size between mem and mem2 is not big enough - to create another struct mem - -> don't do anyhting. - -> the remaining space stays unused since it is too small - } */ -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); - return rmem; -} - -/** - * Adam's mem_malloc() plus solution for bug #17922 - * Allocate a block of memory with a minimum of 'size' bytes. - * - * @param size is the minimum size of the requested block in bytes. - * @return pointer to allocated memory or NULL if no free memory was found. - * - * Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT). - */ -void * -mem_malloc(mem_size_t size) -{ - mem_size_t ptr, ptr2; - struct mem *mem, *mem2; -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - u8_t local_mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_ALLOC_DECL_PROTECT(); - - if (size == 0) { - return NULL; - } - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - size = LWIP_MEM_ALIGN_SIZE(size); - - if(size < MIN_SIZE_ALIGNED) { - /* every data block must be at least MIN_SIZE_ALIGNED long */ - size = MIN_SIZE_ALIGNED; - } - - if (size > MEM_SIZE_ALIGNED) { - return NULL; - } - - /* protect the heap from concurrent access */ - sys_mutex_lock(&mem_mutex); - LWIP_MEM_ALLOC_PROTECT(); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - /* run as long as a mem_free disturbed mem_malloc */ - do { - local_mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - /* Scan through the heap searching for a free block that is big enough, - * beginning with the lowest free block. - */ - for (ptr = (mem_size_t)((u8_t *)lfree - ram); ptr < MEM_SIZE_ALIGNED - size; - ptr = ((struct mem *)(void *)&ram[ptr])->next) { - mem = (struct mem *)(void *)&ram[ptr]; -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 0; - LWIP_MEM_ALLOC_UNPROTECT(); - /* allow mem_free to run */ - LWIP_MEM_ALLOC_PROTECT(); - if (mem_free_count != 0) { - local_mem_free_count = mem_free_count; - } - mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - if ((!mem->used) && - (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) { - /* mem is not used and at least perfect fit is possible: - * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */ - - if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) { - /* (in addition to the above, we test if another struct mem (SIZEOF_STRUCT_MEM) containing - * at least MIN_SIZE_ALIGNED of data also fits in the 'user data space' of 'mem') - * -> split large block, create empty remainder, - * remainder must be large enough to contain MIN_SIZE_ALIGNED data: if - * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size, - * struct mem would fit in but no data between mem2 and mem2->next - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory - */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + size; - /* create mem2 struct */ - mem2 = (struct mem *)(void *)&ram[ptr2]; - mem2->used = 0; - mem2->next = mem->next; - mem2->prev = ptr; - /* and insert it between mem and mem->next */ - mem->next = ptr2; - mem->used = 1; - - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)(void *)&ram[mem2->next])->prev = ptr2; - } - MEM_STATS_INC_USED(used, (size + SIZEOF_STRUCT_MEM)); - } else { - /* (a mem2 struct does no fit into the user data space of mem and mem->next will always - * be used at this point: if not we have 2 unused structs in a row, plug_holes should have - * take care of this). - * -> near fit or excact fit: do not split, no mem2 creation - * also can't move mem->next directly behind mem, since mem->next - * will always be used at this point! - */ - mem->used = 1; - MEM_STATS_INC_USED(used, mem->next - (mem_size_t)((u8_t *)mem - ram)); - } - - if (mem == lfree) { - /* Find next free block after mem and update lowest free pointer */ - while (lfree->used && lfree != ram_end) { - LWIP_MEM_ALLOC_UNPROTECT(); - /* prevent high interrupt latency... */ - LWIP_MEM_ALLOC_PROTECT(); - lfree = (struct mem *)(void *)&ram[lfree->next]; - } - LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used))); - } - LWIP_MEM_ALLOC_UNPROTECT(); - sys_mutex_unlock(&mem_mutex); - LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.", - (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end); - LWIP_ASSERT("mem_malloc: allocated memory properly aligned.", - ((mem_ptr_t)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0); - LWIP_ASSERT("mem_malloc: sanity check alignment", - (((mem_ptr_t)mem) & (MEM_ALIGNMENT-1)) == 0); - - return (u8_t *)mem + SIZEOF_STRUCT_MEM; - } - } -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - /* if we got interrupted by a mem_free, try again */ - } while(local_mem_free_count != 0); -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size)); - MEM_STATS_INC(err); - LWIP_MEM_ALLOC_UNPROTECT(); - sys_mutex_unlock(&mem_mutex); - return NULL; -} - -#endif /* MEM_USE_POOLS */ -/** - * Contiguously allocates enough space for count objects that are size bytes - * of memory each and returns a pointer to the allocated memory. - * - * The allocated memory is filled with bytes of value zero. - * - * @param count number of objects to allocate - * @param size size of the objects to allocate - * @return pointer to allocated memory / NULL pointer if there is an error - */ -void *mem_calloc(mem_size_t count, mem_size_t size) -{ - void *p; - - /* allocate 'count' objects of size 'size' */ - p = mem_malloc(count * size); - if (p) { - /* zero the memory */ - memset(p, 0, count * size); - } - return p; -} - -#endif /* !MEM_LIBC_MALLOC */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/memp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/memp.c deleted file mode 100644 index bfe6ee605..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/memp.c +++ /dev/null @@ -1,472 +0,0 @@ -/** - * @file - * Dynamic pool memory manager - * - * lwIP has dedicated pools for many structures (netconn, protocol control blocks, - * packet buffers, ...). All these pools are managed here. - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/udp.h" -#include "lwip/raw.h" -#include "lwip/tcp_impl.h" -#include "lwip/igmp.h" -#include "lwip/api.h" -#include "lwip/api_msg.h" -#include "lwip/tcpip.h" -#include "lwip/sys.h" -#include "lwip/timers.h" -#include "lwip/stats.h" -#include "netif/etharp.h" -#include "lwip/ip_frag.h" -#include "lwip/snmp_structs.h" -#include "lwip/snmp_msg.h" -#include "lwip/dns.h" -#include "netif/ppp_oe.h" -#include "lwip/nd6.h" -#include "lwip/ip6_frag.h" -#include "lwip/mld6.h" - -#include - -#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */ - -struct memp { - struct memp *next; -#if MEMP_OVERFLOW_CHECK - const char *file; - int line; -#endif /* MEMP_OVERFLOW_CHECK */ -}; - -#if MEMP_OVERFLOW_CHECK -/* if MEMP_OVERFLOW_CHECK is turned on, we reserve some bytes at the beginning - * and at the end of each element, initialize them as 0xcd and check - * them later. */ -/* If MEMP_OVERFLOW_CHECK is >= 2, on every call to memp_malloc or memp_free, - * every single element in each pool is checked! - * This is VERY SLOW but also very helpful. */ -/* MEMP_SANITY_REGION_BEFORE and MEMP_SANITY_REGION_AFTER can be overridden in - * lwipopts.h to change the amount reserved for checking. */ -#ifndef MEMP_SANITY_REGION_BEFORE -#define MEMP_SANITY_REGION_BEFORE 16 -#endif /* MEMP_SANITY_REGION_BEFORE*/ -#if MEMP_SANITY_REGION_BEFORE > 0 -#define MEMP_SANITY_REGION_BEFORE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_BEFORE) -#else -#define MEMP_SANITY_REGION_BEFORE_ALIGNED 0 -#endif /* MEMP_SANITY_REGION_BEFORE*/ -#ifndef MEMP_SANITY_REGION_AFTER -#define MEMP_SANITY_REGION_AFTER 16 -#endif /* MEMP_SANITY_REGION_AFTER*/ -#if MEMP_SANITY_REGION_AFTER > 0 -#define MEMP_SANITY_REGION_AFTER_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_AFTER) -#else -#define MEMP_SANITY_REGION_AFTER_ALIGNED 0 -#endif /* MEMP_SANITY_REGION_AFTER*/ - -/* MEMP_SIZE: save space for struct memp and for sanity check */ -#define MEMP_SIZE (LWIP_MEM_ALIGN_SIZE(sizeof(struct memp)) + MEMP_SANITY_REGION_BEFORE_ALIGNED) -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x) + MEMP_SANITY_REGION_AFTER_ALIGNED) - -#else /* MEMP_OVERFLOW_CHECK */ - -/* No sanity checks - * We don't need to preserve the struct memp while not allocated, so we - * can save a little space and set MEMP_SIZE to 0. - */ -#define MEMP_SIZE 0 -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x)) - -#endif /* MEMP_OVERFLOW_CHECK */ - -/** This array holds the first free element of each pool. - * Elements form a linked list. */ -static struct memp *memp_tab[MEMP_MAX]; - -#else /* MEMP_MEM_MALLOC */ - -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x)) - -#endif /* MEMP_MEM_MALLOC */ - -/** This array holds the element sizes of each pool. */ -#if !MEM_USE_POOLS && !MEMP_MEM_MALLOC -static -#endif -const u16_t memp_sizes[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEM_ALIGN_SIZE(size), -#include "lwip/memp_std.h" -}; - -#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */ - -/** This array holds the number of elements in each pool. */ -static const u16_t memp_num[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) (num), -#include "lwip/memp_std.h" -}; - -/** This array holds a textual description of each pool. */ -#ifdef LWIP_DEBUG -static const char *memp_desc[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) (desc), -#include "lwip/memp_std.h" -}; -#endif /* LWIP_DEBUG */ - -#if MEMP_SEPARATE_POOLS - -/** This creates each memory pool. These are named memp_memory_XXX_base (where - * XXX is the name of the pool defined in memp_std.h). - * To relocate a pool, declare it as extern in cc.h. Example for GCC: - * extern u8_t __attribute__((section(".onchip_mem"))) memp_memory_UDP_PCB_base[]; - */ -#define LWIP_MEMPOOL(name,num,size,desc) u8_t memp_memory_ ## name ## _base \ - [((num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size)))]; -#include "lwip/memp_std.h" - -/** This array holds the base of each memory pool. */ -static u8_t *const memp_bases[] = { -#define LWIP_MEMPOOL(name,num,size,desc) memp_memory_ ## name ## _base, -#include "lwip/memp_std.h" -}; - -#else /* MEMP_SEPARATE_POOLS */ - -/** This is the actual memory used by the pools (all pools in one big block). */ -static u8_t memp_memory[MEM_ALIGNMENT - 1 -#define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) ) -#include "lwip/memp_std.h" -]; - -#endif /* MEMP_SEPARATE_POOLS */ - -#if MEMP_SANITY_CHECK -/** - * Check that memp-lists don't form a circle - */ -static int -memp_sanity(void) -{ - s16_t i, c; - struct memp *m, *n; - - for (i = 0; i < MEMP_MAX; i++) { - for (m = memp_tab[i]; m != NULL; m = m->next) { - c = 1; - for (n = memp_tab[i]; n != NULL; n = n->next) { - if (n == m && --c < 0) { - return 0; - } - } - } - } - return 1; -} -#endif /* MEMP_SANITY_CHECK*/ -#if MEMP_OVERFLOW_CHECK -#if defined(LWIP_DEBUG) && MEMP_STATS -static const char * memp_overflow_names[] = { -#define LWIP_MEMPOOL(name,num,size,desc) "/"desc, -#include "lwip/memp_std.h" - }; -#endif - -/** - * Check if a memp element was victim of an overflow - * (e.g. the restricted area after it has been altered) - * - * @param p the memp element to check - * @param memp_type the pool p comes from - */ -static void -memp_overflow_check_element_overflow(struct memp *p, u16_t memp_type) -{ - u16_t k; - u8_t *m; -#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE + memp_sizes[memp_type]; - for (k = 0; k < MEMP_SANITY_REGION_AFTER_ALIGNED; k++) { - if (m[k] != 0xcd) { - char errstr[128] = "detected memp overflow in pool "; - char digit[] = "0"; - if(memp_type >= 10) { - digit[0] = '0' + (memp_type/10); - strcat(errstr, digit); - } - digit[0] = '0' + (memp_type%10); - strcat(errstr, digit); -#if defined(LWIP_DEBUG) && MEMP_STATS - strcat(errstr, memp_overflow_names[memp_type]); -#endif - LWIP_ASSERT(errstr, 0); - } - } -#endif -} - -/** - * Check if a memp element was victim of an underflow - * (e.g. the restricted area before it has been altered) - * - * @param p the memp element to check - * @param memp_type the pool p comes from - */ -static void -memp_overflow_check_element_underflow(struct memp *p, u16_t memp_type) -{ - u16_t k; - u8_t *m; -#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED; - for (k = 0; k < MEMP_SANITY_REGION_BEFORE_ALIGNED; k++) { - if (m[k] != 0xcd) { - char errstr[128] = "detected memp underflow in pool "; - char digit[] = "0"; - if(memp_type >= 10) { - digit[0] = '0' + (memp_type/10); - strcat(errstr, digit); - } - digit[0] = '0' + (memp_type%10); - strcat(errstr, digit); -#if defined(LWIP_DEBUG) && MEMP_STATS - strcat(errstr, memp_overflow_names[memp_type]); -#endif - LWIP_ASSERT(errstr, 0); - } - } -#endif -} - -/** - * Do an overflow check for all elements in every pool. - * - * @see memp_overflow_check_element for a description of the check - */ -static void -memp_overflow_check_all(void) -{ - u16_t i, j; - struct memp *p; - - p = (struct memp *)LWIP_MEM_ALIGN(memp_memory); - for (i = 0; i < MEMP_MAX; ++i) { - p = p; - for (j = 0; j < memp_num[i]; ++j) { - memp_overflow_check_element_overflow(p, i); - p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED); - } - } - p = (struct memp *)LWIP_MEM_ALIGN(memp_memory); - for (i = 0; i < MEMP_MAX; ++i) { - p = p; - for (j = 0; j < memp_num[i]; ++j) { - memp_overflow_check_element_underflow(p, i); - p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED); - } - } -} - -/** - * Initialize the restricted areas of all memp elements in every pool. - */ -static void -memp_overflow_init(void) -{ - u16_t i, j; - struct memp *p; - u8_t *m; - - p = (struct memp *)LWIP_MEM_ALIGN(memp_memory); - for (i = 0; i < MEMP_MAX; ++i) { - p = p; - for (j = 0; j < memp_num[i]; ++j) { -#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED; - memset(m, 0xcd, MEMP_SANITY_REGION_BEFORE_ALIGNED); -#endif -#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE + memp_sizes[i]; - memset(m, 0xcd, MEMP_SANITY_REGION_AFTER_ALIGNED); -#endif - p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED); - } - } -} -#endif /* MEMP_OVERFLOW_CHECK */ - -/** - * Initialize this module. - * - * Carves out memp_memory into linked lists for each pool-type. - */ -void -memp_init(void) -{ - struct memp *memp; - u16_t i, j; - - for (i = 0; i < MEMP_MAX; ++i) { - MEMP_STATS_AVAIL(used, i, 0); - MEMP_STATS_AVAIL(max, i, 0); - MEMP_STATS_AVAIL(err, i, 0); - MEMP_STATS_AVAIL(avail, i, memp_num[i]); - } - -#if !MEMP_SEPARATE_POOLS - memp = (struct memp *)LWIP_MEM_ALIGN(memp_memory); -#endif /* !MEMP_SEPARATE_POOLS */ - /* for every pool: */ - for (i = 0; i < MEMP_MAX; ++i) { - memp_tab[i] = NULL; -#if MEMP_SEPARATE_POOLS - memp = (struct memp*)memp_bases[i]; -#endif /* MEMP_SEPARATE_POOLS */ - /* create a linked list of memp elements */ - for (j = 0; j < memp_num[i]; ++j) { - memp->next = memp_tab[i]; - memp_tab[i] = memp; - memp = (struct memp *)(void *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i] -#if MEMP_OVERFLOW_CHECK - + MEMP_SANITY_REGION_AFTER_ALIGNED -#endif - ); - } - } -#if MEMP_OVERFLOW_CHECK - memp_overflow_init(); - /* check everything a first time to see if it worked */ - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK */ -} - -/** - * Get an element from a specific pool. - * - * @param type the pool to get an element from - * - * the debug version has two more parameters: - * @param file file name calling this function - * @param line number of line where this function is called - * - * @return a pointer to the allocated memory or a NULL pointer on error - */ -void * -#if !MEMP_OVERFLOW_CHECK -memp_malloc(memp_t type) -#else -memp_malloc_fn(memp_t type, const char* file, const int line) -#endif -{ - struct memp *memp; - SYS_ARCH_DECL_PROTECT(old_level); - - LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); - - SYS_ARCH_PROTECT(old_level); -#if MEMP_OVERFLOW_CHECK >= 2 - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ - - memp = memp_tab[type]; - - if (memp != NULL) { - memp_tab[type] = memp->next; -#if MEMP_OVERFLOW_CHECK - memp->next = NULL; - memp->file = file; - memp->line = line; -#endif /* MEMP_OVERFLOW_CHECK */ - MEMP_STATS_INC_USED(used, type); - LWIP_ASSERT("memp_malloc: memp properly aligned", - ((mem_ptr_t)memp % MEM_ALIGNMENT) == 0); - memp = (struct memp*)(void *)((u8_t*)memp + MEMP_SIZE); - } else { - LWIP_DEBUGF(MEMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("memp_malloc: out of memory in pool %s\n", memp_desc[type])); - MEMP_STATS_INC(err, type); - } - - SYS_ARCH_UNPROTECT(old_level); - - return memp; -} - -/** - * Put an element back into its pool. - * - * @param type the pool where to put mem - * @param mem the memp element to free - */ -void -memp_free(memp_t type, void *mem) -{ - struct memp *memp; - SYS_ARCH_DECL_PROTECT(old_level); - - if (mem == NULL) { - return; - } - LWIP_ASSERT("memp_free: mem properly aligned", - ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0); - - memp = (struct memp *)(void *)((u8_t*)mem - MEMP_SIZE); - - SYS_ARCH_PROTECT(old_level); -#if MEMP_OVERFLOW_CHECK -#if MEMP_OVERFLOW_CHECK >= 2 - memp_overflow_check_all(); -#else - memp_overflow_check_element_overflow(memp, type); - memp_overflow_check_element_underflow(memp, type); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ -#endif /* MEMP_OVERFLOW_CHECK */ - - MEMP_STATS_DEC(used, type); - - memp->next = memp_tab[type]; - memp_tab[type] = memp; - -#if MEMP_SANITY_CHECK - LWIP_ASSERT("memp sanity", memp_sanity()); -#endif /* MEMP_SANITY_CHECK */ - - SYS_ARCH_UNPROTECT(old_level); -} - -#endif /* MEMP_MEM_MALLOC */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/netif.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/netif.c deleted file mode 100644 index 754f1112e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/netif.c +++ /dev/null @@ -1,858 +0,0 @@ -/** - * @file - * lwIP network interface abstraction - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/ip_addr.h" -#include "lwip/ip6_addr.h" -#include "lwip/netif.h" -#include "lwip/tcp_impl.h" -#include "lwip/snmp.h" -#include "lwip/igmp.h" -#include "netif/etharp.h" -#include "lwip/stats.h" -#if ENABLE_LOOPBACK -#include "lwip/sys.h" -#if LWIP_NETIF_LOOPBACK_MULTITHREADING -#include "lwip/tcpip.h" -#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#if LWIP_AUTOIP -#include "lwip/autoip.h" -#endif /* LWIP_AUTOIP */ -#if LWIP_DHCP -#include "lwip/dhcp.h" -#endif /* LWIP_DHCP */ -#if LWIP_IPV6_DHCP6 -#include "lwip/dhcp6.h" -#endif /* LWIP_IPV6_DHCP6 */ -#if LWIP_IPV6_MLD -#include "lwip/mld6.h" -#endif /* LWIP_IPV6_MLD */ - -#if LWIP_NETIF_STATUS_CALLBACK -#define NETIF_STATUS_CALLBACK(n) do{ if (n->status_callback) { (n->status_callback)(n); }}while(0) -#else -#define NETIF_STATUS_CALLBACK(n) -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -#define NETIF_LINK_CALLBACK(n) do{ if (n->link_callback) { (n->link_callback)(n); }}while(0) -#else -#define NETIF_LINK_CALLBACK(n) -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -struct netif *netif_list; -struct netif *netif_default; - -static u8_t netif_num; - -#if LWIP_HAVE_LOOPIF -static struct netif loop_netif; - -/** - * Initialize a lwip network interface structure for a loopback interface - * - * @param netif the lwip network interface structure for this loopif - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - */ -static err_t -netif_loopif_init(struct netif *netif) -{ - /* initialize the snmp variables and counters inside the struct netif - * ifSpeed: no assumption can be made! - */ - NETIF_INIT_SNMP(netif, snmp_ifType_softwareLoopback, 0); - - netif->name[0] = 'l'; - netif->name[1] = 'o'; - netif->output = netif_loop_output; - return ERR_OK; -} -#endif /* LWIP_HAVE_LOOPIF */ - -void -netif_init(void) -{ -#if LWIP_HAVE_LOOPIF - ip_addr_t loop_ipaddr, loop_netmask, loop_gw; - IP4_ADDR(&loop_gw, 127,0,0,1); - IP4_ADDR(&loop_ipaddr, 127,0,0,1); - IP4_ADDR(&loop_netmask, 255,0,0,0); - -#if NO_SYS - netif_add(&loop_netif, &loop_ipaddr, &loop_netmask, &loop_gw, NULL, netif_loopif_init, ip_input); -#else /* NO_SYS */ - netif_add(&loop_netif, &loop_ipaddr, &loop_netmask, &loop_gw, NULL, netif_loopif_init, tcpip_input); -#endif /* NO_SYS */ - netif_set_up(&loop_netif); - -#endif /* LWIP_HAVE_LOOPIF */ -} - -/** - * Add a network interface to the list of lwIP netifs. - * - * @param netif a pre-allocated netif structure - * @param ipaddr IP address for the new netif - * @param netmask network mask for the new netif - * @param gw default gateway IP address for the new netif - * @param state opaque data passed to the new netif - * @param init callback function that initializes the interface - * @param input callback function that is called to pass - * ingress packets up in the protocol layer stack. - * - * @return netif, or NULL if failed. - */ -struct netif * -netif_add(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, - ip_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input) -{ -#if LWIP_IPV6 - u32_t i; -#endif - - LWIP_ASSERT("No init function given", init != NULL); - - /* reset new interface configuration state */ - ip_addr_set_zero(&netif->ip_addr); - ip_addr_set_zero(&netif->netmask); - ip_addr_set_zero(&netif->gw); -#if LWIP_IPV6 - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - ip6_addr_set_zero(&netif->ip6_addr[i]); - netif_ip6_addr_set_state(netif, i, IP6_ADDR_INVALID); - } -#endif /* LWIP_IPV6 */ - netif->flags = 0; -#if LWIP_DHCP - /* netif not under DHCP control by default */ - netif->dhcp = NULL; -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - /* netif not under AutoIP control by default */ - netif->autoip = NULL; -#endif /* LWIP_AUTOIP */ -#if LWIP_IPV6_AUTOCONFIG - /* IPv6 address autoconfiguration not enabled by default */ - netif->ip6_autoconfig_enabled = 0; -#endif /* LWIP_IPV6_AUTOCONFIG */ -#if LWIP_IPV6_SEND_ROUTER_SOLICIT - netif->rs_count = LWIP_ND6_MAX_MULTICAST_SOLICIT; -#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ -#if LWIP_IPV6_DHCP6 - /* netif not under DHCPv6 control by default */ - netif->dhcp6 = NULL; -#endif /* LWIP_IPV6_DHCP6 */ -#if LWIP_NETIF_STATUS_CALLBACK - netif->status_callback = NULL; -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - netif->link_callback = NULL; -#endif /* LWIP_NETIF_LINK_CALLBACK */ -#if LWIP_IGMP - netif->igmp_mac_filter = NULL; -#endif /* LWIP_IGMP */ -#if LWIP_IPV6 && LWIP_IPV6_MLD - netif->mld_mac_filter = NULL; -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ -#if ENABLE_LOOPBACK - netif->loop_first = NULL; - netif->loop_last = NULL; -#endif /* ENABLE_LOOPBACK */ - - /* remember netif specific state information data */ - netif->state = state; - netif->num = netif_num++; - netif->input = input; - NETIF_SET_HWADDRHINT(netif, NULL); -#if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS - netif->loop_cnt_current = 0; -#endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */ - - netif_set_addr(netif, ipaddr, netmask, gw); - - /* call user specified initialization function for netif */ - if (init(netif) != ERR_OK) { - return NULL; - } - - /* add this netif to the list */ - netif->next = netif_list; - netif_list = netif; - snmp_inc_iflist(); - -#if LWIP_IGMP - /* start IGMP processing */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_start(netif); - } -#endif /* LWIP_IGMP */ - - LWIP_DEBUGF(NETIF_DEBUG, ("netif: added interface %c%c IP addr ", - netif->name[0], netif->name[1])); - ip_addr_debug_print(NETIF_DEBUG, ipaddr); - LWIP_DEBUGF(NETIF_DEBUG, (" netmask ")); - ip_addr_debug_print(NETIF_DEBUG, netmask); - LWIP_DEBUGF(NETIF_DEBUG, (" gw ")); - ip_addr_debug_print(NETIF_DEBUG, gw); - LWIP_DEBUGF(NETIF_DEBUG, ("\n")); - return netif; -} - -/** - * Change IP address configuration for a network interface (including netmask - * and default gateway). - * - * @param netif the network interface to change - * @param ipaddr the new IP address - * @param netmask the new netmask - * @param gw the new default gateway - */ -void -netif_set_addr(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, - ip_addr_t *gw) -{ - netif_set_ipaddr(netif, ipaddr); - netif_set_netmask(netif, netmask); - netif_set_gw(netif, gw); -} - -/** - * Remove a network interface from the list of lwIP netifs. - * - * @param netif the network interface to remove - */ -void -netif_remove(struct netif *netif) -{ - if (netif == NULL) { - return; - } - -#if LWIP_IGMP - /* stop IGMP processing */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_stop(netif); - } -#endif /* LWIP_IGMP */ -#if LWIP_IPV6 && LWIP_IPV6_MLD - /* stop MLD processing */ - mld6_stop(netif); -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ - if (netif_is_up(netif)) { - /* set netif down before removing (call callback function) */ - netif_set_down(netif); - } - - snmp_delete_ipaddridx_tree(netif); - - /* is it the first netif? */ - if (netif_list == netif) { - netif_list = netif->next; - } else { - /* look for netif further down the list */ - struct netif * tmpNetif; - for (tmpNetif = netif_list; tmpNetif != NULL; tmpNetif = tmpNetif->next) { - if (tmpNetif->next == netif) { - tmpNetif->next = netif->next; - break; - } - } - if (tmpNetif == NULL) - return; /* we didn't find any netif today */ - } - snmp_dec_iflist(); - /* this netif is default? */ - if (netif_default == netif) { - /* reset default netif */ - netif_set_default(NULL); - } - LWIP_DEBUGF( NETIF_DEBUG, ("netif_remove: removed netif\n") ); -} - -/** - * Find a network interface by searching for its name - * - * @param name the name of the netif (like netif->name) plus concatenated number - * in ascii representation (e.g. 'en0') - */ -struct netif * -netif_find(char *name) -{ - struct netif *netif; - u8_t num; - - if (name == NULL) { - return NULL; - } - - num = name[2] - '0'; - - for(netif = netif_list; netif != NULL; netif = netif->next) { - if (num == netif->num && - name[0] == netif->name[0] && - name[1] == netif->name[1]) { - LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: found %c%c\n", name[0], name[1])); - return netif; - } - } - LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: didn't find %c%c\n", name[0], name[1])); - return NULL; -} - -/** - * Change the IP address of a network interface - * - * @param netif the network interface to change - * @param ipaddr the new IP address - * - * @note call netif_set_addr() if you also want to change netmask and - * default gateway - */ -void -netif_set_ipaddr(struct netif *netif, ip_addr_t *ipaddr) -{ - /* TODO: Handling of obsolete pcbs */ - /* See: http://mail.gnu.org/archive/html/lwip-users/2003-03/msg00118.html */ -#if LWIP_TCP - struct tcp_pcb *pcb; - struct tcp_pcb_listen *lpcb; - - /* address is actually being changed? */ - if ((ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0) { - /* extern struct tcp_pcb *tcp_active_pcbs; defined by tcp.h */ - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n")); - pcb = tcp_active_pcbs; - while (pcb != NULL) { - /* PCB bound to current local interface address? */ - if (ip_addr_cmp(ipX_2_ip(&pcb->local_ip), &(netif->ip_addr)) -#if LWIP_AUTOIP - /* connections to link-local addresses must persist (RFC3927 ch. 1.9) */ - && !ip_addr_islinklocal(ipX_2_ip(&pcb->local_ip)) -#endif /* LWIP_AUTOIP */ - ) { - /* this connection must be aborted */ - struct tcp_pcb *next = pcb->next; - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb)); - tcp_abort(pcb); - pcb = next; - } else { - pcb = pcb->next; - } - } - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - /* PCB bound to current local interface address? */ - if ((!(ip_addr_isany(ipX_2_ip(&lpcb->local_ip)))) && - (ip_addr_cmp(ipX_2_ip(&lpcb->local_ip), &(netif->ip_addr)))) { - /* The PCB is listening to the old ipaddr and - * is set to listen to the new one instead */ - ip_addr_set(ipX_2_ip(&lpcb->local_ip), ipaddr); - } - } - } -#endif - snmp_delete_ipaddridx_tree(netif); - snmp_delete_iprteidx_tree(0,netif); - /* set new IP address to netif */ - ip_addr_set(&(netif->ip_addr), ipaddr); - snmp_insert_ipaddridx_tree(netif); - snmp_insert_iprteidx_tree(0,netif); - - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: IP address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1_16(&netif->ip_addr), - ip4_addr2_16(&netif->ip_addr), - ip4_addr3_16(&netif->ip_addr), - ip4_addr4_16(&netif->ip_addr))); -} - -/** - * Change the default gateway for a network interface - * - * @param netif the network interface to change - * @param gw the new default gateway - * - * @note call netif_set_addr() if you also want to change ip address and netmask - */ -void -netif_set_gw(struct netif *netif, ip_addr_t *gw) -{ - ip_addr_set(&(netif->gw), gw); - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: GW address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1_16(&netif->gw), - ip4_addr2_16(&netif->gw), - ip4_addr3_16(&netif->gw), - ip4_addr4_16(&netif->gw))); -} - -/** - * Change the netmask of a network interface - * - * @param netif the network interface to change - * @param netmask the new netmask - * - * @note call netif_set_addr() if you also want to change ip address and - * default gateway - */ -void -netif_set_netmask(struct netif *netif, ip_addr_t *netmask) -{ - snmp_delete_iprteidx_tree(0, netif); - /* set new netmask to netif */ - ip_addr_set(&(netif->netmask), netmask); - snmp_insert_iprteidx_tree(0, netif); - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: netmask of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1_16(&netif->netmask), - ip4_addr2_16(&netif->netmask), - ip4_addr3_16(&netif->netmask), - ip4_addr4_16(&netif->netmask))); -} - -/** - * Set a network interface as the default network interface - * (used to output all packets for which no specific route is found) - * - * @param netif the default network interface - */ -void -netif_set_default(struct netif *netif) -{ - if (netif == NULL) { - /* remove default route */ - snmp_delete_iprteidx_tree(1, netif); - } else { - /* install default route */ - snmp_insert_iprteidx_tree(1, netif); - } - netif_default = netif; - LWIP_DEBUGF(NETIF_DEBUG, ("netif: setting default interface %c%c\n", - netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\'')); -} - -/** - * Bring an interface up, available for processing - * traffic. - * - * @note: Enabling DHCP on a down interface will make it come - * up once configured. - * - * @see dhcp_start() - */ -void netif_set_up(struct netif *netif) -{ - if (!(netif->flags & NETIF_FLAG_UP)) { - netif->flags |= NETIF_FLAG_UP; - -#if LWIP_SNMP - snmp_get_sysuptime(&netif->ts); -#endif /* LWIP_SNMP */ - - NETIF_STATUS_CALLBACK(netif); - - if (netif->flags & NETIF_FLAG_LINK_UP) { -#if LWIP_ARP - /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ - if (netif->flags & (NETIF_FLAG_ETHARP)) { - etharp_gratuitous(netif); - } -#endif /* LWIP_ARP */ - -#if LWIP_IGMP - /* resend IGMP memberships */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_report_groups( netif); - } -#endif /* LWIP_IGMP */ -#if LWIP_IPV6 && LWIP_IPV6_MLD - /* send mld memberships */ - mld6_report_groups( netif); -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ - -#if LWIP_IPV6_SEND_ROUTER_SOLICIT - /* Send Router Solicitation messages. */ - netif->rs_count = LWIP_ND6_MAX_MULTICAST_SOLICIT; -#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ - - } - } -} - -/** - * Bring an interface down, disabling any traffic processing. - * - * @note: Enabling DHCP on a down interface will make it come - * up once configured. - * - * @see dhcp_start() - */ -void netif_set_down(struct netif *netif) -{ - if (netif->flags & NETIF_FLAG_UP) { - netif->flags &= ~NETIF_FLAG_UP; -#if LWIP_SNMP - snmp_get_sysuptime(&netif->ts); -#endif - - NETIF_STATUS_CALLBACK(netif); - } -} - -#if LWIP_NETIF_STATUS_CALLBACK -/** - * Set callback to be called when interface is brought up/down - */ -void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback) -{ - if (netif) { - netif->status_callback = status_callback; - } -} -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -/** - * Called by a driver when its link goes up - */ -void netif_set_link_up(struct netif *netif ) -{ - if (!(netif->flags & NETIF_FLAG_LINK_UP)) { - netif->flags |= NETIF_FLAG_LINK_UP; - -#if LWIP_DHCP - if (netif->dhcp) { - dhcp_network_changed(netif); - } -#endif /* LWIP_DHCP */ - -#if LWIP_AUTOIP - if (netif->autoip) { - autoip_network_changed(netif); - } -#endif /* LWIP_AUTOIP */ - - if (netif->flags & NETIF_FLAG_UP) { -#if LWIP_ARP - /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ - if (netif->flags & NETIF_FLAG_ETHARP) { - etharp_gratuitous(netif); - } -#endif /* LWIP_ARP */ - -#if LWIP_IGMP - /* resend IGMP memberships */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_report_groups( netif); - } -#endif /* LWIP_IGMP */ -#if LWIP_IPV6 && LWIP_IPV6_MLD - /* send mld memberships */ - mld6_report_groups( netif); -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ - } - NETIF_LINK_CALLBACK(netif); - } -} - -/** - * Called by a driver when its link goes down - */ -void netif_set_link_down(struct netif *netif ) -{ - if (netif->flags & NETIF_FLAG_LINK_UP) { - netif->flags &= ~NETIF_FLAG_LINK_UP; - NETIF_LINK_CALLBACK(netif); - } -} - -#if LWIP_NETIF_LINK_CALLBACK -/** - * Set callback to be called when link is brought up/down - */ -void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback) -{ - if (netif) { - netif->link_callback = link_callback; - } -} -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#if ENABLE_LOOPBACK -/** - * Send an IP packet to be received on the same netif (loopif-like). - * The pbuf is simply copied and handed back to netif->input. - * In multithreaded mode, this is done directly since netif->input must put - * the packet on a queue. - * In callback mode, the packet is put on an internal queue and is fed to - * netif->input by netif_poll(). - * - * @param netif the lwip network interface structure - * @param p the (IP) packet to 'send' - * @param ipaddr the ip address to send the packet to (not used) - * @return ERR_OK if the packet has been sent - * ERR_MEM if the pbuf used to copy the packet couldn't be allocated - */ -err_t -netif_loop_output(struct netif *netif, struct pbuf *p, - ip_addr_t *ipaddr) -{ - struct pbuf *r; - err_t err; - struct pbuf *last; -#if LWIP_LOOPBACK_MAX_PBUFS - u8_t clen = 0; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - /* If we have a loopif, SNMP counters are adjusted for it, - * if not they are adjusted for 'netif'. */ -#if LWIP_SNMP -#if LWIP_HAVE_LOOPIF - struct netif *stats_if = &loop_netif; -#else /* LWIP_HAVE_LOOPIF */ - struct netif *stats_if = netif; -#endif /* LWIP_HAVE_LOOPIF */ -#endif /* LWIP_SNMP */ - SYS_ARCH_DECL_PROTECT(lev); - LWIP_UNUSED_ARG(ipaddr); - - /* Allocate a new pbuf */ - r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM); - if (r == NULL) { - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(stats_if); - return ERR_MEM; - } -#if LWIP_LOOPBACK_MAX_PBUFS - clen = pbuf_clen(r); - /* check for overflow or too many pbuf on queue */ - if(((netif->loop_cnt_current + clen) < netif->loop_cnt_current) || - ((netif->loop_cnt_current + clen) > LWIP_LOOPBACK_MAX_PBUFS)) { - pbuf_free(r); - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(stats_if); - return ERR_MEM; - } - netif->loop_cnt_current += clen; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - - /* Copy the whole pbuf queue p into the single pbuf r */ - if ((err = pbuf_copy(r, p)) != ERR_OK) { - pbuf_free(r); - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(stats_if); - return err; - } - - /* Put the packet on a linked list which gets emptied through calling - netif_poll(). */ - - /* let last point to the last pbuf in chain r */ - for (last = r; last->next != NULL; last = last->next); - - SYS_ARCH_PROTECT(lev); - if(netif->loop_first != NULL) { - LWIP_ASSERT("if first != NULL, last must also be != NULL", netif->loop_last != NULL); - netif->loop_last->next = r; - netif->loop_last = last; - } else { - netif->loop_first = r; - netif->loop_last = last; - } - SYS_ARCH_UNPROTECT(lev); - - LINK_STATS_INC(link.xmit); - snmp_add_ifoutoctets(stats_if, p->tot_len); - snmp_inc_ifoutucastpkts(stats_if); - -#if LWIP_NETIF_LOOPBACK_MULTITHREADING - /* For multithreading environment, schedule a call to netif_poll */ - tcpip_callback((tcpip_callback_fn)netif_poll, netif); -#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */ - - return ERR_OK; -} - -/** - * Call netif_poll() in the main loop of your application. This is to prevent - * reentering non-reentrant functions like tcp_input(). Packets passed to - * netif_loop_output() are put on a list that is passed to netif->input() by - * netif_poll(). - */ -void -netif_poll(struct netif *netif) -{ - struct pbuf *in; - /* If we have a loopif, SNMP counters are adjusted for it, - * if not they are adjusted for 'netif'. */ -#if LWIP_SNMP -#if LWIP_HAVE_LOOPIF - struct netif *stats_if = &loop_netif; -#else /* LWIP_HAVE_LOOPIF */ - struct netif *stats_if = netif; -#endif /* LWIP_HAVE_LOOPIF */ -#endif /* LWIP_SNMP */ - SYS_ARCH_DECL_PROTECT(lev); - - do { - /* Get a packet from the list. With SYS_LIGHTWEIGHT_PROT=1, this is protected */ - SYS_ARCH_PROTECT(lev); - in = netif->loop_first; - if (in != NULL) { - struct pbuf *in_end = in; -#if LWIP_LOOPBACK_MAX_PBUFS - u8_t clen = pbuf_clen(in); - /* adjust the number of pbufs on queue */ - LWIP_ASSERT("netif->loop_cnt_current underflow", - ((netif->loop_cnt_current - clen) < netif->loop_cnt_current)); - netif->loop_cnt_current -= clen; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - while (in_end->len != in_end->tot_len) { - LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL); - in_end = in_end->next; - } - /* 'in_end' now points to the last pbuf from 'in' */ - if (in_end == netif->loop_last) { - /* this was the last pbuf in the list */ - netif->loop_first = netif->loop_last = NULL; - } else { - /* pop the pbuf off the list */ - netif->loop_first = in_end->next; - LWIP_ASSERT("should not be null since first != last!", netif->loop_first != NULL); - } - /* De-queue the pbuf from its successors on the 'loop_' list. */ - in_end->next = NULL; - } - SYS_ARCH_UNPROTECT(lev); - - if (in != NULL) { - LINK_STATS_INC(link.recv); - snmp_add_ifinoctets(stats_if, in->tot_len); - snmp_inc_ifinucastpkts(stats_if); - /* loopback packets are always IP packets! */ - if (ip_input(in, netif) != ERR_OK) { - pbuf_free(in); - } - /* Don't reference the packet any more! */ - in = NULL; - } - /* go on while there is a packet on the list */ - } while (netif->loop_first != NULL); -} - -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -/** - * Calls netif_poll() for every netif on the netif_list. - */ -void -netif_poll_all(void) -{ - struct netif *netif = netif_list; - /* loop through netifs */ - while (netif != NULL) { - netif_poll(netif); - /* proceed to next network interface */ - netif = netif->next; - } -} -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#if LWIP_IPV6 -s8_t -netif_matches_ip6_addr(struct netif * netif, ip6_addr_t * ip6addr) -{ - s8_t i; - for (i = 0; i < LWIP_IPV6_NUM_ADDRESSES; i++) { - if (ip6_addr_cmp(netif_ip6_addr(netif, i), ip6addr)) { - return i; - } - } - return -1; -} - -void -netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit) -{ - u8_t i, addr_index; - - /* Link-local prefix. */ - netif->ip6_addr[0].addr[0] = PP_HTONL(0xfe800000ul); - netif->ip6_addr[0].addr[1] = 0; - - /* Generate interface ID. */ - if (from_mac_48bit) { - /* Assume hwaddr is a 48-bit IEEE 802 MAC. Convert to EUI-64 address. Complement Group bit. */ - netif->ip6_addr[0].addr[2] = htonl((((u32_t)(netif->hwaddr[0] ^ 0x02)) << 24) | - ((u32_t)(netif->hwaddr[1]) << 16) | - ((u32_t)(netif->hwaddr[2]) << 8) | - (0xff)); - netif->ip6_addr[0].addr[3] = htonl((0xfeul << 24) | - ((u32_t)(netif->hwaddr[3]) << 16) | - ((u32_t)(netif->hwaddr[4]) << 8) | - (netif->hwaddr[5])); - } - else { - /* Use hwaddr directly as interface ID. */ - netif->ip6_addr[0].addr[2] = 0; - netif->ip6_addr[0].addr[3] = 0; - - addr_index = 3; - for (i = 0; i < 8; i++) { - if (i == 4) { - addr_index--; - } - netif->ip6_addr[0].addr[addr_index] |= ((u32_t)(netif->hwaddr[netif->hwaddr_len - i - 1])) << (8 * (i & 0x03)); - } - } - - /* Set address state. */ -#if LWIP_IPV6_DUP_DETECT_ATTEMPTS - /* Will perform duplicate address detection (DAD). */ - netif->ip6_addr_state[0] = IP6_ADDR_TENTATIVE; -#else - /* Consider address valid. */ - netif->ip6_addr_state[0] = IP6_ADDR_PREFERRED; -#endif /* LWIP_IPV6_AUTOCONFIG */ -} -#endif /* LWIP_IPV6 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/pbuf.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/pbuf.c deleted file mode 100644 index 6c45dbf2b..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/pbuf.c +++ /dev/null @@ -1,1178 +0,0 @@ -/** - * @file - * Packet buffer management - * - * Packets are built from the pbuf data structure. It supports dynamic - * memory allocation for packet contents or can reference externally - * managed packet contents both in RAM and ROM. Quick allocation for - * incoming packets is provided through pools with fixed sized pbufs. - * - * A packet may span over multiple pbufs, chained as a singly linked - * list. This is called a "pbuf chain". - * - * Multiple packets may be queued, also using this singly linked list. - * This is called a "packet queue". - * - * So, a packet queue consists of one or more pbuf chains, each of - * which consist of one or more pbufs. CURRENTLY, PACKET QUEUES ARE - * NOT SUPPORTED!!! Use helper structs to queue multiple packets. - * - * The differences between a pbuf chain and a packet queue are very - * precise but subtle. - * - * The last pbuf of a packet has a ->tot_len field that equals the - * ->len field. It can be found by traversing the list. If the last - * pbuf of a packet has a ->next field other than NULL, more packets - * are on the queue. - * - * Therefore, looping through a pbuf of a single packet, has an - * loop end condition (tot_len == p->len), NOT (next == NULL). - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/stats.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/sys.h" -#include "arch/perf.h" -#if TCP_QUEUE_OOSEQ -#include "lwip/tcp_impl.h" -#endif -#if LWIP_CHECKSUM_ON_COPY -#include "lwip/inet_chksum.h" -#endif - -#include - -#define SIZEOF_STRUCT_PBUF LWIP_MEM_ALIGN_SIZE(sizeof(struct pbuf)) -/* Since the pool is created in memp, PBUF_POOL_BUFSIZE will be automatically - aligned there. Therefore, PBUF_POOL_BUFSIZE_ALIGNED can be used here. */ -#define PBUF_POOL_BUFSIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE) - -#if !LWIP_TCP || !TCP_QUEUE_OOSEQ || !PBUF_POOL_FREE_OOSEQ -#define PBUF_POOL_IS_EMPTY() -#else /* !LWIP_TCP || !TCP_QUEUE_OOSEQ || !PBUF_POOL_FREE_OOSEQ */ - -#if !NO_SYS -#ifndef PBUF_POOL_FREE_OOSEQ_QUEUE_CALL -#include "lwip/tcpip.h" -#define PBUF_POOL_FREE_OOSEQ_QUEUE_CALL() do { \ - if(tcpip_callback_with_block(pbuf_free_ooseq_callback, NULL, 0) != ERR_OK) { \ - SYS_ARCH_PROTECT(old_level); \ - pbuf_free_ooseq_pending = 0; \ - SYS_ARCH_UNPROTECT(old_level); \ - } } while(0) -#endif /* PBUF_POOL_FREE_OOSEQ_QUEUE_CALL */ -#endif /* !NO_SYS */ - -volatile u8_t pbuf_free_ooseq_pending; -#define PBUF_POOL_IS_EMPTY() pbuf_pool_is_empty() - -/** - * Attempt to reclaim some memory from queued out-of-sequence TCP segments - * if we run out of pool pbufs. It's better to give priority to new packets - * if we're running out. - * - * This must be done in the correct thread context therefore this function - * can only be used with NO_SYS=0 and through tcpip_callback. - */ -#if !NO_SYS -static -#endif /* !NO_SYS */ -void -pbuf_free_ooseq(void) -{ - struct tcp_pcb* pcb; - SYS_ARCH_DECL_PROTECT(old_level); - - SYS_ARCH_PROTECT(old_level); - pbuf_free_ooseq_pending = 0; - SYS_ARCH_UNPROTECT(old_level); - - for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) { - if (NULL != pcb->ooseq) { - /** Free the ooseq pbufs of one PCB only */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free_ooseq: freeing out-of-sequence pbufs\n")); - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; - return; - } - } -} - -#if !NO_SYS -/** - * Just a callback function for tcpip_timeout() that calls pbuf_free_ooseq(). - */ -static void -pbuf_free_ooseq_callback(void *arg) -{ - LWIP_UNUSED_ARG(arg); - pbuf_free_ooseq(); -} -#endif /* !NO_SYS */ - -/** Queue a call to pbuf_free_ooseq if not already queued. */ -static void -pbuf_pool_is_empty(void) -{ -#ifndef PBUF_POOL_FREE_OOSEQ_QUEUE_CALL - SYS_ARCH_DECL_PROTECT(old_level); - SYS_ARCH_PROTECT(old_level); - pbuf_free_ooseq_pending = 1; - SYS_ARCH_UNPROTECT(old_level); -#else /* PBUF_POOL_FREE_OOSEQ_QUEUE_CALL */ - u8_t queued; - SYS_ARCH_DECL_PROTECT(old_level); - SYS_ARCH_PROTECT(old_level); - queued = pbuf_free_ooseq_pending; - pbuf_free_ooseq_pending = 1; - SYS_ARCH_UNPROTECT(old_level); - - if(!queued) { - /* queue a call to pbuf_free_ooseq if not already queued */ - PBUF_POOL_FREE_OOSEQ_QUEUE_CALL(); - } -#endif /* PBUF_POOL_FREE_OOSEQ_QUEUE_CALL */ -} -#endif /* !LWIP_TCP || !TCP_QUEUE_OOSEQ || !PBUF_POOL_FREE_OOSEQ */ - -/** - * Allocates a pbuf of the given type (possibly a chain for PBUF_POOL type). - * - * The actual memory allocated for the pbuf is determined by the - * layer at which the pbuf is allocated and the requested size - * (from the size parameter). - * - * @param layer flag to define header size - * @param length size of the pbuf's payload - * @param type this parameter decides how and where the pbuf - * should be allocated as follows: - * - * - PBUF_RAM: buffer memory for pbuf is allocated as one large - * chunk. This includes protocol headers as well. - * - PBUF_ROM: no buffer memory is allocated for the pbuf, even for - * protocol headers. Additional headers must be prepended - * by allocating another pbuf and chain in to the front of - * the ROM pbuf. It is assumed that the memory used is really - * similar to ROM in that it is immutable and will not be - * changed. Memory which is dynamic should generally not - * be attached to PBUF_ROM pbufs. Use PBUF_REF instead. - * - PBUF_REF: no buffer memory is allocated for the pbuf, even for - * protocol headers. It is assumed that the pbuf is only - * being used in a single thread. If the pbuf gets queued, - * then pbuf_take should be called to copy the buffer. - * - PBUF_POOL: the pbuf is allocated as a pbuf chain, with pbufs from - * the pbuf pool that is allocated during pbuf_init(). - * - * @return the allocated pbuf. If multiple pbufs where allocated, this - * is the first pbuf of a pbuf chain. - */ -struct pbuf * -pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type) -{ - struct pbuf *p, *q, *r; - u16_t offset; - s32_t rem_len; /* remaining length */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length)); - - /* determine header offset */ - switch (layer) { - case PBUF_TRANSPORT: - /* add room for transport (often TCP) layer header */ - offset = PBUF_LINK_HLEN + PBUF_IP_HLEN + PBUF_TRANSPORT_HLEN; - break; - case PBUF_IP: - /* add room for IP layer header */ - offset = PBUF_LINK_HLEN + PBUF_IP_HLEN; - break; - case PBUF_LINK: - /* add room for link layer header */ - offset = PBUF_LINK_HLEN; - break; - case PBUF_RAW: - offset = 0; - break; - default: - LWIP_ASSERT("pbuf_alloc: bad pbuf layer", 0); - return NULL; - } - - switch (type) { - case PBUF_POOL: - /* allocate head of pbuf chain into p */ - p = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc: allocated pbuf %p\n", (void *)p)); - if (p == NULL) { - PBUF_POOL_IS_EMPTY(); - return NULL; - } - p->type = type; - p->next = NULL; - - /* make the payload pointer point 'offset' bytes into pbuf data memory */ - p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset))); - LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned", - ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); - /* the total length of the pbuf chain is the requested size */ - p->tot_len = length; - /* set the length of the first pbuf in the chain */ - p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)); - LWIP_ASSERT("check p->payload + p->len does not overflow pbuf", - ((u8_t*)p->payload + p->len <= - (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED)); - LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT", - (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 ); - /* set reference count (needed here in case we fail) */ - p->ref = 1; - - /* now allocate the tail of the pbuf chain */ - - /* remember first pbuf for linkage in next iteration */ - r = p; - /* remaining length to be allocated */ - rem_len = length - p->len; - /* any remaining pbufs to be allocated? */ - while (rem_len > 0) { - q = (struct pbuf *)memp_malloc(MEMP_PBUF_POOL); - if (q == NULL) { - PBUF_POOL_IS_EMPTY(); - /* free chain so far allocated */ - pbuf_free(p); - /* bail out unsuccesfully */ - return NULL; - } - q->type = type; - q->flags = 0; - q->next = NULL; - /* make previous pbuf point to this pbuf */ - r->next = q; - /* set total length of this pbuf and next in chain */ - LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff); - q->tot_len = (u16_t)rem_len; - /* this pbuf length is pool size, unless smaller sized tail */ - q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED); - q->payload = (void *)((u8_t *)q + SIZEOF_STRUCT_PBUF); - LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned", - ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0); - LWIP_ASSERT("check p->payload + p->len does not overflow pbuf", - ((u8_t*)p->payload + p->len <= - (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED)); - q->ref = 1; - /* calculate remaining length to be allocated */ - rem_len -= q->len; - /* remember this pbuf for linkage in next iteration */ - r = q; - } - /* end of chain */ - /*r->next = NULL;*/ - - break; - case PBUF_RAM: - /* If pbuf is to be allocated in RAM, allocate memory for it. */ - p = (struct pbuf*)mem_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length)); - if (p == NULL) { - return NULL; - } - /* Set up internal structure of the pbuf. */ - p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)); - p->len = p->tot_len = length; - p->next = NULL; - p->type = type; - - LWIP_ASSERT("pbuf_alloc: pbuf->payload properly aligned", - ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); - break; - /* pbuf references existing (non-volatile static constant) ROM payload? */ - case PBUF_ROM: - /* pbuf references existing (externally allocated) RAM payload? */ - case PBUF_REF: - /* only allocate memory for the pbuf structure */ - p = (struct pbuf *)memp_malloc(MEMP_PBUF); - if (p == NULL) { - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_alloc: Could not allocate MEMP_PBUF for PBUF_%s.\n", - (type == PBUF_ROM) ? "ROM" : "REF")); - return NULL; - } - /* caller must set this field properly, afterwards */ - p->payload = NULL; - p->len = p->tot_len = length; - p->next = NULL; - p->type = type; - break; - default: - LWIP_ASSERT("pbuf_alloc: erroneous type", 0); - return NULL; - } - /* set reference count */ - p->ref = 1; - /* set flags */ - p->flags = 0; - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p)); - return p; -} - -#if LWIP_SUPPORT_CUSTOM_PBUF -/** Initialize a custom pbuf (already allocated). - * - * @param layer flag to define header size - * @param length size of the pbuf's payload - * @param type type of the pbuf (only used to treat the pbuf accordingly, as - * this function allocates no memory) - * @param p pointer to the custom pbuf to initialize (already allocated) - * @param payload_mem pointer to the buffer that is used for payload and headers, - * must be at least big enough to hold 'length' plus the header size, - * may be NULL if set later - * @param payload_mem_len the size of the 'payload_mem' buffer, must be at least - * big enough to hold 'length' plus the header size - */ -struct pbuf* -pbuf_alloced_custom(pbuf_layer l, u16_t length, pbuf_type type, struct pbuf_custom *p, - void *payload_mem, u16_t payload_mem_len) -{ - u16_t offset; - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloced_custom(length=%"U16_F")\n", length)); - - /* determine header offset */ - switch (l) { - case PBUF_TRANSPORT: - /* add room for transport (often TCP) layer header */ - offset = PBUF_LINK_HLEN + PBUF_IP_HLEN + PBUF_TRANSPORT_HLEN; - break; - case PBUF_IP: - /* add room for IP layer header */ - offset = PBUF_LINK_HLEN + PBUF_IP_HLEN; - break; - case PBUF_LINK: - /* add room for link layer header */ - offset = PBUF_LINK_HLEN; - break; - case PBUF_RAW: - offset = 0; - break; - default: - LWIP_ASSERT("pbuf_alloced_custom: bad pbuf layer", 0); - return NULL; - } - - if (LWIP_MEM_ALIGN_SIZE(offset) + length < payload_mem_len) { - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_WARNING, ("pbuf_alloced_custom(length=%"U16_F") buffer too short\n", length)); - return NULL; - } - - p->pbuf.next = NULL; - if (payload_mem != NULL) { - p->pbuf.payload = LWIP_MEM_ALIGN((void *)((u8_t *)payload_mem + offset)); - } else { - p->pbuf.payload = NULL; - } - p->pbuf.flags = PBUF_FLAG_IS_CUSTOM; - p->pbuf.len = p->pbuf.tot_len = length; - p->pbuf.type = type; - p->pbuf.ref = 1; - return &p->pbuf; -} -#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ - -/** - * Shrink a pbuf chain to a desired length. - * - * @param p pbuf to shrink. - * @param new_len desired new length of pbuf chain - * - * Depending on the desired length, the first few pbufs in a chain might - * be skipped and left unchanged. The new last pbuf in the chain will be - * resized, and any remaining pbufs will be freed. - * - * @note If the pbuf is ROM/REF, only the ->tot_len and ->len fields are adjusted. - * @note May not be called on a packet queue. - * - * @note Despite its name, pbuf_realloc cannot grow the size of a pbuf (chain). - */ -void -pbuf_realloc(struct pbuf *p, u16_t new_len) -{ - struct pbuf *q; - u16_t rem_len; /* remaining length */ - s32_t grow; - - LWIP_ASSERT("pbuf_realloc: p != NULL", p != NULL); - LWIP_ASSERT("pbuf_realloc: sane p->type", p->type == PBUF_POOL || - p->type == PBUF_ROM || - p->type == PBUF_RAM || - p->type == PBUF_REF); - - /* desired length larger than current length? */ - if (new_len >= p->tot_len) { - /* enlarging not yet supported */ - return; - } - - /* the pbuf chain grows by (new_len - p->tot_len) bytes - * (which may be negative in case of shrinking) */ - grow = new_len - p->tot_len; - - /* first, step over any pbufs that should remain in the chain */ - rem_len = new_len; - q = p; - /* should this pbuf be kept? */ - while (rem_len > q->len) { - /* decrease remaining length by pbuf length */ - rem_len -= q->len; - /* decrease total length indicator */ - LWIP_ASSERT("grow < max_u16_t", grow < 0xffff); - q->tot_len += (u16_t)grow; - /* proceed to next pbuf in chain */ - q = q->next; - LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL); - } - /* we have now reached the new last pbuf (in q) */ - /* rem_len == desired length for pbuf q */ - - /* shrink allocated memory for PBUF_RAM */ - /* (other types merely adjust their length fields */ - if ((q->type == PBUF_RAM) && (rem_len != q->len)) { - /* reallocate and adjust the length of the pbuf that will be split */ - q = (struct pbuf *)mem_trim(q, (u16_t)((u8_t *)q->payload - (u8_t *)q) + rem_len); - LWIP_ASSERT("mem_trim returned q == NULL", q != NULL); - } - /* adjust length fields for new last pbuf */ - q->len = rem_len; - q->tot_len = q->len; - - /* any remaining pbufs in chain? */ - if (q->next != NULL) { - /* free remaining pbufs in chain */ - pbuf_free(q->next); - } - /* q is last packet in chain */ - q->next = NULL; - -} - -/** - * Adjusts the payload pointer to hide or reveal headers in the payload. - * - * Adjusts the ->payload pointer so that space for a header - * (dis)appears in the pbuf payload. - * - * The ->payload, ->tot_len and ->len fields are adjusted. - * - * @param p pbuf to change the header size. - * @param header_size_increment Number of bytes to increment header size which - * increases the size of the pbuf. New space is on the front. - * (Using a negative value decreases the header size.) - * If hdr_size_inc is 0, this function does nothing and returns succesful. - * - * PBUF_ROM and PBUF_REF type buffers cannot have their sizes increased, so - * the call will fail. A check is made that the increase in header size does - * not move the payload pointer in front of the start of the buffer. - * @return non-zero on failure, zero on success. - * - */ -u8_t -pbuf_header(struct pbuf *p, s16_t header_size_increment) -{ - u16_t type; - void *payload; - u16_t increment_magnitude; - - LWIP_ASSERT("p != NULL", p != NULL); - if ((header_size_increment == 0) || (p == NULL)) { - return 0; - } - - if (header_size_increment < 0){ - increment_magnitude = -header_size_increment; - /* Check that we aren't going to move off the end of the pbuf */ - LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); - } else { - increment_magnitude = header_size_increment; -#if 0 - /* Can't assert these as some callers speculatively call - pbuf_header() to see if it's OK. Will return 1 below instead. */ - /* Check that we've got the correct type of pbuf to work with */ - LWIP_ASSERT("p->type == PBUF_RAM || p->type == PBUF_POOL", - p->type == PBUF_RAM || p->type == PBUF_POOL); - /* Check that we aren't going to move off the beginning of the pbuf */ - LWIP_ASSERT("p->payload - increment_magnitude >= p + SIZEOF_STRUCT_PBUF", - (u8_t *)p->payload - increment_magnitude >= (u8_t *)p + SIZEOF_STRUCT_PBUF); -#endif - } - - type = p->type; - /* remember current payload pointer */ - payload = p->payload; - - /* pbuf types containing payloads? */ - if (type == PBUF_RAM || type == PBUF_POOL) { - /* set new payload pointer */ - p->payload = (u8_t *)p->payload - header_size_increment; - /* boundary check fails? */ - if ((u8_t *)p->payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) { - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_header: failed as %p < %p (not enough space for new header size)\n", - (void *)p->payload, (void *)(p + 1))); - /* restore old payload pointer */ - p->payload = payload; - /* bail out unsuccesfully */ - return 1; - } - /* pbuf types refering to external payloads? */ - } else if (type == PBUF_REF || type == PBUF_ROM) { - /* hide a header in the payload? */ - if ((header_size_increment < 0) && (increment_magnitude <= p->len)) { - /* increase payload pointer */ - p->payload = (u8_t *)p->payload - header_size_increment; - } else { - /* cannot expand payload to front (yet!) - * bail out unsuccesfully */ - return 1; - } - } else { - /* Unknown type */ - LWIP_ASSERT("bad pbuf type", 0); - return 1; - } - /* modify pbuf length fields */ - p->len += header_size_increment; - p->tot_len += header_size_increment; - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_header: old %p new %p (%"S16_F")\n", - (void *)payload, (void *)p->payload, header_size_increment)); - - return 0; -} - -/** - * Dereference a pbuf chain or queue and deallocate any no-longer-used - * pbufs at the head of this chain or queue. - * - * Decrements the pbuf reference count. If it reaches zero, the pbuf is - * deallocated. - * - * For a pbuf chain, this is repeated for each pbuf in the chain, - * up to the first pbuf which has a non-zero reference count after - * decrementing. So, when all reference counts are one, the whole - * chain is free'd. - * - * @param p The pbuf (chain) to be dereferenced. - * - * @return the number of pbufs that were de-allocated - * from the head of the chain. - * - * @note MUST NOT be called on a packet queue (Not verified to work yet). - * @note the reference counter of a pbuf equals the number of pointers - * that refer to the pbuf (or into the pbuf). - * - * @internal examples: - * - * Assuming existing chains a->b->c with the following reference - * counts, calling pbuf_free(a) results in: - * - * 1->2->3 becomes ...1->3 - * 3->3->3 becomes 2->3->3 - * 1->1->2 becomes ......1 - * 2->1->1 becomes 1->1->1 - * 1->1->1 becomes ....... - * - */ -u8_t -pbuf_free(struct pbuf *p) -{ - u16_t type; - struct pbuf *q; - u8_t count; - - if (p == NULL) { - LWIP_ASSERT("p != NULL", p != NULL); - /* if assertions are disabled, proceed with debug output */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_free(p == NULL) was called.\n")); - return 0; - } - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free(%p)\n", (void *)p)); - - PERF_START; - - LWIP_ASSERT("pbuf_free: sane type", - p->type == PBUF_RAM || p->type == PBUF_ROM || - p->type == PBUF_REF || p->type == PBUF_POOL); - - count = 0; - /* de-allocate all consecutive pbufs from the head of the chain that - * obtain a zero reference count after decrementing*/ - while (p != NULL) { - u16_t ref; - SYS_ARCH_DECL_PROTECT(old_level); - /* Since decrementing ref cannot be guaranteed to be a single machine operation - * we must protect it. We put the new ref into a local variable to prevent - * further protection. */ - SYS_ARCH_PROTECT(old_level); - /* all pbufs in a chain are referenced at least once */ - LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0); - /* decrease reference count (number of pointers to pbuf) */ - ref = --(p->ref); - SYS_ARCH_UNPROTECT(old_level); - /* this pbuf is no longer referenced to? */ - if (ref == 0) { - /* remember next pbuf in chain for next iteration */ - q = p->next; - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: deallocating %p\n", (void *)p)); - type = p->type; -#if LWIP_SUPPORT_CUSTOM_PBUF - /* is this a custom pbuf? */ - if ((p->flags & PBUF_FLAG_IS_CUSTOM) != 0) { - struct pbuf_custom *pc = (struct pbuf_custom*)p; - LWIP_ASSERT("pc->custom_free_function != NULL", pc->custom_free_function != NULL); - pc->custom_free_function(p); - } else -#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ - { - /* is this a pbuf from the pool? */ - if (type == PBUF_POOL) { - memp_free(MEMP_PBUF_POOL, p); - /* is this a ROM or RAM referencing pbuf? */ - } else if (type == PBUF_ROM || type == PBUF_REF) { - memp_free(MEMP_PBUF, p); - /* type == PBUF_RAM */ - } else { - mem_free(p); - } - } - count++; - /* proceed to next pbuf */ - p = q; - /* p->ref > 0, this pbuf is still referenced to */ - /* (and so the remaining pbufs in chain as well) */ - } else { - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: %p has ref %"U16_F", ending here.\n", (void *)p, ref)); - /* stop walking through the chain */ - p = NULL; - } - } - PERF_STOP("pbuf_free"); - /* return number of de-allocated pbufs */ - return count; -} - -/** - * Count number of pbufs in a chain - * - * @param p first pbuf of chain - * @return the number of pbufs in a chain - */ - -u8_t -pbuf_clen(struct pbuf *p) -{ - u8_t len; - - len = 0; - while (p != NULL) { - ++len; - p = p->next; - } - return len; -} - -/** - * Increment the reference count of the pbuf. - * - * @param p pbuf to increase reference counter of - * - */ -void -pbuf_ref(struct pbuf *p) -{ - SYS_ARCH_DECL_PROTECT(old_level); - /* pbuf given? */ - if (p != NULL) { - SYS_ARCH_PROTECT(old_level); - ++(p->ref); - SYS_ARCH_UNPROTECT(old_level); - } -} - -/** - * Concatenate two pbufs (each may be a pbuf chain) and take over - * the caller's reference of the tail pbuf. - * - * @note The caller MAY NOT reference the tail pbuf afterwards. - * Use pbuf_chain() for that purpose. - * - * @see pbuf_chain() - */ - -void -pbuf_cat(struct pbuf *h, struct pbuf *t) -{ - struct pbuf *p; - - LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)", - ((h != NULL) && (t != NULL)), return;); - - /* proceed to last pbuf of chain */ - for (p = h; p->next != NULL; p = p->next) { - /* add total length of second chain to all totals of first chain */ - p->tot_len += t->tot_len; - } - /* { p is last pbuf of first h chain, p->next == NULL } */ - LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len); - LWIP_ASSERT("p->next == NULL", p->next == NULL); - /* add total length of second chain to last pbuf total of first chain */ - p->tot_len += t->tot_len; - /* chain last pbuf of head (p) with first of tail (t) */ - p->next = t; - /* p->next now references t, but the caller will drop its reference to t, - * so netto there is no change to the reference count of t. - */ -} - -/** - * Chain two pbufs (or pbuf chains) together. - * - * The caller MUST call pbuf_free(t) once it has stopped - * using it. Use pbuf_cat() instead if you no longer use t. - * - * @param h head pbuf (chain) - * @param t tail pbuf (chain) - * @note The pbufs MUST belong to the same packet. - * @note MAY NOT be called on a packet queue. - * - * The ->tot_len fields of all pbufs of the head chain are adjusted. - * The ->next field of the last pbuf of the head chain is adjusted. - * The ->ref field of the first pbuf of the tail chain is adjusted. - * - */ -void -pbuf_chain(struct pbuf *h, struct pbuf *t) -{ - pbuf_cat(h, t); - /* t is now referenced by h */ - pbuf_ref(t); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_chain: %p references %p\n", (void *)h, (void *)t)); -} - -/** - * Dechains the first pbuf from its succeeding pbufs in the chain. - * - * Makes p->tot_len field equal to p->len. - * @param p pbuf to dechain - * @return remainder of the pbuf chain, or NULL if it was de-allocated. - * @note May not be called on a packet queue. - */ -struct pbuf * -pbuf_dechain(struct pbuf *p) -{ - struct pbuf *q; - u8_t tail_gone = 1; - /* tail */ - q = p->next; - /* pbuf has successor in chain? */ - if (q != NULL) { - /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */ - LWIP_ASSERT("p->tot_len == p->len + q->tot_len", q->tot_len == p->tot_len - p->len); - /* enforce invariant if assertion is disabled */ - q->tot_len = p->tot_len - p->len; - /* decouple pbuf from remainder */ - p->next = NULL; - /* total length of pbuf p is its own length only */ - p->tot_len = p->len; - /* q is no longer referenced by p, free it */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_dechain: unreferencing %p\n", (void *)q)); - tail_gone = pbuf_free(q); - if (tail_gone > 0) { - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, - ("pbuf_dechain: deallocated %p (as it is no longer referenced)\n", (void *)q)); - } - /* return remaining tail or NULL if deallocated */ - } - /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */ - LWIP_ASSERT("p->tot_len == p->len", p->tot_len == p->len); - return ((tail_gone > 0) ? NULL : q); -} - -/** - * - * Create PBUF_RAM copies of pbufs. - * - * Used to queue packets on behalf of the lwIP stack, such as - * ARP based queueing. - * - * @note You MUST explicitly use p = pbuf_take(p); - * - * @note Only one packet is copied, no packet queue! - * - * @param p_to pbuf destination of the copy - * @param p_from pbuf source of the copy - * - * @return ERR_OK if pbuf was copied - * ERR_ARG if one of the pbufs is NULL or p_to is not big - * enough to hold p_from - */ -err_t -pbuf_copy(struct pbuf *p_to, struct pbuf *p_from) -{ - u16_t offset_to=0, offset_from=0, len; - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy(%p, %p)\n", - (void*)p_to, (void*)p_from)); - - /* is the target big enough to hold the source? */ - LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) && - (p_from != NULL) && (p_to->tot_len >= p_from->tot_len)), return ERR_ARG;); - - /* iterate through pbuf chain */ - do - { - LWIP_ASSERT("p_to != NULL", p_to != NULL); - /* copy one part of the original chain */ - if ((p_to->len - offset_to) >= (p_from->len - offset_from)) { - /* complete current p_from fits into current p_to */ - len = p_from->len - offset_from; - } else { - /* current p_from does not fit into current p_to */ - len = p_to->len - offset_to; - } - MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len); - offset_to += len; - offset_from += len; - LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len); - if (offset_to == p_to->len) { - /* on to next p_to (if any) */ - offset_to = 0; - p_to = p_to->next; - } - LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len); - if (offset_from >= p_from->len) { - /* on to next p_from (if any) */ - offset_from = 0; - p_from = p_from->next; - } - - if((p_from != NULL) && (p_from->len == p_from->tot_len)) { - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", - (p_from->next == NULL), return ERR_VAL;); - } - if((p_to != NULL) && (p_to->len == p_to->tot_len)) { - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", - (p_to->next == NULL), return ERR_VAL;); - } - } while (p_from); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n")); - return ERR_OK; -} - -/** - * Copy (part of) the contents of a packet buffer - * to an application supplied buffer. - * - * @param buf the pbuf from which to copy data - * @param dataptr the application supplied buffer - * @param len length of data to copy (dataptr must be big enough). No more - * than buf->tot_len will be copied, irrespective of len - * @param offset offset into the packet buffer from where to begin copying len bytes - * @return the number of bytes copied, or 0 on failure - */ -u16_t -pbuf_copy_partial(struct pbuf *buf, void *dataptr, u16_t len, u16_t offset) -{ - struct pbuf *p; - u16_t left; - u16_t buf_copy_len; - u16_t copied_total = 0; - - LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;); - LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;); - - left = 0; - - if((buf == NULL) || (dataptr == NULL)) { - return 0; - } - - /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ - for(p = buf; len != 0 && p != NULL; p = p->next) { - if ((offset != 0) && (offset >= p->len)) { - /* don't copy from this buffer -> on to the next */ - offset -= p->len; - } else { - /* copy from this buffer. maybe only partially. */ - buf_copy_len = p->len - offset; - if (buf_copy_len > len) - buf_copy_len = len; - /* copy the necessary parts of the buffer */ - MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len); - copied_total += buf_copy_len; - left += buf_copy_len; - len -= buf_copy_len; - offset = 0; - } - } - return copied_total; -} - -/** - * Copy application supplied data into a pbuf. - * This function can only be used to copy the equivalent of buf->tot_len data. - * - * @param buf pbuf to fill with data - * @param dataptr application supplied data buffer - * @param len length of the application supplied data buffer - * - * @return ERR_OK if successful, ERR_MEM if the pbuf is not big enough - */ -err_t -pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len) -{ - struct pbuf *p; - u16_t buf_copy_len; - u16_t total_copy_len = len; - u16_t copied_total = 0; - - LWIP_ERROR("pbuf_take: invalid buf", (buf != NULL), return 0;); - LWIP_ERROR("pbuf_take: invalid dataptr", (dataptr != NULL), return 0;); - - if ((buf == NULL) || (dataptr == NULL) || (buf->tot_len < len)) { - return ERR_ARG; - } - - /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ - for(p = buf; total_copy_len != 0; p = p->next) { - LWIP_ASSERT("pbuf_take: invalid pbuf", p != NULL); - buf_copy_len = total_copy_len; - if (buf_copy_len > p->len) { - /* this pbuf cannot hold all remaining data */ - buf_copy_len = p->len; - } - /* copy the necessary parts of the buffer */ - MEMCPY(p->payload, &((char*)dataptr)[copied_total], buf_copy_len); - total_copy_len -= buf_copy_len; - copied_total += buf_copy_len; - } - LWIP_ASSERT("did not copy all data", total_copy_len == 0 && copied_total == len); - return ERR_OK; -} - -/** - * Creates a single pbuf out of a queue of pbufs. - * - * @remark: Either the source pbuf 'p' is freed by this function or the original - * pbuf 'p' is returned, therefore the caller has to check the result! - * - * @param p the source pbuf - * @param layer pbuf_layer of the new pbuf - * - * @return a new, single pbuf (p->next is NULL) - * or the old pbuf if allocation fails - */ -struct pbuf* -pbuf_coalesce(struct pbuf *p, pbuf_layer layer) -{ - struct pbuf *q; - err_t err; - if (p->next == NULL) { - return p; - } - q = pbuf_alloc(layer, p->tot_len, PBUF_RAM); - if (q == NULL) { - /* @todo: what do we do now? */ - return p; - } - err = pbuf_copy(q, p); - LWIP_ASSERT("pbuf_copy failed", err == ERR_OK); - pbuf_free(p); - return q; -} - -#if LWIP_CHECKSUM_ON_COPY -/** - * Copies data into a single pbuf (*not* into a pbuf queue!) and updates - * the checksum while copying - * - * @param p the pbuf to copy data into - * @param start_offset offset of p->payload where to copy the data to - * @param dataptr data to copy into the pbuf - * @param len length of data to copy into the pbuf - * @param chksum pointer to the checksum which is updated - * @return ERR_OK if successful, another error if the data does not fit - * within the (first) pbuf (no pbuf queues!) - */ -err_t -pbuf_fill_chksum(struct pbuf *p, u16_t start_offset, const void *dataptr, - u16_t len, u16_t *chksum) -{ - u32_t acc; - u16_t copy_chksum; - char *dst_ptr; - LWIP_ASSERT("p != NULL", p != NULL); - LWIP_ASSERT("dataptr != NULL", dataptr != NULL); - LWIP_ASSERT("chksum != NULL", chksum != NULL); - LWIP_ASSERT("len != 0", len != 0); - - if ((start_offset >= p->len) || (start_offset + len > p->len)) { - return ERR_ARG; - } - - dst_ptr = ((char*)p->payload) + start_offset; - copy_chksum = LWIP_CHKSUM_COPY(dst_ptr, dataptr, len); - if ((start_offset & 1) != 0) { - copy_chksum = SWAP_BYTES_IN_WORD(copy_chksum); - } - acc = *chksum; - acc += copy_chksum; - *chksum = FOLD_U32T(acc); - return ERR_OK; -} -#endif /* LWIP_CHECKSUM_ON_COPY */ - - /** Get one byte from the specified position in a pbuf - * WARNING: returns zero for offset >= p->tot_len - * - * @param p pbuf to parse - * @param offset offset into p of the byte to return - * @return byte at an offset into p OR ZERO IF 'offset' >= p->tot_len - */ -u8_t -pbuf_get_at(struct pbuf* p, u16_t offset) -{ - u16_t copy_from = offset; - struct pbuf* q = p; - - /* get the correct pbuf */ - while ((q != NULL) && (q->len <= copy_from)) { - copy_from -= q->len; - q = q->next; - } - /* return requested data if pbuf is OK */ - if ((q != NULL) && (q->len > copy_from)) { - return ((u8_t*)q->payload)[copy_from]; - } - return 0; -} - -/** Compare pbuf contents at specified offset with memory s2, both of length n - * - * @param p pbuf to compare - * @param offset offset into p at wich to start comparing - * @param s2 buffer to compare - * @param n length of buffer to compare - * @return zero if equal, nonzero otherwise - * (0xffff if p is too short, diffoffset+1 otherwise) - */ -u16_t -pbuf_memcmp(struct pbuf* p, u16_t offset, const void* s2, u16_t n) -{ - u16_t start = offset; - struct pbuf* q = p; - - /* get the correct pbuf */ - while ((q != NULL) && (q->len <= start)) { - start -= q->len; - q = q->next; - } - /* return requested data if pbuf is OK */ - if ((q != NULL) && (q->len > start)) { - u16_t i; - for(i = 0; i < n; i++) { - u8_t a = pbuf_get_at(q, start + i); - u8_t b = ((u8_t*)s2)[i]; - if (a != b) { - return i+1; - } - } - return 0; - } - return 0xffff; -} - -/** Find occurrence of mem (with length mem_len) in pbuf p, starting at offset - * start_offset. - * - * @param p pbuf to search, maximum length is 0xFFFE since 0xFFFF is used as - * return value 'not found' - * @param mem search for the contents of this buffer - * @param mem_len length of 'mem' - * @param start_offset offset into p at which to start searching - * @return 0xFFFF if substr was not found in p or the index where it was found - */ -u16_t -pbuf_memfind(struct pbuf* p, const void* mem, u16_t mem_len, u16_t start_offset) -{ - u16_t i; - u16_t max = p->tot_len - mem_len; - if (p->tot_len >= mem_len + start_offset) { - for(i = start_offset; i <= max; ) { - u16_t plus = pbuf_memcmp(p, i, mem, mem_len); - if (plus == 0) { - return i; - } else { - i += plus; - } - } - } - return 0xFFFF; -} - -/** Find occurrence of substr with length substr_len in pbuf p, start at offset - * start_offset - * WARNING: in contrast to strstr(), this one does not stop at the first \0 in - * the pbuf/source string! - * - * @param p pbuf to search, maximum length is 0xFFFE since 0xFFFF is used as - * return value 'not found' - * @param substr string to search for in p, maximum length is 0xFFFE - * @return 0xFFFF if substr was not found in p or the index where it was found - */ -u16_t -pbuf_strstr(struct pbuf* p, const char* substr) -{ - size_t substr_len; - if ((substr == NULL) || (substr[0] == 0) || (p->tot_len == 0xFFFF)) { - return 0xFFFF; - } - substr_len = strlen(substr); - if (substr_len >= 0xFFFF) { - return 0xFFFF; - } - return pbuf_memfind(p, substr, (u16_t)substr_len, 0); -} diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/raw.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/raw.c deleted file mode 100644 index 2adc8a964..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/raw.c +++ /dev/null @@ -1,415 +0,0 @@ -/** - * @file - * Implementation of raw protocol PCBs for low-level handling of - * different types of protocols besides (or overriding) those - * already available in lwIP. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/memp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/raw.h" -#include "lwip/stats.h" -#include "arch/perf.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" - -#include - -/** The list of RAW PCBs */ -static struct raw_pcb *raw_pcbs; - -/** - * Determine if in incoming IP packet is covered by a RAW PCB - * and if so, pass it to a user-provided receive callback function. - * - * Given an incoming IP datagram (as a chain of pbufs) this function - * finds a corresponding RAW PCB and calls the corresponding receive - * callback function. - * - * @param p pbuf to be demultiplexed to a RAW PCB. - * @param inp network interface on which the datagram was received. - * @return - 1 if the packet has been eaten by a RAW PCB receive - * callback function. The caller MAY NOT not reference the - * packet any longer, and MAY NOT call pbuf_free(). - * @return - 0 if packet is not eaten (pbuf is still referenced by the - * caller). - * - */ -u8_t -raw_input(struct pbuf *p, struct netif *inp) -{ - struct raw_pcb *pcb, *prev; - struct ip_hdr *iphdr; - s16_t proto; - u8_t eaten = 0; -#if LWIP_IPV6 - struct ip6_hdr *ip6hdr; -#endif /* LWIP_IPV6 */ - - - LWIP_UNUSED_ARG(inp); - - iphdr = (struct ip_hdr *)p->payload; -#if LWIP_IPV6 - if (IPH_V(iphdr) == 6) { - ip6hdr = (struct ip6_hdr *)p->payload; - proto = IP6H_NEXTH(ip6hdr); - } - else -#endif /* LWIP_IPV6 */ - { - proto = IPH_PROTO(iphdr); - } - - prev = NULL; - pcb = raw_pcbs; - /* loop through all raw pcbs until the packet is eaten by one */ - /* this allows multiple pcbs to match against the packet by design */ - while ((eaten == 0) && (pcb != NULL)) { - if ((pcb->protocol == proto) && IP_PCB_IPVER_INPUT_MATCH(pcb) && - (ipX_addr_isany(PCB_ISIPV6(pcb), &pcb->local_ip) || - ipX_addr_cmp(PCB_ISIPV6(pcb), &(pcb->local_ip), ipX_current_dest_addr()))) { -#if IP_SOF_BROADCAST_RECV - /* broadcast filter? */ - if (((pcb->so_options & SOF_BROADCAST) || !ip_addr_isbroadcast(ip_current_dest_addr(), inp)) -#if LWIP_IPV6 - && !PCB_ISIPV6(pcb) -#endif /* LWIP_IPV6 */ - ) -#endif /* IP_SOF_BROADCAST_RECV */ - { - /* receive callback function available? */ - if (pcb->recv.ip4 != NULL) { - /* the receive callback function did not eat the packet? */ - eaten = pcb->recv.ip4(pcb->recv_arg, pcb, p, ip_current_src_addr()); - if (eaten != 0) { - /* receive function ate the packet */ - p = NULL; - eaten = 1; - if (prev != NULL) { - /* move the pcb to the front of raw_pcbs so that is - found faster next time */ - prev->next = pcb->next; - pcb->next = raw_pcbs; - raw_pcbs = pcb; - } - } - } - /* no receive callback function was set for this raw PCB */ - } - /* drop the packet */ - } - prev = pcb; - pcb = pcb->next; - } - return eaten; -} - -/** - * Bind a RAW PCB. - * - * @param pcb RAW PCB to be bound with a local address ipaddr. - * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to - * bind to all local interfaces. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_USE. The specified IP address is already bound to by - * another RAW PCB. - * - * @see raw_disconnect() - */ -err_t -raw_bind(struct raw_pcb *pcb, ip_addr_t *ipaddr) -{ - ipX_addr_set_ipaddr(PCB_ISIPV6(pcb), &pcb->local_ip, ipaddr); - return ERR_OK; -} - -/** - * Connect an RAW PCB. This function is required by upper layers - * of lwip. Using the raw api you could use raw_sendto() instead - * - * This will associate the RAW PCB with the remote address. - * - * @param pcb RAW PCB to be connected with remote address ipaddr and port. - * @param ipaddr remote IP address to connect with. - * - * @return lwIP error code - * - * @see raw_disconnect() and raw_sendto() - */ -err_t -raw_connect(struct raw_pcb *pcb, ip_addr_t *ipaddr) -{ - ipX_addr_set_ipaddr(PCB_ISIPV6(pcb), &pcb->remote_ip, ipaddr); - return ERR_OK; -} - - -/** - * Set the callback function for received packets that match the - * raw PCB's protocol and binding. - * - * The callback function MUST either - * - eat the packet by calling pbuf_free() and returning non-zero. The - * packet will not be passed to other raw PCBs or other protocol layers. - * - not free the packet, and return zero. The packet will be matched - * against further PCBs and/or forwarded to another protocol layers. - * - * @return non-zero if the packet was free()d, zero if the packet remains - * available for others. - */ -void -raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg) -{ - /* remember recv() callback and user data */ - pcb->recv.ip4 = recv; - pcb->recv_arg = recv_arg; -} - -/** - * Send the raw IP packet to the given address. Note that actually you cannot - * modify the IP headers (this is inconsistent with the receive callback where - * you actually get the IP headers), you can only specify the IP payload here. - * It requires some more changes in lwIP. (there will be a raw_send() function - * then.) - * - * @param pcb the raw pcb which to send - * @param p the IP payload to send - * @param ipaddr the destination address of the IP packet - * - */ -err_t -raw_sendto(struct raw_pcb *pcb, struct pbuf *p, ip_addr_t *ipaddr) -{ - err_t err; - struct netif *netif; - ipX_addr_t *src_ip; - struct pbuf *q; /* q will be sent down the stack */ - s16_t header_size; - ipX_addr_t *dst_ip = ip_2_ipX(ipaddr); - - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_sendto\n")); - - header_size = ( -#if LWIP_IPV6 - PCB_ISIPV6(pcb) ? IP6_HLEN : -#endif /* LWIP_IPV6 */ - IP_HLEN); - - /* not enough space to add an IP header to first pbuf in given p chain? */ - if (pbuf_header(p, header_size)) { - /* allocate header in new pbuf */ - q = pbuf_alloc(PBUF_IP, 0, PBUF_RAM); - /* new header pbuf could not be allocated? */ - if (q == NULL) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("raw_sendto: could not allocate header\n")); - return ERR_MEM; - } - if (p->tot_len != 0) { - /* chain header q in front of given pbuf p */ - pbuf_chain(q, p); - } - /* { first pbuf q points to header pbuf } */ - LWIP_DEBUGF(RAW_DEBUG, ("raw_sendto: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); - } else { - /* first pbuf q equals given pbuf */ - q = p; - if(pbuf_header(q, -header_size)) { - LWIP_ASSERT("Can't restore header we just removed!", 0); - return ERR_MEM; - } - } - - netif = ipX_route(PCB_ISIPV6(pcb), &pcb->local_ip, dst_ip); - if (netif == NULL) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: No route to ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, dst_ip); - /* free any temporary header pbuf allocated by pbuf_header() */ - if (q != p) { - pbuf_free(q); - } - return ERR_RTE; - } - -#if IP_SOF_BROADCAST -#if LWIP_IPV6 - /* @todo: why does IPv6 not filter broadcast with SOF_BROADCAST enabled? */ - if (!PCB_ISIPV6(pcb)) -#endif /* LWIP_IPV6 */ - { - /* broadcast filter? */ - if (((pcb->so_options & SOF_BROADCAST) == 0) && ip_addr_isbroadcast(ipaddr, netif)) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb)); - /* free any temporary header pbuf allocated by pbuf_header() */ - if (q != p) { - pbuf_free(q); - } - return ERR_VAL; - } - } -#endif /* IP_SOF_BROADCAST */ - - if (ipX_addr_isany(PCB_ISIPV6(pcb), &pcb->local_ip)) { - /* use outgoing network interface IP address as source address */ - src_ip = ipX_netif_get_local_ipX(PCB_ISIPV6(pcb), netif, dst_ip); -#if LWIP_IPV6 - if (src_ip == NULL) { - if (q != p) { - pbuf_free(q); - } - return ERR_RTE; - } -#endif /* LWIP_IPV6 */ - } else { - /* use RAW PCB local IP address as source address */ - src_ip = &pcb->local_ip; - } - - NETIF_SET_HWADDRHINT(netif, &pcb->addr_hint); - err = ipX_output_if(PCB_ISIPV6(pcb), q, ipX_2_ip(src_ip), ipX_2_ip(dst_ip), pcb->ttl, pcb->tos, pcb->protocol, netif); - NETIF_SET_HWADDRHINT(netif, NULL); - - /* did we chain a header earlier? */ - if (q != p) { - /* free the header */ - pbuf_free(q); - } - return err; -} - -/** - * Send the raw IP packet to the address given by raw_connect() - * - * @param pcb the raw pcb which to send - * @param p the IP payload to send - * - */ -err_t -raw_send(struct raw_pcb *pcb, struct pbuf *p) -{ - return raw_sendto(pcb, p, ipX_2_ip(&pcb->remote_ip)); -} - -/** - * Remove an RAW PCB. - * - * @param pcb RAW PCB to be removed. The PCB is removed from the list of - * RAW PCB's and the data structure is freed from memory. - * - * @see raw_new() - */ -void -raw_remove(struct raw_pcb *pcb) -{ - struct raw_pcb *pcb2; - /* pcb to be removed is first in list? */ - if (raw_pcbs == pcb) { - /* make list start at 2nd pcb */ - raw_pcbs = raw_pcbs->next; - /* pcb not 1st in list */ - } else { - for(pcb2 = raw_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - /* find pcb in raw_pcbs list */ - if (pcb2->next != NULL && pcb2->next == pcb) { - /* remove pcb from list */ - pcb2->next = pcb->next; - } - } - } - memp_free(MEMP_RAW_PCB, pcb); -} - -/** - * Create a RAW PCB. - * - * @return The RAW PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @param proto the protocol number of the IPs payload (e.g. IP_PROTO_ICMP) - * - * @see raw_remove() - */ -struct raw_pcb * -raw_new(u8_t proto) -{ - struct raw_pcb *pcb; - - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_new\n")); - - pcb = (struct raw_pcb *)memp_malloc(MEMP_RAW_PCB); - /* could allocate RAW PCB? */ - if (pcb != NULL) { - /* initialize PCB to all zeroes */ - memset(pcb, 0, sizeof(struct raw_pcb)); - pcb->protocol = proto; - pcb->ttl = RAW_TTL; - pcb->next = raw_pcbs; - raw_pcbs = pcb; - } - return pcb; -} - -#if LWIP_IPV6 -/** - * Create a RAW PCB for IPv6. - * - * @return The RAW PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @param proto the protocol number (next header) of the IPv6 packet payload - * (e.g. IP6_NEXTH_ICMP6) - * - * @see raw_remove() - */ -struct raw_pcb * -raw_new_ip6(u8_t proto) -{ - struct raw_pcb *pcb; - pcb = raw_new(proto); - ip_set_v6(pcb, 1); - return pcb; -} -#endif /* LWIP_IPV6 */ - -#endif /* LWIP_RAW */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_dec.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_dec.c deleted file mode 100644 index 1d5658207..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_dec.c +++ /dev/null @@ -1,657 +0,0 @@ -/** - * @file - * Abstract Syntax Notation One (ISO 8824, 8825) decoding - * - * @todo not optimised (yet), favor correctness over speed, favor speed over size - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp_asn1.h" - -/** - * Retrieves type field from incoming pbuf chain. - * - * @param p points to a pbuf holding an ASN1 coded type field - * @param ofs points to the offset within the pbuf chain of the ASN1 coded type field - * @param type return ASN1 type - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode - */ -err_t -snmp_asn1_dec_type(struct pbuf *p, u16_t ofs, u8_t *type) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - *type = *msg_ptr; - return ERR_OK; - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Decodes length field from incoming pbuf chain into host length. - * - * @param p points to a pbuf holding an ASN1 coded length - * @param ofs points to the offset within the pbuf chain of the ASN1 coded length - * @param octets_used returns number of octets used by the length code - * @param length return host order length, upto 64k - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode - */ -err_t -snmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - - if (*msg_ptr < 0x80) - { - /* primitive definite length format */ - *octets_used = 1; - *length = *msg_ptr; - return ERR_OK; - } - else if (*msg_ptr == 0x80) - { - /* constructed indefinite length format, termination with two zero octets */ - u8_t zeros; - u8_t i; - - *length = 0; - zeros = 0; - while (zeros != 2) - { - i = 2; - while (i > 0) - { - i--; - (*length) += 1; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - if (*msg_ptr == 0) - { - zeros++; - if (zeros == 2) - { - /* stop while (i > 0) */ - i = 0; - } - } - else - { - zeros = 0; - } - } - } - *octets_used = 1; - return ERR_OK; - } - else if (*msg_ptr == 0x81) - { - /* constructed definite length format, one octet */ - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - *length = *msg_ptr; - *octets_used = 2; - return ERR_OK; - } - else if (*msg_ptr == 0x82) - { - u8_t i; - - /* constructed definite length format, two octets */ - i = 2; - while (i > 0) - { - i--; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - if (i == 0) - { - /* least significant length octet */ - *length |= *msg_ptr; - } - else - { - /* most significant length octet */ - *length = (*msg_ptr) << 8; - } - } - *octets_used = 3; - return ERR_OK; - } - else - { - /* constructed definite length format 3..127 octets, this is too big (>64k) */ - /** @todo: do we need to accept inefficient codings with many leading zero's? */ - *octets_used = 1 + ((*msg_ptr) & 0x7f); - return ERR_ARG; - } - } - p = p->next; - } - - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Decodes positive integer (counter, gauge, timeticks) into u32_t. - * - * @param p points to a pbuf holding an ASN1 coded integer - * @param ofs points to the offset within the pbuf chain of the ASN1 coded integer - * @param len length of the coded integer field - * @param value return host order integer - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode - * - * @note ASN coded integers are _always_ signed. E.g. +0xFFFF is coded - * as 0x00,0xFF,0xFF. Note the leading sign octet. A positive value - * of 0xFFFFFFFF is preceded with 0x00 and the length is 5 octets!! - */ -err_t -snmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - if ((len > 0) && (len < 6)) - { - /* start from zero */ - *value = 0; - if (*msg_ptr & 0x80) - { - /* negative, expecting zero sign bit! */ - return ERR_ARG; - } - else - { - /* positive */ - if ((len > 1) && (*msg_ptr == 0)) - { - /* skip leading "sign byte" octet 0x00 */ - len--; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - } - /* OR octets with value */ - while (len > 1) - { - len--; - *value |= *msg_ptr; - *value <<= 8; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - *value |= *msg_ptr; - return ERR_OK; - } - else - { - return ERR_ARG; - } - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Decodes integer into s32_t. - * - * @param p points to a pbuf holding an ASN1 coded integer - * @param ofs points to the offset within the pbuf chain of the ASN1 coded integer - * @param len length of the coded integer field - * @param value return host order integer - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode - * - * @note ASN coded integers are _always_ signed! - */ -err_t -snmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value) -{ - u16_t plen, base; - u8_t *msg_ptr; -#if BYTE_ORDER == LITTLE_ENDIAN - u8_t *lsb_ptr = (u8_t*)value; -#endif -#if BYTE_ORDER == BIG_ENDIAN - u8_t *lsb_ptr = (u8_t*)value + sizeof(s32_t) - 1; -#endif - u8_t sign; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - if ((len > 0) && (len < 5)) - { - if (*msg_ptr & 0x80) - { - /* negative, start from -1 */ - *value = -1; - sign = 1; - } - else - { - /* positive, start from 0 */ - *value = 0; - sign = 0; - } - /* OR/AND octets with value */ - while (len > 1) - { - len--; - if (sign) - { - *lsb_ptr &= *msg_ptr; - *value <<= 8; - *lsb_ptr |= 255; - } - else - { - *lsb_ptr |= *msg_ptr; - *value <<= 8; - } - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - if (sign) - { - *lsb_ptr &= *msg_ptr; - } - else - { - *lsb_ptr |= *msg_ptr; - } - return ERR_OK; - } - else - { - return ERR_ARG; - } - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Decodes object identifier from incoming message into array of s32_t. - * - * @param p points to a pbuf holding an ASN1 coded object identifier - * @param ofs points to the offset within the pbuf chain of the ASN1 coded object identifier - * @param len length of the coded object identifier - * @param oid return object identifier struct - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode - */ -err_t -snmp_asn1_dec_oid(struct pbuf *p, u16_t ofs, u16_t len, struct snmp_obj_id *oid) -{ - u16_t plen, base; - u8_t *msg_ptr; - s32_t *oid_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - - oid->len = 0; - oid_ptr = &oid->id[0]; - if (len > 0) - { - /* first compressed octet */ - if (*msg_ptr == 0x2B) - { - /* (most) common case 1.3 (iso.org) */ - *oid_ptr = 1; - oid_ptr++; - *oid_ptr = 3; - oid_ptr++; - } - else if (*msg_ptr < 40) - { - *oid_ptr = 0; - oid_ptr++; - *oid_ptr = *msg_ptr; - oid_ptr++; - } - else if (*msg_ptr < 80) - { - *oid_ptr = 1; - oid_ptr++; - *oid_ptr = (*msg_ptr) - 40; - oid_ptr++; - } - else - { - *oid_ptr = 2; - oid_ptr++; - *oid_ptr = (*msg_ptr) - 80; - oid_ptr++; - } - oid->len = 2; - } - else - { - /* accepting zero length identifiers e.g. for - getnext operation. uncommon but valid */ - return ERR_OK; - } - len--; - if (len > 0) - { - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - while ((len > 0) && (oid->len < LWIP_SNMP_OBJ_ID_LEN)) - { - /* sub-identifier uses multiple octets */ - if (*msg_ptr & 0x80) - { - s32_t sub_id = 0; - - while ((*msg_ptr & 0x80) && (len > 1)) - { - len--; - sub_id = (sub_id << 7) + (*msg_ptr & ~0x80); - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - if (!(*msg_ptr & 0x80) && (len > 0)) - { - /* last octet sub-identifier */ - len--; - sub_id = (sub_id << 7) + *msg_ptr; - *oid_ptr = sub_id; - } - } - else - { - /* !(*msg_ptr & 0x80) sub-identifier uses single octet */ - len--; - *oid_ptr = *msg_ptr; - } - if (len > 0) - { - /* remaining oid bytes available ... */ - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - oid_ptr++; - oid->len++; - } - if (len == 0) - { - /* len == 0, end of oid */ - return ERR_OK; - } - else - { - /* len > 0, oid->len == LWIP_SNMP_OBJ_ID_LEN or malformed encoding */ - return ERR_ARG; - } - - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Decodes (copies) raw data (ip-addresses, octet strings, opaque encoding) - * from incoming message into array. - * - * @param p points to a pbuf holding an ASN1 coded raw data - * @param ofs points to the offset within the pbuf chain of the ASN1 coded raw data - * @param len length of the coded raw data (zero is valid, e.g. empty string!) - * @param raw_len length of the raw return value - * @param raw return raw bytes - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) decode - */ -err_t -snmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw) -{ - u16_t plen, base; - u8_t *msg_ptr; - - if (len > 0) - { - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - if (raw_len >= len) - { - while (len > 1) - { - /* copy len - 1 octets */ - len--; - *raw = *msg_ptr; - raw++; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - /* copy last octet */ - *raw = *msg_ptr; - return ERR_OK; - } - else - { - /* raw_len < len, not enough dst space */ - return ERR_ARG; - } - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; - } - else - { - /* len == 0, empty string */ - return ERR_OK; - } -} - -#endif /* LWIP_SNMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_enc.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_enc.c deleted file mode 100644 index 64dfc5f6e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/asn1_enc.c +++ /dev/null @@ -1,611 +0,0 @@ -/** - * @file - * Abstract Syntax Notation One (ISO 8824, 8825) encoding - * - * @todo not optimised (yet), favor correctness over speed, favor speed over size - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp_asn1.h" - -/** - * Returns octet count for length. - * - * @param length - * @param octets_needed points to the return value - */ -void -snmp_asn1_enc_length_cnt(u16_t length, u8_t *octets_needed) -{ - if (length < 0x80U) - { - *octets_needed = 1; - } - else if (length < 0x100U) - { - *octets_needed = 2; - } - else - { - *octets_needed = 3; - } -} - -/** - * Returns octet count for an u32_t. - * - * @param value - * @param octets_needed points to the return value - * - * @note ASN coded integers are _always_ signed. E.g. +0xFFFF is coded - * as 0x00,0xFF,0xFF. Note the leading sign octet. A positive value - * of 0xFFFFFFFF is preceded with 0x00 and the length is 5 octets!! - */ -void -snmp_asn1_enc_u32t_cnt(u32_t value, u16_t *octets_needed) -{ - if (value < 0x80UL) - { - *octets_needed = 1; - } - else if (value < 0x8000UL) - { - *octets_needed = 2; - } - else if (value < 0x800000UL) - { - *octets_needed = 3; - } - else if (value < 0x80000000UL) - { - *octets_needed = 4; - } - else - { - *octets_needed = 5; - } -} - -/** - * Returns octet count for an s32_t. - * - * @param value - * @param octets_needed points to the return value - * - * @note ASN coded integers are _always_ signed. - */ -void -snmp_asn1_enc_s32t_cnt(s32_t value, u16_t *octets_needed) -{ - if (value < 0) - { - value = ~value; - } - if (value < 0x80L) - { - *octets_needed = 1; - } - else if (value < 0x8000L) - { - *octets_needed = 2; - } - else if (value < 0x800000L) - { - *octets_needed = 3; - } - else - { - *octets_needed = 4; - } -} - -/** - * Returns octet count for an object identifier. - * - * @param ident_len object identifier array length - * @param ident points to object identifier array - * @param octets_needed points to the return value - */ -void -snmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed) -{ - s32_t sub_id; - u8_t cnt; - - cnt = 0; - if (ident_len > 1) - { - /* compressed prefix in one octet */ - cnt++; - ident_len -= 2; - ident += 2; - } - while(ident_len > 0) - { - ident_len--; - sub_id = *ident; - - sub_id >>= 7; - cnt++; - while(sub_id > 0) - { - sub_id >>= 7; - cnt++; - } - ident++; - } - *octets_needed = cnt; -} - -/** - * Encodes ASN type field into a pbuf chained ASN1 msg. - * - * @param p points to output pbuf to encode value into - * @param ofs points to the offset within the pbuf chain - * @param type input ASN1 type - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode - */ -err_t -snmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - *msg_ptr = type; - return ERR_OK; - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Encodes host order length field into a pbuf chained ASN1 msg. - * - * @param p points to output pbuf to encode length into - * @param ofs points to the offset within the pbuf chain - * @param length is the host order length to be encoded - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode - */ -err_t -snmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - - if (length < 0x80) - { - *msg_ptr = (u8_t)length; - return ERR_OK; - } - else if (length < 0x100) - { - *msg_ptr = 0x81; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - *msg_ptr = (u8_t)length; - return ERR_OK; - } - else - { - u8_t i; - - /* length >= 0x100 && length <= 0xFFFF */ - *msg_ptr = 0x82; - i = 2; - while (i > 0) - { - i--; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - if (i == 0) - { - /* least significant length octet */ - *msg_ptr = (u8_t)length; - } - else - { - /* most significant length octet */ - *msg_ptr = (u8_t)(length >> 8); - } - } - return ERR_OK; - } - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Encodes u32_t (counter, gauge, timeticks) into a pbuf chained ASN1 msg. - * - * @param p points to output pbuf to encode value into - * @param ofs points to the offset within the pbuf chain - * @param octets_needed encoding length (from snmp_asn1_enc_u32t_cnt()) - * @param value is the host order u32_t value to be encoded - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode - * - * @see snmp_asn1_enc_u32t_cnt() - */ -err_t -snmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, u32_t value) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - - if (octets_needed == 5) - { - /* not enough bits in 'value' add leading 0x00 */ - octets_needed--; - *msg_ptr = 0x00; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - while (octets_needed > 1) - { - octets_needed--; - *msg_ptr = (u8_t)(value >> (octets_needed << 3)); - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - /* (only) one least significant octet */ - *msg_ptr = (u8_t)value; - return ERR_OK; - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Encodes s32_t integer into a pbuf chained ASN1 msg. - * - * @param p points to output pbuf to encode value into - * @param ofs points to the offset within the pbuf chain - * @param octets_needed encoding length (from snmp_asn1_enc_s32t_cnt()) - * @param value is the host order s32_t value to be encoded - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode - * - * @see snmp_asn1_enc_s32t_cnt() - */ -err_t -snmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, s32_t value) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - - while (octets_needed > 1) - { - octets_needed--; - *msg_ptr = (u8_t)(value >> (octets_needed << 3)); - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - /* (only) one least significant octet */ - *msg_ptr = (u8_t)value; - return ERR_OK; - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Encodes object identifier into a pbuf chained ASN1 msg. - * - * @param p points to output pbuf to encode oid into - * @param ofs points to the offset within the pbuf chain - * @param ident_len object identifier array length - * @param ident points to object identifier array - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode - */ -err_t -snmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - - if (ident_len > 1) - { - if ((ident[0] == 1) && (ident[1] == 3)) - { - /* compressed (most common) prefix .iso.org */ - *msg_ptr = 0x2b; - } - else - { - /* calculate prefix */ - *msg_ptr = (u8_t)((ident[0] * 40) + ident[1]); - } - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - ident_len -= 2; - ident += 2; - } - else - { -/* @bug: allow empty varbinds for symmetry (we must decode them for getnext), allow partial compression?? */ - /* ident_len <= 1, at least we need zeroDotZero (0.0) (ident_len == 2) */ - return ERR_ARG; - } - while (ident_len > 0) - { - s32_t sub_id; - u8_t shift, tail; - - ident_len--; - sub_id = *ident; - tail = 0; - shift = 28; - while(shift > 0) - { - u8_t code; - - code = (u8_t)(sub_id >> shift); - if ((code != 0) || (tail != 0)) - { - tail = 1; - *msg_ptr = code | 0x80; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - shift -= 7; - } - *msg_ptr = (u8_t)sub_id & 0x7F; - if (ident_len > 0) - { - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - /* proceed to next sub-identifier */ - ident++; - } - return ERR_OK; - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -/** - * Encodes raw data (octet string, opaque) into a pbuf chained ASN1 msg. - * - * @param p points to output pbuf to encode raw data into - * @param ofs points to the offset within the pbuf chain - * @param raw_len raw data length - * @param raw points raw data - * @return ERR_OK if successfull, ERR_ARG if we can't (or won't) encode - */ -err_t -snmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u16_t raw_len, u8_t *raw) -{ - u16_t plen, base; - u8_t *msg_ptr; - - plen = 0; - while (p != NULL) - { - base = plen; - plen += p->len; - if (ofs < plen) - { - msg_ptr = (u8_t*)p->payload; - msg_ptr += ofs - base; - - while (raw_len > 1) - { - /* copy raw_len - 1 octets */ - raw_len--; - *msg_ptr = *raw; - raw++; - ofs += 1; - if (ofs >= plen) - { - /* next octet in next pbuf */ - p = p->next; - if (p == NULL) { return ERR_ARG; } - msg_ptr = (u8_t*)p->payload; - plen += p->len; - } - else - { - /* next octet in same pbuf */ - msg_ptr++; - } - } - if (raw_len > 0) - { - /* copy last or single octet */ - *msg_ptr = *raw; - } - return ERR_OK; - } - p = p->next; - } - /* p == NULL, ofs >= plen */ - return ERR_ARG; -} - -#endif /* LWIP_SNMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib2.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib2.c deleted file mode 100644 index dcd3b62c1..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib2.c +++ /dev/null @@ -1,4146 +0,0 @@ -/** - * @file - * Management Information Base II (RFC1213) objects and functions. - * - * @note the object identifiers for this MIB-2 and private MIB tree - * must be kept in sorted ascending order. This to ensure correct getnext operation. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp.h" -#include "lwip/netif.h" -#include "lwip/ip.h" -#include "lwip/ip_frag.h" -#include "lwip/mem.h" -#include "lwip/tcp_impl.h" -#include "lwip/udp.h" -#include "lwip/snmp_asn1.h" -#include "lwip/snmp_structs.h" -#include "lwip/sys.h" -#include "netif/etharp.h" - -/** - * IANA assigned enterprise ID for lwIP is 26381 - * @see http://www.iana.org/assignments/enterprise-numbers - * - * @note this enterprise ID is assigned to the lwIP project, - * all object identifiers living under this ID are assigned - * by the lwIP maintainers (contact Christiaan Simons)! - * @note don't change this define, use snmp_set_sysobjid() - * - * If you need to create your own private MIB you'll need - * to apply for your own enterprise ID with IANA: - * http://www.iana.org/numbers.html - */ -#define SNMP_ENTERPRISE_ID 26381 -#define SNMP_SYSOBJID_LEN 7 -#define SNMP_SYSOBJID {1, 3, 6, 1, 4, 1, SNMP_ENTERPRISE_ID} - -#ifndef SNMP_SYSSERVICES -#define SNMP_SYSSERVICES ((1 << 6) | (1 << 3) | ((IP_FORWARD) << 2)) -#endif - -#ifndef SNMP_GET_SYSUPTIME -#define SNMP_GET_SYSUPTIME(sysuptime) (sysuptime = (sys_now() / 10)) -#endif - -static void system_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void system_get_value(struct obj_def *od, u16_t len, void *value); -static u8_t system_set_test(struct obj_def *od, u16_t len, void *value); -static void system_set_value(struct obj_def *od, u16_t len, void *value); -static void interfaces_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void interfaces_get_value(struct obj_def *od, u16_t len, void *value); -static void ifentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void ifentry_get_value(struct obj_def *od, u16_t len, void *value); -#if !SNMP_SAFE_REQUESTS -static u8_t ifentry_set_test (struct obj_def *od, u16_t len, void *value); -static void ifentry_set_value (struct obj_def *od, u16_t len, void *value); -#endif /* SNMP_SAFE_REQUESTS */ -static void atentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void atentry_get_value(struct obj_def *od, u16_t len, void *value); -static void ip_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void ip_get_value(struct obj_def *od, u16_t len, void *value); -static u8_t ip_set_test(struct obj_def *od, u16_t len, void *value); -static void ip_addrentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void ip_addrentry_get_value(struct obj_def *od, u16_t len, void *value); -static void ip_rteentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void ip_rteentry_get_value(struct obj_def *od, u16_t len, void *value); -static void ip_ntomentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void ip_ntomentry_get_value(struct obj_def *od, u16_t len, void *value); -static void icmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void icmp_get_value(struct obj_def *od, u16_t len, void *value); -#if LWIP_TCP -static void tcp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void tcp_get_value(struct obj_def *od, u16_t len, void *value); -#ifdef THIS_SEEMS_UNUSED -static void tcpconnentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void tcpconnentry_get_value(struct obj_def *od, u16_t len, void *value); -#endif -#endif -static void udp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void udp_get_value(struct obj_def *od, u16_t len, void *value); -static void udpentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void udpentry_get_value(struct obj_def *od, u16_t len, void *value); -static void snmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -static void snmp_get_value(struct obj_def *od, u16_t len, void *value); -static u8_t snmp_set_test(struct obj_def *od, u16_t len, void *value); -static void snmp_set_value(struct obj_def *od, u16_t len, void *value); - - -/* snmp .1.3.6.1.2.1.11 */ -const mib_scalar_node snmp_scalar = { - &snmp_get_object_def, - &snmp_get_value, - &snmp_set_test, - &snmp_set_value, - MIB_NODE_SC, - 0 -}; -const s32_t snmp_ids[28] = { - 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30 -}; -struct mib_node* const snmp_nodes[28] = { - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar, - (struct mib_node*)&snmp_scalar, (struct mib_node*)&snmp_scalar -}; -const struct mib_array_node snmp = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 28, - snmp_ids, - snmp_nodes -}; - -/* dot3 and EtherLike MIB not planned. (transmission .1.3.6.1.2.1.10) */ -/* historical (some say hysterical). (cmot .1.3.6.1.2.1.9) */ -/* lwIP has no EGP, thus may not implement it. (egp .1.3.6.1.2.1.8) */ - -/* udp .1.3.6.1.2.1.7 */ -/** index root node for udpTable */ -struct mib_list_rootnode udp_root = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_LR, - 0, - NULL, - NULL, - 0 -}; -const s32_t udpentry_ids[2] = { 1, 2 }; -struct mib_node* const udpentry_nodes[2] = { - (struct mib_node*)&udp_root, (struct mib_node*)&udp_root, -}; -const struct mib_array_node udpentry = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 2, - udpentry_ids, - udpentry_nodes -}; - -s32_t udptable_id = 1; -struct mib_node* udptable_node = (struct mib_node*)&udpentry; -struct mib_ram_array_node udptable = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_RA, - 0, - &udptable_id, - &udptable_node -}; - -const mib_scalar_node udp_scalar = { - &udp_get_object_def, - &udp_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_SC, - 0 -}; -const s32_t udp_ids[5] = { 1, 2, 3, 4, 5 }; -struct mib_node* const udp_nodes[5] = { - (struct mib_node*)&udp_scalar, (struct mib_node*)&udp_scalar, - (struct mib_node*)&udp_scalar, (struct mib_node*)&udp_scalar, - (struct mib_node*)&udptable -}; -const struct mib_array_node udp = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 5, - udp_ids, - udp_nodes -}; - -/* tcp .1.3.6.1.2.1.6 */ -#if LWIP_TCP -/* only if the TCP protocol is available may implement this group */ -/** index root node for tcpConnTable */ -struct mib_list_rootnode tcpconntree_root = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_LR, - 0, - NULL, - NULL, - 0 -}; -const s32_t tcpconnentry_ids[5] = { 1, 2, 3, 4, 5 }; -struct mib_node* const tcpconnentry_nodes[5] = { - (struct mib_node*)&tcpconntree_root, (struct mib_node*)&tcpconntree_root, - (struct mib_node*)&tcpconntree_root, (struct mib_node*)&tcpconntree_root, - (struct mib_node*)&tcpconntree_root -}; -const struct mib_array_node tcpconnentry = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 5, - tcpconnentry_ids, - tcpconnentry_nodes -}; - -s32_t tcpconntable_id = 1; -struct mib_node* tcpconntable_node = (struct mib_node*)&tcpconnentry; -struct mib_ram_array_node tcpconntable = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_RA, -/** @todo update maxlength when inserting / deleting from table - 0 when table is empty, 1 when more than one entry */ - 0, - &tcpconntable_id, - &tcpconntable_node -}; - -const mib_scalar_node tcp_scalar = { - &tcp_get_object_def, - &tcp_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_SC, - 0 -}; -const s32_t tcp_ids[15] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; -struct mib_node* const tcp_nodes[15] = { - (struct mib_node*)&tcp_scalar, (struct mib_node*)&tcp_scalar, - (struct mib_node*)&tcp_scalar, (struct mib_node*)&tcp_scalar, - (struct mib_node*)&tcp_scalar, (struct mib_node*)&tcp_scalar, - (struct mib_node*)&tcp_scalar, (struct mib_node*)&tcp_scalar, - (struct mib_node*)&tcp_scalar, (struct mib_node*)&tcp_scalar, - (struct mib_node*)&tcp_scalar, (struct mib_node*)&tcp_scalar, - (struct mib_node*)&tcpconntable, (struct mib_node*)&tcp_scalar, - (struct mib_node*)&tcp_scalar -}; -const struct mib_array_node tcp = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 15, - tcp_ids, - tcp_nodes -}; -#endif - -/* icmp .1.3.6.1.2.1.5 */ -const mib_scalar_node icmp_scalar = { - &icmp_get_object_def, - &icmp_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_SC, - 0 -}; -const s32_t icmp_ids[26] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }; -struct mib_node* const icmp_nodes[26] = { - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar, - (struct mib_node*)&icmp_scalar, (struct mib_node*)&icmp_scalar -}; -const struct mib_array_node icmp = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 26, - icmp_ids, - icmp_nodes -}; - -/** index root node for ipNetToMediaTable */ -struct mib_list_rootnode ipntomtree_root = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_LR, - 0, - NULL, - NULL, - 0 -}; -const s32_t ipntomentry_ids[4] = { 1, 2, 3, 4 }; -struct mib_node* const ipntomentry_nodes[4] = { - (struct mib_node*)&ipntomtree_root, (struct mib_node*)&ipntomtree_root, - (struct mib_node*)&ipntomtree_root, (struct mib_node*)&ipntomtree_root -}; -const struct mib_array_node ipntomentry = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 4, - ipntomentry_ids, - ipntomentry_nodes -}; - -s32_t ipntomtable_id = 1; -struct mib_node* ipntomtable_node = (struct mib_node*)&ipntomentry; -struct mib_ram_array_node ipntomtable = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_RA, - 0, - &ipntomtable_id, - &ipntomtable_node -}; - -/** index root node for ipRouteTable */ -struct mib_list_rootnode iprtetree_root = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_LR, - 0, - NULL, - NULL, - 0 -}; -const s32_t iprteentry_ids[13] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 }; -struct mib_node* const iprteentry_nodes[13] = { - (struct mib_node*)&iprtetree_root, (struct mib_node*)&iprtetree_root, - (struct mib_node*)&iprtetree_root, (struct mib_node*)&iprtetree_root, - (struct mib_node*)&iprtetree_root, (struct mib_node*)&iprtetree_root, - (struct mib_node*)&iprtetree_root, (struct mib_node*)&iprtetree_root, - (struct mib_node*)&iprtetree_root, (struct mib_node*)&iprtetree_root, - (struct mib_node*)&iprtetree_root, (struct mib_node*)&iprtetree_root, - (struct mib_node*)&iprtetree_root -}; -const struct mib_array_node iprteentry = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 13, - iprteentry_ids, - iprteentry_nodes -}; - -s32_t iprtetable_id = 1; -struct mib_node* iprtetable_node = (struct mib_node*)&iprteentry; -struct mib_ram_array_node iprtetable = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_RA, - 0, - &iprtetable_id, - &iprtetable_node -}; - -/** index root node for ipAddrTable */ -struct mib_list_rootnode ipaddrtree_root = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_LR, - 0, - NULL, - NULL, - 0 -}; -const s32_t ipaddrentry_ids[5] = { 1, 2, 3, 4, 5 }; -struct mib_node* const ipaddrentry_nodes[5] = { - (struct mib_node*)&ipaddrtree_root, - (struct mib_node*)&ipaddrtree_root, - (struct mib_node*)&ipaddrtree_root, - (struct mib_node*)&ipaddrtree_root, - (struct mib_node*)&ipaddrtree_root -}; -const struct mib_array_node ipaddrentry = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 5, - ipaddrentry_ids, - ipaddrentry_nodes -}; - -s32_t ipaddrtable_id = 1; -struct mib_node* ipaddrtable_node = (struct mib_node*)&ipaddrentry; -struct mib_ram_array_node ipaddrtable = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_RA, - 0, - &ipaddrtable_id, - &ipaddrtable_node -}; - -/* ip .1.3.6.1.2.1.4 */ -const mib_scalar_node ip_scalar = { - &ip_get_object_def, - &ip_get_value, - &ip_set_test, - &noleafs_set_value, - MIB_NODE_SC, - 0 -}; -const s32_t ip_ids[23] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; -struct mib_node* const ip_nodes[23] = { - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ip_scalar, - (struct mib_node*)&ip_scalar, (struct mib_node*)&ipaddrtable, - (struct mib_node*)&iprtetable, (struct mib_node*)&ipntomtable, - (struct mib_node*)&ip_scalar -}; -const struct mib_array_node mib2_ip = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 23, - ip_ids, - ip_nodes -}; - -/** index root node for atTable */ -struct mib_list_rootnode arptree_root = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_LR, - 0, - NULL, - NULL, - 0 -}; -const s32_t atentry_ids[3] = { 1, 2, 3 }; -struct mib_node* const atentry_nodes[3] = { - (struct mib_node*)&arptree_root, - (struct mib_node*)&arptree_root, - (struct mib_node*)&arptree_root -}; -const struct mib_array_node atentry = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 3, - atentry_ids, - atentry_nodes -}; - -const s32_t attable_id = 1; -struct mib_node* const attable_node = (struct mib_node*)&atentry; -const struct mib_array_node attable = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 1, - &attable_id, - &attable_node -}; - -/* at .1.3.6.1.2.1.3 */ -s32_t at_id = 1; -struct mib_node* mib2_at_node = (struct mib_node*)&attable; -struct mib_ram_array_node at = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_RA, - 0, - &at_id, - &mib2_at_node -}; - -/** index root node for ifTable */ -struct mib_list_rootnode iflist_root = { - &ifentry_get_object_def, - &ifentry_get_value, -#if SNMP_SAFE_REQUESTS - &noleafs_set_test, - &noleafs_set_value, -#else /* SNMP_SAFE_REQUESTS */ - &ifentry_set_test, - &ifentry_set_value, -#endif /* SNMP_SAFE_REQUESTS */ - MIB_NODE_LR, - 0, - NULL, - NULL, - 0 -}; -const s32_t ifentry_ids[22] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 }; -struct mib_node* const ifentry_nodes[22] = { - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root, - (struct mib_node*)&iflist_root, (struct mib_node*)&iflist_root -}; -const struct mib_array_node ifentry = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 22, - ifentry_ids, - ifentry_nodes -}; - -s32_t iftable_id = 1; -struct mib_node* iftable_node = (struct mib_node*)&ifentry; -struct mib_ram_array_node iftable = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_RA, - 0, - &iftable_id, - &iftable_node -}; - -/* interfaces .1.3.6.1.2.1.2 */ -const mib_scalar_node interfaces_scalar = { - &interfaces_get_object_def, - &interfaces_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_SC, - 0 -}; -const s32_t interfaces_ids[2] = { 1, 2 }; -struct mib_node* const interfaces_nodes[2] = { - (struct mib_node*)&interfaces_scalar, (struct mib_node*)&iftable -}; -const struct mib_array_node interfaces = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 2, - interfaces_ids, - interfaces_nodes -}; - - -/* 0 1 2 3 4 5 6 */ -/* system .1.3.6.1.2.1.1 */ -const mib_scalar_node sys_tem_scalar = { - &system_get_object_def, - &system_get_value, - &system_set_test, - &system_set_value, - MIB_NODE_SC, - 0 -}; -const s32_t sys_tem_ids[7] = { 1, 2, 3, 4, 5, 6, 7 }; -struct mib_node* const sys_tem_nodes[7] = { - (struct mib_node*)&sys_tem_scalar, (struct mib_node*)&sys_tem_scalar, - (struct mib_node*)&sys_tem_scalar, (struct mib_node*)&sys_tem_scalar, - (struct mib_node*)&sys_tem_scalar, (struct mib_node*)&sys_tem_scalar, - (struct mib_node*)&sys_tem_scalar -}; -/* work around name issue with 'sys_tem', some compiler(s?) seem to reserve 'system' */ -const struct mib_array_node sys_tem = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 7, - sys_tem_ids, - sys_tem_nodes -}; - -/* mib-2 .1.3.6.1.2.1 */ -#if LWIP_TCP -#define MIB2_GROUPS 8 -#else -#define MIB2_GROUPS 7 -#endif -const s32_t mib2_ids[MIB2_GROUPS] = -{ - 1, - 2, - 3, - 4, - 5, -#if LWIP_TCP - 6, -#endif - 7, - 11 -}; -struct mib_node* const mib2_nodes[MIB2_GROUPS] = { - (struct mib_node*)&sys_tem, - (struct mib_node*)&interfaces, - (struct mib_node*)&at, - (struct mib_node*)&mib2_ip, - (struct mib_node*)&icmp, -#if LWIP_TCP - (struct mib_node*)&tcp, -#endif - (struct mib_node*)&udp, - (struct mib_node*)&snmp -}; - -const struct mib_array_node mib2 = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - MIB2_GROUPS, - mib2_ids, - mib2_nodes -}; - -/* mgmt .1.3.6.1.2 */ -const s32_t mgmt_ids[1] = { 1 }; -struct mib_node* const mgmt_nodes[1] = { (struct mib_node*)&mib2 }; -const struct mib_array_node mgmt = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 1, - mgmt_ids, - mgmt_nodes -}; - -/* internet .1.3.6.1 */ -#if SNMP_PRIVATE_MIB -/* When using a private MIB, you have to create a file 'private_mib.h' that contains - * a 'struct mib_array_node mib_private' which contains your MIB. */ -s32_t internet_ids[2] = { 2, 4 }; -struct mib_node* const internet_nodes[2] = { (struct mib_node*)&mgmt, (struct mib_node*)&mib_private }; -const struct mib_array_node internet = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 2, - internet_ids, - internet_nodes -}; -#else -const s32_t internet_ids[1] = { 2 }; -struct mib_node* const internet_nodes[1] = { (struct mib_node*)&mgmt }; -const struct mib_array_node internet = { - &noleafs_get_object_def, - &noleafs_get_value, - &noleafs_set_test, - &noleafs_set_value, - MIB_NODE_AR, - 1, - internet_ids, - internet_nodes -}; -#endif - -/** mib-2.system.sysObjectID */ -static struct snmp_obj_id sysobjid = {SNMP_SYSOBJID_LEN, SNMP_SYSOBJID}; -/** enterprise ID for generic TRAPs, .iso.org.dod.internet.mgmt.mib-2.snmp */ -static struct snmp_obj_id snmpgrp_id = {7,{1,3,6,1,2,1,11}}; -/** mib-2.system.sysServices */ -static const s32_t sysservices = SNMP_SYSSERVICES; - -/** mib-2.system.sysDescr */ -static const u8_t sysdescr_len_default = 4; -static const u8_t sysdescr_default[] = "lwIP"; -static u8_t* sysdescr_len_ptr = (u8_t*)&sysdescr_len_default; -static u8_t* sysdescr_ptr = (u8_t*)&sysdescr_default[0]; -/** mib-2.system.sysContact */ -static const u8_t syscontact_len_default = 0; -static const u8_t syscontact_default[] = ""; -static u8_t* syscontact_len_ptr = (u8_t*)&syscontact_len_default; -static u8_t* syscontact_ptr = (u8_t*)&syscontact_default[0]; -/** mib-2.system.sysName */ -static const u8_t sysname_len_default = 8; -static const u8_t sysname_default[] = "FQDN-unk"; -static u8_t* sysname_len_ptr = (u8_t*)&sysname_len_default; -static u8_t* sysname_ptr = (u8_t*)&sysname_default[0]; -/** mib-2.system.sysLocation */ -static const u8_t syslocation_len_default = 0; -static const u8_t syslocation_default[] = ""; -static u8_t* syslocation_len_ptr = (u8_t*)&syslocation_len_default; -static u8_t* syslocation_ptr = (u8_t*)&syslocation_default[0]; -/** mib-2.snmp.snmpEnableAuthenTraps */ -static const u8_t snmpenableauthentraps_default = 2; /* disabled */ -static u8_t* snmpenableauthentraps_ptr = (u8_t*)&snmpenableauthentraps_default; - -/** mib-2.interfaces.ifTable.ifEntry.ifSpecific (zeroDotZero) */ -static const struct snmp_obj_id ifspecific = {2, {0, 0}}; -/** mib-2.ip.ipRouteTable.ipRouteEntry.ipRouteInfo (zeroDotZero) */ -static const struct snmp_obj_id iprouteinfo = {2, {0, 0}}; - - - -/* mib-2.system counter(s) */ -static u32_t sysuptime = 0; - -/* mib-2.ip counter(s) */ -static u32_t ipinreceives = 0, - ipinhdrerrors = 0, - ipinaddrerrors = 0, - ipforwdatagrams = 0, - ipinunknownprotos = 0, - ipindiscards = 0, - ipindelivers = 0, - ipoutrequests = 0, - ipoutdiscards = 0, - ipoutnoroutes = 0, - ipreasmreqds = 0, - ipreasmoks = 0, - ipreasmfails = 0, - ipfragoks = 0, - ipfragfails = 0, - ipfragcreates = 0, - iproutingdiscards = 0; -/* mib-2.icmp counter(s) */ -static u32_t icmpinmsgs = 0, - icmpinerrors = 0, - icmpindestunreachs = 0, - icmpintimeexcds = 0, - icmpinparmprobs = 0, - icmpinsrcquenchs = 0, - icmpinredirects = 0, - icmpinechos = 0, - icmpinechoreps = 0, - icmpintimestamps = 0, - icmpintimestampreps = 0, - icmpinaddrmasks = 0, - icmpinaddrmaskreps = 0, - icmpoutmsgs = 0, - icmpouterrors = 0, - icmpoutdestunreachs = 0, - icmpouttimeexcds = 0, - icmpoutparmprobs = 0, - icmpoutsrcquenchs = 0, - icmpoutredirects = 0, - icmpoutechos = 0, - icmpoutechoreps = 0, - icmpouttimestamps = 0, - icmpouttimestampreps = 0, - icmpoutaddrmasks = 0, - icmpoutaddrmaskreps = 0; -/* mib-2.tcp counter(s) */ -static u32_t tcpactiveopens = 0, - tcppassiveopens = 0, - tcpattemptfails = 0, - tcpestabresets = 0, - tcpinsegs = 0, - tcpoutsegs = 0, - tcpretranssegs = 0, - tcpinerrs = 0, - tcpoutrsts = 0; -/* mib-2.udp counter(s) */ -static u32_t udpindatagrams = 0, - udpnoports = 0, - udpinerrors = 0, - udpoutdatagrams = 0; -/* mib-2.snmp counter(s) */ -static u32_t snmpinpkts = 0, - snmpoutpkts = 0, - snmpinbadversions = 0, - snmpinbadcommunitynames = 0, - snmpinbadcommunityuses = 0, - snmpinasnparseerrs = 0, - snmpintoobigs = 0, - snmpinnosuchnames = 0, - snmpinbadvalues = 0, - snmpinreadonlys = 0, - snmpingenerrs = 0, - snmpintotalreqvars = 0, - snmpintotalsetvars = 0, - snmpingetrequests = 0, - snmpingetnexts = 0, - snmpinsetrequests = 0, - snmpingetresponses = 0, - snmpintraps = 0, - snmpouttoobigs = 0, - snmpoutnosuchnames = 0, - snmpoutbadvalues = 0, - snmpoutgenerrs = 0, - snmpoutgetrequests = 0, - snmpoutgetnexts = 0, - snmpoutsetrequests = 0, - snmpoutgetresponses = 0, - snmpouttraps = 0; - - - -/* prototypes of the following functions are in lwip/src/include/lwip/snmp.h */ -/** - * Copy octet string. - * - * @param dst points to destination - * @param src points to source - * @param n number of octets to copy. - */ -static void ocstrncpy(u8_t *dst, u8_t *src, u16_t n) -{ - u16_t i = n; - while (i > 0) { - i--; - *dst++ = *src++; - } -} - -/** - * Copy object identifier (s32_t) array. - * - * @param dst points to destination - * @param src points to source - * @param n number of sub identifiers to copy. - */ -void objectidncpy(s32_t *dst, s32_t *src, u8_t n) -{ - u8_t i = n; - while(i > 0) { - i--; - *dst++ = *src++; - } -} - -/** - * Initializes sysDescr pointers. - * - * @param str if non-NULL then copy str pointer - * @param len points to string length, excluding zero terminator - */ -void snmp_set_sysdesr(u8_t *str, u8_t *len) -{ - if (str != NULL) - { - sysdescr_ptr = str; - sysdescr_len_ptr = len; - } -} - -void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid) -{ - *oid = &sysobjid; -} - -/** - * Initializes sysObjectID value. - * - * @param oid points to stuct snmp_obj_id to copy - */ -void snmp_set_sysobjid(struct snmp_obj_id *oid) -{ - sysobjid = *oid; -} - -/** - * Must be called at regular 10 msec interval from a timer interrupt - * or signal handler depending on your runtime environment. - */ -void snmp_inc_sysuptime(void) -{ - sysuptime++; -} - -void snmp_add_sysuptime(u32_t value) -{ - sysuptime+=value; -} - -void snmp_get_sysuptime(u32_t *value) -{ - SNMP_GET_SYSUPTIME(sysuptime); - *value = sysuptime; -} - -/** - * Initializes sysContact pointers, - * e.g. ptrs to non-volatile memory external to lwIP. - * - * @param ocstr if non-NULL then copy str pointer - * @param ocstrlen points to string length, excluding zero terminator - */ -void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen) -{ - if (ocstr != NULL) - { - syscontact_ptr = ocstr; - syscontact_len_ptr = ocstrlen; - } -} - -/** - * Initializes sysName pointers, - * e.g. ptrs to non-volatile memory external to lwIP. - * - * @param ocstr if non-NULL then copy str pointer - * @param ocstrlen points to string length, excluding zero terminator - */ -void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen) -{ - if (ocstr != NULL) - { - sysname_ptr = ocstr; - sysname_len_ptr = ocstrlen; - } -} - -/** - * Initializes sysLocation pointers, - * e.g. ptrs to non-volatile memory external to lwIP. - * - * @param ocstr if non-NULL then copy str pointer - * @param ocstrlen points to string length, excluding zero terminator - */ -void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen) -{ - if (ocstr != NULL) - { - syslocation_ptr = ocstr; - syslocation_len_ptr = ocstrlen; - } -} - - -void snmp_add_ifinoctets(struct netif *ni, u32_t value) -{ - ni->ifinoctets += value; -} - -void snmp_inc_ifinucastpkts(struct netif *ni) -{ - (ni->ifinucastpkts)++; -} - -void snmp_inc_ifinnucastpkts(struct netif *ni) -{ - (ni->ifinnucastpkts)++; -} - -void snmp_inc_ifindiscards(struct netif *ni) -{ - (ni->ifindiscards)++; -} - -void snmp_add_ifoutoctets(struct netif *ni, u32_t value) -{ - ni->ifoutoctets += value; -} - -void snmp_inc_ifoutucastpkts(struct netif *ni) -{ - (ni->ifoutucastpkts)++; -} - -void snmp_inc_ifoutnucastpkts(struct netif *ni) -{ - (ni->ifoutnucastpkts)++; -} - -void snmp_inc_ifoutdiscards(struct netif *ni) -{ - (ni->ifoutdiscards)++; -} - -void snmp_inc_iflist(void) -{ - struct mib_list_node *if_node = NULL; - - snmp_mib_node_insert(&iflist_root, iflist_root.count + 1, &if_node); - /* enable getnext traversal on filled table */ - iftable.maxlength = 1; -} - -void snmp_dec_iflist(void) -{ - snmp_mib_node_delete(&iflist_root, iflist_root.tail); - /* disable getnext traversal on empty table */ - if(iflist_root.count == 0) iftable.maxlength = 0; -} - -/** - * Inserts ARP table indexes (.xIfIndex.xNetAddress) - * into arp table index trees (both atTable and ipNetToMediaTable). - */ -void snmp_insert_arpidx_tree(struct netif *ni, ip_addr_t *ip) -{ - struct mib_list_rootnode *at_rn; - struct mib_list_node *at_node; - s32_t arpidx[5]; - u8_t level, tree; - - LWIP_ASSERT("ni != NULL", ni != NULL); - snmp_netiftoifindex(ni, &arpidx[0]); - snmp_iptooid(ip, &arpidx[1]); - - for (tree = 0; tree < 2; tree++) - { - if (tree == 0) - { - at_rn = &arptree_root; - } - else - { - at_rn = &ipntomtree_root; - } - for (level = 0; level < 5; level++) - { - at_node = NULL; - snmp_mib_node_insert(at_rn, arpidx[level], &at_node); - if ((level != 4) && (at_node != NULL)) - { - if (at_node->nptr == NULL) - { - at_rn = snmp_mib_lrn_alloc(); - at_node->nptr = (struct mib_node*)at_rn; - if (at_rn != NULL) - { - if (level == 3) - { - if (tree == 0) - { - at_rn->get_object_def = atentry_get_object_def; - at_rn->get_value = atentry_get_value; - } - else - { - at_rn->get_object_def = ip_ntomentry_get_object_def; - at_rn->get_value = ip_ntomentry_get_value; - } - at_rn->set_test = noleafs_set_test; - at_rn->set_value = noleafs_set_value; - } - } - else - { - /* at_rn == NULL, malloc failure */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("snmp_insert_arpidx_tree() insert failed, mem full")); - break; - } - } - else - { - at_rn = (struct mib_list_rootnode*)at_node->nptr; - } - } - } - } - /* enable getnext traversal on filled tables */ - at.maxlength = 1; - ipntomtable.maxlength = 1; -} - -/** - * Removes ARP table indexes (.xIfIndex.xNetAddress) - * from arp table index trees. - */ -void snmp_delete_arpidx_tree(struct netif *ni, ip_addr_t *ip) -{ - struct mib_list_rootnode *at_rn, *next, *del_rn[5]; - struct mib_list_node *at_n, *del_n[5]; - s32_t arpidx[5]; - u8_t fc, tree, level, del_cnt; - - snmp_netiftoifindex(ni, &arpidx[0]); - snmp_iptooid(ip, &arpidx[1]); - - for (tree = 0; tree < 2; tree++) - { - /* mark nodes for deletion */ - if (tree == 0) - { - at_rn = &arptree_root; - } - else - { - at_rn = &ipntomtree_root; - } - level = 0; - del_cnt = 0; - while ((level < 5) && (at_rn != NULL)) - { - fc = snmp_mib_node_find(at_rn, arpidx[level], &at_n); - if (fc == 0) - { - /* arpidx[level] does not exist */ - del_cnt = 0; - at_rn = NULL; - } - else if (fc == 1) - { - del_rn[del_cnt] = at_rn; - del_n[del_cnt] = at_n; - del_cnt++; - at_rn = (struct mib_list_rootnode*)(at_n->nptr); - } - else if (fc == 2) - { - /* reset delete (2 or more childs) */ - del_cnt = 0; - at_rn = (struct mib_list_rootnode*)(at_n->nptr); - } - level++; - } - /* delete marked index nodes */ - while (del_cnt > 0) - { - del_cnt--; - - at_rn = del_rn[del_cnt]; - at_n = del_n[del_cnt]; - - next = snmp_mib_node_delete(at_rn, at_n); - if (next != NULL) - { - LWIP_ASSERT("next_count == 0",next->count == 0); - snmp_mib_lrn_free(next); - } - } - } - /* disable getnext traversal on empty tables */ - if(arptree_root.count == 0) at.maxlength = 0; - if(ipntomtree_root.count == 0) ipntomtable.maxlength = 0; -} - -void snmp_inc_ipinreceives(void) -{ - ipinreceives++; -} - -void snmp_inc_ipinhdrerrors(void) -{ - ipinhdrerrors++; -} - -void snmp_inc_ipinaddrerrors(void) -{ - ipinaddrerrors++; -} - -void snmp_inc_ipforwdatagrams(void) -{ - ipforwdatagrams++; -} - -void snmp_inc_ipinunknownprotos(void) -{ - ipinunknownprotos++; -} - -void snmp_inc_ipindiscards(void) -{ - ipindiscards++; -} - -void snmp_inc_ipindelivers(void) -{ - ipindelivers++; -} - -void snmp_inc_ipoutrequests(void) -{ - ipoutrequests++; -} - -void snmp_inc_ipoutdiscards(void) -{ - ipoutdiscards++; -} - -void snmp_inc_ipoutnoroutes(void) -{ - ipoutnoroutes++; -} - -void snmp_inc_ipreasmreqds(void) -{ - ipreasmreqds++; -} - -void snmp_inc_ipreasmoks(void) -{ - ipreasmoks++; -} - -void snmp_inc_ipreasmfails(void) -{ - ipreasmfails++; -} - -void snmp_inc_ipfragoks(void) -{ - ipfragoks++; -} - -void snmp_inc_ipfragfails(void) -{ - ipfragfails++; -} - -void snmp_inc_ipfragcreates(void) -{ - ipfragcreates++; -} - -void snmp_inc_iproutingdiscards(void) -{ - iproutingdiscards++; -} - -/** - * Inserts ipAddrTable indexes (.ipAdEntAddr) - * into index tree. - */ -void snmp_insert_ipaddridx_tree(struct netif *ni) -{ - struct mib_list_rootnode *ipa_rn; - struct mib_list_node *ipa_node; - s32_t ipaddridx[4]; - u8_t level; - - LWIP_ASSERT("ni != NULL", ni != NULL); - snmp_iptooid(&ni->ip_addr, &ipaddridx[0]); - - level = 0; - ipa_rn = &ipaddrtree_root; - while (level < 4) - { - ipa_node = NULL; - snmp_mib_node_insert(ipa_rn, ipaddridx[level], &ipa_node); - if ((level != 3) && (ipa_node != NULL)) - { - if (ipa_node->nptr == NULL) - { - ipa_rn = snmp_mib_lrn_alloc(); - ipa_node->nptr = (struct mib_node*)ipa_rn; - if (ipa_rn != NULL) - { - if (level == 2) - { - ipa_rn->get_object_def = ip_addrentry_get_object_def; - ipa_rn->get_value = ip_addrentry_get_value; - ipa_rn->set_test = noleafs_set_test; - ipa_rn->set_value = noleafs_set_value; - } - } - else - { - /* ipa_rn == NULL, malloc failure */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("snmp_insert_ipaddridx_tree() insert failed, mem full")); - break; - } - } - else - { - ipa_rn = (struct mib_list_rootnode*)ipa_node->nptr; - } - } - level++; - } - /* enable getnext traversal on filled table */ - ipaddrtable.maxlength = 1; -} - -/** - * Removes ipAddrTable indexes (.ipAdEntAddr) - * from index tree. - */ -void snmp_delete_ipaddridx_tree(struct netif *ni) -{ - struct mib_list_rootnode *ipa_rn, *next, *del_rn[4]; - struct mib_list_node *ipa_n, *del_n[4]; - s32_t ipaddridx[4]; - u8_t fc, level, del_cnt; - - LWIP_ASSERT("ni != NULL", ni != NULL); - snmp_iptooid(&ni->ip_addr, &ipaddridx[0]); - - /* mark nodes for deletion */ - level = 0; - del_cnt = 0; - ipa_rn = &ipaddrtree_root; - while ((level < 4) && (ipa_rn != NULL)) - { - fc = snmp_mib_node_find(ipa_rn, ipaddridx[level], &ipa_n); - if (fc == 0) - { - /* ipaddridx[level] does not exist */ - del_cnt = 0; - ipa_rn = NULL; - } - else if (fc == 1) - { - del_rn[del_cnt] = ipa_rn; - del_n[del_cnt] = ipa_n; - del_cnt++; - ipa_rn = (struct mib_list_rootnode*)(ipa_n->nptr); - } - else if (fc == 2) - { - /* reset delete (2 or more childs) */ - del_cnt = 0; - ipa_rn = (struct mib_list_rootnode*)(ipa_n->nptr); - } - level++; - } - /* delete marked index nodes */ - while (del_cnt > 0) - { - del_cnt--; - - ipa_rn = del_rn[del_cnt]; - ipa_n = del_n[del_cnt]; - - next = snmp_mib_node_delete(ipa_rn, ipa_n); - if (next != NULL) - { - LWIP_ASSERT("next_count == 0",next->count == 0); - snmp_mib_lrn_free(next); - } - } - /* disable getnext traversal on empty table */ - if (ipaddrtree_root.count == 0) ipaddrtable.maxlength = 0; -} - -/** - * Inserts ipRouteTable indexes (.ipRouteDest) - * into index tree. - * - * @param dflt non-zero for the default rte, zero for network rte - * @param ni points to network interface for this rte - * - * @todo record sysuptime for _this_ route when it is installed - * (needed for ipRouteAge) in the netif. - */ -void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni) -{ - u8_t insert = 0; - ip_addr_t dst; - - if (dflt != 0) - { - /* the default route 0.0.0.0 */ - ip_addr_set_any(&dst); - insert = 1; - } - else - { - /* route to the network address */ - ip_addr_get_network(&dst, &ni->ip_addr, &ni->netmask); - /* exclude 0.0.0.0 network (reserved for default rte) */ - if (!ip_addr_isany(&dst)) { - insert = 1; - } - } - if (insert) - { - struct mib_list_rootnode *iprte_rn; - struct mib_list_node *iprte_node; - s32_t iprteidx[4]; - u8_t level; - - snmp_iptooid(&dst, &iprteidx[0]); - level = 0; - iprte_rn = &iprtetree_root; - while (level < 4) - { - iprte_node = NULL; - snmp_mib_node_insert(iprte_rn, iprteidx[level], &iprte_node); - if ((level != 3) && (iprte_node != NULL)) - { - if (iprte_node->nptr == NULL) - { - iprte_rn = snmp_mib_lrn_alloc(); - iprte_node->nptr = (struct mib_node*)iprte_rn; - if (iprte_rn != NULL) - { - if (level == 2) - { - iprte_rn->get_object_def = ip_rteentry_get_object_def; - iprte_rn->get_value = ip_rteentry_get_value; - iprte_rn->set_test = noleafs_set_test; - iprte_rn->set_value = noleafs_set_value; - } - } - else - { - /* iprte_rn == NULL, malloc failure */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("snmp_insert_iprteidx_tree() insert failed, mem full")); - break; - } - } - else - { - iprte_rn = (struct mib_list_rootnode*)iprte_node->nptr; - } - } - level++; - } - } - /* enable getnext traversal on filled table */ - iprtetable.maxlength = 1; -} - -/** - * Removes ipRouteTable indexes (.ipRouteDest) - * from index tree. - * - * @param dflt non-zero for the default rte, zero for network rte - * @param ni points to network interface for this rte or NULL - * for default route to be removed. - */ -void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni) -{ - u8_t del = 0; - ip_addr_t dst; - - if (dflt != 0) - { - /* the default route 0.0.0.0 */ - ip_addr_set_any(&dst); - del = 1; - } - else - { - /* route to the network address */ - ip_addr_get_network(&dst, &ni->ip_addr, &ni->netmask); - /* exclude 0.0.0.0 network (reserved for default rte) */ - if (!ip_addr_isany(&dst)) { - del = 1; - } - } - if (del) - { - struct mib_list_rootnode *iprte_rn, *next, *del_rn[4]; - struct mib_list_node *iprte_n, *del_n[4]; - s32_t iprteidx[4]; - u8_t fc, level, del_cnt; - - snmp_iptooid(&dst, &iprteidx[0]); - /* mark nodes for deletion */ - level = 0; - del_cnt = 0; - iprte_rn = &iprtetree_root; - while ((level < 4) && (iprte_rn != NULL)) - { - fc = snmp_mib_node_find(iprte_rn, iprteidx[level], &iprte_n); - if (fc == 0) - { - /* iprteidx[level] does not exist */ - del_cnt = 0; - iprte_rn = NULL; - } - else if (fc == 1) - { - del_rn[del_cnt] = iprte_rn; - del_n[del_cnt] = iprte_n; - del_cnt++; - iprte_rn = (struct mib_list_rootnode*)(iprte_n->nptr); - } - else if (fc == 2) - { - /* reset delete (2 or more childs) */ - del_cnt = 0; - iprte_rn = (struct mib_list_rootnode*)(iprte_n->nptr); - } - level++; - } - /* delete marked index nodes */ - while (del_cnt > 0) - { - del_cnt--; - - iprte_rn = del_rn[del_cnt]; - iprte_n = del_n[del_cnt]; - - next = snmp_mib_node_delete(iprte_rn, iprte_n); - if (next != NULL) - { - LWIP_ASSERT("next_count == 0",next->count == 0); - snmp_mib_lrn_free(next); - } - } - } - /* disable getnext traversal on empty table */ - if (iprtetree_root.count == 0) iprtetable.maxlength = 0; -} - - -void snmp_inc_icmpinmsgs(void) -{ - icmpinmsgs++; -} - -void snmp_inc_icmpinerrors(void) -{ - icmpinerrors++; -} - -void snmp_inc_icmpindestunreachs(void) -{ - icmpindestunreachs++; -} - -void snmp_inc_icmpintimeexcds(void) -{ - icmpintimeexcds++; -} - -void snmp_inc_icmpinparmprobs(void) -{ - icmpinparmprobs++; -} - -void snmp_inc_icmpinsrcquenchs(void) -{ - icmpinsrcquenchs++; -} - -void snmp_inc_icmpinredirects(void) -{ - icmpinredirects++; -} - -void snmp_inc_icmpinechos(void) -{ - icmpinechos++; -} - -void snmp_inc_icmpinechoreps(void) -{ - icmpinechoreps++; -} - -void snmp_inc_icmpintimestamps(void) -{ - icmpintimestamps++; -} - -void snmp_inc_icmpintimestampreps(void) -{ - icmpintimestampreps++; -} - -void snmp_inc_icmpinaddrmasks(void) -{ - icmpinaddrmasks++; -} - -void snmp_inc_icmpinaddrmaskreps(void) -{ - icmpinaddrmaskreps++; -} - -void snmp_inc_icmpoutmsgs(void) -{ - icmpoutmsgs++; -} - -void snmp_inc_icmpouterrors(void) -{ - icmpouterrors++; -} - -void snmp_inc_icmpoutdestunreachs(void) -{ - icmpoutdestunreachs++; -} - -void snmp_inc_icmpouttimeexcds(void) -{ - icmpouttimeexcds++; -} - -void snmp_inc_icmpoutparmprobs(void) -{ - icmpoutparmprobs++; -} - -void snmp_inc_icmpoutsrcquenchs(void) -{ - icmpoutsrcquenchs++; -} - -void snmp_inc_icmpoutredirects(void) -{ - icmpoutredirects++; -} - -void snmp_inc_icmpoutechos(void) -{ - icmpoutechos++; -} - -void snmp_inc_icmpoutechoreps(void) -{ - icmpoutechoreps++; -} - -void snmp_inc_icmpouttimestamps(void) -{ - icmpouttimestamps++; -} - -void snmp_inc_icmpouttimestampreps(void) -{ - icmpouttimestampreps++; -} - -void snmp_inc_icmpoutaddrmasks(void) -{ - icmpoutaddrmasks++; -} - -void snmp_inc_icmpoutaddrmaskreps(void) -{ - icmpoutaddrmaskreps++; -} - -void snmp_inc_tcpactiveopens(void) -{ - tcpactiveopens++; -} - -void snmp_inc_tcppassiveopens(void) -{ - tcppassiveopens++; -} - -void snmp_inc_tcpattemptfails(void) -{ - tcpattemptfails++; -} - -void snmp_inc_tcpestabresets(void) -{ - tcpestabresets++; -} - -void snmp_inc_tcpinsegs(void) -{ - tcpinsegs++; -} - -void snmp_inc_tcpoutsegs(void) -{ - tcpoutsegs++; -} - -void snmp_inc_tcpretranssegs(void) -{ - tcpretranssegs++; -} - -void snmp_inc_tcpinerrs(void) -{ - tcpinerrs++; -} - -void snmp_inc_tcpoutrsts(void) -{ - tcpoutrsts++; -} - -void snmp_inc_udpindatagrams(void) -{ - udpindatagrams++; -} - -void snmp_inc_udpnoports(void) -{ - udpnoports++; -} - -void snmp_inc_udpinerrors(void) -{ - udpinerrors++; -} - -void snmp_inc_udpoutdatagrams(void) -{ - udpoutdatagrams++; -} - -/** - * Inserts udpTable indexes (.udpLocalAddress.udpLocalPort) - * into index tree. - */ -void snmp_insert_udpidx_tree(struct udp_pcb *pcb) -{ - struct mib_list_rootnode *udp_rn; - struct mib_list_node *udp_node; - s32_t udpidx[5]; - u8_t level; - - LWIP_ASSERT("pcb != NULL", pcb != NULL); - snmp_iptooid(ipX_2_ip(&pcb->local_ip), &udpidx[0]); - udpidx[4] = pcb->local_port; - - udp_rn = &udp_root; - for (level = 0; level < 5; level++) - { - udp_node = NULL; - snmp_mib_node_insert(udp_rn, udpidx[level], &udp_node); - if ((level != 4) && (udp_node != NULL)) - { - if (udp_node->nptr == NULL) - { - udp_rn = snmp_mib_lrn_alloc(); - udp_node->nptr = (struct mib_node*)udp_rn; - if (udp_rn != NULL) - { - if (level == 3) - { - udp_rn->get_object_def = udpentry_get_object_def; - udp_rn->get_value = udpentry_get_value; - udp_rn->set_test = noleafs_set_test; - udp_rn->set_value = noleafs_set_value; - } - } - else - { - /* udp_rn == NULL, malloc failure */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("snmp_insert_udpidx_tree() insert failed, mem full")); - break; - } - } - else - { - udp_rn = (struct mib_list_rootnode*)udp_node->nptr; - } - } - } - udptable.maxlength = 1; -} - -/** - * Removes udpTable indexes (.udpLocalAddress.udpLocalPort) - * from index tree. - */ -void snmp_delete_udpidx_tree(struct udp_pcb *pcb) -{ - struct udp_pcb *npcb; - struct mib_list_rootnode *udp_rn, *next, *del_rn[5]; - struct mib_list_node *udp_n, *del_n[5]; - s32_t udpidx[5]; - u8_t bindings, fc, level, del_cnt; - - LWIP_ASSERT("pcb != NULL", pcb != NULL); - snmp_iptooid(ipX_2_ip(&pcb->local_ip), &udpidx[0]); - udpidx[4] = pcb->local_port; - - /* count PCBs for a given binding - (e.g. when reusing ports or for temp output PCBs) */ - bindings = 0; - npcb = udp_pcbs; - while ((npcb != NULL)) - { - if (ipX_addr_cmp(0, &npcb->local_ip, &pcb->local_ip) && - (npcb->local_port == udpidx[4])) - { - bindings++; - } - npcb = npcb->next; - } - if (bindings == 1) - { - /* selectively remove */ - /* mark nodes for deletion */ - level = 0; - del_cnt = 0; - udp_rn = &udp_root; - while ((level < 5) && (udp_rn != NULL)) - { - fc = snmp_mib_node_find(udp_rn, udpidx[level], &udp_n); - if (fc == 0) - { - /* udpidx[level] does not exist */ - del_cnt = 0; - udp_rn = NULL; - } - else if (fc == 1) - { - del_rn[del_cnt] = udp_rn; - del_n[del_cnt] = udp_n; - del_cnt++; - udp_rn = (struct mib_list_rootnode*)(udp_n->nptr); - } - else if (fc == 2) - { - /* reset delete (2 or more childs) */ - del_cnt = 0; - udp_rn = (struct mib_list_rootnode*)(udp_n->nptr); - } - level++; - } - /* delete marked index nodes */ - while (del_cnt > 0) - { - del_cnt--; - - udp_rn = del_rn[del_cnt]; - udp_n = del_n[del_cnt]; - - next = snmp_mib_node_delete(udp_rn, udp_n); - if (next != NULL) - { - LWIP_ASSERT("next_count == 0",next->count == 0); - snmp_mib_lrn_free(next); - } - } - } - /* disable getnext traversal on empty table */ - if (udp_root.count == 0) udptable.maxlength = 0; -} - - -void snmp_inc_snmpinpkts(void) -{ - snmpinpkts++; -} - -void snmp_inc_snmpoutpkts(void) -{ - snmpoutpkts++; -} - -void snmp_inc_snmpinbadversions(void) -{ - snmpinbadversions++; -} - -void snmp_inc_snmpinbadcommunitynames(void) -{ - snmpinbadcommunitynames++; -} - -void snmp_inc_snmpinbadcommunityuses(void) -{ - snmpinbadcommunityuses++; -} - -void snmp_inc_snmpinasnparseerrs(void) -{ - snmpinasnparseerrs++; -} - -void snmp_inc_snmpintoobigs(void) -{ - snmpintoobigs++; -} - -void snmp_inc_snmpinnosuchnames(void) -{ - snmpinnosuchnames++; -} - -void snmp_inc_snmpinbadvalues(void) -{ - snmpinbadvalues++; -} - -void snmp_inc_snmpinreadonlys(void) -{ - snmpinreadonlys++; -} - -void snmp_inc_snmpingenerrs(void) -{ - snmpingenerrs++; -} - -void snmp_add_snmpintotalreqvars(u8_t value) -{ - snmpintotalreqvars += value; -} - -void snmp_add_snmpintotalsetvars(u8_t value) -{ - snmpintotalsetvars += value; -} - -void snmp_inc_snmpingetrequests(void) -{ - snmpingetrequests++; -} - -void snmp_inc_snmpingetnexts(void) -{ - snmpingetnexts++; -} - -void snmp_inc_snmpinsetrequests(void) -{ - snmpinsetrequests++; -} - -void snmp_inc_snmpingetresponses(void) -{ - snmpingetresponses++; -} - -void snmp_inc_snmpintraps(void) -{ - snmpintraps++; -} - -void snmp_inc_snmpouttoobigs(void) -{ - snmpouttoobigs++; -} - -void snmp_inc_snmpoutnosuchnames(void) -{ - snmpoutnosuchnames++; -} - -void snmp_inc_snmpoutbadvalues(void) -{ - snmpoutbadvalues++; -} - -void snmp_inc_snmpoutgenerrs(void) -{ - snmpoutgenerrs++; -} - -void snmp_inc_snmpoutgetrequests(void) -{ - snmpoutgetrequests++; -} - -void snmp_inc_snmpoutgetnexts(void) -{ - snmpoutgetnexts++; -} - -void snmp_inc_snmpoutsetrequests(void) -{ - snmpoutsetrequests++; -} - -void snmp_inc_snmpoutgetresponses(void) -{ - snmpoutgetresponses++; -} - -void snmp_inc_snmpouttraps(void) -{ - snmpouttraps++; -} - -void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid) -{ - *oid = &snmpgrp_id; -} - -void snmp_set_snmpenableauthentraps(u8_t *value) -{ - if (value != NULL) - { - snmpenableauthentraps_ptr = value; - } -} - -void snmp_get_snmpenableauthentraps(u8_t *value) -{ - *value = *snmpenableauthentraps_ptr; -} - -void -noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - LWIP_UNUSED_ARG(ident_len); - LWIP_UNUSED_ARG(ident); - od->instance = MIB_OBJECT_NONE; -} - -void -noleafs_get_value(struct obj_def *od, u16_t len, void *value) -{ - LWIP_UNUSED_ARG(od); - LWIP_UNUSED_ARG(len); - LWIP_UNUSED_ARG(value); -} - -u8_t -noleafs_set_test(struct obj_def *od, u16_t len, void *value) -{ - LWIP_UNUSED_ARG(od); - LWIP_UNUSED_ARG(len); - LWIP_UNUSED_ARG(value); - /* can't set */ - return 0; -} - -void -noleafs_set_value(struct obj_def *od, u16_t len, void *value) -{ - LWIP_UNUSED_ARG(od); - LWIP_UNUSED_ARG(len); - LWIP_UNUSED_ARG(value); -} - - -/** - * Returns systems object definitions. - * - * @param ident_len the address length (2) - * @param ident points to objectname.0 (object id trailer) - * @param od points to object definition. - */ -static void -system_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - u8_t id; - - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if (ident_len == 2) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def system.%"U16_F".0\n",(u16_t)id)); - switch (id) - { - case 1: /* sysDescr */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - od->v_len = *sysdescr_len_ptr; - break; - case 2: /* sysObjectID */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID); - od->v_len = sysobjid.len * sizeof(s32_t); - break; - case 3: /* sysUpTime */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS); - od->v_len = sizeof(u32_t); - break; - case 4: /* sysContact */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - od->v_len = *syscontact_len_ptr; - break; - case 5: /* sysName */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - od->v_len = *sysname_len_ptr; - break; - case 6: /* sysLocation */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - od->v_len = *syslocation_len_ptr; - break; - case 7: /* sysServices */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("system_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - }; - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("system_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -/** - * Returns system object value. - * - * @param ident_len the address length (2) - * @param ident points to objectname.0 (object id trailer) - * @param len return value space (in bytes) - * @param value points to (varbind) space to copy value into. - */ -static void -system_get_value(struct obj_def *od, u16_t len, void *value) -{ - u8_t id; - - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* sysDescr */ - ocstrncpy((u8_t*)value, sysdescr_ptr, len); - break; - case 2: /* sysObjectID */ - objectidncpy((s32_t*)value, (s32_t*)sysobjid.id, (u8_t)(len / sizeof(s32_t))); - break; - case 3: /* sysUpTime */ - { - snmp_get_sysuptime((u32_t*)value); - } - break; - case 4: /* sysContact */ - ocstrncpy((u8_t*)value, syscontact_ptr, len); - break; - case 5: /* sysName */ - ocstrncpy((u8_t*)value, sysname_ptr, len); - break; - case 6: /* sysLocation */ - ocstrncpy((u8_t*)value, syslocation_ptr, len); - break; - case 7: /* sysServices */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = sysservices; - } - break; - }; -} - -static u8_t -system_set_test(struct obj_def *od, u16_t len, void *value) -{ - u8_t id, set_ok; - - LWIP_UNUSED_ARG(value); - set_ok = 0; - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 4: /* sysContact */ - if ((syscontact_ptr != syscontact_default) && - (len <= 255)) - { - set_ok = 1; - } - break; - case 5: /* sysName */ - if ((sysname_ptr != sysname_default) && - (len <= 255)) - { - set_ok = 1; - } - break; - case 6: /* sysLocation */ - if ((syslocation_ptr != syslocation_default) && - (len <= 255)) - { - set_ok = 1; - } - break; - }; - return set_ok; -} - -static void -system_set_value(struct obj_def *od, u16_t len, void *value) -{ - u8_t id; - - LWIP_ASSERT("invalid len", len <= 0xff); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 4: /* sysContact */ - ocstrncpy(syscontact_ptr, (u8_t*)value, len); - *syscontact_len_ptr = (u8_t)len; - break; - case 5: /* sysName */ - ocstrncpy(sysname_ptr, (u8_t*)value, len); - *sysname_len_ptr = (u8_t)len; - break; - case 6: /* sysLocation */ - ocstrncpy(syslocation_ptr, (u8_t*)value, len); - *syslocation_len_ptr = (u8_t)len; - break; - }; -} - -/** - * Returns interfaces.ifnumber object definition. - * - * @param ident_len the address length (2) - * @param ident points to objectname.index - * @param od points to object definition. - */ -static void -interfaces_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if (ident_len == 2) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("interfaces_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -/** - * Returns interfaces.ifnumber object value. - * - * @param ident_len the address length (2) - * @param ident points to objectname.0 (object id trailer) - * @param len return value space (in bytes) - * @param value points to (varbind) space to copy value into. - */ -static void -interfaces_get_value(struct obj_def *od, u16_t len, void *value) -{ - LWIP_UNUSED_ARG(len); - if (od->id_inst_ptr[0] == 1) - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = iflist_root.count; - } -} - -/** - * Returns ifentry object definitions. - * - * @param ident_len the address length (2) - * @param ident points to objectname.index - * @param od points to object definition. - */ -static void -ifentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - u8_t id; - - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if (ident_len == 2) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def ifentry.%"U16_F"\n",(u16_t)id)); - switch (id) - { - case 1: /* ifIndex */ - case 3: /* ifType */ - case 4: /* ifMtu */ - case 8: /* ifOperStatus */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 2: /* ifDescr */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - /** @todo this should be some sort of sizeof(struct netif.name) */ - od->v_len = 2; - break; - case 5: /* ifSpeed */ - case 21: /* ifOutQLen */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE); - od->v_len = sizeof(u32_t); - break; - case 6: /* ifPhysAddress */ - { - struct netif *netif; - - snmp_ifindextonetif(ident[1], &netif); - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - od->v_len = netif->hwaddr_len; - } - break; - case 7: /* ifAdminStatus */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 9: /* ifLastChange */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS); - od->v_len = sizeof(u32_t); - break; - case 10: /* ifInOctets */ - case 11: /* ifInUcastPkts */ - case 12: /* ifInNUcastPkts */ - case 13: /* ifInDiscarts */ - case 14: /* ifInErrors */ - case 15: /* ifInUnkownProtos */ - case 16: /* ifOutOctets */ - case 17: /* ifOutUcastPkts */ - case 18: /* ifOutNUcastPkts */ - case 19: /* ifOutDiscarts */ - case 20: /* ifOutErrors */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); - od->v_len = sizeof(u32_t); - break; - case 22: /* ifSpecific */ - /** @note returning zeroDotZero (0.0) no media specific MIB support */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID); - od->v_len = ifspecific.len * sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ifentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - }; - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ifentry_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -/** - * Returns ifentry object value. - * - * @param ident_len the address length (2) - * @param ident points to objectname.0 (object id trailer) - * @param len return value space (in bytes) - * @param value points to (varbind) space to copy value into. - */ -static void -ifentry_get_value(struct obj_def *od, u16_t len, void *value) -{ - struct netif *netif; - u8_t id; - - snmp_ifindextonetif(od->id_inst_ptr[1], &netif); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* ifIndex */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = od->id_inst_ptr[1]; - } - break; - case 2: /* ifDescr */ - ocstrncpy((u8_t*)value, (u8_t*)netif->name, len); - break; - case 3: /* ifType */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = netif->link_type; - } - break; - case 4: /* ifMtu */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = netif->mtu; - } - break; - case 5: /* ifSpeed */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->link_speed; - } - break; - case 6: /* ifPhysAddress */ - ocstrncpy((u8_t*)value, netif->hwaddr, len); - break; - case 7: /* ifAdminStatus */ - { - s32_t *sint_ptr = (s32_t*)value; - if (netif_is_up(netif)) - { - if (netif_is_link_up(netif)) - { - *sint_ptr = 1; /* up */ - } - else - { - *sint_ptr = 7; /* lowerLayerDown */ - } - } - else - { - *sint_ptr = 2; /* down */ - } - } - break; - case 8: /* ifOperStatus */ - { - s32_t *sint_ptr = (s32_t*)value; - if (netif_is_up(netif)) - { - *sint_ptr = 1; - } - else - { - *sint_ptr = 2; - } - } - break; - case 9: /* ifLastChange */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ts; - } - break; - case 10: /* ifInOctets */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifinoctets; - } - break; - case 11: /* ifInUcastPkts */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifinucastpkts; - } - break; - case 12: /* ifInNUcastPkts */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifinnucastpkts; - } - break; - case 13: /* ifInDiscarts */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifindiscards; - } - break; - case 14: /* ifInErrors */ - case 15: /* ifInUnkownProtos */ - /** @todo add these counters! */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = 0; - } - break; - case 16: /* ifOutOctets */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifoutoctets; - } - break; - case 17: /* ifOutUcastPkts */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifoutucastpkts; - } - break; - case 18: /* ifOutNUcastPkts */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifoutnucastpkts; - } - break; - case 19: /* ifOutDiscarts */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = netif->ifoutdiscards; - } - break; - case 20: /* ifOutErrors */ - /** @todo add this counter! */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = 0; - } - break; - case 21: /* ifOutQLen */ - /** @todo figure out if this must be 0 (no queue) or 1? */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = 0; - } - break; - case 22: /* ifSpecific */ - objectidncpy((s32_t*)value, (s32_t*)ifspecific.id, (u8_t)(len / sizeof(s32_t))); - break; - }; -} - -#if !SNMP_SAFE_REQUESTS -static u8_t -ifentry_set_test(struct obj_def *od, u16_t len, void *value) -{ - struct netif *netif; - u8_t id, set_ok; - LWIP_UNUSED_ARG(len); - - set_ok = 0; - snmp_ifindextonetif(od->id_inst_ptr[1], &netif); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 7: /* ifAdminStatus */ - { - s32_t *sint_ptr = (s32_t*)value; - if (*sint_ptr == 1 || *sint_ptr == 2) - set_ok = 1; - } - break; - } - return set_ok; -} - -static void -ifentry_set_value(struct obj_def *od, u16_t len, void *value) -{ - struct netif *netif; - u8_t id; - LWIP_UNUSED_ARG(len); - - snmp_ifindextonetif(od->id_inst_ptr[1], &netif); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 7: /* ifAdminStatus */ - { - s32_t *sint_ptr = (s32_t*)value; - if (*sint_ptr == 1) - { - netif_set_up(netif); - } - else if (*sint_ptr == 2) - { - netif_set_down(netif); - } - } - break; - } -} -#endif /* SNMP_SAFE_REQUESTS */ - -/** - * Returns atentry object definitions. - * - * @param ident_len the address length (6) - * @param ident points to objectname.atifindex.atnetaddress - * @param od points to object definition. - */ -static void -atentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (5) */ - ident_len += 5; - ident -= 5; - - if (ident_len == 6) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - switch (ident[0]) - { - case 1: /* atIfIndex */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 2: /* atPhysAddress */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - od->v_len = 6; /** @todo try to use netif::hwaddr_len */ - break; - case 3: /* atNetAddress */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); - od->v_len = 4; - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("atentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - } - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("atentry_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -atentry_get_value(struct obj_def *od, u16_t len, void *value) -{ -#if LWIP_ARP - u8_t id; - struct eth_addr* ethaddr_ret; - ip_addr_t* ipaddr_ret; -#endif /* LWIP_ARP */ - ip_addr_t ip; - struct netif *netif; - - LWIP_UNUSED_ARG(len); - LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */ - - snmp_ifindextonetif(od->id_inst_ptr[1], &netif); - snmp_oidtoip(&od->id_inst_ptr[2], &ip); - -#if LWIP_ARP /** @todo implement a netif_find_addr */ - if (etharp_find_addr(netif, &ip, ðaddr_ret, &ipaddr_ret) > -1) - { - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* atIfIndex */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = od->id_inst_ptr[1]; - } - break; - case 2: /* atPhysAddress */ - { - struct eth_addr *dst = (struct eth_addr*)value; - - *dst = *ethaddr_ret; - } - break; - case 3: /* atNetAddress */ - { - ip_addr_t *dst = (ip_addr_t*)value; - - *dst = *ipaddr_ret; - } - break; - } - } -#endif /* LWIP_ARP */ -} - -static void -ip_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - u8_t id; - - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if (ident_len == 2) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def ip.%"U16_F".0\n",(u16_t)id)); - switch (id) - { - case 1: /* ipForwarding */ - case 2: /* ipDefaultTTL */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 3: /* ipInReceives */ - case 4: /* ipInHdrErrors */ - case 5: /* ipInAddrErrors */ - case 6: /* ipForwDatagrams */ - case 7: /* ipInUnknownProtos */ - case 8: /* ipInDiscards */ - case 9: /* ipInDelivers */ - case 10: /* ipOutRequests */ - case 11: /* ipOutDiscards */ - case 12: /* ipOutNoRoutes */ - case 14: /* ipReasmReqds */ - case 15: /* ipReasmOKs */ - case 16: /* ipReasmFails */ - case 17: /* ipFragOKs */ - case 18: /* ipFragFails */ - case 19: /* ipFragCreates */ - case 23: /* ipRoutingDiscards */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); - od->v_len = sizeof(u32_t); - break; - case 13: /* ipReasmTimeout */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - }; - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -ip_get_value(struct obj_def *od, u16_t len, void *value) -{ - u8_t id; - - LWIP_UNUSED_ARG(len); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* ipForwarding */ - { - s32_t *sint_ptr = (s32_t*)value; -#if IP_FORWARD - /* forwarding */ - *sint_ptr = 1; -#else - /* not-forwarding */ - *sint_ptr = 2; -#endif - } - break; - case 2: /* ipDefaultTTL */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = IP_DEFAULT_TTL; - } - break; - case 3: /* ipInReceives */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipinreceives; - } - break; - case 4: /* ipInHdrErrors */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipinhdrerrors; - } - break; - case 5: /* ipInAddrErrors */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipinaddrerrors; - } - break; - case 6: /* ipForwDatagrams */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipforwdatagrams; - } - break; - case 7: /* ipInUnknownProtos */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipinunknownprotos; - } - break; - case 8: /* ipInDiscards */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipindiscards; - } - break; - case 9: /* ipInDelivers */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipindelivers; - } - break; - case 10: /* ipOutRequests */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipoutrequests; - } - break; - case 11: /* ipOutDiscards */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipoutdiscards; - } - break; - case 12: /* ipOutNoRoutes */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipoutnoroutes; - } - break; - case 13: /* ipReasmTimeout */ - { - s32_t *sint_ptr = (s32_t*)value; -#if IP_REASSEMBLY - *sint_ptr = IP_REASS_MAXAGE; -#else - *sint_ptr = 0; -#endif - } - break; - case 14: /* ipReasmReqds */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipreasmreqds; - } - break; - case 15: /* ipReasmOKs */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipreasmoks; - } - break; - case 16: /* ipReasmFails */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipreasmfails; - } - break; - case 17: /* ipFragOKs */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipfragoks; - } - break; - case 18: /* ipFragFails */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipfragfails; - } - break; - case 19: /* ipFragCreates */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = ipfragcreates; - } - break; - case 23: /* ipRoutingDiscards */ - /** @todo can lwIP discard routes at all?? hardwire this to 0?? */ - { - u32_t *uint_ptr = (u32_t*)value; - *uint_ptr = iproutingdiscards; - } - break; - }; -} - -/** - * Test ip object value before setting. - * - * @param od is the object definition - * @param len return value space (in bytes) - * @param value points to (varbind) space to copy value from. - * - * @note we allow set if the value matches the hardwired value, - * otherwise return badvalue. - */ -static u8_t -ip_set_test(struct obj_def *od, u16_t len, void *value) -{ - u8_t id, set_ok; - s32_t *sint_ptr = (s32_t*)value; - - LWIP_UNUSED_ARG(len); - set_ok = 0; - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* ipForwarding */ -#if IP_FORWARD - /* forwarding */ - if (*sint_ptr == 1) -#else - /* not-forwarding */ - if (*sint_ptr == 2) -#endif - { - set_ok = 1; - } - break; - case 2: /* ipDefaultTTL */ - if (*sint_ptr == IP_DEFAULT_TTL) - { - set_ok = 1; - } - break; - }; - return set_ok; -} - -static void -ip_addrentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (4) */ - ident_len += 4; - ident -= 4; - - if (ident_len == 5) - { - u8_t id; - - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - switch (id) - { - case 1: /* ipAdEntAddr */ - case 3: /* ipAdEntNetMask */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); - od->v_len = 4; - break; - case 2: /* ipAdEntIfIndex */ - case 4: /* ipAdEntBcastAddr */ - case 5: /* ipAdEntReasmMaxSize */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_addrentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - } - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_addrentry_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -ip_addrentry_get_value(struct obj_def *od, u16_t len, void *value) -{ - u8_t id; - u16_t ifidx; - ip_addr_t ip; - struct netif *netif = netif_list; - - LWIP_UNUSED_ARG(len); - snmp_oidtoip(&od->id_inst_ptr[1], &ip); - ifidx = 0; - while ((netif != NULL) && !ip_addr_cmp(&ip, &netif->ip_addr)) - { - netif = netif->next; - ifidx++; - } - - if (netif != NULL) - { - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* ipAdEntAddr */ - { - ip_addr_t *dst = (ip_addr_t*)value; - *dst = netif->ip_addr; - } - break; - case 2: /* ipAdEntIfIndex */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = ifidx + 1; - } - break; - case 3: /* ipAdEntNetMask */ - { - ip_addr_t *dst = (ip_addr_t*)value; - *dst = netif->netmask; - } - break; - case 4: /* ipAdEntBcastAddr */ - { - s32_t *sint_ptr = (s32_t*)value; - - /* lwIP oddity, there's no broadcast - address in the netif we can rely on */ - *sint_ptr = IPADDR_BROADCAST & 1; - } - break; - case 5: /* ipAdEntReasmMaxSize */ - { - s32_t *sint_ptr = (s32_t*)value; -#if IP_REASSEMBLY - /* @todo The theoretical maximum is IP_REASS_MAX_PBUFS * size of the pbufs, - * but only if receiving one fragmented packet at a time. - * The current solution is to calculate for 2 simultaneous packets... - */ - *sint_ptr = (IP_HLEN + ((IP_REASS_MAX_PBUFS/2) * - (PBUF_POOL_BUFSIZE - PBUF_LINK_HLEN - IP_HLEN))); -#else - /** @todo returning MTU would be a bad thing and - returning a wild guess like '576' isn't good either */ - *sint_ptr = 0; -#endif - } - break; - } - } -} - -/** - * @note - * lwIP IP routing is currently using the network addresses in netif_list. - * if no suitable network IP is found in netif_list, the default_netif is used. - */ -static void -ip_rteentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - u8_t id; - - /* return to object name, adding index depth (4) */ - ident_len += 4; - ident -= 4; - - if (ident_len == 5) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - switch (id) - { - case 1: /* ipRouteDest */ - case 7: /* ipRouteNextHop */ - case 11: /* ipRouteMask */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); - od->v_len = 4; - break; - case 2: /* ipRouteIfIndex */ - case 3: /* ipRouteMetric1 */ - case 4: /* ipRouteMetric2 */ - case 5: /* ipRouteMetric3 */ - case 6: /* ipRouteMetric4 */ - case 8: /* ipRouteType */ - case 10: /* ipRouteAge */ - case 12: /* ipRouteMetric5 */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 9: /* ipRouteProto */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 13: /* ipRouteInfo */ - /** @note returning zeroDotZero (0.0) no routing protocol specific MIB */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID); - od->v_len = iprouteinfo.len * sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_rteentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - } - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_rteentry_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -ip_rteentry_get_value(struct obj_def *od, u16_t len, void *value) -{ - struct netif *netif; - ip_addr_t dest; - s32_t *ident; - u8_t id; - - ident = od->id_inst_ptr; - snmp_oidtoip(&ident[1], &dest); - - if (ip_addr_isany(&dest)) - { - /* ip_route() uses default netif for default route */ - netif = netif_default; - } - else - { - /* not using ip_route(), need exact match! */ - netif = netif_list; - while ((netif != NULL) && - !ip_addr_netcmp(&dest, &(netif->ip_addr), &(netif->netmask)) ) - { - netif = netif->next; - } - } - if (netif != NULL) - { - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - switch (id) - { - case 1: /* ipRouteDest */ - { - ip_addr_t *dst = (ip_addr_t*)value; - - if (ip_addr_isany(&dest)) - { - /* default rte has 0.0.0.0 dest */ - ip_addr_set_zero(dst); - } - else - { - /* netifs have netaddress dest */ - ip_addr_get_network(dst, &netif->ip_addr, &netif->netmask); - } - } - break; - case 2: /* ipRouteIfIndex */ - { - s32_t *sint_ptr = (s32_t*)value; - - snmp_netiftoifindex(netif, sint_ptr); - } - break; - case 3: /* ipRouteMetric1 */ - { - s32_t *sint_ptr = (s32_t*)value; - - if (ip_addr_isany(&dest)) - { - /* default rte has metric 1 */ - *sint_ptr = 1; - } - else - { - /* other rtes have metric 0 */ - *sint_ptr = 0; - } - } - break; - case 4: /* ipRouteMetric2 */ - case 5: /* ipRouteMetric3 */ - case 6: /* ipRouteMetric4 */ - case 12: /* ipRouteMetric5 */ - { - s32_t *sint_ptr = (s32_t*)value; - /* not used */ - *sint_ptr = -1; - } - break; - case 7: /* ipRouteNextHop */ - { - ip_addr_t *dst = (ip_addr_t*)value; - - if (ip_addr_isany(&dest)) - { - /* default rte: gateway */ - *dst = netif->gw; - } - else - { - /* other rtes: netif ip_addr */ - *dst = netif->ip_addr; - } - } - break; - case 8: /* ipRouteType */ - { - s32_t *sint_ptr = (s32_t*)value; - - if (ip_addr_isany(&dest)) - { - /* default rte is indirect */ - *sint_ptr = 4; - } - else - { - /* other rtes are direct */ - *sint_ptr = 3; - } - } - break; - case 9: /* ipRouteProto */ - { - s32_t *sint_ptr = (s32_t*)value; - /* locally defined routes */ - *sint_ptr = 2; - } - break; - case 10: /* ipRouteAge */ - { - s32_t *sint_ptr = (s32_t*)value; - /** @todo (sysuptime - timestamp last change) / 100 - @see snmp_insert_iprteidx_tree() */ - *sint_ptr = 0; - } - break; - case 11: /* ipRouteMask */ - { - ip_addr_t *dst = (ip_addr_t*)value; - - if (ip_addr_isany(&dest)) - { - /* default rte use 0.0.0.0 mask */ - ip_addr_set_zero(dst); - } - else - { - /* other rtes use netmask */ - *dst = netif->netmask; - } - } - break; - case 13: /* ipRouteInfo */ - objectidncpy((s32_t*)value, (s32_t*)iprouteinfo.id, (u8_t)(len / sizeof(s32_t))); - break; - } - } -} - -static void -ip_ntomentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (5) */ - ident_len += 5; - ident -= 5; - - if (ident_len == 6) - { - u8_t id; - - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - switch (id) - { - case 1: /* ipNetToMediaIfIndex */ - case 4: /* ipNetToMediaType */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 2: /* ipNetToMediaPhysAddress */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR); - od->v_len = 6; /** @todo try to use netif::hwaddr_len */ - break; - case 3: /* ipNetToMediaNetAddress */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); - od->v_len = 4; - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_ntomentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - } - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ip_ntomentry_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -ip_ntomentry_get_value(struct obj_def *od, u16_t len, void *value) -{ -#if LWIP_ARP - u8_t id; - struct eth_addr* ethaddr_ret; - ip_addr_t* ipaddr_ret; -#endif /* LWIP_ARP */ - ip_addr_t ip; - struct netif *netif; - - LWIP_UNUSED_ARG(len); - LWIP_UNUSED_ARG(value);/* if !LWIP_ARP */ - - snmp_ifindextonetif(od->id_inst_ptr[1], &netif); - snmp_oidtoip(&od->id_inst_ptr[2], &ip); - -#if LWIP_ARP /** @todo implement a netif_find_addr */ - if (etharp_find_addr(netif, &ip, ðaddr_ret, &ipaddr_ret) > -1) - { - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* ipNetToMediaIfIndex */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = od->id_inst_ptr[1]; - } - break; - case 2: /* ipNetToMediaPhysAddress */ - { - struct eth_addr *dst = (struct eth_addr*)value; - - *dst = *ethaddr_ret; - } - break; - case 3: /* ipNetToMediaNetAddress */ - { - ip_addr_t *dst = (ip_addr_t*)value; - - *dst = *ipaddr_ret; - } - break; - case 4: /* ipNetToMediaType */ - { - s32_t *sint_ptr = (s32_t*)value; - /* dynamic (?) */ - *sint_ptr = 3; - } - break; - } - } -#endif /* LWIP_ARP */ -} - -static void -icmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if ((ident_len == 2) && - (ident[0] > 0) && (ident[0] < 27)) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); - od->v_len = sizeof(u32_t); - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("icmp_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -icmp_get_value(struct obj_def *od, u16_t len, void *value) -{ - u32_t *uint_ptr = (u32_t*)value; - u8_t id; - - LWIP_UNUSED_ARG(len); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* icmpInMsgs */ - *uint_ptr = icmpinmsgs; - break; - case 2: /* icmpInErrors */ - *uint_ptr = icmpinerrors; - break; - case 3: /* icmpInDestUnreachs */ - *uint_ptr = icmpindestunreachs; - break; - case 4: /* icmpInTimeExcds */ - *uint_ptr = icmpintimeexcds; - break; - case 5: /* icmpInParmProbs */ - *uint_ptr = icmpinparmprobs; - break; - case 6: /* icmpInSrcQuenchs */ - *uint_ptr = icmpinsrcquenchs; - break; - case 7: /* icmpInRedirects */ - *uint_ptr = icmpinredirects; - break; - case 8: /* icmpInEchos */ - *uint_ptr = icmpinechos; - break; - case 9: /* icmpInEchoReps */ - *uint_ptr = icmpinechoreps; - break; - case 10: /* icmpInTimestamps */ - *uint_ptr = icmpintimestamps; - break; - case 11: /* icmpInTimestampReps */ - *uint_ptr = icmpintimestampreps; - break; - case 12: /* icmpInAddrMasks */ - *uint_ptr = icmpinaddrmasks; - break; - case 13: /* icmpInAddrMaskReps */ - *uint_ptr = icmpinaddrmaskreps; - break; - case 14: /* icmpOutMsgs */ - *uint_ptr = icmpoutmsgs; - break; - case 15: /* icmpOutErrors */ - *uint_ptr = icmpouterrors; - break; - case 16: /* icmpOutDestUnreachs */ - *uint_ptr = icmpoutdestunreachs; - break; - case 17: /* icmpOutTimeExcds */ - *uint_ptr = icmpouttimeexcds; - break; - case 18: /* icmpOutParmProbs */ - *uint_ptr = icmpoutparmprobs; - break; - case 19: /* icmpOutSrcQuenchs */ - *uint_ptr = icmpoutsrcquenchs; - break; - case 20: /* icmpOutRedirects */ - *uint_ptr = icmpoutredirects; - break; - case 21: /* icmpOutEchos */ - *uint_ptr = icmpoutechos; - break; - case 22: /* icmpOutEchoReps */ - *uint_ptr = icmpoutechoreps; - break; - case 23: /* icmpOutTimestamps */ - *uint_ptr = icmpouttimestamps; - break; - case 24: /* icmpOutTimestampReps */ - *uint_ptr = icmpouttimestampreps; - break; - case 25: /* icmpOutAddrMasks */ - *uint_ptr = icmpoutaddrmasks; - break; - case 26: /* icmpOutAddrMaskReps */ - *uint_ptr = icmpoutaddrmaskreps; - break; - } -} - -#if LWIP_TCP -/** @todo tcp grp */ -static void -tcp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - u8_t id; - - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if (ident_len == 2) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def tcp.%"U16_F".0\n",(u16_t)id)); - - switch (id) - { - case 1: /* tcpRtoAlgorithm */ - case 2: /* tcpRtoMin */ - case 3: /* tcpRtoMax */ - case 4: /* tcpMaxConn */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 5: /* tcpActiveOpens */ - case 6: /* tcpPassiveOpens */ - case 7: /* tcpAttemptFails */ - case 8: /* tcpEstabResets */ - case 10: /* tcpInSegs */ - case 11: /* tcpOutSegs */ - case 12: /* tcpRetransSegs */ - case 14: /* tcpInErrs */ - case 15: /* tcpOutRsts */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); - od->v_len = sizeof(u32_t); - break; - case 9: /* tcpCurrEstab */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE); - od->v_len = sizeof(u32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("tcp_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - }; - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("tcp_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -tcp_get_value(struct obj_def *od, u16_t len, void *value) -{ - u32_t *uint_ptr = (u32_t*)value; - s32_t *sint_ptr = (s32_t*)value; - u8_t id; - - LWIP_UNUSED_ARG(len); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* tcpRtoAlgorithm, vanj(4) */ - *sint_ptr = 4; - break; - case 2: /* tcpRtoMin */ - /* @todo not the actual value, a guess, - needs to be calculated */ - *sint_ptr = 1000; - break; - case 3: /* tcpRtoMax */ - /* @todo not the actual value, a guess, - needs to be calculated */ - *sint_ptr = 60000; - break; - case 4: /* tcpMaxConn */ - *sint_ptr = MEMP_NUM_TCP_PCB; - break; - case 5: /* tcpActiveOpens */ - *uint_ptr = tcpactiveopens; - break; - case 6: /* tcpPassiveOpens */ - *uint_ptr = tcppassiveopens; - break; - case 7: /* tcpAttemptFails */ - *uint_ptr = tcpattemptfails; - break; - case 8: /* tcpEstabResets */ - *uint_ptr = tcpestabresets; - break; - case 9: /* tcpCurrEstab */ - { - u16_t tcpcurrestab = 0; - struct tcp_pcb *pcb = tcp_active_pcbs; - while (pcb != NULL) - { - if ((pcb->state == ESTABLISHED) || - (pcb->state == CLOSE_WAIT)) - { - tcpcurrestab++; - } - pcb = pcb->next; - } - *uint_ptr = tcpcurrestab; - } - break; - case 10: /* tcpInSegs */ - *uint_ptr = tcpinsegs; - break; - case 11: /* tcpOutSegs */ - *uint_ptr = tcpoutsegs; - break; - case 12: /* tcpRetransSegs */ - *uint_ptr = tcpretranssegs; - break; - case 14: /* tcpInErrs */ - *uint_ptr = tcpinerrs; - break; - case 15: /* tcpOutRsts */ - *uint_ptr = tcpoutrsts; - break; - } -} -#ifdef THIS_SEEMS_UNUSED -static void -tcpconnentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (10) */ - ident_len += 10; - ident -= 10; - - if (ident_len == 11) - { - u8_t id; - - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - id = ident[0]; - LWIP_DEBUGF(SNMP_MIB_DEBUG,("get_object_def tcp.%"U16_F".0\n",(u16_t)id)); - - switch (id) - { - case 1: /* tcpConnState */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - case 2: /* tcpConnLocalAddress */ - case 4: /* tcpConnRemAddress */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); - od->v_len = 4; - break; - case 3: /* tcpConnLocalPort */ - case 5: /* tcpConnRemPort */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("tcpconnentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - }; - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("tcpconnentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -tcpconnentry_get_value(struct obj_def *od, u16_t len, void *value) -{ - ip_addr_t lip, rip; - u16_t lport, rport; - s32_t *ident; - - ident = od->id_inst_ptr; - snmp_oidtoip(&ident[1], &lip); - lport = ident[5]; - snmp_oidtoip(&ident[6], &rip); - rport = ident[10]; - - /** @todo find matching PCB */ -} -#endif /* if 0 */ -#endif - -static void -udp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if ((ident_len == 2) && - (ident[0] > 0) && (ident[0] < 6)) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); - od->v_len = sizeof(u32_t); - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("udp_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -udp_get_value(struct obj_def *od, u16_t len, void *value) -{ - u32_t *uint_ptr = (u32_t*)value; - u8_t id; - - LWIP_UNUSED_ARG(len); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* udpInDatagrams */ - *uint_ptr = udpindatagrams; - break; - case 2: /* udpNoPorts */ - *uint_ptr = udpnoports; - break; - case 3: /* udpInErrors */ - *uint_ptr = udpinerrors; - break; - case 4: /* udpOutDatagrams */ - *uint_ptr = udpoutdatagrams; - break; - } -} - -static void -udpentry_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (5) */ - ident_len += 5; - ident -= 5; - - if (ident_len == 6) - { - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - switch (ident[0]) - { - case 1: /* udpLocalAddress */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR); - od->v_len = 4; - break; - case 2: /* udpLocalPort */ - od->instance = MIB_OBJECT_TAB; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("udpentry_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - } - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("udpentry_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -udpentry_get_value(struct obj_def *od, u16_t len, void *value) -{ - u8_t id; - struct udp_pcb *pcb; - ipX_addr_t ip; - u16_t port; - - LWIP_UNUSED_ARG(len); - snmp_oidtoip(&od->id_inst_ptr[1], (ip_addr_t*)&ip); - LWIP_ASSERT("invalid port", (od->id_inst_ptr[5] >= 0) && (od->id_inst_ptr[5] <= 0xffff)); - port = (u16_t)od->id_inst_ptr[5]; - - pcb = udp_pcbs; - while ((pcb != NULL) && - !(ipX_addr_cmp(0, &pcb->local_ip, &ip) && - (pcb->local_port == port))) - { - pcb = pcb->next; - } - - if (pcb != NULL) - { - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* udpLocalAddress */ - { - ipX_addr_t *dst = (ipX_addr_t*)value; - ipX_addr_copy(0, *dst, pcb->local_ip); - } - break; - case 2: /* udpLocalPort */ - { - s32_t *sint_ptr = (s32_t*)value; - *sint_ptr = pcb->local_port; - } - break; - } - } -} - -static void -snmp_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od) -{ - /* return to object name, adding index depth (1) */ - ident_len += 1; - ident -= 1; - if (ident_len == 2) - { - u8_t id; - - od->id_inst_len = ident_len; - od->id_inst_ptr = ident; - - LWIP_ASSERT("invalid id", (ident[0] >= 0) && (ident[0] <= 0xff)); - id = (u8_t)ident[0]; - switch (id) - { - case 1: /* snmpInPkts */ - case 2: /* snmpOutPkts */ - case 3: /* snmpInBadVersions */ - case 4: /* snmpInBadCommunityNames */ - case 5: /* snmpInBadCommunityUses */ - case 6: /* snmpInASNParseErrs */ - case 8: /* snmpInTooBigs */ - case 9: /* snmpInNoSuchNames */ - case 10: /* snmpInBadValues */ - case 11: /* snmpInReadOnlys */ - case 12: /* snmpInGenErrs */ - case 13: /* snmpInTotalReqVars */ - case 14: /* snmpInTotalSetVars */ - case 15: /* snmpInGetRequests */ - case 16: /* snmpInGetNexts */ - case 17: /* snmpInSetRequests */ - case 18: /* snmpInGetResponses */ - case 19: /* snmpInTraps */ - case 20: /* snmpOutTooBigs */ - case 21: /* snmpOutNoSuchNames */ - case 22: /* snmpOutBadValues */ - case 24: /* snmpOutGenErrs */ - case 25: /* snmpOutGetRequests */ - case 26: /* snmpOutGetNexts */ - case 27: /* snmpOutSetRequests */ - case 28: /* snmpOutGetResponses */ - case 29: /* snmpOutTraps */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_ONLY; - od->asn_type = (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER); - od->v_len = sizeof(u32_t); - break; - case 30: /* snmpEnableAuthenTraps */ - od->instance = MIB_OBJECT_SCALAR; - od->access = MIB_OBJECT_READ_WRITE; - od->asn_type = (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG); - od->v_len = sizeof(s32_t); - break; - default: - LWIP_DEBUGF(SNMP_MIB_DEBUG,("snmp_get_object_def: no such object\n")); - od->instance = MIB_OBJECT_NONE; - break; - }; - } - else - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("snmp_get_object_def: no scalar\n")); - od->instance = MIB_OBJECT_NONE; - } -} - -static void -snmp_get_value(struct obj_def *od, u16_t len, void *value) -{ - u32_t *uint_ptr = (u32_t*)value; - u8_t id; - - LWIP_UNUSED_ARG(len); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - switch (id) - { - case 1: /* snmpInPkts */ - *uint_ptr = snmpinpkts; - break; - case 2: /* snmpOutPkts */ - *uint_ptr = snmpoutpkts; - break; - case 3: /* snmpInBadVersions */ - *uint_ptr = snmpinbadversions; - break; - case 4: /* snmpInBadCommunityNames */ - *uint_ptr = snmpinbadcommunitynames; - break; - case 5: /* snmpInBadCommunityUses */ - *uint_ptr = snmpinbadcommunityuses; - break; - case 6: /* snmpInASNParseErrs */ - *uint_ptr = snmpinasnparseerrs; - break; - case 8: /* snmpInTooBigs */ - *uint_ptr = snmpintoobigs; - break; - case 9: /* snmpInNoSuchNames */ - *uint_ptr = snmpinnosuchnames; - break; - case 10: /* snmpInBadValues */ - *uint_ptr = snmpinbadvalues; - break; - case 11: /* snmpInReadOnlys */ - *uint_ptr = snmpinreadonlys; - break; - case 12: /* snmpInGenErrs */ - *uint_ptr = snmpingenerrs; - break; - case 13: /* snmpInTotalReqVars */ - *uint_ptr = snmpintotalreqvars; - break; - case 14: /* snmpInTotalSetVars */ - *uint_ptr = snmpintotalsetvars; - break; - case 15: /* snmpInGetRequests */ - *uint_ptr = snmpingetrequests; - break; - case 16: /* snmpInGetNexts */ - *uint_ptr = snmpingetnexts; - break; - case 17: /* snmpInSetRequests */ - *uint_ptr = snmpinsetrequests; - break; - case 18: /* snmpInGetResponses */ - *uint_ptr = snmpingetresponses; - break; - case 19: /* snmpInTraps */ - *uint_ptr = snmpintraps; - break; - case 20: /* snmpOutTooBigs */ - *uint_ptr = snmpouttoobigs; - break; - case 21: /* snmpOutNoSuchNames */ - *uint_ptr = snmpoutnosuchnames; - break; - case 22: /* snmpOutBadValues */ - *uint_ptr = snmpoutbadvalues; - break; - case 24: /* snmpOutGenErrs */ - *uint_ptr = snmpoutgenerrs; - break; - case 25: /* snmpOutGetRequests */ - *uint_ptr = snmpoutgetrequests; - break; - case 26: /* snmpOutGetNexts */ - *uint_ptr = snmpoutgetnexts; - break; - case 27: /* snmpOutSetRequests */ - *uint_ptr = snmpoutsetrequests; - break; - case 28: /* snmpOutGetResponses */ - *uint_ptr = snmpoutgetresponses; - break; - case 29: /* snmpOutTraps */ - *uint_ptr = snmpouttraps; - break; - case 30: /* snmpEnableAuthenTraps */ - *uint_ptr = *snmpenableauthentraps_ptr; - break; - }; -} - -/** - * Test snmp object value before setting. - * - * @param od is the object definition - * @param len return value space (in bytes) - * @param value points to (varbind) space to copy value from. - */ -static u8_t -snmp_set_test(struct obj_def *od, u16_t len, void *value) -{ - u8_t id, set_ok; - - LWIP_UNUSED_ARG(len); - set_ok = 0; - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - if (id == 30) - { - /* snmpEnableAuthenTraps */ - s32_t *sint_ptr = (s32_t*)value; - - if (snmpenableauthentraps_ptr != &snmpenableauthentraps_default) - { - /* we should have writable non-volatile mem here */ - if ((*sint_ptr == 1) || (*sint_ptr == 2)) - { - set_ok = 1; - } - } - else - { - /* const or hardwired value */ - if (*sint_ptr == snmpenableauthentraps_default) - { - set_ok = 1; - } - } - } - return set_ok; -} - -static void -snmp_set_value(struct obj_def *od, u16_t len, void *value) -{ - u8_t id; - - LWIP_UNUSED_ARG(len); - LWIP_ASSERT("invalid id", (od->id_inst_ptr[0] >= 0) && (od->id_inst_ptr[0] <= 0xff)); - id = (u8_t)od->id_inst_ptr[0]; - if (id == 30) - { - /* snmpEnableAuthenTraps */ - /* @todo @fixme: which kind of pointer is 'value'? s32_t or u8_t??? */ - u8_t *ptr = (u8_t*)value; - *snmpenableauthentraps_ptr = *ptr; - } -} - -#endif /* LWIP_SNMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib_structs.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib_structs.c deleted file mode 100644 index 2f185cb43..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/mib_structs.c +++ /dev/null @@ -1,1174 +0,0 @@ -/** - * @file - * MIB tree access/construction functions. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp_structs.h" -#include "lwip/memp.h" -#include "lwip/netif.h" - -/** .iso.org.dod.internet address prefix, @see snmp_iso_*() */ -const s32_t prefix[4] = {1, 3, 6, 1}; - -#define NODE_STACK_SIZE (LWIP_SNMP_OBJ_ID_LEN) -/** node stack entry (old news?) */ -struct nse -{ - /** right child */ - struct mib_node* r_ptr; - /** right child identifier */ - s32_t r_id; - /** right child next level */ - u8_t r_nl; -}; -static u8_t node_stack_cnt; -static struct nse node_stack[NODE_STACK_SIZE]; - -/** - * Pushes nse struct onto stack. - */ -static void -push_node(struct nse* node) -{ - LWIP_ASSERT("node_stack_cnt < NODE_STACK_SIZE",node_stack_cnt < NODE_STACK_SIZE); - LWIP_DEBUGF(SNMP_MIB_DEBUG,("push_node() node=%p id=%"S32_F"\n",(void*)(node->r_ptr),node->r_id)); - if (node_stack_cnt < NODE_STACK_SIZE) - { - node_stack[node_stack_cnt] = *node; - node_stack_cnt++; - } -} - -/** - * Pops nse struct from stack. - */ -static void -pop_node(struct nse* node) -{ - if (node_stack_cnt > 0) - { - node_stack_cnt--; - *node = node_stack[node_stack_cnt]; - } - LWIP_DEBUGF(SNMP_MIB_DEBUG,("pop_node() node=%p id=%"S32_F"\n",(void *)(node->r_ptr),node->r_id)); -} - -/** - * Conversion from ifIndex to lwIP netif - * @param ifindex is a s32_t object sub-identifier - * @param netif points to returned netif struct pointer - */ -void -snmp_ifindextonetif(s32_t ifindex, struct netif **netif) -{ - struct netif *nif = netif_list; - s32_t i, ifidx; - - ifidx = ifindex - 1; - i = 0; - while ((nif != NULL) && (i < ifidx)) - { - nif = nif->next; - i++; - } - *netif = nif; -} - -/** - * Conversion from lwIP netif to ifIndex - * @param netif points to a netif struct - * @param ifidx points to s32_t object sub-identifier - */ -void -snmp_netiftoifindex(struct netif *netif, s32_t *ifidx) -{ - struct netif *nif = netif_list; - u16_t i; - - i = 0; - while ((nif != NULL) && (nif != netif)) - { - nif = nif->next; - i++; - } - *ifidx = i+1; -} - -/** - * Conversion from oid to lwIP ip_addr - * @param ident points to s32_t ident[4] input - * @param ip points to output struct - */ -void -snmp_oidtoip(s32_t *ident, ip_addr_t *ip) -{ - IP4_ADDR(ip, ident[0], ident[1], ident[2], ident[3]); -} - -/** - * Conversion from lwIP ip_addr to oid - * @param ip points to input struct - * @param ident points to s32_t ident[4] output - */ -void -snmp_iptooid(ip_addr_t *ip, s32_t *ident) -{ - ident[0] = ip4_addr1(ip); - ident[1] = ip4_addr2(ip); - ident[2] = ip4_addr3(ip); - ident[3] = ip4_addr4(ip); -} - -struct mib_list_node * -snmp_mib_ln_alloc(s32_t id) -{ - struct mib_list_node *ln; - - ln = (struct mib_list_node *)memp_malloc(MEMP_SNMP_NODE); - if (ln != NULL) - { - ln->prev = NULL; - ln->next = NULL; - ln->objid = id; - ln->nptr = NULL; - } - return ln; -} - -void -snmp_mib_ln_free(struct mib_list_node *ln) -{ - memp_free(MEMP_SNMP_NODE, ln); -} - -struct mib_list_rootnode * -snmp_mib_lrn_alloc(void) -{ - struct mib_list_rootnode *lrn; - - lrn = (struct mib_list_rootnode*)memp_malloc(MEMP_SNMP_ROOTNODE); - if (lrn != NULL) - { - lrn->get_object_def = noleafs_get_object_def; - lrn->get_value = noleafs_get_value; - lrn->set_test = noleafs_set_test; - lrn->set_value = noleafs_set_value; - lrn->node_type = MIB_NODE_LR; - lrn->maxlength = 0; - lrn->head = NULL; - lrn->tail = NULL; - lrn->count = 0; - } - return lrn; -} - -void -snmp_mib_lrn_free(struct mib_list_rootnode *lrn) -{ - memp_free(MEMP_SNMP_ROOTNODE, lrn); -} - -/** - * Inserts node in idx list in a sorted - * (ascending order) fashion and - * allocates the node if needed. - * - * @param rn points to the root node - * @param objid is the object sub identifier - * @param insn points to a pointer to the inserted node - * used for constructing the tree. - * @return -1 if failed, 1 if inserted, 2 if present. - */ -s8_t -snmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn) -{ - struct mib_list_node *nn; - s8_t insert; - - LWIP_ASSERT("rn != NULL",rn != NULL); - - /* -1 = malloc failure, 0 = not inserted, 1 = inserted, 2 = was present */ - insert = 0; - if (rn->head == NULL) - { - /* empty list, add first node */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("alloc empty list objid==%"S32_F"\n",objid)); - nn = snmp_mib_ln_alloc(objid); - if (nn != NULL) - { - rn->head = nn; - rn->tail = nn; - *insn = nn; - insert = 1; - } - else - { - insert = -1; - } - } - else - { - struct mib_list_node *n; - /* at least one node is present */ - n = rn->head; - while ((n != NULL) && (insert == 0)) - { - if (n->objid == objid) - { - /* node is already there */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("node already there objid==%"S32_F"\n",objid)); - *insn = n; - insert = 2; - } - else if (n->objid < objid) - { - if (n->next == NULL) - { - /* alloc and insert at the tail */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("alloc ins tail objid==%"S32_F"\n",objid)); - nn = snmp_mib_ln_alloc(objid); - if (nn != NULL) - { - nn->next = NULL; - nn->prev = n; - n->next = nn; - rn->tail = nn; - *insn = nn; - insert = 1; - } - else - { - /* insertion failure */ - insert = -1; - } - } - else - { - /* there's more to explore: traverse list */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("traverse list\n")); - n = n->next; - } - } - else - { - /* n->objid > objid */ - /* alloc and insert between n->prev and n */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("alloc ins n->prev, objid==%"S32_F", n\n",objid)); - nn = snmp_mib_ln_alloc(objid); - if (nn != NULL) - { - if (n->prev == NULL) - { - /* insert at the head */ - nn->next = n; - nn->prev = NULL; - rn->head = nn; - n->prev = nn; - } - else - { - /* insert in the middle */ - nn->next = n; - nn->prev = n->prev; - n->prev->next = nn; - n->prev = nn; - } - *insn = nn; - insert = 1; - } - else - { - /* insertion failure */ - insert = -1; - } - } - } - } - if (insert == 1) - { - rn->count += 1; - } - LWIP_ASSERT("insert != 0",insert != 0); - return insert; -} - -/** - * Finds node in idx list and returns deletion mark. - * - * @param rn points to the root node - * @param objid is the object sub identifier - * @param fn returns pointer to found node - * @return 0 if not found, 1 if deletable, - * 2 can't delete (2 or more children), 3 not a list_node - */ -s8_t -snmp_mib_node_find(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **fn) -{ - s8_t fc; - struct mib_list_node *n; - - LWIP_ASSERT("rn != NULL",rn != NULL); - n = rn->head; - while ((n != NULL) && (n->objid != objid)) - { - n = n->next; - } - if (n == NULL) - { - fc = 0; - } - else if (n->nptr == NULL) - { - /* leaf, can delete node */ - fc = 1; - } - else - { - struct mib_list_rootnode *r; - - if (n->nptr->node_type == MIB_NODE_LR) - { - r = (struct mib_list_rootnode *)n->nptr; - if (r->count > 1) - { - /* can't delete node */ - fc = 2; - } - else - { - /* count <= 1, can delete node */ - fc = 1; - } - } - else - { - /* other node type */ - fc = 3; - } - } - *fn = n; - return fc; -} - -/** - * Removes node from idx list - * if it has a single child left. - * - * @param rn points to the root node - * @param n points to the node to delete - * @return the nptr to be freed by caller - */ -struct mib_list_rootnode * -snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n) -{ - struct mib_list_rootnode *next; - - LWIP_ASSERT("rn != NULL",rn != NULL); - LWIP_ASSERT("n != NULL",n != NULL); - - /* caller must remove this sub-tree */ - next = (struct mib_list_rootnode*)(n->nptr); - rn->count -= 1; - - if (n == rn->head) - { - rn->head = n->next; - if (n->next != NULL) - { - /* not last node, new list begin */ - n->next->prev = NULL; - } - } - else if (n == rn->tail) - { - rn->tail = n->prev; - if (n->prev != NULL) - { - /* not last node, new list end */ - n->prev->next = NULL; - } - } - else - { - /* node must be in the middle */ - n->prev->next = n->next; - n->next->prev = n->prev; - } - LWIP_DEBUGF(SNMP_MIB_DEBUG,("free list objid==%"S32_F"\n",n->objid)); - snmp_mib_ln_free(n); - if (rn->count == 0) - { - rn->head = NULL; - rn->tail = NULL; - } - return next; -} - - - -/** - * Searches tree for the supplied (scalar?) object identifier. - * - * @param node points to the root of the tree ('.internet') - * @param ident_len the length of the supplied object identifier - * @param ident points to the array of sub identifiers - * @param np points to the found object instance (return) - * @return pointer to the requested parent (!) node if success, NULL otherwise - */ -struct mib_node * -snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np) -{ - u8_t node_type, ext_level; - - ext_level = 0; - LWIP_DEBUGF(SNMP_MIB_DEBUG,("node==%p *ident==%"S32_F"\n",(void*)node,*ident)); - while (node != NULL) - { - node_type = node->node_type; - if ((node_type == MIB_NODE_AR) || (node_type == MIB_NODE_RA)) - { - struct mib_array_node *an; - u16_t i; - - if (ident_len > 0) - { - /* array node (internal ROM or RAM, fixed length) */ - an = (struct mib_array_node *)node; - i = 0; - while ((i < an->maxlength) && (an->objid[i] != *ident)) - { - i++; - } - if (i < an->maxlength) - { - /* found it, if available proceed to child, otherwise inspect leaf */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("an->objid[%"U16_F"]==%"S32_F" *ident==%"S32_F"\n",i,an->objid[i],*ident)); - if (an->nptr[i] == NULL) - { - /* a scalar leaf OR table, - inspect remaining instance number / table index */ - np->ident_len = ident_len; - np->ident = ident; - return (struct mib_node*)an; - } - else - { - /* follow next child pointer */ - ident++; - ident_len--; - node = an->nptr[i]; - } - } - else - { - /* search failed, identifier mismatch (nosuchname) */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("an search failed *ident==%"S32_F"\n",*ident)); - return NULL; - } - } - else - { - /* search failed, short object identifier (nosuchname) */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("an search failed, short object identifier\n")); - return NULL; - } - } - else if(node_type == MIB_NODE_LR) - { - struct mib_list_rootnode *lrn; - struct mib_list_node *ln; - - if (ident_len > 0) - { - /* list root node (internal 'RAM', variable length) */ - lrn = (struct mib_list_rootnode *)node; - ln = lrn->head; - /* iterate over list, head to tail */ - while ((ln != NULL) && (ln->objid != *ident)) - { - ln = ln->next; - } - if (ln != NULL) - { - /* found it, proceed to child */; - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ln->objid==%"S32_F" *ident==%"S32_F"\n",ln->objid,*ident)); - if (ln->nptr == NULL) - { - np->ident_len = ident_len; - np->ident = ident; - return (struct mib_node*)lrn; - } - else - { - /* follow next child pointer */ - ident_len--; - ident++; - node = ln->nptr; - } - } - else - { - /* search failed */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ln search failed *ident==%"S32_F"\n",*ident)); - return NULL; - } - } - else - { - /* search failed, short object identifier (nosuchname) */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ln search failed, short object identifier\n")); - return NULL; - } - } - else if(node_type == MIB_NODE_EX) - { - struct mib_external_node *en; - u16_t i, len; - - if (ident_len > 0) - { - /* external node (addressing and access via functions) */ - en = (struct mib_external_node *)node; - - i = 0; - len = en->level_length(en->addr_inf,ext_level); - while ((i < len) && (en->ident_cmp(en->addr_inf,ext_level,i,*ident) != 0)) - { - i++; - } - if (i < len) - { - s32_t debug_id; - - en->get_objid(en->addr_inf,ext_level,i,&debug_id); - LWIP_DEBUGF(SNMP_MIB_DEBUG,("en->objid==%"S32_F" *ident==%"S32_F"\n",debug_id,*ident)); - if ((ext_level + 1) == en->tree_levels) - { - np->ident_len = ident_len; - np->ident = ident; - return (struct mib_node*)en; - } - else - { - /* found it, proceed to child */ - ident_len--; - ident++; - ext_level++; - } - } - else - { - /* search failed */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("en search failed *ident==%"S32_F"\n",*ident)); - return NULL; - } - } - else - { - /* search failed, short object identifier (nosuchname) */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("en search failed, short object identifier\n")); - return NULL; - } - } - else if (node_type == MIB_NODE_SC) - { - mib_scalar_node *sn; - - sn = (mib_scalar_node *)node; - if ((ident_len == 1) && (*ident == 0)) - { - np->ident_len = ident_len; - np->ident = ident; - return (struct mib_node*)sn; - } - else - { - /* search failed, short object identifier (nosuchname) */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("search failed, invalid object identifier length\n")); - return NULL; - } - } - else - { - /* unknown node_type */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("search failed node_type %"U16_F" unkown\n",(u16_t)node_type)); - return NULL; - } - } - /* done, found nothing */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("search failed node==%p\n",(void*)node)); - return NULL; -} - -/** - * Test table for presence of at least one table entry. - */ -static u8_t -empty_table(struct mib_node *node) -{ - u8_t node_type; - u8_t empty = 0; - - if (node != NULL) - { - node_type = node->node_type; - if (node_type == MIB_NODE_LR) - { - struct mib_list_rootnode *lrn; - lrn = (struct mib_list_rootnode *)node; - if ((lrn->count == 0) || (lrn->head == NULL)) - { - empty = 1; - } - } - else if ((node_type == MIB_NODE_AR) || (node_type == MIB_NODE_RA)) - { - struct mib_array_node *an; - an = (struct mib_array_node *)node; - if ((an->maxlength == 0) || (an->nptr == NULL)) - { - empty = 1; - } - } - else if (node_type == MIB_NODE_EX) - { - struct mib_external_node *en; - en = (struct mib_external_node *)node; - if (en->tree_levels == 0) - { - empty = 1; - } - } - } - return empty; -} - -/** - * Tree expansion. - */ -struct mib_node * -snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret) -{ - u8_t node_type, ext_level, climb_tree; - - ext_level = 0; - /* reset node stack */ - node_stack_cnt = 0; - while (node != NULL) - { - climb_tree = 0; - node_type = node->node_type; - if ((node_type == MIB_NODE_AR) || (node_type == MIB_NODE_RA)) - { - struct mib_array_node *an; - u16_t i; - - /* array node (internal ROM or RAM, fixed length) */ - an = (struct mib_array_node *)node; - if (ident_len > 0) - { - i = 0; - while ((i < an->maxlength) && (an->objid[i] < *ident)) - { - i++; - } - if (i < an->maxlength) - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("an->objid[%"U16_F"]==%"S32_F" *ident==%"S32_F"\n",i,an->objid[i],*ident)); - /* add identifier to oidret */ - oidret->id[oidret->len] = an->objid[i]; - (oidret->len)++; - - if (an->nptr[i] == NULL) - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("leaf node\n")); - /* leaf node (e.g. in a fixed size table) */ - if (an->objid[i] > *ident) - { - return (struct mib_node*)an; - } - else if ((i + 1) < an->maxlength) - { - /* an->objid[i] == *ident */ - (oidret->len)--; - oidret->id[oidret->len] = an->objid[i + 1]; - (oidret->len)++; - return (struct mib_node*)an; - } - else - { - /* (i + 1) == an->maxlength */ - (oidret->len)--; - climb_tree = 1; - } - } - else - { - u8_t j; - struct nse cur_node; - - LWIP_DEBUGF(SNMP_MIB_DEBUG,("non-leaf node\n")); - /* non-leaf, store right child ptr and id */ - LWIP_ASSERT("i < 0xff", i < 0xff); - j = (u8_t)i + 1; - while ((j < an->maxlength) && (empty_table(an->nptr[j]))) - { - j++; - } - if (j < an->maxlength) - { - cur_node.r_ptr = an->nptr[j]; - cur_node.r_id = an->objid[j]; - cur_node.r_nl = 0; - } - else - { - cur_node.r_ptr = NULL; - } - push_node(&cur_node); - if (an->objid[i] == *ident) - { - ident_len--; - ident++; - } - else - { - /* an->objid[i] < *ident */ - ident_len = 0; - } - /* follow next child pointer */ - node = an->nptr[i]; - } - } - else - { - /* i == an->maxlength */ - climb_tree = 1; - } - } - else - { - u8_t j; - /* ident_len == 0, complete with leftmost '.thing' */ - j = 0; - while ((j < an->maxlength) && empty_table(an->nptr[j])) - { - j++; - } - if (j < an->maxlength) - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("left an->objid[j]==%"S32_F"\n",an->objid[j])); - oidret->id[oidret->len] = an->objid[j]; - (oidret->len)++; - if (an->nptr[j] == NULL) - { - /* leaf node */ - return (struct mib_node*)an; - } - else - { - /* no leaf, continue */ - node = an->nptr[j]; - } - } - else - { - /* j == an->maxlength */ - climb_tree = 1; - } - } - } - else if(node_type == MIB_NODE_LR) - { - struct mib_list_rootnode *lrn; - struct mib_list_node *ln; - - /* list root node (internal 'RAM', variable length) */ - lrn = (struct mib_list_rootnode *)node; - if (ident_len > 0) - { - ln = lrn->head; - /* iterate over list, head to tail */ - while ((ln != NULL) && (ln->objid < *ident)) - { - ln = ln->next; - } - if (ln != NULL) - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("ln->objid==%"S32_F" *ident==%"S32_F"\n",ln->objid,*ident)); - oidret->id[oidret->len] = ln->objid; - (oidret->len)++; - if (ln->nptr == NULL) - { - /* leaf node */ - if (ln->objid > *ident) - { - return (struct mib_node*)lrn; - } - else if (ln->next != NULL) - { - /* ln->objid == *ident */ - (oidret->len)--; - oidret->id[oidret->len] = ln->next->objid; - (oidret->len)++; - return (struct mib_node*)lrn; - } - else - { - /* ln->next == NULL */ - (oidret->len)--; - climb_tree = 1; - } - } - else - { - struct mib_list_node *jn; - struct nse cur_node; - - /* non-leaf, store right child ptr and id */ - jn = ln->next; - while ((jn != NULL) && empty_table(jn->nptr)) - { - jn = jn->next; - } - if (jn != NULL) - { - cur_node.r_ptr = jn->nptr; - cur_node.r_id = jn->objid; - cur_node.r_nl = 0; - } - else - { - cur_node.r_ptr = NULL; - } - push_node(&cur_node); - if (ln->objid == *ident) - { - ident_len--; - ident++; - } - else - { - /* ln->objid < *ident */ - ident_len = 0; - } - /* follow next child pointer */ - node = ln->nptr; - } - - } - else - { - /* ln == NULL */ - climb_tree = 1; - } - } - else - { - struct mib_list_node *jn; - /* ident_len == 0, complete with leftmost '.thing' */ - jn = lrn->head; - while ((jn != NULL) && empty_table(jn->nptr)) - { - jn = jn->next; - } - if (jn != NULL) - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("left jn->objid==%"S32_F"\n",jn->objid)); - oidret->id[oidret->len] = jn->objid; - (oidret->len)++; - if (jn->nptr == NULL) - { - /* leaf node */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("jn->nptr == NULL\n")); - return (struct mib_node*)lrn; - } - else - { - /* no leaf, continue */ - node = jn->nptr; - } - } - else - { - /* jn == NULL */ - climb_tree = 1; - } - } - } - else if(node_type == MIB_NODE_EX) - { - struct mib_external_node *en; - s32_t ex_id; - - /* external node (addressing and access via functions) */ - en = (struct mib_external_node *)node; - if (ident_len > 0) - { - u16_t i, len; - - i = 0; - len = en->level_length(en->addr_inf,ext_level); - while ((i < len) && (en->ident_cmp(en->addr_inf,ext_level,i,*ident) < 0)) - { - i++; - } - if (i < len) - { - /* add identifier to oidret */ - en->get_objid(en->addr_inf,ext_level,i,&ex_id); - LWIP_DEBUGF(SNMP_MIB_DEBUG,("en->objid[%"U16_F"]==%"S32_F" *ident==%"S32_F"\n",i,ex_id,*ident)); - oidret->id[oidret->len] = ex_id; - (oidret->len)++; - - if ((ext_level + 1) == en->tree_levels) - { - LWIP_DEBUGF(SNMP_MIB_DEBUG,("leaf node\n")); - /* leaf node */ - if (ex_id > *ident) - { - return (struct mib_node*)en; - } - else if ((i + 1) < len) - { - /* ex_id == *ident */ - en->get_objid(en->addr_inf,ext_level,i + 1,&ex_id); - (oidret->len)--; - oidret->id[oidret->len] = ex_id; - (oidret->len)++; - return (struct mib_node*)en; - } - else - { - /* (i + 1) == len */ - (oidret->len)--; - climb_tree = 1; - } - } - else - { - u8_t j; - struct nse cur_node; - - LWIP_DEBUGF(SNMP_MIB_DEBUG,("non-leaf node\n")); - /* non-leaf, store right child ptr and id */ - LWIP_ASSERT("i < 0xff", i < 0xff); - j = (u8_t)i + 1; - if (j < len) - { - /* right node is the current external node */ - cur_node.r_ptr = node; - en->get_objid(en->addr_inf,ext_level,j,&cur_node.r_id); - cur_node.r_nl = ext_level + 1; - } - else - { - cur_node.r_ptr = NULL; - } - push_node(&cur_node); - if (en->ident_cmp(en->addr_inf,ext_level,i,*ident) == 0) - { - ident_len--; - ident++; - } - else - { - /* external id < *ident */ - ident_len = 0; - } - /* proceed to child */ - ext_level++; - } - } - else - { - /* i == len (en->level_len()) */ - climb_tree = 1; - } - } - else - { - /* ident_len == 0, complete with leftmost '.thing' */ - en->get_objid(en->addr_inf,ext_level,0,&ex_id); - LWIP_DEBUGF(SNMP_MIB_DEBUG,("left en->objid==%"S32_F"\n",ex_id)); - oidret->id[oidret->len] = ex_id; - (oidret->len)++; - if ((ext_level + 1) == en->tree_levels) - { - /* leaf node */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("(ext_level + 1) == en->tree_levels\n")); - return (struct mib_node*)en; - } - else - { - /* no leaf, proceed to child */ - ext_level++; - } - } - } - else if(node_type == MIB_NODE_SC) - { - mib_scalar_node *sn; - - /* scalar node */ - sn = (mib_scalar_node *)node; - if (ident_len > 0) - { - /* at .0 */ - climb_tree = 1; - } - else - { - /* ident_len == 0, complete object identifier */ - oidret->id[oidret->len] = 0; - (oidret->len)++; - /* leaf node */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("completed scalar leaf\n")); - return (struct mib_node*)sn; - } - } - else - { - /* unknown/unhandled node_type */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("expand failed node_type %"U16_F" unkown\n",(u16_t)node_type)); - return NULL; - } - - if (climb_tree) - { - struct nse child; - - /* find right child ptr */ - child.r_ptr = NULL; - child.r_id = 0; - child.r_nl = 0; - while ((node_stack_cnt > 0) && (child.r_ptr == NULL)) - { - pop_node(&child); - /* trim returned oid */ - (oidret->len)--; - } - if (child.r_ptr != NULL) - { - /* incoming ident is useless beyond this point */ - ident_len = 0; - oidret->id[oidret->len] = child.r_id; - oidret->len++; - node = child.r_ptr; - ext_level = child.r_nl; - } - else - { - /* tree ends here ... */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("expand failed, tree ends here\n")); - return NULL; - } - } - } - /* done, found nothing */ - LWIP_DEBUGF(SNMP_MIB_DEBUG,("expand failed node==%p\n",(void*)node)); - return NULL; -} - -/** - * Test object identifier for the iso.org.dod.internet prefix. - * - * @param ident_len the length of the supplied object identifier - * @param ident points to the array of sub identifiers - * @return 1 if it matches, 0 otherwise - */ -u8_t -snmp_iso_prefix_tst(u8_t ident_len, s32_t *ident) -{ - if ((ident_len > 3) && - (ident[0] == 1) && (ident[1] == 3) && - (ident[2] == 6) && (ident[3] == 1)) - { - return 1; - } - else - { - return 0; - } -} - -/** - * Expands object identifier to the iso.org.dod.internet - * prefix for use in getnext operation. - * - * @param ident_len the length of the supplied object identifier - * @param ident points to the array of sub identifiers - * @param oidret points to returned expanded object identifier - * @return 1 if it matches, 0 otherwise - * - * @note ident_len 0 is allowed, expanding to the first known object id!! - */ -u8_t -snmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret) -{ - const s32_t *prefix_ptr; - s32_t *ret_ptr; - u8_t i; - - i = 0; - prefix_ptr = &prefix[0]; - ret_ptr = &oidret->id[0]; - ident_len = ((ident_len < 4)?ident_len:4); - while ((i < ident_len) && ((*ident) <= (*prefix_ptr))) - { - *ret_ptr++ = *prefix_ptr++; - ident++; - i++; - } - if (i == ident_len) - { - /* match, complete missing bits */ - while (i < 4) - { - *ret_ptr++ = *prefix_ptr++; - i++; - } - oidret->len = i; - return 1; - } - else - { - /* i != ident_len */ - return 0; - } -} - -#endif /* LWIP_SNMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_in.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_in.c deleted file mode 100644 index 2dfb55b25..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_in.c +++ /dev/null @@ -1,1437 +0,0 @@ -/** - * @file - * SNMP input message processing (RFC1157). - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp.h" -#include "lwip/snmp_asn1.h" -#include "lwip/snmp_msg.h" -#include "lwip/snmp_structs.h" -#include "lwip/ip_addr.h" -#include "lwip/memp.h" -#include "lwip/udp.h" -#include "lwip/stats.h" - -#include - -/* public (non-static) constants */ -/** SNMP v1 == 0 */ -const s32_t snmp_version = 0; -/** default SNMP community string */ -const char snmp_publiccommunity[7] = "public"; - -/* statically allocated buffers for SNMP_CONCURRENT_REQUESTS */ -struct snmp_msg_pstat msg_input_list[SNMP_CONCURRENT_REQUESTS]; -/* UDP Protocol Control Block */ -struct udp_pcb *snmp1_pcb; - -static void snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port); -static err_t snmp_pdu_header_check(struct pbuf *p, u16_t ofs, u16_t pdu_len, u16_t *ofs_ret, struct snmp_msg_pstat *m_stat); -static err_t snmp_pdu_dec_varbindlist(struct pbuf *p, u16_t ofs, u16_t *ofs_ret, struct snmp_msg_pstat *m_stat); - - -/** - * Starts SNMP Agent. - * Allocates UDP pcb and binds it to IP_ADDR_ANY port 161. - */ -void -snmp_init(void) -{ - struct snmp_msg_pstat *msg_ps; - u8_t i; - - snmp1_pcb = udp_new(); - if (snmp1_pcb != NULL) - { - udp_recv(snmp1_pcb, snmp_recv, (void *)SNMP_IN_PORT); - udp_bind(snmp1_pcb, IP_ADDR_ANY, SNMP_IN_PORT); - } - msg_ps = &msg_input_list[0]; - for (i=0; istate = SNMP_MSG_EMPTY; - msg_ps->error_index = 0; - msg_ps->error_status = SNMP_ES_NOERROR; - msg_ps++; - } - trap_msg.pcb = snmp1_pcb; - -#ifdef SNMP_PRIVATE_MIB_INIT - /* If defined, rhis must be a function-like define to initialize the - * private MIB after the stack has been initialized. - * The private MIB can also be initialized in tcpip_callback (or after - * the stack is initialized), this define is only for convenience. */ - SNMP_PRIVATE_MIB_INIT(); -#endif /* SNMP_PRIVATE_MIB_INIT */ - - /* The coldstart trap will only be output - if our outgoing interface is up & configured */ - snmp_coldstart_trap(); -} - -static void -snmp_error_response(struct snmp_msg_pstat *msg_ps, u8_t error) -{ - snmp_varbind_list_free(&msg_ps->outvb); - msg_ps->outvb = msg_ps->invb; - msg_ps->invb.head = NULL; - msg_ps->invb.tail = NULL; - msg_ps->invb.count = 0; - msg_ps->error_status = error; - msg_ps->error_index = 1 + msg_ps->vb_idx; - snmp_send_response(msg_ps); - snmp_varbind_list_free(&msg_ps->outvb); - msg_ps->state = SNMP_MSG_EMPTY; -} - -static void -snmp_ok_response(struct snmp_msg_pstat *msg_ps) -{ - err_t err_ret; - - err_ret = snmp_send_response(msg_ps); - if (err_ret == ERR_MEM) - { - /* serious memory problem, can't return tooBig */ - } - else - { - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event = %"S32_F"\n",msg_ps->error_status)); - } - /* free varbinds (if available) */ - snmp_varbind_list_free(&msg_ps->invb); - snmp_varbind_list_free(&msg_ps->outvb); - msg_ps->state = SNMP_MSG_EMPTY; -} - -/** - * Service an internal or external event for SNMP GET. - * - * @param request_id identifies requests from 0 to (SNMP_CONCURRENT_REQUESTS-1) - * @param msg_ps points to the assosicated message process state - */ -static void -snmp_msg_get_event(u8_t request_id, struct snmp_msg_pstat *msg_ps) -{ - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_get_event: msg_ps->state==%"U16_F"\n",(u16_t)msg_ps->state)); - - if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF) - { - struct mib_external_node *en; - struct snmp_name_ptr np; - - /* get_object_def() answer*/ - en = msg_ps->ext_mib_node; - np = msg_ps->ext_name_ptr; - - /* translate answer into a known lifeform */ - en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def); - if ((msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) && - (msg_ps->ext_object_def.access & MIB_ACCESS_READ)) - { - msg_ps->state = SNMP_MSG_EXTERNAL_GET_VALUE; - en->get_value_q(request_id, &msg_ps->ext_object_def); - } - else - { - en->get_object_def_pc(request_id, np.ident_len, np.ident); - /* search failed, object id points to unknown object (nosuchname) */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - else if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_VALUE) - { - struct mib_external_node *en; - struct snmp_varbind *vb; - - /* get_value() answer */ - en = msg_ps->ext_mib_node; - - /* allocate output varbind */ - vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); - LWIP_ASSERT("vb != NULL",vb != NULL); - if (vb != NULL) - { - vb->next = NULL; - vb->prev = NULL; - - /* move name from invb to outvb */ - vb->ident = msg_ps->vb_ptr->ident; - vb->ident_len = msg_ps->vb_ptr->ident_len; - /* ensure this memory is refereced once only */ - msg_ps->vb_ptr->ident = NULL; - msg_ps->vb_ptr->ident_len = 0; - - vb->value_type = msg_ps->ext_object_def.asn_type; - LWIP_ASSERT("invalid length", msg_ps->ext_object_def.v_len <= 0xff); - vb->value_len = (u8_t)msg_ps->ext_object_def.v_len; - if (vb->value_len > 0) - { - LWIP_ASSERT("SNMP_MAX_OCTET_STRING_LEN is configured too low", vb->value_len <= SNMP_MAX_VALUE_SIZE); - vb->value = memp_malloc(MEMP_SNMP_VALUE); - LWIP_ASSERT("vb->value != NULL",vb->value != NULL); - if (vb->value != NULL) - { - en->get_value_a(request_id, &msg_ps->ext_object_def, vb->value_len, vb->value); - snmp_varbind_tail_add(&msg_ps->outvb, vb); - /* search again (if vb_idx < msg_ps->invb.count) */ - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - else - { - en->get_value_pc(request_id, &msg_ps->ext_object_def); - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no variable space\n")); - msg_ps->vb_ptr->ident = vb->ident; - msg_ps->vb_ptr->ident_len = vb->ident_len; - memp_free(MEMP_SNMP_VARBIND, vb); - snmp_error_response(msg_ps,SNMP_ES_TOOBIG); - } - } - else - { - /* vb->value_len == 0, empty value (e.g. empty string) */ - en->get_value_a(request_id, &msg_ps->ext_object_def, 0, NULL); - vb->value = NULL; - snmp_varbind_tail_add(&msg_ps->outvb, vb); - /* search again (if vb_idx < msg_ps->invb.count) */ - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - } - else - { - en->get_value_pc(request_id, &msg_ps->ext_object_def); - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: no outvb space\n")); - snmp_error_response(msg_ps,SNMP_ES_TOOBIG); - } - } - - while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && - (msg_ps->vb_idx < msg_ps->invb.count)) - { - struct mib_node *mn; - struct snmp_name_ptr np; - - if (msg_ps->vb_idx == 0) - { - msg_ps->vb_ptr = msg_ps->invb.head; - } - else - { - msg_ps->vb_ptr = msg_ps->vb_ptr->next; - } - /** test object identifier for .iso.org.dod.internet prefix */ - if (snmp_iso_prefix_tst(msg_ps->vb_ptr->ident_len, msg_ps->vb_ptr->ident)) - { - mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, - msg_ps->vb_ptr->ident + 4, &np); - if (mn != NULL) - { - if (mn->node_type == MIB_NODE_EX) - { - /* external object */ - struct mib_external_node *en = (struct mib_external_node*)mn; - - msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; - /* save en && args in msg_ps!! */ - msg_ps->ext_mib_node = en; - msg_ps->ext_name_ptr = np; - - en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); - } - else - { - /* internal object */ - struct obj_def object_def; - - msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF; - mn->get_object_def(np.ident_len, np.ident, &object_def); - if ((object_def.instance != MIB_OBJECT_NONE) && - (object_def.access & MIB_ACCESS_READ)) - { - mn = mn; - } - else - { - /* search failed, object id points to unknown object (nosuchname) */ - mn = NULL; - } - if (mn != NULL) - { - struct snmp_varbind *vb; - - msg_ps->state = SNMP_MSG_INTERNAL_GET_VALUE; - /* allocate output varbind */ - vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); - LWIP_ASSERT("vb != NULL",vb != NULL); - if (vb != NULL) - { - vb->next = NULL; - vb->prev = NULL; - - /* move name from invb to outvb */ - vb->ident = msg_ps->vb_ptr->ident; - vb->ident_len = msg_ps->vb_ptr->ident_len; - /* ensure this memory is refereced once only */ - msg_ps->vb_ptr->ident = NULL; - msg_ps->vb_ptr->ident_len = 0; - - vb->value_type = object_def.asn_type; - LWIP_ASSERT("invalid length", object_def.v_len <= 0xff); - vb->value_len = (u8_t)object_def.v_len; - if (vb->value_len > 0) - { - LWIP_ASSERT("SNMP_MAX_OCTET_STRING_LEN is configured too low", - vb->value_len <= SNMP_MAX_VALUE_SIZE); - vb->value = memp_malloc(MEMP_SNMP_VALUE); - LWIP_ASSERT("vb->value != NULL",vb->value != NULL); - if (vb->value != NULL) - { - mn->get_value(&object_def, vb->value_len, vb->value); - snmp_varbind_tail_add(&msg_ps->outvb, vb); - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - else - { - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: couldn't allocate variable space\n")); - msg_ps->vb_ptr->ident = vb->ident; - msg_ps->vb_ptr->ident_len = vb->ident_len; - memp_free(MEMP_SNMP_VARBIND, vb); - snmp_error_response(msg_ps,SNMP_ES_TOOBIG); - } - } - else - { - /* vb->value_len == 0, empty value (e.g. empty string) */ - vb->value = NULL; - snmp_varbind_tail_add(&msg_ps->outvb, vb); - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - } - else - { - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_event: couldn't allocate outvb space\n")); - snmp_error_response(msg_ps,SNMP_ES_TOOBIG); - } - } - } - } - } - else - { - mn = NULL; - } - if (mn == NULL) - { - /* mn == NULL, noSuchName */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - if ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && - (msg_ps->vb_idx == msg_ps->invb.count)) - { - snmp_ok_response(msg_ps); - } -} - -/** - * Service an internal or external event for SNMP GETNEXT. - * - * @param request_id identifies requests from 0 to (SNMP_CONCURRENT_REQUESTS-1) - * @param msg_ps points to the assosicated message process state - */ -static void -snmp_msg_getnext_event(u8_t request_id, struct snmp_msg_pstat *msg_ps) -{ - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_getnext_event: msg_ps->state==%"U16_F"\n",(u16_t)msg_ps->state)); - - if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF) - { - struct mib_external_node *en; - - /* get_object_def() answer*/ - en = msg_ps->ext_mib_node; - - /* translate answer into a known lifeform */ - en->get_object_def_a(request_id, 1, &msg_ps->ext_oid.id[msg_ps->ext_oid.len - 1], &msg_ps->ext_object_def); - if (msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) - { - msg_ps->state = SNMP_MSG_EXTERNAL_GET_VALUE; - en->get_value_q(request_id, &msg_ps->ext_object_def); - } - else - { - en->get_object_def_pc(request_id, 1, &msg_ps->ext_oid.id[msg_ps->ext_oid.len - 1]); - /* search failed, object id points to unknown object (nosuchname) */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - else if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_VALUE) - { - struct mib_external_node *en; - struct snmp_varbind *vb; - - /* get_value() answer */ - en = msg_ps->ext_mib_node; - - LWIP_ASSERT("invalid length", msg_ps->ext_object_def.v_len <= 0xff); - vb = snmp_varbind_alloc(&msg_ps->ext_oid, - msg_ps->ext_object_def.asn_type, - (u8_t)msg_ps->ext_object_def.v_len); - if (vb != NULL) - { - en->get_value_a(request_id, &msg_ps->ext_object_def, vb->value_len, vb->value); - snmp_varbind_tail_add(&msg_ps->outvb, vb); - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - else - { - en->get_value_pc(request_id, &msg_ps->ext_object_def); - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_getnext_event: couldn't allocate outvb space\n")); - snmp_error_response(msg_ps,SNMP_ES_TOOBIG); - } - } - - while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && - (msg_ps->vb_idx < msg_ps->invb.count)) - { - struct mib_node *mn; - struct snmp_obj_id oid; - - if (msg_ps->vb_idx == 0) - { - msg_ps->vb_ptr = msg_ps->invb.head; - } - else - { - msg_ps->vb_ptr = msg_ps->vb_ptr->next; - } - if (snmp_iso_prefix_expand(msg_ps->vb_ptr->ident_len, msg_ps->vb_ptr->ident, &oid)) - { - if (msg_ps->vb_ptr->ident_len > 3) - { - /* can offset ident_len and ident */ - mn = snmp_expand_tree((struct mib_node*)&internet, - msg_ps->vb_ptr->ident_len - 4, - msg_ps->vb_ptr->ident + 4, &oid); - } - else - { - /* can't offset ident_len -4, ident + 4 */ - mn = snmp_expand_tree((struct mib_node*)&internet, 0, NULL, &oid); - } - } - else - { - mn = NULL; - } - if (mn != NULL) - { - if (mn->node_type == MIB_NODE_EX) - { - /* external object */ - struct mib_external_node *en = (struct mib_external_node*)mn; - - msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; - /* save en && args in msg_ps!! */ - msg_ps->ext_mib_node = en; - msg_ps->ext_oid = oid; - - en->get_object_def_q(en->addr_inf, request_id, 1, &oid.id[oid.len - 1]); - } - else - { - /* internal object */ - struct obj_def object_def; - struct snmp_varbind *vb; - - msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF; - mn->get_object_def(1, &oid.id[oid.len - 1], &object_def); - - LWIP_ASSERT("invalid length", object_def.v_len <= 0xff); - vb = snmp_varbind_alloc(&oid, object_def.asn_type, (u8_t)object_def.v_len); - if (vb != NULL) - { - msg_ps->state = SNMP_MSG_INTERNAL_GET_VALUE; - mn->get_value(&object_def, object_def.v_len, vb->value); - snmp_varbind_tail_add(&msg_ps->outvb, vb); - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - else - { - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv couldn't allocate outvb space\n")); - snmp_error_response(msg_ps,SNMP_ES_TOOBIG); - } - } - } - if (mn == NULL) - { - /* mn == NULL, noSuchName */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - if ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && - (msg_ps->vb_idx == msg_ps->invb.count)) - { - snmp_ok_response(msg_ps); - } -} - -/** - * Service an internal or external event for SNMP SET. - * - * @param request_id identifies requests from 0 to (SNMP_CONCURRENT_REQUESTS-1) - * @param msg_ps points to the assosicated message process state - */ -static void -snmp_msg_set_event(u8_t request_id, struct snmp_msg_pstat *msg_ps) -{ - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_msg_set_event: msg_ps->state==%"U16_F"\n",(u16_t)msg_ps->state)); - - if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF) - { - struct mib_external_node *en; - struct snmp_name_ptr np; - - /* get_object_def() answer*/ - en = msg_ps->ext_mib_node; - np = msg_ps->ext_name_ptr; - - /* translate answer into a known lifeform */ - en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def); - if (msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) - { - msg_ps->state = SNMP_MSG_EXTERNAL_SET_TEST; - en->set_test_q(request_id, &msg_ps->ext_object_def); - } - else - { - en->get_object_def_pc(request_id, np.ident_len, np.ident); - /* search failed, object id points to unknown object (nosuchname) */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - else if (msg_ps->state == SNMP_MSG_EXTERNAL_SET_TEST) - { - struct mib_external_node *en; - - /* set_test() answer*/ - en = msg_ps->ext_mib_node; - - if (msg_ps->ext_object_def.access & MIB_ACCESS_WRITE) - { - if ((msg_ps->ext_object_def.asn_type == msg_ps->vb_ptr->value_type) && - (en->set_test_a(request_id,&msg_ps->ext_object_def, - msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value) != 0)) - { - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - else - { - en->set_test_pc(request_id,&msg_ps->ext_object_def); - /* bad value */ - snmp_error_response(msg_ps,SNMP_ES_BADVALUE); - } - } - else - { - en->set_test_pc(request_id,&msg_ps->ext_object_def); - /* object not available for set */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - else if (msg_ps->state == SNMP_MSG_EXTERNAL_GET_OBJDEF_S) - { - struct mib_external_node *en; - struct snmp_name_ptr np; - - /* get_object_def() answer*/ - en = msg_ps->ext_mib_node; - np = msg_ps->ext_name_ptr; - - /* translate answer into a known lifeform */ - en->get_object_def_a(request_id, np.ident_len, np.ident, &msg_ps->ext_object_def); - if (msg_ps->ext_object_def.instance != MIB_OBJECT_NONE) - { - msg_ps->state = SNMP_MSG_EXTERNAL_SET_VALUE; - en->set_value_q(request_id, &msg_ps->ext_object_def, - msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value); - } - else - { - en->get_object_def_pc(request_id, np.ident_len, np.ident); - /* set_value failed, object has disappeared for some odd reason?? */ - snmp_error_response(msg_ps,SNMP_ES_GENERROR); - } - } - else if (msg_ps->state == SNMP_MSG_EXTERNAL_SET_VALUE) - { - struct mib_external_node *en; - - /** set_value_a() */ - en = msg_ps->ext_mib_node; - en->set_value_a(request_id, &msg_ps->ext_object_def, - msg_ps->vb_ptr->value_len, msg_ps->vb_ptr->value); - - /** @todo use set_value_pc() if toobig */ - msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE; - msg_ps->vb_idx += 1; - } - - /* test all values before setting */ - while ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && - (msg_ps->vb_idx < msg_ps->invb.count)) - { - struct mib_node *mn; - struct snmp_name_ptr np; - - if (msg_ps->vb_idx == 0) - { - msg_ps->vb_ptr = msg_ps->invb.head; - } - else - { - msg_ps->vb_ptr = msg_ps->vb_ptr->next; - } - /** test object identifier for .iso.org.dod.internet prefix */ - if (snmp_iso_prefix_tst(msg_ps->vb_ptr->ident_len, msg_ps->vb_ptr->ident)) - { - mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, - msg_ps->vb_ptr->ident + 4, &np); - if (mn != NULL) - { - if (mn->node_type == MIB_NODE_EX) - { - /* external object */ - struct mib_external_node *en = (struct mib_external_node*)mn; - - msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF; - /* save en && args in msg_ps!! */ - msg_ps->ext_mib_node = en; - msg_ps->ext_name_ptr = np; - - en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); - } - else - { - /* internal object */ - struct obj_def object_def; - - msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF; - mn->get_object_def(np.ident_len, np.ident, &object_def); - if (object_def.instance != MIB_OBJECT_NONE) - { - mn = mn; - } - else - { - /* search failed, object id points to unknown object (nosuchname) */ - mn = NULL; - } - if (mn != NULL) - { - msg_ps->state = SNMP_MSG_INTERNAL_SET_TEST; - - if (object_def.access & MIB_ACCESS_WRITE) - { - if ((object_def.asn_type == msg_ps->vb_ptr->value_type) && - (mn->set_test(&object_def,msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value) != 0)) - { - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - msg_ps->vb_idx += 1; - } - else - { - /* bad value */ - snmp_error_response(msg_ps,SNMP_ES_BADVALUE); - } - } - else - { - /* object not available for set */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - } - } - } - else - { - mn = NULL; - } - if (mn == NULL) - { - /* mn == NULL, noSuchName */ - snmp_error_response(msg_ps,SNMP_ES_NOSUCHNAME); - } - } - - if ((msg_ps->state == SNMP_MSG_SEARCH_OBJ) && - (msg_ps->vb_idx == msg_ps->invb.count)) - { - msg_ps->vb_idx = 0; - msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE; - } - - /* set all values "atomically" (be as "atomic" as possible) */ - while ((msg_ps->state == SNMP_MSG_INTERNAL_SET_VALUE) && - (msg_ps->vb_idx < msg_ps->invb.count)) - { - struct mib_node *mn; - struct snmp_name_ptr np; - - if (msg_ps->vb_idx == 0) - { - msg_ps->vb_ptr = msg_ps->invb.head; - } - else - { - msg_ps->vb_ptr = msg_ps->vb_ptr->next; - } - /* skip iso prefix test, was done previously while settesting() */ - mn = snmp_search_tree((struct mib_node*)&internet, msg_ps->vb_ptr->ident_len - 4, - msg_ps->vb_ptr->ident + 4, &np); - /* check if object is still available - (e.g. external hot-plug thingy present?) */ - if (mn != NULL) - { - if (mn->node_type == MIB_NODE_EX) - { - /* external object */ - struct mib_external_node *en = (struct mib_external_node*)mn; - - msg_ps->state = SNMP_MSG_EXTERNAL_GET_OBJDEF_S; - /* save en && args in msg_ps!! */ - msg_ps->ext_mib_node = en; - msg_ps->ext_name_ptr = np; - - en->get_object_def_q(en->addr_inf, request_id, np.ident_len, np.ident); - } - else - { - /* internal object */ - struct obj_def object_def; - - msg_ps->state = SNMP_MSG_INTERNAL_GET_OBJDEF_S; - mn->get_object_def(np.ident_len, np.ident, &object_def); - msg_ps->state = SNMP_MSG_INTERNAL_SET_VALUE; - mn->set_value(&object_def,msg_ps->vb_ptr->value_len,msg_ps->vb_ptr->value); - msg_ps->vb_idx += 1; - } - } - } - if ((msg_ps->state == SNMP_MSG_INTERNAL_SET_VALUE) && - (msg_ps->vb_idx == msg_ps->invb.count)) - { - /* simply echo the input if we can set it - @todo do we need to return the actual value? - e.g. if value is silently modified or behaves sticky? */ - msg_ps->outvb = msg_ps->invb; - msg_ps->invb.head = NULL; - msg_ps->invb.tail = NULL; - msg_ps->invb.count = 0; - snmp_ok_response(msg_ps); - } -} - - -/** - * Handle one internal or external event. - * Called for one async event. (recv external/private answer) - * - * @param request_id identifies requests from 0 to (SNMP_CONCURRENT_REQUESTS-1) - */ -void -snmp_msg_event(u8_t request_id) -{ - struct snmp_msg_pstat *msg_ps; - - if (request_id < SNMP_CONCURRENT_REQUESTS) - { - msg_ps = &msg_input_list[request_id]; - if (msg_ps->rt == SNMP_ASN1_PDU_GET_NEXT_REQ) - { - snmp_msg_getnext_event(request_id, msg_ps); - } - else if (msg_ps->rt == SNMP_ASN1_PDU_GET_REQ) - { - snmp_msg_get_event(request_id, msg_ps); - } - else if(msg_ps->rt == SNMP_ASN1_PDU_SET_REQ) - { - snmp_msg_set_event(request_id, msg_ps); - } - } -} - - -/* lwIP UDP receive callback function */ -static void -snmp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *addr, u16_t port) -{ - struct snmp_msg_pstat *msg_ps; - u8_t req_idx; - err_t err_ret; - u16_t payload_len = p->tot_len; - u16_t payload_ofs = 0; - u16_t varbind_ofs = 0; - - /* suppress unused argument warning */ - LWIP_UNUSED_ARG(arg); - - /* traverse input message process list, look for SNMP_MSG_EMPTY */ - msg_ps = &msg_input_list[0]; - req_idx = 0; - while ((req_idx < SNMP_CONCURRENT_REQUESTS) && (msg_ps->state != SNMP_MSG_EMPTY)) - { - req_idx++; - msg_ps++; - } - if (req_idx == SNMP_CONCURRENT_REQUESTS) - { - /* exceeding number of concurrent requests */ - pbuf_free(p); - return; - } - - /* accepting request */ - snmp_inc_snmpinpkts(); - /* record used 'protocol control block' */ - msg_ps->pcb = pcb; - /* source address (network order) */ - msg_ps->sip = *addr; - /* source port (host order (lwIP oddity)) */ - msg_ps->sp = port; - - /* check total length, version, community, pdu type */ - err_ret = snmp_pdu_header_check(p, payload_ofs, payload_len, &varbind_ofs, msg_ps); - /* Only accept requests and requests without error (be robust) */ - /* Reject response and trap headers or error requests as input! */ - if ((err_ret != ERR_OK) || - ((msg_ps->rt != SNMP_ASN1_PDU_GET_REQ) && - (msg_ps->rt != SNMP_ASN1_PDU_GET_NEXT_REQ) && - (msg_ps->rt != SNMP_ASN1_PDU_SET_REQ)) || - ((msg_ps->error_status != SNMP_ES_NOERROR) || - (msg_ps->error_index != 0)) ) - { - /* header check failed drop request silently, do not return error! */ - pbuf_free(p); - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_pdu_header_check() failed\n")); - return; - } - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv ok, community %s\n", msg_ps->community)); - - /* Builds a list of variable bindings. Copy the varbinds from the pbuf - chain to glue them when these are divided over two or more pbuf's. */ - err_ret = snmp_pdu_dec_varbindlist(p, varbind_ofs, &varbind_ofs, msg_ps); - /* we've decoded the incoming message, release input msg now */ - pbuf_free(p); - if ((err_ret != ERR_OK) || (msg_ps->invb.count == 0)) - { - /* varbind-list decode failed, or varbind list empty. - drop request silently, do not return error! - (errors are only returned for a specific varbind failure) */ - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_pdu_dec_varbindlist() failed\n")); - return; - } - - msg_ps->error_status = SNMP_ES_NOERROR; - msg_ps->error_index = 0; - /* find object for each variable binding */ - msg_ps->state = SNMP_MSG_SEARCH_OBJ; - /* first variable binding from list to inspect */ - msg_ps->vb_idx = 0; - - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_recv varbind cnt=%"U16_F"\n",(u16_t)msg_ps->invb.count)); - - /* handle input event and as much objects as possible in one go */ - snmp_msg_event(req_idx); -} - -/** - * Checks and decodes incoming SNMP message header, logs header errors. - * - * @param p points to pbuf chain of SNMP message (UDP payload) - * @param ofs points to first octet of SNMP message - * @param pdu_len the length of the UDP payload - * @param ofs_ret returns the ofset of the variable bindings - * @param m_stat points to the current message request state return - * @return - * - ERR_OK SNMP header is sane and accepted - * - ERR_ARG SNMP header is either malformed or rejected - */ -static err_t -snmp_pdu_header_check(struct pbuf *p, u16_t ofs, u16_t pdu_len, u16_t *ofs_ret, struct snmp_msg_pstat *m_stat) -{ - err_t derr; - u16_t len, ofs_base; - u8_t len_octets; - u8_t type; - s32_t version; - - ofs_base = ofs; - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || - (pdu_len != (1 + len_octets + len)) || - (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ))) - { - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - ofs += (1 + len_octets); - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) - { - /* can't decode or no integer (version) */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &version); - if (derr != ERR_OK) - { - /* can't decode */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - if (version != 0) - { - /* not version 1 */ - snmp_inc_snmpinbadversions(); - return ERR_ARG; - } - ofs += (1 + len_octets + len); - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR))) - { - /* can't decode or no octet string (community) */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - derr = snmp_asn1_dec_raw(p, ofs + 1 + len_octets, len, SNMP_COMMUNITY_STR_LEN, m_stat->community); - if (derr != ERR_OK) - { - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - /* add zero terminator */ - len = ((len < (SNMP_COMMUNITY_STR_LEN))?(len):(SNMP_COMMUNITY_STR_LEN)); - m_stat->community[len] = 0; - m_stat->com_strlen = (u8_t)len; - if (strncmp(snmp_publiccommunity, (const char*)m_stat->community, SNMP_COMMUNITY_STR_LEN) != 0) - { - /** @todo: move this if we need to check more names */ - snmp_inc_snmpinbadcommunitynames(); - snmp_authfail_trap(); - return ERR_ARG; - } - ofs += (1 + len_octets + len); - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if (derr != ERR_OK) - { - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - switch(type) - { - case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_REQ): - /* GetRequest PDU */ - snmp_inc_snmpingetrequests(); - derr = ERR_OK; - break; - case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_NEXT_REQ): - /* GetNextRequest PDU */ - snmp_inc_snmpingetnexts(); - derr = ERR_OK; - break; - case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP): - /* GetResponse PDU */ - snmp_inc_snmpingetresponses(); - derr = ERR_ARG; - break; - case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_SET_REQ): - /* SetRequest PDU */ - snmp_inc_snmpinsetrequests(); - derr = ERR_OK; - break; - case (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP): - /* Trap PDU */ - snmp_inc_snmpintraps(); - derr = ERR_ARG; - break; - default: - snmp_inc_snmpinasnparseerrs(); - derr = ERR_ARG; - break; - } - if (derr != ERR_OK) - { - /* unsupported input PDU for this agent (no parse error) */ - return ERR_ARG; - } - m_stat->rt = type & 0x1F; - ofs += (1 + len_octets); - if (len != (pdu_len - (ofs - ofs_base))) - { - /* decoded PDU length does not equal actual payload length */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) - { - /* can't decode or no integer (request ID) */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &m_stat->rid); - if (derr != ERR_OK) - { - /* can't decode */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - ofs += (1 + len_octets + len); - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) - { - /* can't decode or no integer (error-status) */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - /* must be noError (0) for incoming requests. - log errors for mib-2 completeness and for debug purposes */ - derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &m_stat->error_status); - if (derr != ERR_OK) - { - /* can't decode */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - switch (m_stat->error_status) - { - case SNMP_ES_TOOBIG: - snmp_inc_snmpintoobigs(); - break; - case SNMP_ES_NOSUCHNAME: - snmp_inc_snmpinnosuchnames(); - break; - case SNMP_ES_BADVALUE: - snmp_inc_snmpinbadvalues(); - break; - case SNMP_ES_READONLY: - snmp_inc_snmpinreadonlys(); - break; - case SNMP_ES_GENERROR: - snmp_inc_snmpingenerrs(); - break; - } - ofs += (1 + len_octets + len); - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG))) - { - /* can't decode or no integer (error-index) */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - /* must be 0 for incoming requests. - decode anyway to catch bad integers (and dirty tricks) */ - derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, &m_stat->error_index); - if (derr != ERR_OK) - { - /* can't decode */ - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - ofs += (1 + len_octets + len); - *ofs_ret = ofs; - return ERR_OK; -} - -static err_t -snmp_pdu_dec_varbindlist(struct pbuf *p, u16_t ofs, u16_t *ofs_ret, struct snmp_msg_pstat *m_stat) -{ - err_t derr; - u16_t len, vb_len; - u8_t len_octets; - u8_t type; - - /* variable binding list */ - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &vb_len); - if ((derr != ERR_OK) || - (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ))) - { - snmp_inc_snmpinasnparseerrs(); - return ERR_ARG; - } - ofs += (1 + len_octets); - - /* start with empty list */ - m_stat->invb.count = 0; - m_stat->invb.head = NULL; - m_stat->invb.tail = NULL; - - while (vb_len > 0) - { - struct snmp_obj_id oid, oid_value; - struct snmp_varbind *vb; - - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || - (type != (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)) || - (len == 0) || (len > vb_len)) - { - snmp_inc_snmpinasnparseerrs(); - /* free varbinds (if available) */ - snmp_varbind_list_free(&m_stat->invb); - return ERR_ARG; - } - ofs += (1 + len_octets); - vb_len -= (1 + len_octets); - - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if ((derr != ERR_OK) || (type != (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID))) - { - /* can't decode object name length */ - snmp_inc_snmpinasnparseerrs(); - /* free varbinds (if available) */ - snmp_varbind_list_free(&m_stat->invb); - return ERR_ARG; - } - derr = snmp_asn1_dec_oid(p, ofs + 1 + len_octets, len, &oid); - if (derr != ERR_OK) - { - /* can't decode object name */ - snmp_inc_snmpinasnparseerrs(); - /* free varbinds (if available) */ - snmp_varbind_list_free(&m_stat->invb); - return ERR_ARG; - } - ofs += (1 + len_octets + len); - vb_len -= (1 + len_octets + len); - - snmp_asn1_dec_type(p, ofs, &type); - derr = snmp_asn1_dec_length(p, ofs+1, &len_octets, &len); - if (derr != ERR_OK) - { - /* can't decode object value length */ - snmp_inc_snmpinasnparseerrs(); - /* free varbinds (if available) */ - snmp_varbind_list_free(&m_stat->invb); - return ERR_ARG; - } - - switch (type) - { - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG): - vb = snmp_varbind_alloc(&oid, type, sizeof(s32_t)); - if (vb != NULL) - { - s32_t *vptr = (s32_t*)vb->value; - - derr = snmp_asn1_dec_s32t(p, ofs + 1 + len_octets, len, vptr); - snmp_varbind_tail_add(&m_stat->invb, vb); - } - else - { - derr = ERR_ARG; - } - break; - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS): - vb = snmp_varbind_alloc(&oid, type, sizeof(u32_t)); - if (vb != NULL) - { - u32_t *vptr = (u32_t*)vb->value; - - derr = snmp_asn1_dec_u32t(p, ofs + 1 + len_octets, len, vptr); - snmp_varbind_tail_add(&m_stat->invb, vb); - } - else - { - derr = ERR_ARG; - } - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_OPAQUE): - LWIP_ASSERT("invalid length", len <= 0xff); - vb = snmp_varbind_alloc(&oid, type, (u8_t)len); - if (vb != NULL) - { - derr = snmp_asn1_dec_raw(p, ofs + 1 + len_octets, len, vb->value_len, (u8_t*)vb->value); - snmp_varbind_tail_add(&m_stat->invb, vb); - } - else - { - derr = ERR_ARG; - } - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_NUL): - vb = snmp_varbind_alloc(&oid, type, 0); - if (vb != NULL) - { - snmp_varbind_tail_add(&m_stat->invb, vb); - derr = ERR_OK; - } - else - { - derr = ERR_ARG; - } - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID): - derr = snmp_asn1_dec_oid(p, ofs + 1 + len_octets, len, &oid_value); - if (derr == ERR_OK) - { - vb = snmp_varbind_alloc(&oid, type, oid_value.len * sizeof(s32_t)); - if (vb != NULL) - { - u8_t i = oid_value.len; - s32_t *vptr = (s32_t*)vb->value; - - while(i > 0) - { - i--; - vptr[i] = oid_value.id[i]; - } - snmp_varbind_tail_add(&m_stat->invb, vb); - derr = ERR_OK; - } - else - { - derr = ERR_ARG; - } - } - break; - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR): - if (len == 4) - { - /* must be exactly 4 octets! */ - vb = snmp_varbind_alloc(&oid, type, 4); - if (vb != NULL) - { - derr = snmp_asn1_dec_raw(p, ofs + 1 + len_octets, len, vb->value_len, (u8_t*)vb->value); - snmp_varbind_tail_add(&m_stat->invb, vb); - } - else - { - derr = ERR_ARG; - } - } - else - { - derr = ERR_ARG; - } - break; - default: - derr = ERR_ARG; - break; - } - if (derr != ERR_OK) - { - snmp_inc_snmpinasnparseerrs(); - /* free varbinds (if available) */ - snmp_varbind_list_free(&m_stat->invb); - return ERR_ARG; - } - ofs += (1 + len_octets + len); - vb_len -= (1 + len_octets + len); - } - - if (m_stat->rt == SNMP_ASN1_PDU_SET_REQ) - { - snmp_add_snmpintotalsetvars(m_stat->invb.count); - } - else - { - snmp_add_snmpintotalreqvars(m_stat->invb.count); - } - - *ofs_ret = ofs; - return ERR_OK; -} - -struct snmp_varbind* -snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len) -{ - struct snmp_varbind *vb; - - vb = (struct snmp_varbind *)memp_malloc(MEMP_SNMP_VARBIND); - LWIP_ASSERT("vb != NULL",vb != NULL); - if (vb != NULL) - { - u8_t i; - - vb->next = NULL; - vb->prev = NULL; - i = oid->len; - vb->ident_len = i; - if (i > 0) - { - LWIP_ASSERT("SNMP_MAX_TREE_DEPTH is configured too low", i <= SNMP_MAX_TREE_DEPTH); - /* allocate array of s32_t for our object identifier */ - vb->ident = (s32_t*)memp_malloc(MEMP_SNMP_VALUE); - LWIP_ASSERT("vb->ident != NULL",vb->ident != NULL); - if (vb->ident == NULL) - { - memp_free(MEMP_SNMP_VARBIND, vb); - return NULL; - } - while(i > 0) - { - i--; - vb->ident[i] = oid->id[i]; - } - } - else - { - /* i == 0, pass zero length object identifier */ - vb->ident = NULL; - } - vb->value_type = type; - vb->value_len = len; - if (len > 0) - { - LWIP_ASSERT("SNMP_MAX_OCTET_STRING_LEN is configured too low", vb->value_len <= SNMP_MAX_VALUE_SIZE); - /* allocate raw bytes for our object value */ - vb->value = memp_malloc(MEMP_SNMP_VALUE); - LWIP_ASSERT("vb->value != NULL",vb->value != NULL); - if (vb->value == NULL) - { - if (vb->ident != NULL) - { - memp_free(MEMP_SNMP_VALUE, vb->ident); - } - memp_free(MEMP_SNMP_VARBIND, vb); - return NULL; - } - } - else - { - /* ASN1_NUL type, or zero length ASN1_OC_STR */ - vb->value = NULL; - } - } - return vb; -} - -void -snmp_varbind_free(struct snmp_varbind *vb) -{ - if (vb->value != NULL ) - { - memp_free(MEMP_SNMP_VALUE, vb->value); - } - if (vb->ident != NULL ) - { - memp_free(MEMP_SNMP_VALUE, vb->ident); - } - memp_free(MEMP_SNMP_VARBIND, vb); -} - -void -snmp_varbind_list_free(struct snmp_varbind_root *root) -{ - struct snmp_varbind *vb, *prev; - - vb = root->tail; - while ( vb != NULL ) - { - prev = vb->prev; - snmp_varbind_free(vb); - vb = prev; - } - root->count = 0; - root->head = NULL; - root->tail = NULL; -} - -void -snmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb) -{ - if (root->count == 0) - { - /* add first varbind to list */ - root->head = vb; - root->tail = vb; - } - else - { - /* add nth varbind to list tail */ - root->tail->next = vb; - vb->prev = root->tail; - root->tail = vb; - } - root->count += 1; -} - -struct snmp_varbind* -snmp_varbind_tail_remove(struct snmp_varbind_root *root) -{ - struct snmp_varbind* vb; - - if (root->count > 0) - { - /* remove tail varbind */ - vb = root->tail; - root->tail = vb->prev; - vb->prev->next = NULL; - root->count -= 1; - } - else - { - /* nothing to remove */ - vb = NULL; - } - return vb; -} - -#endif /* LWIP_SNMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_out.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_out.c deleted file mode 100644 index 4778bee6f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/snmp/msg_out.c +++ /dev/null @@ -1,681 +0,0 @@ -/** - * @file - * SNMP output message processing (RFC1157). - * - * Output responses and traps are build in two passes: - * - * Pass 0: iterate over the output message backwards to determine encoding lengths - * Pass 1: the actual forward encoding of internal form into ASN1 - * - * The single-pass encoding method described by Comer & Stevens - * requires extra buffer space and copying for reversal of the packet. - * The buffer requirement can be prohibitively large for big payloads - * (>= 484) therefore we use the two encoding passes. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/udp.h" -#include "lwip/netif.h" -#include "lwip/snmp.h" -#include "lwip/snmp_asn1.h" -#include "lwip/snmp_msg.h" - -struct snmp_trap_dst -{ - /* destination IP address in network order */ - ip_addr_t dip; - /* set to 0 when disabled, >0 when enabled */ - u8_t enable; -}; -struct snmp_trap_dst trap_dst[SNMP_TRAP_DESTINATIONS]; - -/** TRAP message structure */ -struct snmp_msg_trap trap_msg; - -static u16_t snmp_resp_header_sum(struct snmp_msg_pstat *m_stat, u16_t vb_len); -static u16_t snmp_trap_header_sum(struct snmp_msg_trap *m_trap, u16_t vb_len); -static u16_t snmp_varbind_list_sum(struct snmp_varbind_root *root); - -static u16_t snmp_resp_header_enc(struct snmp_msg_pstat *m_stat, struct pbuf *p); -static u16_t snmp_trap_header_enc(struct snmp_msg_trap *m_trap, struct pbuf *p); -static u16_t snmp_varbind_list_enc(struct snmp_varbind_root *root, struct pbuf *p, u16_t ofs); - -/** - * Sets enable switch for this trap destination. - * @param dst_idx index in 0 .. SNMP_TRAP_DESTINATIONS-1 - * @param enable switch if 0 destination is disabled >0 enabled. - */ -void -snmp_trap_dst_enable(u8_t dst_idx, u8_t enable) -{ - if (dst_idx < SNMP_TRAP_DESTINATIONS) - { - trap_dst[dst_idx].enable = enable; - } -} - -/** - * Sets IPv4 address for this trap destination. - * @param dst_idx index in 0 .. SNMP_TRAP_DESTINATIONS-1 - * @param dst IPv4 address in host order. - */ -void -snmp_trap_dst_ip_set(u8_t dst_idx, ip_addr_t *dst) -{ - if (dst_idx < SNMP_TRAP_DESTINATIONS) - { - ip_addr_set(&trap_dst[dst_idx].dip, dst); - } -} - -/** - * Sends a 'getresponse' message to the request originator. - * - * @param m_stat points to the current message request state source - * @return ERR_OK when success, ERR_MEM if we're out of memory - * - * @note the caller is responsible for filling in outvb in the m_stat - * and provide error-status and index (except for tooBig errors) ... - */ -err_t -snmp_send_response(struct snmp_msg_pstat *m_stat) -{ - struct snmp_varbind_root emptyvb = {NULL, NULL, 0, 0, 0}; - struct pbuf *p; - u16_t tot_len; - err_t err; - - /* pass 0, calculate length fields */ - tot_len = snmp_varbind_list_sum(&m_stat->outvb); - tot_len = snmp_resp_header_sum(m_stat, tot_len); - - /* try allocating pbuf(s) for complete response */ - p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); - if (p == NULL) - { - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_snd_response() tooBig\n")); - - /* can't construct reply, return error-status tooBig */ - m_stat->error_status = SNMP_ES_TOOBIG; - m_stat->error_index = 0; - /* pass 0, recalculate lengths, for empty varbind-list */ - tot_len = snmp_varbind_list_sum(&emptyvb); - tot_len = snmp_resp_header_sum(m_stat, tot_len); - /* retry allocation once for header and empty varbind-list */ - p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); - } - if (p != NULL) - { - /* first pbuf alloc try or retry alloc success */ - u16_t ofs; - - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_snd_response() p != NULL\n")); - - /* pass 1, size error, encode packet ino the pbuf(s) */ - ofs = snmp_resp_header_enc(m_stat, p); - if (m_stat->error_status == SNMP_ES_TOOBIG) - { - snmp_varbind_list_enc(&emptyvb, p, ofs); - } - else - { - snmp_varbind_list_enc(&m_stat->outvb, p, ofs); - } - - switch (m_stat->error_status) - { - case SNMP_ES_TOOBIG: - snmp_inc_snmpouttoobigs(); - break; - case SNMP_ES_NOSUCHNAME: - snmp_inc_snmpoutnosuchnames(); - break; - case SNMP_ES_BADVALUE: - snmp_inc_snmpoutbadvalues(); - break; - case SNMP_ES_GENERROR: - snmp_inc_snmpoutgenerrs(); - break; - } - snmp_inc_snmpoutgetresponses(); - snmp_inc_snmpoutpkts(); - - /** @todo do we need separate rx and tx pcbs for threaded case? */ - /** connect to the originating source */ - udp_connect(m_stat->pcb, &m_stat->sip, m_stat->sp); - err = udp_send(m_stat->pcb, p); - if (err == ERR_MEM) - { - /** @todo release some memory, retry and return tooBig? tooMuchHassle? */ - err = ERR_MEM; - } - else - { - err = ERR_OK; - } - /** disassociate remote address and port with this pcb */ - udp_disconnect(m_stat->pcb); - - pbuf_free(p); - LWIP_DEBUGF(SNMP_MSG_DEBUG, ("snmp_snd_response() done\n")); - return err; - } - else - { - /* first pbuf alloc try or retry alloc failed - very low on memory, couldn't return tooBig */ - return ERR_MEM; - } -} - - -/** - * Sends an generic or enterprise specific trap message. - * - * @param generic_trap is the trap code - * @param eoid points to enterprise object identifier - * @param specific_trap used for enterprise traps when generic_trap == 6 - * @return ERR_OK when success, ERR_MEM if we're out of memory - * - * @note the caller is responsible for filling in outvb in the trap_msg - * @note the use of the enterpise identifier field - * is per RFC1215. - * Use .iso.org.dod.internet.mgmt.mib-2.snmp for generic traps - * and .iso.org.dod.internet.private.enterprises.yourenterprise - * (sysObjectID) for specific traps. - */ -err_t -snmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap) -{ - struct snmp_trap_dst *td; - struct netif *dst_if; - ip_addr_t dst_ip; - struct pbuf *p; - u16_t i,tot_len; - - for (i=0, td = &trap_dst[0]; ienable != 0) && !ip_addr_isany(&td->dip)) - { - /* network order trap destination */ - ip_addr_copy(trap_msg.dip, td->dip); - /* lookup current source address for this dst */ - dst_if = ip_route(&td->dip); - ip_addr_copy(dst_ip, dst_if->ip_addr); - /* @todo: what about IPv6? */ - trap_msg.sip_raw[0] = ip4_addr1(&dst_ip); - trap_msg.sip_raw[1] = ip4_addr2(&dst_ip); - trap_msg.sip_raw[2] = ip4_addr3(&dst_ip); - trap_msg.sip_raw[3] = ip4_addr4(&dst_ip); - trap_msg.gen_trap = generic_trap; - trap_msg.spc_trap = specific_trap; - if (generic_trap == SNMP_GENTRAP_ENTERPRISESPC) - { - /* enterprise-Specific trap */ - trap_msg.enterprise = eoid; - } - else - { - /* generic (MIB-II) trap */ - snmp_get_snmpgrpid_ptr(&trap_msg.enterprise); - } - snmp_get_sysuptime(&trap_msg.ts); - - /* pass 0, calculate length fields */ - tot_len = snmp_varbind_list_sum(&trap_msg.outvb); - tot_len = snmp_trap_header_sum(&trap_msg, tot_len); - - /* allocate pbuf(s) */ - p = pbuf_alloc(PBUF_TRANSPORT, tot_len, PBUF_POOL); - if (p != NULL) - { - u16_t ofs; - - /* pass 1, encode packet ino the pbuf(s) */ - ofs = snmp_trap_header_enc(&trap_msg, p); - snmp_varbind_list_enc(&trap_msg.outvb, p, ofs); - - snmp_inc_snmpouttraps(); - snmp_inc_snmpoutpkts(); - - /** send to the TRAP destination */ - udp_sendto(trap_msg.pcb, p, &trap_msg.dip, SNMP_TRAP_PORT); - - pbuf_free(p); - } - else - { - return ERR_MEM; - } - } - } - return ERR_OK; -} - -void -snmp_coldstart_trap(void) -{ - trap_msg.outvb.head = NULL; - trap_msg.outvb.tail = NULL; - trap_msg.outvb.count = 0; - snmp_send_trap(SNMP_GENTRAP_COLDSTART, NULL, 0); -} - -void -snmp_authfail_trap(void) -{ - u8_t enable; - snmp_get_snmpenableauthentraps(&enable); - if (enable == 1) - { - trap_msg.outvb.head = NULL; - trap_msg.outvb.tail = NULL; - trap_msg.outvb.count = 0; - snmp_send_trap(SNMP_GENTRAP_AUTHFAIL, NULL, 0); - } -} - -/** - * Sums response header field lengths from tail to head and - * returns resp_header_lengths for second encoding pass. - * - * @param vb_len varbind-list length - * @param rhl points to returned header lengths - * @return the required lenght for encoding the response header - */ -static u16_t -snmp_resp_header_sum(struct snmp_msg_pstat *m_stat, u16_t vb_len) -{ - u16_t tot_len; - struct snmp_resp_header_lengths *rhl; - - rhl = &m_stat->rhl; - tot_len = vb_len; - snmp_asn1_enc_s32t_cnt(m_stat->error_index, &rhl->erridxlen); - snmp_asn1_enc_length_cnt(rhl->erridxlen, &rhl->erridxlenlen); - tot_len += 1 + rhl->erridxlenlen + rhl->erridxlen; - - snmp_asn1_enc_s32t_cnt(m_stat->error_status, &rhl->errstatlen); - snmp_asn1_enc_length_cnt(rhl->errstatlen, &rhl->errstatlenlen); - tot_len += 1 + rhl->errstatlenlen + rhl->errstatlen; - - snmp_asn1_enc_s32t_cnt(m_stat->rid, &rhl->ridlen); - snmp_asn1_enc_length_cnt(rhl->ridlen, &rhl->ridlenlen); - tot_len += 1 + rhl->ridlenlen + rhl->ridlen; - - rhl->pdulen = tot_len; - snmp_asn1_enc_length_cnt(rhl->pdulen, &rhl->pdulenlen); - tot_len += 1 + rhl->pdulenlen; - - rhl->comlen = m_stat->com_strlen; - snmp_asn1_enc_length_cnt(rhl->comlen, &rhl->comlenlen); - tot_len += 1 + rhl->comlenlen + rhl->comlen; - - snmp_asn1_enc_s32t_cnt(snmp_version, &rhl->verlen); - snmp_asn1_enc_length_cnt(rhl->verlen, &rhl->verlenlen); - tot_len += 1 + rhl->verlen + rhl->verlenlen; - - rhl->seqlen = tot_len; - snmp_asn1_enc_length_cnt(rhl->seqlen, &rhl->seqlenlen); - tot_len += 1 + rhl->seqlenlen; - - return tot_len; -} - -/** - * Sums trap header field lengths from tail to head and - * returns trap_header_lengths for second encoding pass. - * - * @param vb_len varbind-list length - * @param thl points to returned header lengths - * @return the required lenght for encoding the trap header - */ -static u16_t -snmp_trap_header_sum(struct snmp_msg_trap *m_trap, u16_t vb_len) -{ - u16_t tot_len; - struct snmp_trap_header_lengths *thl; - - thl = &m_trap->thl; - tot_len = vb_len; - - snmp_asn1_enc_u32t_cnt(m_trap->ts, &thl->tslen); - snmp_asn1_enc_length_cnt(thl->tslen, &thl->tslenlen); - tot_len += 1 + thl->tslen + thl->tslenlen; - - snmp_asn1_enc_s32t_cnt(m_trap->spc_trap, &thl->strplen); - snmp_asn1_enc_length_cnt(thl->strplen, &thl->strplenlen); - tot_len += 1 + thl->strplen + thl->strplenlen; - - snmp_asn1_enc_s32t_cnt(m_trap->gen_trap, &thl->gtrplen); - snmp_asn1_enc_length_cnt(thl->gtrplen, &thl->gtrplenlen); - tot_len += 1 + thl->gtrplen + thl->gtrplenlen; - - thl->aaddrlen = 4; - snmp_asn1_enc_length_cnt(thl->aaddrlen, &thl->aaddrlenlen); - tot_len += 1 + thl->aaddrlen + thl->aaddrlenlen; - - snmp_asn1_enc_oid_cnt(m_trap->enterprise->len, &m_trap->enterprise->id[0], &thl->eidlen); - snmp_asn1_enc_length_cnt(thl->eidlen, &thl->eidlenlen); - tot_len += 1 + thl->eidlen + thl->eidlenlen; - - thl->pdulen = tot_len; - snmp_asn1_enc_length_cnt(thl->pdulen, &thl->pdulenlen); - tot_len += 1 + thl->pdulenlen; - - thl->comlen = sizeof(snmp_publiccommunity) - 1; - snmp_asn1_enc_length_cnt(thl->comlen, &thl->comlenlen); - tot_len += 1 + thl->comlenlen + thl->comlen; - - snmp_asn1_enc_s32t_cnt(snmp_version, &thl->verlen); - snmp_asn1_enc_length_cnt(thl->verlen, &thl->verlenlen); - tot_len += 1 + thl->verlen + thl->verlenlen; - - thl->seqlen = tot_len; - snmp_asn1_enc_length_cnt(thl->seqlen, &thl->seqlenlen); - tot_len += 1 + thl->seqlenlen; - - return tot_len; -} - -/** - * Sums varbind lengths from tail to head and - * annotates lengths in varbind for second encoding pass. - * - * @param root points to the root of the variable binding list - * @return the required lenght for encoding the variable bindings - */ -static u16_t -snmp_varbind_list_sum(struct snmp_varbind_root *root) -{ - struct snmp_varbind *vb; - u32_t *uint_ptr; - s32_t *sint_ptr; - u16_t tot_len; - - tot_len = 0; - vb = root->tail; - while ( vb != NULL ) - { - /* encoded value lenght depends on type */ - switch (vb->value_type) - { - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG): - sint_ptr = (s32_t*)vb->value; - snmp_asn1_enc_s32t_cnt(*sint_ptr, &vb->vlen); - break; - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS): - uint_ptr = (u32_t*)vb->value; - snmp_asn1_enc_u32t_cnt(*uint_ptr, &vb->vlen); - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR): - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_NUL): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_OPAQUE): - vb->vlen = vb->value_len; - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID): - sint_ptr = (s32_t*)vb->value; - snmp_asn1_enc_oid_cnt(vb->value_len / sizeof(s32_t), sint_ptr, &vb->vlen); - break; - default: - /* unsupported type */ - vb->vlen = 0; - break; - }; - /* encoding length of value length field */ - snmp_asn1_enc_length_cnt(vb->vlen, &vb->vlenlen); - snmp_asn1_enc_oid_cnt(vb->ident_len, vb->ident, &vb->olen); - snmp_asn1_enc_length_cnt(vb->olen, &vb->olenlen); - - vb->seqlen = 1 + vb->vlenlen + vb->vlen; - vb->seqlen += 1 + vb->olenlen + vb->olen; - snmp_asn1_enc_length_cnt(vb->seqlen, &vb->seqlenlen); - - /* varbind seq */ - tot_len += 1 + vb->seqlenlen + vb->seqlen; - - vb = vb->prev; - } - - /* varbind-list seq */ - root->seqlen = tot_len; - snmp_asn1_enc_length_cnt(root->seqlen, &root->seqlenlen); - tot_len += 1 + root->seqlenlen; - - return tot_len; -} - -/** - * Encodes response header from head to tail. - */ -static u16_t -snmp_resp_header_enc(struct snmp_msg_pstat *m_stat, struct pbuf *p) -{ - u16_t ofs; - - ofs = 0; - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_stat->rhl.seqlen); - ofs += m_stat->rhl.seqlenlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_stat->rhl.verlen); - ofs += m_stat->rhl.verlenlen; - snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.verlen, snmp_version); - ofs += m_stat->rhl.verlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_stat->rhl.comlen); - ofs += m_stat->rhl.comlenlen; - snmp_asn1_enc_raw(p, ofs, m_stat->rhl.comlen, m_stat->community); - ofs += m_stat->rhl.comlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_GET_RESP)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_stat->rhl.pdulen); - ofs += m_stat->rhl.pdulenlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_stat->rhl.ridlen); - ofs += m_stat->rhl.ridlenlen; - snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.ridlen, m_stat->rid); - ofs += m_stat->rhl.ridlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_stat->rhl.errstatlen); - ofs += m_stat->rhl.errstatlenlen; - snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.errstatlen, m_stat->error_status); - ofs += m_stat->rhl.errstatlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_stat->rhl.erridxlen); - ofs += m_stat->rhl.erridxlenlen; - snmp_asn1_enc_s32t(p, ofs, m_stat->rhl.erridxlen, m_stat->error_index); - ofs += m_stat->rhl.erridxlen; - - return ofs; -} - -/** - * Encodes trap header from head to tail. - */ -static u16_t -snmp_trap_header_enc(struct snmp_msg_trap *m_trap, struct pbuf *p) -{ - u16_t ofs; - - ofs = 0; - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.seqlen); - ofs += m_trap->thl.seqlenlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.verlen); - ofs += m_trap->thl.verlenlen; - snmp_asn1_enc_s32t(p, ofs, m_trap->thl.verlen, snmp_version); - ofs += m_trap->thl.verlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.comlen); - ofs += m_trap->thl.comlenlen; - snmp_asn1_enc_raw(p, ofs, m_trap->thl.comlen, (u8_t *)&snmp_publiccommunity[0]); - ofs += m_trap->thl.comlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_CONTXT | SNMP_ASN1_CONSTR | SNMP_ASN1_PDU_TRAP)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.pdulen); - ofs += m_trap->thl.pdulenlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.eidlen); - ofs += m_trap->thl.eidlenlen; - snmp_asn1_enc_oid(p, ofs, m_trap->enterprise->len, &m_trap->enterprise->id[0]); - ofs += m_trap->thl.eidlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.aaddrlen); - ofs += m_trap->thl.aaddrlenlen; - snmp_asn1_enc_raw(p, ofs, m_trap->thl.aaddrlen, &m_trap->sip_raw[0]); - ofs += m_trap->thl.aaddrlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.gtrplen); - ofs += m_trap->thl.gtrplenlen; - snmp_asn1_enc_u32t(p, ofs, m_trap->thl.gtrplen, m_trap->gen_trap); - ofs += m_trap->thl.gtrplen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.strplen); - ofs += m_trap->thl.strplenlen; - snmp_asn1_enc_u32t(p, ofs, m_trap->thl.strplen, m_trap->spc_trap); - ofs += m_trap->thl.strplen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, m_trap->thl.tslen); - ofs += m_trap->thl.tslenlen; - snmp_asn1_enc_u32t(p, ofs, m_trap->thl.tslen, m_trap->ts); - ofs += m_trap->thl.tslen; - - return ofs; -} - -/** - * Encodes varbind list from head to tail. - */ -static u16_t -snmp_varbind_list_enc(struct snmp_varbind_root *root, struct pbuf *p, u16_t ofs) -{ - struct snmp_varbind *vb; - s32_t *sint_ptr; - u32_t *uint_ptr; - u8_t *raw_ptr; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, root->seqlen); - ofs += root->seqlenlen; - - vb = root->head; - while ( vb != NULL ) - { - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_CONSTR | SNMP_ASN1_SEQ)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, vb->seqlen); - ofs += vb->seqlenlen; - - snmp_asn1_enc_type(p, ofs, (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID)); - ofs += 1; - snmp_asn1_enc_length(p, ofs, vb->olen); - ofs += vb->olenlen; - snmp_asn1_enc_oid(p, ofs, vb->ident_len, &vb->ident[0]); - ofs += vb->olen; - - snmp_asn1_enc_type(p, ofs, vb->value_type); - ofs += 1; - snmp_asn1_enc_length(p, ofs, vb->vlen); - ofs += vb->vlenlen; - - switch (vb->value_type) - { - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_INTEG): - sint_ptr = (s32_t*)vb->value; - snmp_asn1_enc_s32t(p, ofs, vb->vlen, *sint_ptr); - break; - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_COUNTER): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_GAUGE): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_TIMETICKS): - uint_ptr = (u32_t*)vb->value; - snmp_asn1_enc_u32t(p, ofs, vb->vlen, *uint_ptr); - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OC_STR): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_IPADDR): - case (SNMP_ASN1_APPLIC | SNMP_ASN1_PRIMIT | SNMP_ASN1_OPAQUE): - raw_ptr = (u8_t*)vb->value; - snmp_asn1_enc_raw(p, ofs, vb->vlen, raw_ptr); - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_NUL): - break; - case (SNMP_ASN1_UNIV | SNMP_ASN1_PRIMIT | SNMP_ASN1_OBJ_ID): - sint_ptr = (s32_t*)vb->value; - snmp_asn1_enc_oid(p, ofs, vb->value_len / sizeof(s32_t), sint_ptr); - break; - default: - /* unsupported type */ - break; - }; - ofs += vb->vlen; - vb = vb->next; - } - return ofs; -} - -#endif /* LWIP_SNMP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/stats.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/stats.c deleted file mode 100644 index 5bdd5a230..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/stats.c +++ /dev/null @@ -1,181 +0,0 @@ -/** - * @file - * Statistics module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_STATS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/stats.h" -#include "lwip/mem.h" - -#include - -struct stats_ lwip_stats; - -void stats_init(void) -{ -#ifdef LWIP_DEBUG -#if MEMP_STATS - const char * memp_names[] = { -#define LWIP_MEMPOOL(name,num,size,desc) desc, -#include "lwip/memp_std.h" - }; - int i; - for (i = 0; i < MEMP_MAX; i++) { - lwip_stats.memp[i].name = memp_names[i]; - } -#endif /* MEMP_STATS */ -#if MEM_STATS - lwip_stats.mem.name = "MEM"; -#endif /* MEM_STATS */ -#endif /* LWIP_DEBUG */ -} - -#if LWIP_STATS_DISPLAY -void -stats_display_proto(struct stats_proto *proto, const char *name) -{ - LWIP_PLATFORM_DIAG(("\n%s\n\t", name)); - LWIP_PLATFORM_DIAG(("xmit: %"STAT_COUNTER_F"\n\t", proto->xmit)); - LWIP_PLATFORM_DIAG(("recv: %"STAT_COUNTER_F"\n\t", proto->recv)); - LWIP_PLATFORM_DIAG(("fw: %"STAT_COUNTER_F"\n\t", proto->fw)); - LWIP_PLATFORM_DIAG(("drop: %"STAT_COUNTER_F"\n\t", proto->drop)); - LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", proto->chkerr)); - LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", proto->lenerr)); - LWIP_PLATFORM_DIAG(("memerr: %"STAT_COUNTER_F"\n\t", proto->memerr)); - LWIP_PLATFORM_DIAG(("rterr: %"STAT_COUNTER_F"\n\t", proto->rterr)); - LWIP_PLATFORM_DIAG(("proterr: %"STAT_COUNTER_F"\n\t", proto->proterr)); - LWIP_PLATFORM_DIAG(("opterr: %"STAT_COUNTER_F"\n\t", proto->opterr)); - LWIP_PLATFORM_DIAG(("err: %"STAT_COUNTER_F"\n\t", proto->err)); - LWIP_PLATFORM_DIAG(("cachehit: %"STAT_COUNTER_F"\n", proto->cachehit)); -} - -#if IGMP_STATS -void -stats_display_igmp(struct stats_igmp *igmp, const char *name) -{ - LWIP_PLATFORM_DIAG(("\n%s\n\t", name)); - LWIP_PLATFORM_DIAG(("xmit: %"STAT_COUNTER_F"\n\t", igmp->xmit)); - LWIP_PLATFORM_DIAG(("recv: %"STAT_COUNTER_F"\n\t", igmp->recv)); - LWIP_PLATFORM_DIAG(("drop: %"STAT_COUNTER_F"\n\t", igmp->drop)); - LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", igmp->chkerr)); - LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", igmp->lenerr)); - LWIP_PLATFORM_DIAG(("memerr: %"STAT_COUNTER_F"\n\t", igmp->memerr)); - LWIP_PLATFORM_DIAG(("proterr: %"STAT_COUNTER_F"\n\t", igmp->proterr)); - LWIP_PLATFORM_DIAG(("rx_v1: %"STAT_COUNTER_F"\n\t", igmp->rx_v1)); - LWIP_PLATFORM_DIAG(("rx_group: %"STAT_COUNTER_F"\n", igmp->rx_group)); - LWIP_PLATFORM_DIAG(("rx_general: %"STAT_COUNTER_F"\n", igmp->rx_general)); - LWIP_PLATFORM_DIAG(("rx_report: %"STAT_COUNTER_F"\n\t", igmp->rx_report)); - LWIP_PLATFORM_DIAG(("tx_join: %"STAT_COUNTER_F"\n\t", igmp->tx_join)); - LWIP_PLATFORM_DIAG(("tx_leave: %"STAT_COUNTER_F"\n\t", igmp->tx_leave)); - LWIP_PLATFORM_DIAG(("tx_report: %"STAT_COUNTER_F"\n\t", igmp->tx_report)); -} -#endif /* IGMP_STATS */ - -#if MEM_STATS || MEMP_STATS -void -stats_display_mem(struct stats_mem *mem, const char *name) -{ - LWIP_PLATFORM_DIAG(("\nMEM %s\n\t", name)); - LWIP_PLATFORM_DIAG(("avail: %"U32_F"\n\t", (u32_t)mem->avail)); - LWIP_PLATFORM_DIAG(("used: %"U32_F"\n\t", (u32_t)mem->used)); - LWIP_PLATFORM_DIAG(("max: %"U32_F"\n\t", (u32_t)mem->max)); - LWIP_PLATFORM_DIAG(("err: %"U32_F"\n", (u32_t)mem->err)); -} - -#if MEMP_STATS -void -stats_display_memp(struct stats_mem *mem, int index) -{ - char * memp_names[] = { -#define LWIP_MEMPOOL(name,num,size,desc) desc, -#include "lwip/memp_std.h" - }; - if(index < MEMP_MAX) { - stats_display_mem(mem, memp_names[index]); - } -} -#endif /* MEMP_STATS */ -#endif /* MEM_STATS || MEMP_STATS */ - -#if SYS_STATS -void -stats_display_sys(struct stats_sys *sys) -{ - LWIP_PLATFORM_DIAG(("\nSYS\n\t")); - LWIP_PLATFORM_DIAG(("sem.used: %"U32_F"\n\t", (u32_t)sys->sem.used)); - LWIP_PLATFORM_DIAG(("sem.max: %"U32_F"\n\t", (u32_t)sys->sem.max)); - LWIP_PLATFORM_DIAG(("sem.err: %"U32_F"\n\t", (u32_t)sys->sem.err)); - LWIP_PLATFORM_DIAG(("mutex.used: %"U32_F"\n\t", (u32_t)sys->mutex.used)); - LWIP_PLATFORM_DIAG(("mutex.max: %"U32_F"\n\t", (u32_t)sys->mutex.max)); - LWIP_PLATFORM_DIAG(("mutex.err: %"U32_F"\n\t", (u32_t)sys->mutex.err)); - LWIP_PLATFORM_DIAG(("mbox.used: %"U32_F"\n\t", (u32_t)sys->mbox.used)); - LWIP_PLATFORM_DIAG(("mbox.max: %"U32_F"\n\t", (u32_t)sys->mbox.max)); - LWIP_PLATFORM_DIAG(("mbox.err: %"U32_F"\n\t", (u32_t)sys->mbox.err)); -} -#endif /* SYS_STATS */ - -void -stats_display(void) -{ - s16_t i; - - LINK_STATS_DISPLAY(); - ETHARP_STATS_DISPLAY(); - IPFRAG_STATS_DISPLAY(); - IP6_FRAG_STATS_DISPLAY(); - IP_STATS_DISPLAY(); - ND6_STATS_DISPLAY(); - IP6_STATS_DISPLAY(); - IGMP_STATS_DISPLAY(); - MLD6_STATS_DISPLAY(); - ICMP_STATS_DISPLAY(); - ICMP6_STATS_DISPLAY(); - UDP_STATS_DISPLAY(); - TCP_STATS_DISPLAY(); - MEM_STATS_DISPLAY(); - for (i = 0; i < MEMP_MAX; i++) { - MEMP_STATS_DISPLAY(i); - } - SYS_STATS_DISPLAY(); -} -#endif /* LWIP_STATS_DISPLAY */ - -#endif /* LWIP_STATS */ - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/sys.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/sys.c deleted file mode 100644 index d3a77deb2..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/sys.c +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @file - * lwIP Operating System abstraction - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/sys.h" - -/* Most of the functions defined in sys.h must be implemented in the - * architecture-dependent file sys_arch.c */ - -#if !NO_SYS - -/** - * Sleep for some ms. Timeouts are NOT processed while sleeping. - * - * @param ms number of milliseconds to sleep - */ -void -sys_msleep(u32_t ms) -{ - if (ms > 0) { - sys_sem_t delaysem; - err_t err = sys_sem_new(&delaysem, 0); - if (err == ERR_OK) { - sys_arch_sem_wait(&delaysem, ms); - sys_sem_free(&delaysem); - } - } -} - -#endif /* !NO_SYS */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp.c deleted file mode 100644 index 5ae323e39..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp.c +++ /dev/null @@ -1,1716 +0,0 @@ -/** - * @file - * Transmission Control Protocol for IP - * - * This file contains common functions for the TCP implementation, such as functinos - * for manipulating the data structures and the TCP timer functions. TCP functions - * related to input and output is found in tcp_in.c and tcp_out.c respectively. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/snmp.h" -#include "lwip/tcp.h" -#include "lwip/tcp_impl.h" -#include "lwip/debug.h" -#include "lwip/stats.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/nd6.h" - -#include - -const char * const tcp_state_str[] = { - "CLOSED", - "LISTEN", - "SYN_SENT", - "SYN_RCVD", - "ESTABLISHED", - "FIN_WAIT_1", - "FIN_WAIT_2", - "CLOSE_WAIT", - "CLOSING", - "LAST_ACK", - "TIME_WAIT" -}; - -/* Incremented every coarse grained timer shot (typically every 500 ms). */ -u32_t tcp_ticks; -const u8_t tcp_backoff[13] = - { 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7}; - /* Times per slowtmr hits */ -const u8_t tcp_persist_backoff[7] = { 3, 6, 12, 24, 48, 96, 120 }; - -/* The TCP PCB lists. */ - -/** List of all TCP PCBs bound but not yet (connected || listening) */ -struct tcp_pcb *tcp_bound_pcbs; -/** List of all TCP PCBs in LISTEN state */ -union tcp_listen_pcbs_t tcp_listen_pcbs; -/** List of all TCP PCBs that are in a state in which - * they accept or send data. */ -struct tcp_pcb *tcp_active_pcbs; -/** List of all TCP PCBs in TIME-WAIT state */ -struct tcp_pcb *tcp_tw_pcbs; - -#define NUM_TCP_PCB_LISTS 4 -#define NUM_TCP_PCB_LISTS_NO_TIME_WAIT 3 -/** An array with all (non-temporary) PCB lists, mainly used for smaller code size */ -struct tcp_pcb ** const tcp_pcb_lists[] = {&tcp_listen_pcbs.pcbs, &tcp_bound_pcbs, - &tcp_active_pcbs, &tcp_tw_pcbs}; - -/** Only used for temporary storage. */ -struct tcp_pcb *tcp_tmp_pcb; - -/** Timer counter to handle calling slow-timer from tcp_tmr() */ -static u8_t tcp_timer; -static u16_t tcp_new_port(void); - -/** - * Called periodically to dispatch TCP timers. - * - */ -void -tcp_tmr(void) -{ - /* Call tcp_fasttmr() every 250 ms */ - tcp_fasttmr(); - - if (++tcp_timer & 1) { - /* Call tcp_tmr() every 500 ms, i.e., every other timer - tcp_tmr() is called. */ - tcp_slowtmr(); - } -} - -/** - * Closes the TX side of a connection held by the PCB. - * For tcp_close(), a RST is sent if the application didn't receive all data - * (tcp_recved() not called for all data passed to recv callback). - * - * Listening pcbs are freed and may not be referenced any more. - * Connection pcbs are freed if not yet connected and may not be referenced - * any more. If a connection is established (at least SYN received or in - * a closing state), the connection is closed, and put in a closing state. - * The pcb is then automatically freed in tcp_slowtmr(). It is therefore - * unsafe to reference it. - * - * @param pcb the tcp_pcb to close - * @return ERR_OK if connection has been closed - * another err_t if closing failed and pcb is not freed - */ -static err_t -tcp_close_shutdown(struct tcp_pcb *pcb, u8_t rst_on_unacked_data) -{ - err_t err; - - if (rst_on_unacked_data && (pcb->state != LISTEN)) { - if ((pcb->refused_data != NULL) || (pcb->rcv_wnd != TCP_WND)) { - /* Not all data received by application, send RST to tell the remote - side about this. */ - LWIP_ASSERT("pcb->flags & TF_RXCLOSED", pcb->flags & TF_RXCLOSED); - - /* don't call tcp_abort here: we must not deallocate the pcb since - that might not be expected when calling tcp_close */ - tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - pcb->local_port, pcb->remote_port, PCB_ISIPV6(pcb)); - - tcp_pcb_purge(pcb); - - /* TODO: to which state do we move now? */ - - /* move to TIME_WAIT since we close actively */ - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - - return ERR_OK; - } - } - - switch (pcb->state) { - case CLOSED: - /* Closing a pcb in the CLOSED state might seem erroneous, - * however, it is in this state once allocated and as yet unused - * and the user needs some way to free it should the need arise. - * Calling tcp_close() with a pcb that has already been closed, (i.e. twice) - * or for a pcb that has been used and then entered the CLOSED state - * is erroneous, but this should never happen as the pcb has in those cases - * been freed, and so any remaining handles are bogus. */ - err = ERR_OK; - if (pcb->local_port != 0) { - TCP_RMV(&tcp_bound_pcbs, pcb); - } - memp_free(MEMP_TCP_PCB, pcb); - pcb = NULL; - break; - case LISTEN: - err = ERR_OK; - tcp_pcb_remove(&tcp_listen_pcbs.pcbs, pcb); - memp_free(MEMP_TCP_PCB_LISTEN, pcb); - pcb = NULL; - break; - case SYN_SENT: - err = ERR_OK; - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - pcb = NULL; - snmp_inc_tcpattemptfails(); - break; - case SYN_RCVD: - err = tcp_send_fin(pcb); - if (err == ERR_OK) { - snmp_inc_tcpattemptfails(); - pcb->state = FIN_WAIT_1; - } - break; - case ESTABLISHED: - err = tcp_send_fin(pcb); - if (err == ERR_OK) { - snmp_inc_tcpestabresets(); - pcb->state = FIN_WAIT_1; - } - break; - case CLOSE_WAIT: - err = tcp_send_fin(pcb); - if (err == ERR_OK) { - snmp_inc_tcpestabresets(); - pcb->state = LAST_ACK; - } - break; - default: - /* Has already been closed, do nothing. */ - err = ERR_OK; - pcb = NULL; - break; - } - - if (pcb != NULL && err == ERR_OK) { - /* To ensure all data has been sent when tcp_close returns, we have - to make sure tcp_output doesn't fail. - Since we don't really have to ensure all data has been sent when tcp_close - returns (unsent data is sent from tcp timer functions, also), we don't care - for the return value of tcp_output for now. */ - /* @todo: When implementing SO_LINGER, this must be changed somehow: - If SOF_LINGER is set, the data should be sent and acked before close returns. - This can only be valid for sequential APIs, not for the raw API. */ - tcp_output(pcb); - } - return err; -} - -/** - * Closes the connection held by the PCB. - * - * Listening pcbs are freed and may not be referenced any more. - * Connection pcbs are freed if not yet connected and may not be referenced - * any more. If a connection is established (at least SYN received or in - * a closing state), the connection is closed, and put in a closing state. - * The pcb is then automatically freed in tcp_slowtmr(). It is therefore - * unsafe to reference it (unless an error is returned). - * - * @param pcb the tcp_pcb to close - * @return ERR_OK if connection has been closed - * another err_t if closing failed and pcb is not freed - */ -err_t -tcp_close(struct tcp_pcb *pcb) -{ -#if TCP_DEBUG - LWIP_DEBUGF(TCP_DEBUG, ("tcp_close: closing in ")); - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ - - if (pcb->state != LISTEN) { - /* Set a flag not to receive any more data... */ - pcb->flags |= TF_RXCLOSED; - } - /* ... and close */ - return tcp_close_shutdown(pcb, 1); -} - -/** - * Causes all or part of a full-duplex connection of this PCB to be shut down. - * This doesn't deallocate the PCB! - * - * @param pcb PCB to shutdown - * @param shut_rx shut down receive side if this is != 0 - * @param shut_tx shut down send side if this is != 0 - * @return ERR_OK if shutdown succeeded (or the PCB has already been shut down) - * another err_t on error. - */ -err_t -tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx) -{ - if (pcb->state == LISTEN) { - return ERR_CONN; - } - if (shut_rx) { - /* shut down the receive side: free buffered data... */ - if (pcb->refused_data != NULL) { - pbuf_free(pcb->refused_data); - pcb->refused_data = NULL; - } - /* ... and set a flag not to receive any more data */ - pcb->flags |= TF_RXCLOSED; - } - if (shut_tx) { - /* This can't happen twice since if it succeeds, the pcb's state is changed. - Only close in these states as the others directly deallocate the PCB */ - switch (pcb->state) { - case SYN_RCVD: - case ESTABLISHED: - case CLOSE_WAIT: - return tcp_close_shutdown(pcb, 0); - default: - /* don't shut down other states */ - break; - } - } - /* @todo: return another err_t if not in correct state or already shut? */ - return ERR_OK; -} - -/** - * Abandons a connection and optionally sends a RST to the remote - * host. Deletes the local protocol control block. This is done when - * a connection is killed because of shortage of memory. - * - * @param pcb the tcp_pcb to abort - * @param reset boolean to indicate whether a reset should be sent - */ -void -tcp_abandon(struct tcp_pcb *pcb, int reset) -{ - u32_t seqno, ackno; -#if LWIP_CALLBACK_API - tcp_err_fn errf; -#endif /* LWIP_CALLBACK_API */ - void *errf_arg; - - /* pcb->state LISTEN not allowed here */ - LWIP_ASSERT("don't call tcp_abort/tcp_abandon for listen-pcbs", - pcb->state != LISTEN); - /* Figure out on which TCP PCB list we are, and remove us. If we - are in an active state, call the receive function associated with - the PCB with a NULL argument, and send an RST to the remote end. */ - if (pcb->state == TIME_WAIT) { - tcp_pcb_remove(&tcp_tw_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else { - seqno = pcb->snd_nxt; - ackno = pcb->rcv_nxt; -#if LWIP_CALLBACK_API - errf = pcb->errf; -#endif /* LWIP_CALLBACK_API */ - errf_arg = pcb->callback_arg; - tcp_pcb_remove(&tcp_active_pcbs, pcb); - if (pcb->unacked != NULL) { - tcp_segs_free(pcb->unacked); - } - if (pcb->unsent != NULL) { - tcp_segs_free(pcb->unsent); - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - tcp_segs_free(pcb->ooseq); - } -#endif /* TCP_QUEUE_OOSEQ */ - if (reset) { - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n")); - tcp_rst(seqno, ackno, &pcb->local_ip, &pcb->remote_ip, pcb->local_port, pcb->remote_port, PCB_ISIPV6(pcb)); - } - memp_free(MEMP_TCP_PCB, pcb); - TCP_EVENT_ERR(errf, errf_arg, ERR_ABRT); - } -} - -/** - * Aborts the connection by sending a RST (reset) segment to the remote - * host. The pcb is deallocated. This function never fails. - * - * ATTENTION: When calling this from one of the TCP callbacks, make - * sure you always return ERR_ABRT (and never return ERR_ABRT otherwise - * or you will risk accessing deallocated memory or memory leaks! - * - * @param pcb the tcp pcb to abort - */ -void -tcp_abort(struct tcp_pcb *pcb) -{ - tcp_abandon(pcb, 1); -} - -/** - * Binds the connection to a local portnumber and IP address. If the - * IP address is not given (i.e., ipaddr == NULL), the IP address of - * the outgoing network interface is used instead. - * - * @param pcb the tcp_pcb to bind (no check is done whether this pcb is - * already bound!) - * @param ipaddr the local ip address to bind to (use IP_ADDR_ANY to bind - * to any local address - * @param port the local port to bind to - * @return ERR_USE if the port is already in use - * ERR_VAL if bind failed because the PCB is not in a valid state - * ERR_OK if bound - */ -err_t -tcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) -{ - int i; - int max_pcb_list = NUM_TCP_PCB_LISTS; - struct tcp_pcb *cpcb; - - LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_VAL); - -#if SO_REUSE - /* Unless the REUSEADDR flag is set, - we have to check the pcbs in TIME-WAIT state, also. - We do not dump TIME_WAIT pcb's; they can still be matched by incoming - packets using both local and remote IP addresses and ports to distinguish. - */ - if ((pcb->so_options & SOF_REUSEADDR) != 0) { - max_pcb_list = NUM_TCP_PCB_LISTS_NO_TIME_WAIT; - } -#endif /* SO_REUSE */ - - if (port == 0) { - port = tcp_new_port(); - } - - /* Check if the address already is in use (on all lists) */ - for (i = 0; i < max_pcb_list; i++) { - for(cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { -#if SO_REUSE - /* Omit checking for the same port if both pcbs have REUSEADDR set. - For SO_REUSEADDR, the duplicate-check for a 5-tuple is done in - tcp_connect. */ - if (((pcb->so_options & SOF_REUSEADDR) == 0) || - ((cpcb->so_options & SOF_REUSEADDR) == 0)) -#endif /* SO_REUSE */ - { - /* @todo: check accept_any_ip_version */ - if (IP_PCB_IPVER_EQ(pcb, cpcb) && - (ipX_addr_isany(PCB_ISIPV6(pcb), &cpcb->local_ip) || - ipX_addr_isany(PCB_ISIPV6(pcb), ip_2_ipX(ipaddr)) || - ipX_addr_cmp(PCB_ISIPV6(pcb), &cpcb->local_ip, ip_2_ipX(ipaddr)))) { - return ERR_USE; - } - } - } - } - } - - if (!ipX_addr_isany(PCB_ISIPV6(pcb), ip_2_ipX(ipaddr))) { - ipX_addr_set(PCB_ISIPV6(pcb), &pcb->local_ip, ip_2_ipX(ipaddr)); - } - pcb->local_port = port; - TCP_REG(&tcp_bound_pcbs, pcb); - LWIP_DEBUGF(TCP_DEBUG, ("tcp_bind: bind to port %"U16_F"\n", port)); - return ERR_OK; -} -#if LWIP_CALLBACK_API -/** - * Default accept callback if no accept callback is specified by the user. - */ -static err_t -tcp_accept_null(void *arg, struct tcp_pcb *pcb, err_t err) -{ - LWIP_UNUSED_ARG(arg); - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(err); - - return ERR_ABRT; -} -#endif /* LWIP_CALLBACK_API */ - -/** - * Set the state of the connection to be LISTEN, which means that it - * is able to accept incoming connections. The protocol control block - * is reallocated in order to consume less memory. Setting the - * connection to LISTEN is an irreversible process. - * - * @param pcb the original tcp_pcb - * @param backlog the incoming connections queue limit - * @return tcp_pcb used for listening, consumes less memory. - * - * @note The original tcp_pcb is freed. This function therefore has to be - * called like this: - * tpcb = tcp_listen(tpcb); - */ -struct tcp_pcb * -tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog) -{ - struct tcp_pcb_listen *lpcb; - - LWIP_UNUSED_ARG(backlog); - LWIP_ERROR("tcp_listen: pcb already connected", pcb->state == CLOSED, return NULL); - - /* already listening? */ - if (pcb->state == LISTEN) { - return pcb; - } -#if SO_REUSE - if ((pcb->so_options & SOF_REUSEADDR) != 0) { - /* Since SOF_REUSEADDR allows reusing a local address before the pcb's usage - is declared (listen-/connection-pcb), we have to make sure now that - this port is only used once for every local IP. */ - for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - if ((lpcb->local_port == pcb->local_port) && - IP_PCB_IPVER_EQ(pcb, lpcb)) { - if (ipX_addr_cmp(PCB_ISIPV6(pcb), &lpcb->local_ip, &pcb->local_ip)) { - /* this address/port is already used */ - return NULL; - } - } - } - } -#endif /* SO_REUSE */ - lpcb = (struct tcp_pcb_listen *)memp_malloc(MEMP_TCP_PCB_LISTEN); - if (lpcb == NULL) { - return NULL; - } - lpcb->callback_arg = pcb->callback_arg; - lpcb->local_port = pcb->local_port; - lpcb->state = LISTEN; - lpcb->prio = pcb->prio; - lpcb->so_options = pcb->so_options; - lpcb->so_options |= SOF_ACCEPTCONN; - lpcb->ttl = pcb->ttl; - lpcb->tos = pcb->tos; -#if LWIP_IPV6 - PCB_ISIPV6(lpcb) = PCB_ISIPV6(pcb); - lpcb->accept_any_ip_version = 0; -#endif /* LWIP_IPV6 */ - ipX_addr_copy(PCB_ISIPV6(pcb), lpcb->local_ip, pcb->local_ip); - if (pcb->local_port != 0) { - TCP_RMV(&tcp_bound_pcbs, pcb); - } - memp_free(MEMP_TCP_PCB, pcb); -#if LWIP_CALLBACK_API - lpcb->accept = tcp_accept_null; -#endif /* LWIP_CALLBACK_API */ -#if TCP_LISTEN_BACKLOG - lpcb->accepts_pending = 0; - lpcb->backlog = (backlog ? backlog : 1); -#endif /* TCP_LISTEN_BACKLOG */ - TCP_REG(&tcp_listen_pcbs.pcbs, (struct tcp_pcb *)lpcb); - return (struct tcp_pcb *)lpcb; -} - -#if LWIP_IPV6 -/** - * Same as tcp_listen_with_backlog, but allows to accept IPv4 and IPv6 - * connections, if the pcb's local address is set to ANY. - */ -struct tcp_pcb * -tcp_listen_dual_with_backlog(struct tcp_pcb *pcb, u8_t backlog) -{ - struct tcp_pcb *lpcb; - - if (!ipX_addr_isany(PCB_ISIPV6(pcb), &pcb->local_ip)) { - return NULL; - } - lpcb = tcp_listen_with_backlog(pcb, backlog); - if (lpcb != NULL) { - ((struct tcp_pcb_listen*)lpcb)->accept_any_ip_version = 1; - } - return lpcb; -} -#endif /* LWIP_IPV6 */ - -/** - * Update the state that tracks the available window space to advertise. - * - * Returns how much extra window would be advertised if we sent an - * update now. - */ -u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb) -{ - u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; - - if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { - /* we can advertise more window */ - pcb->rcv_ann_wnd = pcb->rcv_wnd; - return new_right_edge - pcb->rcv_ann_right_edge; - } else { - if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) { - /* Can happen due to other end sending out of advertised window, - * but within actual available (but not yet advertised) window */ - pcb->rcv_ann_wnd = 0; - } else { - /* keep the right edge of window constant */ - u32_t new_rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt; - LWIP_ASSERT("new_rcv_ann_wnd <= 0xffff", new_rcv_ann_wnd <= 0xffff); - pcb->rcv_ann_wnd = (u16_t)new_rcv_ann_wnd; - } - return 0; - } -} - -/** - * This function should be called by the application when it has - * processed the data. The purpose is to advertise a larger window - * when the data has been processed. - * - * @param pcb the tcp_pcb for which data is read - * @param len the amount of bytes that have been read by the application - */ -void -tcp_recved(struct tcp_pcb *pcb, u16_t len) -{ - int wnd_inflation; - - /* pcb->state LISTEN not allowed here */ - LWIP_ASSERT("don't call tcp_recved for listen-pcbs", - pcb->state != LISTEN); - LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n", - len <= 0xffff - pcb->rcv_wnd ); - - pcb->rcv_wnd += len; - if (pcb->rcv_wnd > TCP_WND) { - pcb->rcv_wnd = TCP_WND; - } - - wnd_inflation = tcp_update_rcv_ann_wnd(pcb); - - /* If the change in the right edge of window is significant (default - * watermark is TCP_WND/4), then send an explicit update now. - * Otherwise wait for a packet to be sent in the normal course of - * events (or more window to be available later) */ - if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) { - tcp_ack_now(pcb); - tcp_output(pcb); - } - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %"U16_F" bytes, wnd %"U16_F" (%"U16_F").\n", - len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd)); -} - -/** - * A nastly hack featuring 'goto' statements that allocates a - * new TCP local port. - * - * @return a new (free) local TCP port number - */ -static u16_t -tcp_new_port(void) -{ - int i; - struct tcp_pcb *pcb; -#ifndef TCP_LOCAL_PORT_RANGE_START -/* From http://www.iana.org/assignments/port-numbers: - "The Dynamic and/or Private Ports are those from 49152 through 65535" */ -#define TCP_LOCAL_PORT_RANGE_START 0xc000 -#define TCP_LOCAL_PORT_RANGE_END 0xffff -#endif - static u16_t port = TCP_LOCAL_PORT_RANGE_START; - - again: - if (port++ == TCP_LOCAL_PORT_RANGE_END) { - port = TCP_LOCAL_PORT_RANGE_START; - } - /* Check all PCB lists. */ - for (i = 0; i < NUM_TCP_PCB_LISTS; i++) { - for(pcb = *tcp_pcb_lists[i]; pcb != NULL; pcb = pcb->next) { - if (pcb->local_port == port) { - goto again; - } - } - } - return port; -} - -/** - * Connects to another host. The function given as the "connected" - * argument will be called when the connection has been established. - * - * @param pcb the tcp_pcb used to establish the connection - * @param ipaddr the remote ip address to connect to - * @param port the remote tcp port to connect to - * @param connected callback function to call when connected (or on error) - * @return ERR_VAL if invalid arguments are given - * ERR_OK if connect request has been sent - * other err_t values if connect request couldn't be sent - */ -err_t -tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, - tcp_connected_fn connected) -{ - err_t ret; - u32_t iss; - u16_t old_local_port; - - LWIP_ERROR("tcp_connect: can only connect from state CLOSED", pcb->state == CLOSED, return ERR_ISCONN); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_connect to port %"U16_F"\n", port)); - if (ipaddr != NULL) { - ipX_addr_set(PCB_ISIPV6(pcb), &pcb->remote_ip, ip_2_ipX(ipaddr)); - } else { - return ERR_VAL; - } - pcb->remote_port = port; - - /* check if we have a route to the remote host */ - if (ipX_addr_isany(PCB_ISIPV6(pcb), &pcb->local_ip)) { - /* no local IP address set, yet. */ - struct netif *netif; - ipX_addr_t *local_ip; - ipX_route_get_local_ipX(PCB_ISIPV6(pcb), &pcb->local_ip, &pcb->remote_ip, netif, local_ip); - if ((netif == NULL) || (local_ip == NULL)) { - /* Don't even try to send a SYN packet if we have no route - since that will fail. */ - return ERR_RTE; - } - /* Use the address as local address of the pcb. */ - ipX_addr_copy(PCB_ISIPV6(pcb), pcb->local_ip, *local_ip); - } - - old_local_port = pcb->local_port; - if (pcb->local_port == 0) { - pcb->local_port = tcp_new_port(); - } -#if SO_REUSE - if ((pcb->so_options & SOF_REUSEADDR) != 0) { - /* Since SOF_REUSEADDR allows reusing a local address, we have to make sure - now that the 5-tuple is unique. */ - struct tcp_pcb *cpcb; - int i; - /* Don't check listen- and bound-PCBs, check active- and TIME-WAIT PCBs. */ - for (i = 2; i < NUM_TCP_PCB_LISTS; i++) { - for(cpcb = *tcp_pcb_lists[i]; cpcb != NULL; cpcb = cpcb->next) { - if ((cpcb->local_port == pcb->local_port) && - (cpcb->remote_port == port) && - IP_PCB_IPVER_EQ(cpcb, pcb) && - ipX_addr_cmp(PCB_ISIPV6(pcb), &cpcb->local_ip, &pcb->local_ip) && - ipX_addr_cmp(PCB_ISIPV6(pcb), &cpcb->remote_ip, ip_2_ipX(ipaddr))) { - /* linux returns EISCONN here, but ERR_USE should be OK for us */ - return ERR_USE; - } - } - } - } -#endif /* SO_REUSE */ - iss = tcp_next_iss(); - pcb->rcv_nxt = 0; - pcb->snd_nxt = iss; - pcb->lastack = iss - 1; - pcb->snd_lbb = iss - 1; - pcb->rcv_wnd = TCP_WND; - pcb->rcv_ann_wnd = TCP_WND; - pcb->rcv_ann_right_edge = pcb->rcv_nxt; - pcb->snd_wnd = TCP_WND; - /* As initial send MSS, we use TCP_MSS but limit it to 536. - The send MSS is updated when an MSS option is received. */ - pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; -#if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip, PCB_ISIPV6(pcb)); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - pcb->cwnd = 1; - pcb->ssthresh = pcb->mss * 10; -#if LWIP_CALLBACK_API - pcb->connected = connected; -#else /* LWIP_CALLBACK_API */ - LWIP_UNUSED_ARG(connected); -#endif /* LWIP_CALLBACK_API */ - - /* Send a SYN together with the MSS option. */ - ret = tcp_enqueue_flags(pcb, TCP_SYN); - if (ret == ERR_OK) { - /* SYN segment was enqueued, changed the pcbs state now */ - pcb->state = SYN_SENT; - if (old_local_port != 0) { - TCP_RMV(&tcp_bound_pcbs, pcb); - } - TCP_REG(&tcp_active_pcbs, pcb); - snmp_inc_tcpactiveopens(); - - tcp_output(pcb); - } - return ret; -} - -/** - * Called every 500 ms and implements the retransmission timer and the timer that - * removes PCBs that have been in TIME-WAIT for enough time. It also increments - * various timers such as the inactivity timer in each PCB. - * - * Automatically called from tcp_tmr(). - */ -void -tcp_slowtmr(void) -{ - struct tcp_pcb *pcb, *prev; - u16_t eff_wnd; - u8_t pcb_remove; /* flag if a PCB should be removed */ - u8_t pcb_reset; /* flag if a RST should be sent when removing */ - err_t err; - - err = ERR_OK; - - ++tcp_ticks; - - /* Steps through all of the active PCBs. */ - prev = NULL; - pcb = tcp_active_pcbs; - if (pcb == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n")); - } - while (pcb != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n")); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT); - - pcb_remove = 0; - pcb_reset = 0; - - if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n")); - } - else if (pcb->nrtx == TCP_MAXRTX) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n")); - } else { - if (pcb->persist_backoff > 0) { - /* If snd_wnd is zero, use persist timer to send 1 byte probes - * instead of using the standard retransmission mechanism. */ - pcb->persist_cnt++; - if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { - pcb->persist_cnt = 0; - if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) { - pcb->persist_backoff++; - } - tcp_zero_window_probe(pcb); - } - } else { - /* Increase the retransmission timer if it is running */ - if(pcb->rtime >= 0) - ++pcb->rtime; - - if (pcb->unacked != NULL && pcb->rtime >= pcb->rto) { - /* Time for a retransmission. */ - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_slowtmr: rtime %"S16_F - " pcb->rto %"S16_F"\n", - pcb->rtime, pcb->rto)); - - /* Double retransmission time-out unless we are trying to - * connect to somebody (i.e., we are in SYN_SENT). */ - if (pcb->state != SYN_SENT) { - pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx]; - } - - /* Reset the retransmission timer. */ - pcb->rtime = 0; - - /* Reduce congestion window and ssthresh. */ - eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); - pcb->ssthresh = eff_wnd >> 1; - if (pcb->ssthresh < (pcb->mss << 1)) { - pcb->ssthresh = (pcb->mss << 1); - } - pcb->cwnd = pcb->mss; - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %"U16_F - " ssthresh %"U16_F"\n", - pcb->cwnd, pcb->ssthresh)); - - /* The following needs to be called AFTER cwnd is set to one - mss - STJ */ - tcp_rexmit_rto(pcb); - } - } - } - /* Check if this PCB has stayed too long in FIN-WAIT-2 */ - if (pcb->state == FIN_WAIT_2) { - if ((u32_t)(tcp_ticks - pcb->tmr) > - TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in FIN-WAIT-2\n")); - } - } - - /* Check if KEEPALIVE should be sent */ - if((pcb->so_options & SOF_KEEPALIVE) && - ((pcb->state == ESTABLISHED) || - (pcb->state == CLOSE_WAIT))) { -#if LWIP_TCP_KEEPALIVE - if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + (pcb->keep_cnt*pcb->keep_intvl)) - / TCP_SLOW_INTERVAL) -#else - if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + TCP_MAXIDLE) / TCP_SLOW_INTERVAL) -#endif /* LWIP_TCP_KEEPALIVE */ - { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting connection to ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), TCP_DEBUG, &pcb->remote_ip); - LWIP_DEBUGF(TCP_DEBUG, ("\n")); - - ++pcb_remove; - ++pcb_reset; - } -#if LWIP_TCP_KEEPALIVE - else if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + pcb->keep_cnt_sent * pcb->keep_intvl) - / TCP_SLOW_INTERVAL) -#else - else if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEPINTVL_DEFAULT) - / TCP_SLOW_INTERVAL) -#endif /* LWIP_TCP_KEEPALIVE */ - { - tcp_keepalive(pcb); - pcb->keep_cnt_sent++; - } - } - - /* If this PCB has queued out of sequence data, but has been - inactive for too long, will drop the data (it will eventually - be retransmitted). */ -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL && - (u32_t)tcp_ticks - pcb->tmr >= pcb->rto * TCP_OOSEQ_TIMEOUT) { - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: dropping OOSEQ queued data\n")); - } -#endif /* TCP_QUEUE_OOSEQ */ - - /* Check if this PCB has stayed too long in SYN-RCVD */ - if (pcb->state == SYN_RCVD) { - if ((u32_t)(tcp_ticks - pcb->tmr) > - TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in SYN-RCVD\n")); - } - } - - /* Check if this PCB has stayed too long in LAST-ACK */ - if (pcb->state == LAST_ACK) { - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in LAST-ACK\n")); - } - } - - /* If the PCB should be removed, do it. */ - if (pcb_remove) { - struct tcp_pcb *pcb2; - tcp_pcb_purge(pcb); - /* Remove PCB from tcp_active_pcbs list. */ - if (prev != NULL) { - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs); - prev->next = pcb->next; - } else { - /* This PCB was the first. */ - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb); - tcp_active_pcbs = pcb->next; - } - - TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_ABRT); - if (pcb_reset) { - tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - pcb->local_port, pcb->remote_port, PCB_ISIPV6(pcb)); - } - - pcb2 = pcb; - pcb = pcb->next; - memp_free(MEMP_TCP_PCB, pcb2); - } else { - /* get the 'next' element now and work with 'prev' below (in case of abort) */ - prev = pcb; - pcb = pcb->next; - - /* We check if we should poll the connection. */ - ++prev->polltmr; - if (prev->polltmr >= prev->pollinterval) { - prev->polltmr = 0; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n")); - TCP_EVENT_POLL(prev, err); - /* if err == ERR_ABRT, 'prev' is already deallocated */ - if (err == ERR_OK) { - tcp_output(prev); - } - } - } - } - - - /* Steps through all of the TIME-WAIT PCBs. */ - prev = NULL; - pcb = tcp_tw_pcbs; - while (pcb != NULL) { - LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - pcb_remove = 0; - - /* Check if this PCB has stayed long enough in TIME-WAIT */ - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - ++pcb_remove; - } - - - - /* If the PCB should be removed, do it. */ - if (pcb_remove) { - struct tcp_pcb *pcb2; - tcp_pcb_purge(pcb); - /* Remove PCB from tcp_tw_pcbs list. */ - if (prev != NULL) { - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs); - prev->next = pcb->next; - } else { - /* This PCB was the first. */ - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb); - tcp_tw_pcbs = pcb->next; - } - pcb2 = pcb; - pcb = pcb->next; - memp_free(MEMP_TCP_PCB, pcb2); - } else { - prev = pcb; - pcb = pcb->next; - } - } -} - -/** - * Is called every TCP_FAST_INTERVAL (250 ms) and process data previously - * "refused" by upper layer (application) and sends delayed ACKs. - * - * Automatically called from tcp_tmr(). - */ -void -tcp_fasttmr(void) -{ - struct tcp_pcb *pcb = tcp_active_pcbs; - - while(pcb != NULL) { - struct tcp_pcb *next = pcb->next; - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - /* Notify again application with data previously received. */ - err_t err; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_fasttmr: notify kept packet\n")); - TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err); - if (err == ERR_OK) { - pcb->refused_data = NULL; - } else if (err == ERR_ABRT) { - /* if err == ERR_ABRT, 'pcb' is already deallocated */ - pcb = NULL; - } - } - - /* send delayed ACKs */ - if (pcb && (pcb->flags & TF_ACK_DELAY)) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n")); - tcp_ack_now(pcb); - tcp_output(pcb); - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - } - - pcb = next; - } -} - -/** - * Deallocates a list of TCP segments (tcp_seg structures). - * - * @param seg tcp_seg list of TCP segments to free - */ -void -tcp_segs_free(struct tcp_seg *seg) -{ - while (seg != NULL) { - struct tcp_seg *next = seg->next; - tcp_seg_free(seg); - seg = next; - } -} - -/** - * Frees a TCP segment (tcp_seg structure). - * - * @param seg single tcp_seg to free - */ -void -tcp_seg_free(struct tcp_seg *seg) -{ - if (seg != NULL) { - if (seg->p != NULL) { - pbuf_free(seg->p); -#if TCP_DEBUG - seg->p = NULL; -#endif /* TCP_DEBUG */ - } - memp_free(MEMP_TCP_SEG, seg); - } -} - -/** - * Sets the priority of a connection. - * - * @param pcb the tcp_pcb to manipulate - * @param prio new priority - */ -void -tcp_setprio(struct tcp_pcb *pcb, u8_t prio) -{ - pcb->prio = prio; -} - -#if TCP_QUEUE_OOSEQ -/** - * Returns a copy of the given TCP segment. - * The pbuf and data are not copied, only the pointers - * - * @param seg the old tcp_seg - * @return a copy of seg - */ -struct tcp_seg * -tcp_seg_copy(struct tcp_seg *seg) -{ - struct tcp_seg *cseg; - - cseg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG); - if (cseg == NULL) { - return NULL; - } - SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg)); - pbuf_ref(cseg->p); - return cseg; -} -#endif /* TCP_QUEUE_OOSEQ */ - -#if LWIP_CALLBACK_API -/** - * Default receive callback that is called if the user didn't register - * a recv callback for the pcb. - */ -err_t -tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - LWIP_UNUSED_ARG(arg); - if (p != NULL) { - tcp_recved(pcb, p->tot_len); - pbuf_free(p); - } else if (err == ERR_OK) { - return tcp_close(pcb); - } - return ERR_OK; -} -#endif /* LWIP_CALLBACK_API */ - -/** - * Kills the oldest active connection that has the same or lower priority than - * 'prio'. - * - * @param prio minimum priority - */ -static void -tcp_kill_prio(u8_t prio) -{ - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - u8_t mprio; - - - mprio = TCP_PRIO_MAX; - - /* We kill the oldest active connection that has lower priority than prio. */ - inactivity = 0; - inactive = NULL; - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->prio <= prio && - pcb->prio <= mprio && - (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - inactivity = tcp_ticks - pcb->tmr; - inactive = pcb; - mprio = pcb->prio; - } - } - if (inactive != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - } -} - -/** - * Kills the oldest connection that is in TIME_WAIT state. - * Called from tcp_alloc() if no more connections are available. - */ -static void -tcp_kill_timewait(void) -{ - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - - inactivity = 0; - inactive = NULL; - /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */ - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - inactivity = tcp_ticks - pcb->tmr; - inactive = pcb; - } - } - if (inactive != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_timewait: killing oldest TIME-WAIT PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - } -} - -/** - * Allocate a new tcp_pcb structure. - * - * @param prio priority for the new pcb - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_alloc(u8_t prio) -{ - struct tcp_pcb *pcb; - u32_t iss; - - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - if (pcb == NULL) { - /* Try killing oldest connection in TIME-WAIT. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest TIME-WAIT connection\n")); - tcp_kill_timewait(); - /* Try to allocate a tcp_pcb again. */ - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - if (pcb == NULL) { - /* Try killing active connections with lower priority than the new one. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing connection with prio lower than %d\n", prio)); - tcp_kill_prio(prio); - /* Try to allocate a tcp_pcb again. */ - pcb = (struct tcp_pcb *)memp_malloc(MEMP_TCP_PCB); - if (pcb != NULL) { - /* adjust err stats: memp_malloc failed twice before */ - MEMP_STATS_DEC(err, MEMP_TCP_PCB); - } - } - if (pcb != NULL) { - /* adjust err stats: timewait PCB was freed above */ - MEMP_STATS_DEC(err, MEMP_TCP_PCB); - } - } - if (pcb != NULL) { - memset(pcb, 0, sizeof(struct tcp_pcb)); - pcb->prio = prio; - pcb->snd_buf = TCP_SND_BUF; - pcb->snd_queuelen = 0; - pcb->rcv_wnd = TCP_WND; - pcb->rcv_ann_wnd = TCP_WND; - pcb->tos = 0; - pcb->ttl = TCP_TTL; - /* As initial send MSS, we use TCP_MSS but limit it to 536. - The send MSS is updated when an MSS option is received. */ - pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; - pcb->rto = 3000 / TCP_SLOW_INTERVAL; - pcb->sa = 0; - pcb->sv = 3000 / TCP_SLOW_INTERVAL; - pcb->rtime = -1; - pcb->cwnd = 1; - iss = tcp_next_iss(); - pcb->snd_wl2 = iss; - pcb->snd_nxt = iss; - pcb->lastack = iss; - pcb->snd_lbb = iss; - pcb->tmr = tcp_ticks; - - pcb->polltmr = 0; - -#if LWIP_CALLBACK_API - pcb->recv = tcp_recv_null; -#endif /* LWIP_CALLBACK_API */ - - /* Init KEEPALIVE timer */ - pcb->keep_idle = TCP_KEEPIDLE_DEFAULT; - -#if LWIP_TCP_KEEPALIVE - pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT; - pcb->keep_cnt = TCP_KEEPCNT_DEFAULT; -#endif /* LWIP_TCP_KEEPALIVE */ - - pcb->keep_cnt_sent = 0; - } - return pcb; -} - -/** - * Creates a new TCP protocol control block but doesn't place it on - * any of the TCP PCB lists. - * The pcb is not put on any list until binding using tcp_bind(). - * - * @internal: Maybe there should be a idle TCP PCB list where these - * PCBs are put on. Port reservation using tcp_bind() is implemented but - * allocated pcbs that are not bound can't be killed automatically if wanting - * to allocate a pcb with higher prio (@see tcp_kill_prio()) - * - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_new(void) -{ - return tcp_alloc(TCP_PRIO_NORMAL); -} - -#if LWIP_IPV6 -/** - * Creates a new TCP-over-IPv6 protocol control block but doesn't - * place it on any of the TCP PCB lists. - * The pcb is not put on any list until binding using tcp_bind(). - * - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_new_ip6(void) -{ - struct tcp_pcb * pcb; - pcb = tcp_alloc(TCP_PRIO_NORMAL); - ip_set_v6(pcb, 1); - return pcb; -} -#endif /* LWIP_IPV6 */ - -/** - * Used to specify the argument that should be passed callback - * functions. - * - * @param pcb tcp_pcb to set the callback argument - * @param arg void pointer argument to pass to callback functions - */ -void -tcp_arg(struct tcp_pcb *pcb, void *arg) -{ - /* This function is allowed to be called for both listen pcbs and - connection pcbs. */ - pcb->callback_arg = arg; -} -#if LWIP_CALLBACK_API - -/** - * Used to specify the function that should be called when a TCP - * connection receives data. - * - * @param pcb tcp_pcb to set the recv callback - * @param recv callback function to call for this pcb when data is received - */ -void -tcp_recv(struct tcp_pcb *pcb, tcp_recv_fn recv) -{ - LWIP_ASSERT("invalid socket state for recv callback", pcb->state != LISTEN); - pcb->recv = recv; -} - -/** - * Used to specify the function that should be called when TCP data - * has been successfully delivered to the remote host. - * - * @param pcb tcp_pcb to set the sent callback - * @param sent callback function to call for this pcb when data is successfully sent - */ -void -tcp_sent(struct tcp_pcb *pcb, tcp_sent_fn sent) -{ - LWIP_ASSERT("invalid socket state for sent callback", pcb->state != LISTEN); - pcb->sent = sent; -} - -/** - * Used to specify the function that should be called when a fatal error - * has occured on the connection. - * - * @param pcb tcp_pcb to set the err callback - * @param err callback function to call for this pcb when a fatal error - * has occured on the connection - */ -void -tcp_err(struct tcp_pcb *pcb, tcp_err_fn err) -{ - LWIP_ASSERT("invalid socket state for err callback", pcb->state != LISTEN); - pcb->errf = err; -} - -/** - * Used for specifying the function that should be called when a - * LISTENing connection has been connected to another host. - * - * @param pcb tcp_pcb to set the accept callback - * @param accept callback function to call for this pcb when LISTENing - * connection has been connected to another host - */ -void -tcp_accept(struct tcp_pcb *pcb, tcp_accept_fn accept) -{ - /* This function is allowed to be called for both listen pcbs and - connection pcbs. */ - pcb->accept = accept; -} -#endif /* LWIP_CALLBACK_API */ - - -/** - * Used to specify the function that should be called periodically - * from TCP. The interval is specified in terms of the TCP coarse - * timer interval, which is called twice a second. - * - */ -void -tcp_poll(struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval) -{ - LWIP_ASSERT("invalid socket state for poll", pcb->state != LISTEN); -#if LWIP_CALLBACK_API - pcb->poll = poll; -#else /* LWIP_CALLBACK_API */ - LWIP_UNUSED_ARG(poll); -#endif /* LWIP_CALLBACK_API */ - pcb->pollinterval = interval; -} - -/** - * Purges a TCP PCB. Removes any buffered data and frees the buffer memory - * (pcb->ooseq, pcb->unsent and pcb->unacked are freed). - * - * @param pcb tcp_pcb to purge. The pcb itself is not deallocated! - */ -void -tcp_pcb_purge(struct tcp_pcb *pcb) -{ - if (pcb->state != CLOSED && - pcb->state != TIME_WAIT && - pcb->state != LISTEN) { - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge\n")); - -#if TCP_LISTEN_BACKLOG - if (pcb->state == SYN_RCVD) { - /* Need to find the corresponding listen_pcb and decrease its accepts_pending */ - struct tcp_pcb_listen *lpcb; - LWIP_ASSERT("tcp_pcb_purge: pcb->state == SYN_RCVD but tcp_listen_pcbs is NULL", - tcp_listen_pcbs.listen_pcbs != NULL); - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - if ((lpcb->local_port == pcb->local_port) && - IP_PCB_IPVER_EQ(pcb, lpcb) && - (ipX_addr_isany(PCB_ISIPV6(lpcb), &lpcb->local_ip) || - ipX_addr_cmp(PCB_ISIPV6(lpcb), &pcb->local_ip, &lpcb->local_ip))) { - /* port and address of the listen pcb match the timed-out pcb */ - LWIP_ASSERT("tcp_pcb_purge: listen pcb does not have accepts pending", - lpcb->accepts_pending > 0); - lpcb->accepts_pending--; - break; - } - } - } -#endif /* TCP_LISTEN_BACKLOG */ - - - if (pcb->refused_data != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->refused_data\n")); - pbuf_free(pcb->refused_data); - pcb->refused_data = NULL; - } - if (pcb->unsent != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: not all data sent\n")); - } - if (pcb->unacked != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n")); - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n")); - } - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; -#endif /* TCP_QUEUE_OOSEQ */ - - /* Stop the retransmission timer as it will expect data on unacked - queue if it fires */ - pcb->rtime = -1; - - tcp_segs_free(pcb->unsent); - tcp_segs_free(pcb->unacked); - pcb->unacked = pcb->unsent = NULL; -#if TCP_OVERSIZE - pcb->unsent_oversize = 0; -#endif /* TCP_OVERSIZE */ - } -} - -/** - * Purges the PCB and removes it from a PCB list. Any delayed ACKs are sent first. - * - * @param pcblist PCB list to purge. - * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated! - */ -void -tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb) -{ - TCP_RMV(pcblist, pcb); - - tcp_pcb_purge(pcb); - - /* if there is an outstanding delayed ACKs, send it */ - if (pcb->state != TIME_WAIT && - pcb->state != LISTEN && - pcb->flags & TF_ACK_DELAY) { - pcb->flags |= TF_ACK_NOW; - tcp_output(pcb); - } - - if (pcb->state != LISTEN) { - LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL); - LWIP_ASSERT("unacked segments leaking", pcb->unacked == NULL); -#if TCP_QUEUE_OOSEQ - LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL); -#endif /* TCP_QUEUE_OOSEQ */ - } - - pcb->state = CLOSED; - - LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane()); -} - -/** - * Calculates a new initial sequence number for new connections. - * - * @return u32_t pseudo random sequence number - */ -u32_t -tcp_next_iss(void) -{ - static u32_t iss = 6510; - - iss += tcp_ticks; /* XXX */ - return iss; -} - -#if TCP_CALCULATE_EFF_SEND_MSS -/** - * Calcluates the effective send mss that can be used for a specific IP address - * by using ip_route to determin the netif used to send to the address and - * calculating the minimum of TCP_MSS and that netif's mtu (if set). - */ -u16_t -tcp_eff_send_mss_impl(u16_t sendmss, ipX_addr_t *dest -#if LWIP_IPV6 - , ipX_addr_t *src, u8_t isipv6 -#endif /* LWIP_IPV6 */ - ) -{ - u16_t mss_s; - struct netif *outif; - s16_t mtu; - - outif = ipX_route(isipv6, src, dest); -#if LWIP_IPV6 - if (isipv6) { - /* First look in destination cache, to see if there is a Path MTU. */ - mtu = nd6_get_destination_mtu(ipX_2_ip6(dest), outif); - } else -#endif /* LWIP_IPV6 */ - { - if (outif == NULL) { - return sendmss; - } - mtu = outif->mtu; - } - - if (mtu != 0) { - mss_s = mtu - IP_HLEN - TCP_HLEN; -#if LWIP_IPV6 - /* for IPv6, substract the difference in header size */ - mss_s -= (IP6_HLEN - IP_HLEN); -#endif /* LWIP_IPV6 */ - /* RFC 1122, chap 4.2.2.6: - * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize - * We correct for TCP options in tcp_write(), and don't support IP options. - */ - sendmss = LWIP_MIN(sendmss, mss_s); - } - return sendmss; -} -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - -const char* -tcp_debug_state_str(enum tcp_state s) -{ - return tcp_state_str[s]; -} - -#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG -/** - * Print a tcp header for debugging purposes. - * - * @param tcphdr pointer to a struct tcp_hdr - */ -void -tcp_debug_print(struct tcp_hdr *tcphdr) -{ - LWIP_DEBUGF(TCP_DEBUG, ("TCP header:\n")); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n", - ntohs(tcphdr->src), ntohs(tcphdr->dest))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (seq no)\n", - ntohl(tcphdr->seqno))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (ack no)\n", - ntohl(tcphdr->ackno))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %2"U16_F" | |%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"| %5"U16_F" | (hdrlen, flags (", - TCPH_HDRLEN(tcphdr), - TCPH_FLAGS(tcphdr) >> 5 & 1, - TCPH_FLAGS(tcphdr) >> 4 & 1, - TCPH_FLAGS(tcphdr) >> 3 & 1, - TCPH_FLAGS(tcphdr) >> 2 & 1, - TCPH_FLAGS(tcphdr) >> 1 & 1, - TCPH_FLAGS(tcphdr) & 1, - ntohs(tcphdr->wnd))); - tcp_debug_print_flags(TCPH_FLAGS(tcphdr)); - LWIP_DEBUGF(TCP_DEBUG, ("), win)\n")); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| 0x%04"X16_F" | %5"U16_F" | (chksum, urgp)\n", - ntohs(tcphdr->chksum), ntohs(tcphdr->urgp))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); -} - -/** - * Print a tcp state for debugging purposes. - * - * @param s enum tcp_state to print - */ -void -tcp_debug_print_state(enum tcp_state s) -{ - LWIP_DEBUGF(TCP_DEBUG, ("State: %s\n", tcp_state_str[s])); -} - -/** - * Print tcp flags for debugging purposes. - * - * @param flags tcp flags, all active flags are printed - */ -void -tcp_debug_print_flags(u8_t flags) -{ - if (flags & TCP_FIN) { - LWIP_DEBUGF(TCP_DEBUG, ("FIN ")); - } - if (flags & TCP_SYN) { - LWIP_DEBUGF(TCP_DEBUG, ("SYN ")); - } - if (flags & TCP_RST) { - LWIP_DEBUGF(TCP_DEBUG, ("RST ")); - } - if (flags & TCP_PSH) { - LWIP_DEBUGF(TCP_DEBUG, ("PSH ")); - } - if (flags & TCP_ACK) { - LWIP_DEBUGF(TCP_DEBUG, ("ACK ")); - } - if (flags & TCP_URG) { - LWIP_DEBUGF(TCP_DEBUG, ("URG ")); - } - if (flags & TCP_ECE) { - LWIP_DEBUGF(TCP_DEBUG, ("ECE ")); - } - if (flags & TCP_CWR) { - LWIP_DEBUGF(TCP_DEBUG, ("CWR ")); - } - LWIP_DEBUGF(TCP_DEBUG, ("\n")); -} - -/** - * Print all tcp_pcbs in every list for debugging purposes. - */ -void -tcp_debug_print_pcbs(void) -{ - struct tcp_pcb *pcb; - LWIP_DEBUGF(TCP_DEBUG, ("Active PCB states:\n")); - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } - LWIP_DEBUGF(TCP_DEBUG, ("Listen PCB states:\n")); - for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } - LWIP_DEBUGF(TCP_DEBUG, ("TIME-WAIT PCB states:\n")); - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } -} - -/** - * Check state consistency of the tcp_pcb lists. - */ -s16_t -tcp_pcbs_sane(void) -{ - struct tcp_pcb *pcb; - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != CLOSED", pcb->state != CLOSED); - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != LISTEN", pcb->state != LISTEN); - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - } - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_pcbs_sane: tw pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - } - return 1; -} -#endif /* TCP_DEBUG */ - -#endif /* LWIP_TCP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_in.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_in.c deleted file mode 100644 index 316dc3d9f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_in.c +++ /dev/null @@ -1,1589 +0,0 @@ -/** - * @file - * Transmission Control Protocol, incoming traffic - * - * The input processing functions of the TCP layer. - * - * These functions are generally called in the order (ip_input() ->) - * tcp_input() -> * tcp_process() -> tcp_receive() (-> application). - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/tcp_impl.h" -#include "lwip/def.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/inet_chksum.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/inet_chksum.h" -#if LWIP_ND6_TCP_REACHABILITY_HINTS -#include "lwip/nd6.h" -#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */ - -/* These variables are global to all functions involved in the input - processing of TCP segments. They are set by the tcp_input() - function. */ -static struct tcp_seg inseg; -static struct tcp_hdr *tcphdr; -static u32_t seqno, ackno; -static u8_t flags; -static u16_t tcplen; - -static u8_t recv_flags; -static struct pbuf *recv_data; - -struct tcp_pcb *tcp_input_pcb; - -/* Forward declarations. */ -static err_t tcp_process(struct tcp_pcb *pcb); -static void tcp_receive(struct tcp_pcb *pcb); -static void tcp_parseopt(struct tcp_pcb *pcb); - -static err_t tcp_listen_input(struct tcp_pcb_listen *pcb); -static err_t tcp_timewait_input(struct tcp_pcb *pcb); - -/** - * The initial input processing of TCP. It verifies the TCP header, demultiplexes - * the segment between the PCBs and passes it on to tcp_process(), which implements - * the TCP finite state machine. This function is called by the IP layer (in - * ip_input()). - * - * @param p received TCP segment to process (p->payload pointing to the TCP header) - * @param inp network interface on which this segment was received - */ -void -tcp_input(struct pbuf *p, struct netif *inp) -{ - struct tcp_pcb *pcb, *prev; - struct tcp_pcb_listen *lpcb; -#if SO_REUSE - struct tcp_pcb *lpcb_prev = NULL; - struct tcp_pcb_listen *lpcb_any = NULL; -#endif /* SO_REUSE */ - u8_t hdrlen; - err_t err; -#if CHECKSUM_CHECK_TCP - u16_t chksum; -#endif /* CHECKSUM_CHECK_TCP */ - - PERF_START; - - TCP_STATS_INC(tcp.recv); - snmp_inc_tcpinsegs(); - - tcphdr = (struct tcp_hdr *)p->payload; - -#if TCP_INPUT_DEBUG - tcp_debug_print(tcphdr); -#endif - - /* Check that TCP header fits in payload */ - if (p->len < sizeof(struct tcp_hdr)) { - /* drop short packets */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet (%"U16_F" bytes) discarded\n", p->tot_len)); - TCP_STATS_INC(tcp.lenerr); - goto dropped; - } - - /* Don't even process incoming broadcasts/multicasts. */ - if ((!ip_current_is_v6() && ip_addr_isbroadcast(ip_current_dest_addr(), inp)) || - ipX_addr_ismulticast(ip_current_is_v6(), ipX_current_dest_addr())) { - TCP_STATS_INC(tcp.proterr); - goto dropped; - } - -#if CHECKSUM_CHECK_TCP - /* Verify TCP checksum. */ - chksum = ipX_chksum_pseudo(ip_current_is_v6(), p, IP_PROTO_TCP, p->tot_len, - ipX_current_src_addr(), ipX_current_dest_addr()); - if (chksum != 0) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packet discarded due to failing checksum 0x%04"X16_F"\n", - chksum)); - tcp_debug_print(tcphdr); - TCP_STATS_INC(tcp.chkerr); - goto dropped; - } -#endif /* CHECKSUM_CHECK_TCP */ - - /* Move the payload pointer in the pbuf so that it points to the - TCP data instead of the TCP header. */ - hdrlen = TCPH_HDRLEN(tcphdr); - if(pbuf_header(p, -(hdrlen * 4))){ - /* drop short packets */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet\n")); - TCP_STATS_INC(tcp.lenerr); - goto dropped; - } - - /* Convert fields in TCP header to host byte order. */ - tcphdr->src = ntohs(tcphdr->src); - tcphdr->dest = ntohs(tcphdr->dest); - seqno = tcphdr->seqno = ntohl(tcphdr->seqno); - ackno = tcphdr->ackno = ntohl(tcphdr->ackno); - tcphdr->wnd = ntohs(tcphdr->wnd); - - flags = TCPH_FLAGS(tcphdr); - tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); - - /* Demultiplex an incoming segment. First, we check if it is destined - for an active connection. */ - prev = NULL; - - - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED); - LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN); - if (pcb->remote_port == tcphdr->src && - pcb->local_port == tcphdr->dest && - IP_PCB_IPVER_INPUT_MATCH(pcb) && - ipX_addr_cmp(ip_current_is_v6(), &pcb->remote_ip, ipX_current_src_addr()) && - ipX_addr_cmp(ip_current_is_v6(),&pcb->local_ip, ipX_current_dest_addr())) { - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb); - if (prev != NULL) { - prev->next = pcb->next; - pcb->next = tcp_active_pcbs; - tcp_active_pcbs = pcb; - } - LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb); - break; - } - prev = pcb; - } - - if (pcb == NULL) { - /* If it did not go to an active connection, we check the connections - in the TIME-WAIT state. */ - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - if (pcb->remote_port == tcphdr->src && - pcb->local_port == tcphdr->dest && - IP_PCB_IPVER_INPUT_MATCH(pcb) && - ipX_addr_cmp(ip_current_is_v6(), &pcb->remote_ip, ipX_current_src_addr()) && - ipX_addr_cmp(ip_current_is_v6(),&pcb->local_ip, ipX_current_dest_addr())) { - /* We don't really care enough to move this PCB to the front - of the list since we are not very likely to receive that - many segments for connections in TIME-WAIT. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for TIME_WAITing connection.\n")); - tcp_timewait_input(pcb); - pbuf_free(p); - return; - } - } - - /* Finally, if we still did not get a match, we check all PCBs that - are LISTENing for incoming connections. */ - prev = NULL; - for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - if (lpcb->local_port == tcphdr->dest) { -#if LWIP_IPV6 - if (lpcb->accept_any_ip_version) { - /* found an ANY-match */ -#if SO_REUSE - lpcb_any = lpcb; - lpcb_prev = prev; -#else /* SO_REUSE */ - break; -#endif /* SO_REUSE */ - } else -#endif /* LWIP_IPV6 */ - if (IP_PCB_IPVER_INPUT_MATCH(lpcb)) { - if (ipX_addr_cmp(ip_current_is_v6(), &lpcb->local_ip, ipX_current_dest_addr())) { - /* found an exact match */ - break; - } else if (ipX_addr_isany(ip_current_is_v6(), &lpcb->local_ip)) { - /* found an ANY-match */ -#if SO_REUSE - lpcb_any = lpcb; - lpcb_prev = prev; -#else /* SO_REUSE */ - break; - #endif /* SO_REUSE */ - } - } - } - prev = (struct tcp_pcb *)lpcb; - } -#if SO_REUSE - /* first try specific local IP */ - if (lpcb == NULL) { - /* only pass to ANY if no specific local IP has been found */ - lpcb = lpcb_any; - prev = lpcb_prev; - } -#endif /* SO_REUSE */ - if (lpcb != NULL) { - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - if (prev != NULL) { - ((struct tcp_pcb_listen *)prev)->next = lpcb->next; - /* our successor is the remainder of the listening list */ - lpcb->next = tcp_listen_pcbs.listen_pcbs; - /* put this listening pcb at the head of the listening list */ - tcp_listen_pcbs.listen_pcbs = lpcb; - } - - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for LISTENing connection.\n")); - tcp_listen_input(lpcb); - pbuf_free(p); - return; - } - } - -#if TCP_INPUT_DEBUG - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags ")); - tcp_debug_print_flags(TCPH_FLAGS(tcphdr)); - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n")); -#endif /* TCP_INPUT_DEBUG */ - - - if (pcb != NULL) { - /* The incoming segment belongs to a connection. */ -#if TCP_INPUT_DEBUG -#if TCP_DEBUG - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ -#endif /* TCP_INPUT_DEBUG */ - - /* Set up a tcp_seg structure. */ - inseg.next = NULL; - inseg.len = p->tot_len; - inseg.p = p; - inseg.tcphdr = tcphdr; - - recv_data = NULL; - recv_flags = 0; - - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - /* Notify again application with data previously received. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n")); - TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err); - if (err == ERR_OK) { - pcb->refused_data = NULL; - } else if ((err == ERR_ABRT) || (tcplen > 0)) { - /* if err == ERR_ABRT, 'pcb' is already deallocated */ - /* Drop incoming packets because pcb is "full" (only if the incoming - segment contains data). */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: drop incoming packets, because pcb is \"full\"\n")); - goto dropped; - } - } - tcp_input_pcb = pcb; - err = tcp_process(pcb); - /* A return value of ERR_ABRT means that tcp_abort() was called - and that the pcb has been freed. If so, we don't do anything. */ - if (err != ERR_ABRT) { - if (recv_flags & TF_RESET) { - /* TF_RESET means that the connection was reset by the other - end. We then call the error callback to inform the - application that the connection is dead before we - deallocate the PCB. */ - TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_RST); - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else if (recv_flags & TF_CLOSED) { - /* The connection has been closed and we will deallocate the - PCB. */ - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else { - err = ERR_OK; - /* If the application has registered a "sent" function to be - called when new send buffer space is available, we call it - now. */ - if (pcb->acked > 0) { - TCP_EVENT_SENT(pcb, pcb->acked, err); - if (err == ERR_ABRT) { - goto aborted; - } - } - - if (recv_data != NULL) { - LWIP_ASSERT("pcb->refused_data == NULL", pcb->refused_data == NULL); - if (pcb->flags & TF_RXCLOSED) { - /* received data although already closed -> abort (send RST) to - notify the remote host that not all data has been processed */ - pbuf_free(recv_data); - tcp_abort(pcb); - goto aborted; - } - if (flags & TCP_PSH) { - recv_data->flags |= PBUF_FLAG_PUSH; - } - - /* Notify application that data has been received. */ - TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); - if (err == ERR_ABRT) { - goto aborted; - } - - /* If the upper layer can't receive this data, store it */ - if (err != ERR_OK) { - pcb->refused_data = recv_data; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: keep incoming packet, because pcb is \"full\"\n")); - } - } - - /* If a FIN segment was received, we call the callback - function with a NULL buffer to indicate EOF. */ - if (recv_flags & TF_GOT_FIN) { - /* correct rcv_wnd as the application won't call tcp_recved() - for the FIN's seqno */ - if (pcb->rcv_wnd != TCP_WND) { - pcb->rcv_wnd++; - } - TCP_EVENT_CLOSED(pcb, err); - if (err == ERR_ABRT) { - goto aborted; - } - } - - tcp_input_pcb = NULL; - /* Try to send something out. */ - tcp_output(pcb); -#if TCP_INPUT_DEBUG -#if TCP_DEBUG - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ -#endif /* TCP_INPUT_DEBUG */ - } - } - /* Jump target if pcb has been aborted in a callback (by calling tcp_abort()). - Below this line, 'pcb' may not be dereferenced! */ -aborted: - tcp_input_pcb = NULL; - recv_data = NULL; - - /* give up our reference to inseg.p */ - if (inseg.p != NULL) - { - pbuf_free(inseg.p); - inseg.p = NULL; - } - } else { - - /* If no matching PCB was found, send a TCP RST (reset) to the - sender. */ - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n")); - if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) { - TCP_STATS_INC(tcp.proterr); - TCP_STATS_INC(tcp.drop); - tcp_rst(ackno, seqno + tcplen, ipX_current_dest_addr(), - ipX_current_src_addr(), tcphdr->dest, tcphdr->src, ip_current_is_v6()); - } - pbuf_free(p); - } - - LWIP_ASSERT("tcp_input: tcp_pcbs_sane()", tcp_pcbs_sane()); - PERF_STOP("tcp_input"); - return; -dropped: - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); -} - -/** - * Called by tcp_input() when a segment arrives for a listening - * connection (from tcp_input()). - * - * @param pcb the tcp_pcb_listen for which a segment arrived - * @return ERR_OK if the segment was processed - * another err_t on error - * - * @note the return value is not (yet?) used in tcp_input() - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_listen_input(struct tcp_pcb_listen *pcb) -{ - struct tcp_pcb *npcb; - err_t rc; - - /* In the LISTEN state, we check for incoming SYN segments, - creates a new PCB, and responds with a SYN|ACK. */ - if (flags & TCP_ACK) { - /* For incoming segments with the ACK flag set, respond with a - RST. */ - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n")); - tcp_rst(ackno + 1, seqno + tcplen, ipX_current_dest_addr(), - ipX_current_src_addr(), tcphdr->dest, tcphdr->src, ip_current_is_v6()); - } else if (flags & TCP_SYN) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection request %"U16_F" -> %"U16_F".\n", tcphdr->src, tcphdr->dest)); -#if TCP_LISTEN_BACKLOG - if (pcb->accepts_pending >= pcb->backlog) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: listen backlog exceeded for port %"U16_F"\n", tcphdr->dest)); - return ERR_ABRT; - } -#endif /* TCP_LISTEN_BACKLOG */ - npcb = tcp_alloc(pcb->prio); - /* If a new PCB could not be created (probably due to lack of memory), - we don't do anything, but rely on the sender will retransmit the - SYN at a time when we have more memory available. */ - if (npcb == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: could not allocate PCB\n")); - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - } -#if TCP_LISTEN_BACKLOG - pcb->accepts_pending++; -#endif /* TCP_LISTEN_BACKLOG */ - /* Set up the new PCB. */ -#if LWIP_IPV6 - PCB_ISIPV6(npcb) = ip_current_is_v6(); -#endif /* LWIP_IPV6 */ - ipX_addr_copy(ip_current_is_v6(), npcb->local_ip, *ipX_current_dest_addr()); - ipX_addr_copy(ip_current_is_v6(), npcb->remote_ip, *ipX_current_src_addr()); - npcb->local_port = pcb->local_port; - npcb->remote_port = tcphdr->src; - npcb->state = SYN_RCVD; - npcb->rcv_nxt = seqno + 1; - npcb->rcv_ann_right_edge = npcb->rcv_nxt; - npcb->snd_wnd = tcphdr->wnd; - npcb->ssthresh = npcb->snd_wnd; - npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */ - npcb->callback_arg = pcb->callback_arg; -#if LWIP_CALLBACK_API - npcb->accept = pcb->accept; -#endif /* LWIP_CALLBACK_API */ - /* inherit socket options */ - npcb->so_options = pcb->so_options & SOF_INHERITED; - /* Register the new PCB so that we can begin receiving segments - for it. */ - TCP_REG(&tcp_active_pcbs, npcb); - - /* Parse any options in the SYN. */ - tcp_parseopt(npcb); -#if TCP_CALCULATE_EFF_SEND_MSS - npcb->mss = tcp_eff_send_mss(npcb->mss, &npcb->local_ip, - &npcb->remote_ip, PCB_ISIPV6(npcb)); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - - snmp_inc_tcppassiveopens(); - - /* Send a SYN|ACK together with the MSS option. */ - rc = tcp_enqueue_flags(npcb, TCP_SYN | TCP_ACK); - if (rc != ERR_OK) { - tcp_abandon(npcb, 0); - return rc; - } - return tcp_output(npcb); - } - return ERR_OK; -} - -/** - * Called by tcp_input() when a segment arrives for a connection in - * TIME_WAIT. - * - * @param pcb the tcp_pcb for which a segment arrived - * - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_timewait_input(struct tcp_pcb *pcb) -{ - /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */ - /* RFC 793 3.9 Event Processing - Segment Arrives: - * - first check sequence number - we skip that one in TIME_WAIT (always - * acceptable since we only send ACKs) - * - second check the RST bit (... return) */ - if (flags & TCP_RST) { - return ERR_OK; - } - /* - fourth, check the SYN bit, */ - if (flags & TCP_SYN) { - /* If an incoming segment is not acceptable, an acknowledgment - should be sent in reply */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt+pcb->rcv_wnd)) { - /* If the SYN is in the window it is an error, send a reset */ - tcp_rst(ackno, seqno + tcplen, ipX_current_dest_addr(), - ipX_current_src_addr(), tcphdr->dest, tcphdr->src, ip_current_is_v6()); - return ERR_OK; - } - } else if (flags & TCP_FIN) { - /* - eighth, check the FIN bit: Remain in the TIME-WAIT state. - Restart the 2 MSL time-wait timeout.*/ - pcb->tmr = tcp_ticks; - } - - if ((tcplen > 0)) { - /* Acknowledge data, FIN or out-of-window SYN */ - pcb->flags |= TF_ACK_NOW; - return tcp_output(pcb); - } - return ERR_OK; -} - -/** - * Implements the TCP state machine. Called by tcp_input. In some - * states tcp_receive() is called to receive data. The tcp_seg - * argument will be freed by the caller (tcp_input()) unless the - * recv_data pointer in the pcb is set. - * - * @param pcb the tcp_pcb for which a segment arrived - * - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_process(struct tcp_pcb *pcb) -{ - struct tcp_seg *rseg; - u8_t acceptable = 0; - err_t err; - - err = ERR_OK; - - /* Process incoming RST segments. */ - if (flags & TCP_RST) { - /* First, determine if the reset is acceptable. */ - if (pcb->state == SYN_SENT) { - if (ackno == pcb->snd_nxt) { - acceptable = 1; - } - } else { - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - pcb->rcv_nxt+pcb->rcv_wnd)) { - acceptable = 1; - } - } - - if (acceptable) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n")); - LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED); - recv_flags |= TF_RESET; - pcb->flags &= ~TF_ACK_DELAY; - return ERR_RST; - } else { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - LWIP_DEBUGF(TCP_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - return ERR_OK; - } - } - - if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) { - /* Cope with new connection attempt after remote end crashed */ - tcp_ack_now(pcb); - return ERR_OK; - } - - if ((pcb->flags & TF_RXCLOSED) == 0) { - /* Update the PCB (in)activity timer unless rx is closed (see tcp_shutdown) */ - pcb->tmr = tcp_ticks; - } - pcb->keep_cnt_sent = 0; - - tcp_parseopt(pcb); - - /* Do different things depending on the TCP state. */ - switch (pcb->state) { - case SYN_SENT: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno, - pcb->snd_nxt, ntohl(pcb->unacked->tcphdr->seqno))); - /* received SYN ACK with expected sequence number? */ - if ((flags & TCP_ACK) && (flags & TCP_SYN) - && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) { - pcb->snd_buf++; - pcb->rcv_nxt = seqno + 1; - pcb->rcv_ann_right_edge = pcb->rcv_nxt; - pcb->lastack = ackno; - pcb->snd_wnd = tcphdr->wnd; - pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */ - pcb->state = ESTABLISHED; - -#if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, &pcb->local_ip, &pcb->remote_ip, - PCB_ISIPV6(pcb)); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - - /* Set ssthresh again after changing pcb->mss (already set in tcp_connect - * but for the default value of pcb->mss) */ - pcb->ssthresh = pcb->mss * 10; - - pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss); - LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0)); - --pcb->snd_queuelen; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - rseg = pcb->unacked; - pcb->unacked = rseg->next; - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if(pcb->unacked == NULL) - pcb->rtime = -1; - else { - pcb->rtime = 0; - pcb->nrtx = 0; - } - - tcp_seg_free(rseg); - - /* Call the user specified function to call when sucessfully - * connected. */ - TCP_EVENT_CONNECTED(pcb, ERR_OK, err); - if (err == ERR_ABRT) { - return ERR_ABRT; - } - tcp_ack_now(pcb); - } - /* received ACK? possibly a half-open connection */ - else if (flags & TCP_ACK) { - /* send a RST to bring the other side in a non-synchronized state. */ - tcp_rst(ackno, seqno + tcplen, ipX_current_dest_addr(), - ipX_current_src_addr(), tcphdr->dest, tcphdr->src, ip_current_is_v6()); - } - break; - case SYN_RCVD: - if (flags & TCP_ACK) { - /* expected ACK number? */ - if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)) { - u16_t old_cwnd; - pcb->state = ESTABLISHED; - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection established %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); -#if LWIP_CALLBACK_API - LWIP_ASSERT("pcb->accept != NULL", pcb->accept != NULL); -#endif - /* Call the accept function. */ - TCP_EVENT_ACCEPT(pcb, ERR_OK, err); - if (err != ERR_OK) { - /* If the accept function returns with an error, we abort - * the connection. */ - /* Already aborted? */ - if (err != ERR_ABRT) { - tcp_abort(pcb); - } - return ERR_ABRT; - } - old_cwnd = pcb->cwnd; - /* If there was any data contained within this ACK, - * we'd better pass it on to the application as well. */ - tcp_receive(pcb); - - /* Prevent ACK for SYN to generate a sent event */ - if (pcb->acked != 0) { - pcb->acked--; - } - - pcb->cwnd = ((old_cwnd == 1) ? (pcb->mss * 2) : pcb->mss); - - if (recv_flags & TF_GOT_FIN) { - tcp_ack_now(pcb); - pcb->state = CLOSE_WAIT; - } - } else { - /* incorrect ACK number, send RST */ - tcp_rst(ackno, seqno + tcplen, ipX_current_dest_addr(), - ipX_current_src_addr(), tcphdr->dest, tcphdr->src, ip_current_is_v6()); - } - } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { - /* Looks like another copy of the SYN - retransmit our SYN-ACK */ - tcp_rexmit(pcb); - } - break; - case CLOSE_WAIT: - /* FALLTHROUGH */ - case ESTABLISHED: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { /* passive close */ - tcp_ack_now(pcb); - pcb->state = CLOSE_WAIT; - } - break; - case FIN_WAIT_1: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { - if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { - LWIP_DEBUGF(TCP_DEBUG, - ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } else { - tcp_ack_now(pcb); - pcb->state = CLOSING; - } - } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { - pcb->state = FIN_WAIT_2; - } - break; - case FIN_WAIT_2: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } - break; - case CLOSING: - tcp_receive(pcb); - if (flags & TCP_ACK && ackno == pcb->snd_nxt) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } - break; - case LAST_ACK: - tcp_receive(pcb); - if (flags & TCP_ACK && ackno == pcb->snd_nxt) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */ - recv_flags |= TF_CLOSED; - } - break; - default: - break; - } - return ERR_OK; -} - -#if TCP_QUEUE_OOSEQ -/** - * Insert segment into the list (segments covered with new one will be deleted) - * - * Called from tcp_receive() - */ -static void -tcp_oos_insert_segment(struct tcp_seg *cseg, struct tcp_seg *next) -{ - struct tcp_seg *old_seg; - - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - /* received segment overlaps all following segments */ - tcp_segs_free(next); - next = NULL; - } - else { - /* delete some following segments - oos queue may have segments with FIN flag */ - while (next && - TCP_SEQ_GEQ((seqno + cseg->len), - (next->tcphdr->seqno + next->len))) { - /* cseg with FIN already processed */ - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - TCPH_SET_FLAG(cseg->tcphdr, TCP_FIN); - } - old_seg = next; - next = next->next; - tcp_seg_free(old_seg); - } - if (next && - TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) { - /* We need to trim the incoming segment. */ - cseg->len = (u16_t)(next->tcphdr->seqno - seqno); - pbuf_realloc(cseg->p, cseg->len); - } - } - cseg->next = next; -} -#endif /* TCP_QUEUE_OOSEQ */ - -/** - * Called by tcp_process. Checks if the given segment is an ACK for outstanding - * data, and if so frees the memory of the buffered data. Next, is places the - * segment on any of the receive queues (pcb->recved or pcb->ooseq). If the segment - * is buffered, the pbuf is referenced by pbuf_ref so that it will not be freed until - * i it has been removed from the buffer. - * - * If the incoming segment constitutes an ACK for a segment that was used for RTT - * estimation, the RTT is estimated here as well. - * - * Called from tcp_process(). - */ -static void -tcp_receive(struct tcp_pcb *pcb) -{ - struct tcp_seg *next; -#if TCP_QUEUE_OOSEQ - struct tcp_seg *prev, *cseg; -#endif /* TCP_QUEUE_OOSEQ */ - struct pbuf *p; - s32_t off; - s16_t m; - u32_t right_wnd_edge; - u16_t new_tot_len; - int found_dupack = 0; - - if (flags & TCP_ACK) { - right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2; - - /* Update window. */ - if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || - (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) { - pcb->snd_wnd = tcphdr->wnd; - pcb->snd_wl1 = seqno; - pcb->snd_wl2 = ackno; - if (pcb->snd_wnd > 0 && pcb->persist_backoff > 0) { - pcb->persist_backoff = 0; - } - LWIP_DEBUGF(TCP_WND_DEBUG, ("tcp_receive: window update %"U16_F"\n", pcb->snd_wnd)); -#if TCP_WND_DEBUG - } else { - if (pcb->snd_wnd != tcphdr->wnd) { - LWIP_DEBUGF(TCP_WND_DEBUG, - ("tcp_receive: no window update lastack %"U32_F" ackno %" - U32_F" wl1 %"U32_F" seqno %"U32_F" wl2 %"U32_F"\n", - pcb->lastack, ackno, pcb->snd_wl1, seqno, pcb->snd_wl2)); - } -#endif /* TCP_WND_DEBUG */ - } - - /* (From Stevens TCP/IP Illustrated Vol II, p970.) Its only a - * duplicate ack if: - * 1) It doesn't ACK new data - * 2) length of received packet is zero (i.e. no payload) - * 3) the advertised window hasn't changed - * 4) There is outstanding unacknowledged data (retransmission timer running) - * 5) The ACK is == biggest ACK sequence number so far seen (snd_una) - * - * If it passes all five, should process as a dupack: - * a) dupacks < 3: do nothing - * b) dupacks == 3: fast retransmit - * c) dupacks > 3: increase cwnd - * - * If it only passes 1-3, should reset dupack counter (and add to - * stats, which we don't do in lwIP) - * - * If it only passes 1, should reset dupack counter - * - */ - - /* Clause 1 */ - if (TCP_SEQ_LEQ(ackno, pcb->lastack)) { - pcb->acked = 0; - /* Clause 2 */ - if (tcplen == 0) { - /* Clause 3 */ - if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){ - /* Clause 4 */ - if (pcb->rtime >= 0) { - /* Clause 5 */ - if (pcb->lastack == ackno) { - found_dupack = 1; - if (pcb->dupacks + 1 > pcb->dupacks) - ++pcb->dupacks; - if (pcb->dupacks > 3) { - /* Inflate the congestion window, but not if it means that - the value overflows. */ - if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { - pcb->cwnd += pcb->mss; - } - } else if (pcb->dupacks == 3) { - /* Do fast retransmit */ - tcp_rexmit_fast(pcb); - } - } - } - } - } - /* If Clause (1) or more is true, but not a duplicate ack, reset - * count of consecutive duplicate acks */ - if (!found_dupack) { - pcb->dupacks = 0; - } - } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)){ - /* We come here when the ACK acknowledges new data. */ - - /* Reset the "IN Fast Retransmit" flag, since we are no longer - in fast retransmit. Also reset the congestion window to the - slow start threshold. */ - if (pcb->flags & TF_INFR) { - pcb->flags &= ~TF_INFR; - pcb->cwnd = pcb->ssthresh; - } - - /* Reset the number of retransmissions. */ - pcb->nrtx = 0; - - /* Reset the retransmission time-out. */ - pcb->rto = (pcb->sa >> 3) + pcb->sv; - - /* Update the send buffer space. Diff between the two can never exceed 64K? */ - pcb->acked = (u16_t)(ackno - pcb->lastack); - - pcb->snd_buf += pcb->acked; - - /* Reset the fast retransmit variables. */ - pcb->dupacks = 0; - pcb->lastack = ackno; - - /* Update the congestion control variables (cwnd and - ssthresh). */ - if (pcb->state >= ESTABLISHED) { - if (pcb->cwnd < pcb->ssthresh) { - if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { - pcb->cwnd += pcb->mss; - } - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: slow start cwnd %"U16_F"\n", pcb->cwnd)); - } else { - u16_t new_cwnd = (pcb->cwnd + pcb->mss * pcb->mss / pcb->cwnd); - if (new_cwnd > pcb->cwnd) { - pcb->cwnd = new_cwnd; - } - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: congestion avoidance cwnd %"U16_F"\n", pcb->cwnd)); - } - } - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: ACK for %"U32_F", unacked->seqno %"U32_F":%"U32_F"\n", - ackno, - pcb->unacked != NULL? - ntohl(pcb->unacked->tcphdr->seqno): 0, - pcb->unacked != NULL? - ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0)); - - /* Remove segment from the unacknowledged list if the incoming - ACK acknowlegdes them. */ - while (pcb->unacked != NULL && - TCP_SEQ_LEQ(ntohl(pcb->unacked->tcphdr->seqno) + - TCP_TCPLEN(pcb->unacked), ackno)) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unacked\n", - ntohl(pcb->unacked->tcphdr->seqno), - ntohl(pcb->unacked->tcphdr->seqno) + - TCP_TCPLEN(pcb->unacked))); - - next = pcb->unacked; - pcb->unacked = pcb->unacked->next; - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen)); - LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); - /* Prevent ACK for FIN to generate a sent event */ - if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { - pcb->acked--; - } - - pcb->snd_queuelen -= pbuf_clen(next->p); - tcp_seg_free(next); - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unacked)\n", (u16_t)pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_receive: valid queue length", pcb->unacked != NULL || - pcb->unsent != NULL); - } - } - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if(pcb->unacked == NULL) - pcb->rtime = -1; - else - pcb->rtime = 0; - - pcb->polltmr = 0; - -#if LWIP_IPV6 && LWIP_ND6_TCP_REACHABILITY_HINTS - if (PCB_ISIPV6(pcb)) { - /* Inform neighbor reachability of forward progress. */ - nd6_reachability_hint(ip6_current_src_addr()); - } -#endif /* LWIP_IPV6 && LWIP_ND6_TCP_REACHABILITY_HINTS*/ - } else { - /* Fix bug bug #21582: out of sequence ACK, didn't really ack anything */ - pcb->acked = 0; - } - - /* We go through the ->unsent list to see if any of the segments - on the list are acknowledged by the ACK. This may seem - strange since an "unsent" segment shouldn't be acked. The - rationale is that lwIP puts all outstanding segments on the - ->unsent list after a retransmission, so these segments may - in fact have been sent once. */ - while (pcb->unsent != NULL && - TCP_SEQ_BETWEEN(ackno, ntohl(pcb->unsent->tcphdr->seqno) + - TCP_TCPLEN(pcb->unsent), pcb->snd_nxt)) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unsent\n", - ntohl(pcb->unsent->tcphdr->seqno), ntohl(pcb->unsent->tcphdr->seqno) + - TCP_TCPLEN(pcb->unsent))); - - next = pcb->unsent; - pcb->unsent = pcb->unsent->next; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen)); - LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); - /* Prevent ACK for FIN to generate a sent event */ - if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { - pcb->acked--; - } - pcb->snd_queuelen -= pbuf_clen(next->p); - tcp_seg_free(next); - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unsent)\n", (u16_t)pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_receive: valid queue length", - pcb->unacked != NULL || pcb->unsent != NULL); - } - } - /* End of ACK for new data processing. */ - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: pcb->rttest %"U32_F" rtseq %"U32_F" ackno %"U32_F"\n", - pcb->rttest, pcb->rtseq, ackno)); - - /* RTT estimation calculations. This is done by checking if the - incoming segment acknowledges the segment we use to take a - round-trip time measurement. */ - if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) { - /* diff between this shouldn't exceed 32K since this are tcp timer ticks - and a round-trip shouldn't be that long... */ - m = (s16_t)(tcp_ticks - pcb->rttest); - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n", - m, m * TCP_SLOW_INTERVAL)); - - /* This is taken directly from VJs original code in his paper */ - m = m - (pcb->sa >> 3); - pcb->sa += m; - if (m < 0) { - m = -m; - } - m = m - (pcb->sv >> 2); - pcb->sv += m; - pcb->rto = (pcb->sa >> 3) + pcb->sv; - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: RTO %"U16_F" (%"U16_F" milliseconds)\n", - pcb->rto, pcb->rto * TCP_SLOW_INTERVAL)); - - pcb->rttest = 0; - } - } - - /* If the incoming segment contains data, we must process it - further. */ - if (tcplen > 0) { - /* This code basically does three things: - - +) If the incoming segment contains data that is the next - in-sequence data, this data is passed to the application. This - might involve trimming the first edge of the data. The rcv_nxt - variable and the advertised window are adjusted. - - +) If the incoming segment has data that is above the next - sequence number expected (->rcv_nxt), the segment is placed on - the ->ooseq queue. This is done by finding the appropriate - place in the ->ooseq queue (which is ordered by sequence - number) and trim the segment in both ends if needed. An - immediate ACK is sent to indicate that we received an - out-of-sequence segment. - - +) Finally, we check if the first segment on the ->ooseq queue - now is in sequence (i.e., if rcv_nxt >= ooseq->seqno). If - rcv_nxt > ooseq->seqno, we must trim the first edge of the - segment on ->ooseq before we adjust rcv_nxt. The data in the - segments that are now on sequence are chained onto the - incoming segment so that we only need to call the application - once. - */ - - /* First, we check if we must trim the first edge. We have to do - this if the sequence number of the incoming segment is less - than rcv_nxt, and the sequence number plus the length of the - segment is larger than rcv_nxt. */ - /* if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){ - if (TCP_SEQ_LT(pcb->rcv_nxt, seqno + tcplen)) {*/ - if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)){ - /* Trimming the first edge is done by pushing the payload - pointer in the pbuf downwards. This is somewhat tricky since - we do not want to discard the full contents of the pbuf up to - the new starting point of the data since we have to keep the - TCP header which is present in the first pbuf in the chain. - - What is done is really quite a nasty hack: the first pbuf in - the pbuf chain is pointed to by inseg.p. Since we need to be - able to deallocate the whole pbuf, we cannot change this - inseg.p pointer to point to any of the later pbufs in the - chain. Instead, we point the ->payload pointer in the first - pbuf to data in one of the later pbufs. We also set the - inseg.data pointer to point to the right place. This way, the - ->p pointer will still point to the first pbuf, but the - ->p->payload pointer will point to data in another pbuf. - - After we are done with adjusting the pbuf pointers we must - adjust the ->data pointer in the seg and the segment - length.*/ - - off = pcb->rcv_nxt - seqno; - p = inseg.p; - LWIP_ASSERT("inseg.p != NULL", inseg.p); - LWIP_ASSERT("insane offset!", (off < 0x7fff)); - if (inseg.p->len < off) { - LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off)); - new_tot_len = (u16_t)(inseg.p->tot_len - off); - while (p->len < off) { - off -= p->len; - /* KJM following line changed (with addition of new_tot_len var) - to fix bug #9076 - inseg.p->tot_len -= p->len; */ - p->tot_len = new_tot_len; - p->len = 0; - p = p->next; - } - if(pbuf_header(p, (s16_t)-off)) { - /* Do we need to cope with this failing? Assert for now */ - LWIP_ASSERT("pbuf_header failed", 0); - } - } else { - if(pbuf_header(inseg.p, (s16_t)-off)) { - /* Do we need to cope with this failing? Assert for now */ - LWIP_ASSERT("pbuf_header failed", 0); - } - } - inseg.len -= (u16_t)(pcb->rcv_nxt - seqno); - inseg.tcphdr->seqno = seqno = pcb->rcv_nxt; - } - else { - if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){ - /* the whole segment is < rcv_nxt */ - /* must be a duplicate of a packet that has already been correctly handled */ - - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: duplicate seqno %"U32_F"\n", seqno)); - tcp_ack_now(pcb); - } - } - - /* The sequence number must be within the window (above rcv_nxt - and below rcv_nxt + rcv_wnd) in order to be further - processed. */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - pcb->rcv_nxt + pcb->rcv_wnd - 1)){ - if (pcb->rcv_nxt == seqno) { - /* The incoming segment is the next in sequence. We check if - we have to trim the end of the segment and update rcv_nxt - and pass the data to the application. */ - tcplen = TCP_TCPLEN(&inseg); - - if (tcplen > pcb->rcv_wnd) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: other end overran receive window" - "seqno %"U32_F" len %"U16_F" right edge %"U32_F"\n", - seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - /* Must remove the FIN from the header as we're trimming - * that byte of sequence-space from the packet */ - TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) &~ TCP_FIN); - } - /* Adjust length of segment to fit in the window. */ - inseg.len = pcb->rcv_wnd; - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - inseg.len -= 1; - } - pbuf_realloc(inseg.p, inseg.len); - tcplen = TCP_TCPLEN(&inseg); - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - (seqno + tcplen) == (pcb->rcv_nxt + pcb->rcv_wnd)); - } -#if TCP_QUEUE_OOSEQ - /* Received in-sequence data, adjust ooseq data if: - - FIN has been received or - - inseq overlaps with ooseq */ - if (pcb->ooseq != NULL) { - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: received in-order FIN, binning ooseq queue\n")); - /* Received in-order FIN means anything that was received - * out of order must now have been received in-order, so - * bin the ooseq queue */ - while (pcb->ooseq != NULL) { - struct tcp_seg *old_ooseq = pcb->ooseq; - pcb->ooseq = pcb->ooseq->next; - tcp_seg_free(old_ooseq); - } - } - else { - next = pcb->ooseq; - /* Remove all segments on ooseq that are covered by inseg already. - * FIN is copied from ooseq to inseg if present. */ - while (next && - TCP_SEQ_GEQ(seqno + tcplen, - next->tcphdr->seqno + next->len)) { - /* inseg cannot have FIN here (already processed above) */ - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN && - (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) == 0) { - TCPH_SET_FLAG(inseg.tcphdr, TCP_FIN); - tcplen = TCP_TCPLEN(&inseg); - } - prev = next; - next = next->next; - tcp_seg_free(prev); - } - /* Now trim right side of inseg if it overlaps with the first - * segment on ooseq */ - if (next && - TCP_SEQ_GT(seqno + tcplen, - next->tcphdr->seqno)) { - /* inseg cannot have FIN here (already processed above) */ - inseg.len = (u16_t)(next->tcphdr->seqno - seqno); - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - inseg.len -= 1; - } - pbuf_realloc(inseg.p, inseg.len); - tcplen = TCP_TCPLEN(&inseg); - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n", - (seqno + tcplen) == next->tcphdr->seqno); - } - pcb->ooseq = next; - } - } -#endif /* TCP_QUEUE_OOSEQ */ - - pcb->rcv_nxt = seqno + tcplen; - - /* Update the receiver's (our) window. */ - LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen); - pcb->rcv_wnd -= tcplen; - - tcp_update_rcv_ann_wnd(pcb); - - /* If there is data in the segment, we make preparations to - pass this up to the application. The ->recv_data variable - is used for holding the pbuf that goes to the - application. The code for reassembling out-of-sequence data - chains its data on this pbuf as well. - - If the segment was a FIN, we set the TF_GOT_FIN flag that will - be used to indicate to the application that the remote side has - closed its end of the connection. */ - if (inseg.p->tot_len > 0) { - recv_data = inseg.p; - /* Since this pbuf now is the responsibility of the - application, we delete our reference to it so that we won't - (mistakingly) deallocate it. */ - inseg.p = NULL; - } - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received FIN.\n")); - recv_flags |= TF_GOT_FIN; - } - -#if TCP_QUEUE_OOSEQ - /* We now check if we have segments on the ->ooseq queue that - are now in sequence. */ - while (pcb->ooseq != NULL && - pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) { - - cseg = pcb->ooseq; - seqno = pcb->ooseq->tcphdr->seqno; - - pcb->rcv_nxt += TCP_TCPLEN(cseg); - LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n", - pcb->rcv_wnd >= TCP_TCPLEN(cseg)); - pcb->rcv_wnd -= TCP_TCPLEN(cseg); - - tcp_update_rcv_ann_wnd(pcb); - - if (cseg->p->tot_len > 0) { - /* Chain this pbuf onto the pbuf that we will pass to - the application. */ - if (recv_data) { - pbuf_cat(recv_data, cseg->p); - } else { - recv_data = cseg->p; - } - cseg->p = NULL; - } - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: dequeued FIN.\n")); - recv_flags |= TF_GOT_FIN; - if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */ - pcb->state = CLOSE_WAIT; - } - } - - pcb->ooseq = cseg->next; - tcp_seg_free(cseg); - } -#endif /* TCP_QUEUE_OOSEQ */ - - - /* Acknowledge the segment(s). */ - tcp_ack(pcb); - -#if LWIP_IPV6 && LWIP_ND6_TCP_REACHABILITY_HINTS - if (PCB_ISIPV6(pcb)) { - /* Inform neighbor reachability of forward progress. */ - nd6_reachability_hint(ip6_current_src_addr()); - } -#endif /* LWIP_IPV6 && LWIP_ND6_TCP_REACHABILITY_HINTS*/ - - } else { - /* We get here if the incoming segment is out-of-sequence. */ - tcp_send_empty_ack(pcb); -#if TCP_QUEUE_OOSEQ - /* We queue the segment on the ->ooseq queue. */ - if (pcb->ooseq == NULL) { - pcb->ooseq = tcp_seg_copy(&inseg); - } else { - /* If the queue is not empty, we walk through the queue and - try to find a place where the sequence number of the - incoming segment is between the sequence numbers of the - previous and the next segment on the ->ooseq queue. That is - the place where we put the incoming segment. If needed, we - trim the second edges of the previous and the incoming - segment so that it will fit into the sequence. - - If the incoming segment has the same sequence number as a - segment on the ->ooseq queue, we discard the segment that - contains less data. */ - - prev = NULL; - for(next = pcb->ooseq; next != NULL; next = next->next) { - if (seqno == next->tcphdr->seqno) { - /* The sequence number of the incoming segment is the - same as the sequence number of the segment on - ->ooseq. We check the lengths to see which one to - discard. */ - if (inseg.len > next->len) { - /* The incoming segment is larger than the old - segment. We replace some segments with the new - one. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - if (prev != NULL) { - prev->next = cseg; - } else { - pcb->ooseq = cseg; - } - tcp_oos_insert_segment(cseg, next); - } - break; - } else { - /* Either the lenghts are the same or the incoming - segment was smaller than the old one; in either - case, we ditch the incoming segment. */ - break; - } - } else { - if (prev == NULL) { - if (TCP_SEQ_LT(seqno, next->tcphdr->seqno)) { - /* The sequence number of the incoming segment is lower - than the sequence number of the first segment on the - queue. We put the incoming segment first on the - queue. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - pcb->ooseq = cseg; - tcp_oos_insert_segment(cseg, next); - } - break; - } - } else { - /*if (TCP_SEQ_LT(prev->tcphdr->seqno, seqno) && - TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {*/ - if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno+1, next->tcphdr->seqno-1)) { - /* The sequence number of the incoming segment is in - between the sequence numbers of the previous and - the next segment on ->ooseq. We trim trim the previous - segment, delete next segments that included in received segment - and trim received, if needed. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - if (TCP_SEQ_GT(prev->tcphdr->seqno + prev->len, seqno)) { - /* We need to trim the prev segment. */ - prev->len = (u16_t)(seqno - prev->tcphdr->seqno); - pbuf_realloc(prev->p, prev->len); - } - prev->next = cseg; - tcp_oos_insert_segment(cseg, next); - } - break; - } - } - /* If the "next" segment is the last segment on the - ooseq queue, we add the incoming segment to the end - of the list. */ - if (next->next == NULL && - TCP_SEQ_GT(seqno, next->tcphdr->seqno)) { - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - /* segment "next" already contains all data */ - break; - } - next->next = tcp_seg_copy(&inseg); - if (next->next != NULL) { - if (TCP_SEQ_GT(next->tcphdr->seqno + next->len, seqno)) { - /* We need to trim the last segment. */ - next->len = (u16_t)(seqno - next->tcphdr->seqno); - pbuf_realloc(next->p, next->len); - } - /* check if the remote side overruns our receive window */ - if ((u32_t)tcplen + seqno > pcb->rcv_nxt + (u32_t)pcb->rcv_wnd) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: other end overran receive window" - "seqno %"U32_F" len %"U16_F" right edge %"U32_F"\n", - seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); - if (TCPH_FLAGS(next->next->tcphdr) & TCP_FIN) { - /* Must remove the FIN from the header as we're trimming - * that byte of sequence-space from the packet */ - TCPH_FLAGS_SET(next->next->tcphdr, TCPH_FLAGS(next->next->tcphdr) &~ TCP_FIN); - } - /* Adjust length of segment to fit in the window. */ - next->next->len = pcb->rcv_nxt + pcb->rcv_wnd - seqno; - pbuf_realloc(next->next->p, next->next->len); - tcplen = TCP_TCPLEN(next->next); - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - (seqno + tcplen) == (pcb->rcv_nxt + pcb->rcv_wnd)); - } - } - break; - } - } - prev = next; - } - } -#endif /* TCP_QUEUE_OOSEQ */ - - } - } else { - /* The incoming segment is not withing the window. */ - tcp_send_empty_ack(pcb); - } - } else { - /* Segments with length 0 is taken care of here. Segments that - fall out of the window are ACKed. */ - /*if (TCP_SEQ_GT(pcb->rcv_nxt, seqno) || - TCP_SEQ_GEQ(seqno, pcb->rcv_nxt + pcb->rcv_wnd)) {*/ - if(!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd-1)){ - tcp_ack_now(pcb); - } - } -} - -/** - * Parses the options contained in the incoming segment. - * - * Called from tcp_listen_input() and tcp_process(). - * Currently, only the MSS option is supported! - * - * @param pcb the tcp_pcb for which a segment arrived - */ -static void -tcp_parseopt(struct tcp_pcb *pcb) -{ - u16_t c, max_c; - u16_t mss; - u8_t *opts, opt; -#if LWIP_TCP_TIMESTAMPS - u32_t tsval; -#endif - - opts = (u8_t *)tcphdr + TCP_HLEN; - - /* Parse the TCP MSS option, if present. */ - if(TCPH_HDRLEN(tcphdr) > 0x5) { - max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2; - for (c = 0; c < max_c; ) { - opt = opts[c]; - switch (opt) { - case 0x00: - /* End of options. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: EOL\n")); - return; - case 0x01: - /* NOP option. */ - ++c; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n")); - break; - case 0x02: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MSS\n")); - if (opts[c + 1] != 0x04 || c + 0x04 > max_c) { - /* Bad length */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - return; - } - /* An MSS option with the right option length. */ - mss = (opts[c + 2] << 8) | opts[c + 3]; - /* Limit the mss to the configured TCP_MSS and prevent division by zero */ - pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss; - /* Advance to next option */ - c += 0x04; - break; -#if LWIP_TCP_TIMESTAMPS - case 0x08: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: TS\n")); - if (opts[c + 1] != 0x0A || c + 0x0A > max_c) { - /* Bad length */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - return; - } - /* TCP timestamp option with valid length */ - tsval = (opts[c+2]) | (opts[c+3] << 8) | - (opts[c+4] << 16) | (opts[c+5] << 24); - if (flags & TCP_SYN) { - pcb->ts_recent = ntohl(tsval); - pcb->flags |= TF_TIMESTAMP; - } else if (TCP_SEQ_BETWEEN(pcb->ts_lastacksent, seqno, seqno+tcplen)) { - pcb->ts_recent = ntohl(tsval); - } - /* Advance to next option */ - c += 0x0A; - break; -#endif - default: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n")); - if (opts[c + 1] == 0) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - /* If the length field is zero, the options are malformed - and we don't process them further. */ - return; - } - /* All other options have a length field, so that we easily - can skip past them. */ - c += opts[c + 1]; - } - } - } -} - -#endif /* LWIP_TCP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_out.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_out.c deleted file mode 100644 index 069df8939..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/tcp_out.c +++ /dev/null @@ -1,1476 +0,0 @@ -/** - * @file - * Transmission Control Protocol, outgoing traffic - * - * The output functions of TCP. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/tcp_impl.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/inet_chksum.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/inet_chksum.h" -#if LWIP_TCP_TIMESTAMPS -#include "lwip/sys.h" -#endif - -#include - -/* Define some copy-macros for checksum-on-copy so that the code looks - nicer by preventing too many ifdef's. */ -#if TCP_CHECKSUM_ON_COPY -#define TCP_DATA_COPY(dst, src, len, seg) do { \ - tcp_seg_add_chksum(LWIP_CHKSUM_COPY(dst, src, len), \ - len, &seg->chksum, &seg->chksum_swapped); \ - seg->flags |= TF_SEG_DATA_CHECKSUMMED; } while(0) -#define TCP_DATA_COPY2(dst, src, len, chksum, chksum_swapped) \ - tcp_seg_add_chksum(LWIP_CHKSUM_COPY(dst, src, len), len, chksum, chksum_swapped); -#else /* TCP_CHECKSUM_ON_COPY*/ -#define TCP_DATA_COPY(dst, src, len, seg) MEMCPY(dst, src, len) -#define TCP_DATA_COPY2(dst, src, len, chksum, chksum_swapped) MEMCPY(dst, src, len) -#endif /* TCP_CHECKSUM_ON_COPY*/ - -/** Define this to 1 for an extra check that the output checksum is valid - * (usefule when the checksum is generated by the application, not the stack) */ -#ifndef TCP_CHECKSUM_ON_COPY_SANITY_CHECK -#define TCP_CHECKSUM_ON_COPY_SANITY_CHECK 0 -#endif - -/* Forward declarations.*/ -static void tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb); - -/** Allocate a pbuf and create a tcphdr at p->payload, used for output - * functions other than the default tcp_output -> tcp_output_segment - * (e.g. tcp_send_empty_ack, etc.) - * - * @param pcb tcp pcb for which to send a packet (used to initialize tcp_hdr) - * @param optlen length of header-options - * @param datalen length of tcp data to reserve in pbuf - * @param seqno_be seqno in network byte order (big-endian) - * @return pbuf with p->payload being the tcp_hdr - */ -static struct pbuf * -tcp_output_alloc_header(struct tcp_pcb *pcb, u16_t optlen, u16_t datalen, - u32_t seqno_be /* already in network byte order */) -{ - struct tcp_hdr *tcphdr; - struct pbuf *p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen + datalen, PBUF_RAM); - if (p != NULL) { - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= TCP_HLEN + optlen)); - tcphdr = (struct tcp_hdr *)p->payload; - tcphdr->src = htons(pcb->local_port); - tcphdr->dest = htons(pcb->remote_port); - tcphdr->seqno = seqno_be; - tcphdr->ackno = htonl(pcb->rcv_nxt); - TCPH_HDRLEN_FLAGS_SET(tcphdr, (5 + optlen / 4), TCP_ACK); - tcphdr->wnd = htons(pcb->rcv_ann_wnd); - tcphdr->chksum = 0; - tcphdr->urgp = 0; - - /* If we're sending a packet, update the announced right window edge */ - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - } - return p; -} - -/** - * Called by tcp_close() to send a segment including FIN flag but not data. - * - * @param pcb the tcp_pcb over which to send a segment - * @return ERR_OK if sent, another err_t otherwise - */ -err_t -tcp_send_fin(struct tcp_pcb *pcb) -{ - /* first, try to add the fin to the last unsent segment */ - if (pcb->unsent != NULL) { - struct tcp_seg *last_unsent; - for (last_unsent = pcb->unsent; last_unsent->next != NULL; - last_unsent = last_unsent->next); - - if ((TCPH_FLAGS(last_unsent->tcphdr) & (TCP_SYN | TCP_FIN | TCP_RST)) == 0) { - /* no SYN/FIN/RST flag in the header, we can add the FIN flag */ - TCPH_SET_FLAG(last_unsent->tcphdr, TCP_FIN); - return ERR_OK; - } - } - /* no data, no length, flags, copy=1, no optdata */ - return tcp_enqueue_flags(pcb, TCP_FIN); -} - -/** - * Create a TCP segment with prefilled header. - * - * Called by tcp_write and tcp_enqueue_flags. - * - * @param pcb Protocol control block for the TCP connection. - * @param p pbuf that is used to hold the TCP header. - * @param flags TCP flags for header. - * @param seqno TCP sequence number of this packet - * @param optflags options to include in TCP header - * @return a new tcp_seg pointing to p, or NULL. - * The TCP header is filled in except ackno and wnd. - * p is freed on failure. - */ -static struct tcp_seg * -tcp_create_segment(struct tcp_pcb *pcb, struct pbuf *p, u8_t flags, u32_t seqno, u8_t optflags) -{ - struct tcp_seg *seg; - u8_t optlen = LWIP_TCP_OPT_LENGTH(optflags); - - if ((seg = (struct tcp_seg *)memp_malloc(MEMP_TCP_SEG)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_create_segment: no memory.\n")); - pbuf_free(p); - return NULL; - } - seg->flags = optflags; - seg->next = NULL; - seg->p = p; - seg->len = p->tot_len - optlen; -#if TCP_OVERSIZE_DBGCHECK - seg->oversize_left = 0; -#endif /* TCP_OVERSIZE_DBGCHECK */ -#if TCP_CHECKSUM_ON_COPY - seg->chksum = 0; - seg->chksum_swapped = 0; - /* check optflags */ - LWIP_ASSERT("invalid optflags passed: TF_SEG_DATA_CHECKSUMMED", - (optflags & TF_SEG_DATA_CHECKSUMMED) == 0); -#endif /* TCP_CHECKSUM_ON_COPY */ - - /* build TCP header */ - if (pbuf_header(p, TCP_HLEN)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_create_segment: no room for TCP header in pbuf.\n")); - TCP_STATS_INC(tcp.err); - tcp_seg_free(seg); - return NULL; - } - seg->tcphdr = (struct tcp_hdr *)seg->p->payload; - seg->tcphdr->src = htons(pcb->local_port); - seg->tcphdr->dest = htons(pcb->remote_port); - seg->tcphdr->seqno = htonl(seqno); - /* ackno is set in tcp_output */ - TCPH_HDRLEN_FLAGS_SET(seg->tcphdr, (5 + optlen / 4), flags); - /* wnd and chksum are set in tcp_output */ - seg->tcphdr->urgp = 0; - return seg; -} - -/** - * Allocate a PBUF_RAM pbuf, perhaps with extra space at the end. - * - * This function is like pbuf_alloc(layer, length, PBUF_RAM) except - * there may be extra bytes available at the end. - * - * @param layer flag to define header size. - * @param length size of the pbuf's payload. - * @param max_length maximum usable size of payload+oversize. - * @param oversize pointer to a u16_t that will receive the number of usable tail bytes. - * @param pcb The TCP connection that willo enqueue the pbuf. - * @param apiflags API flags given to tcp_write. - * @param first_seg true when this pbuf will be used in the first enqueued segment. - * @param - */ -#if TCP_OVERSIZE -static struct pbuf * -tcp_pbuf_prealloc(pbuf_layer layer, u16_t length, u16_t max_length, - u16_t *oversize, struct tcp_pcb *pcb, u8_t apiflags, - u8_t first_seg) -{ - struct pbuf *p; - u16_t alloc = length; - -#if LWIP_NETIF_TX_SINGLE_PBUF - LWIP_UNUSED_ARG(max_length); - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(apiflags); - LWIP_UNUSED_ARG(first_seg); - /* always create MSS-sized pbufs */ - alloc = TCP_MSS; -#else /* LWIP_NETIF_TX_SINGLE_PBUF */ - if (length < max_length) { - /* Should we allocate an oversized pbuf, or just the minimum - * length required? If tcp_write is going to be called again - * before this segment is transmitted, we want the oversized - * buffer. If the segment will be transmitted immediately, we can - * save memory by allocating only length. We use a simple - * heuristic based on the following information: - * - * Did the user set TCP_WRITE_FLAG_MORE? - * - * Will the Nagle algorithm defer transmission of this segment? - */ - if ((apiflags & TCP_WRITE_FLAG_MORE) || - (!(pcb->flags & TF_NODELAY) && - (!first_seg || - pcb->unsent != NULL || - pcb->unacked != NULL))) { - alloc = LWIP_MIN(max_length, LWIP_MEM_ALIGN_SIZE(length + TCP_OVERSIZE)); - } - } -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - p = pbuf_alloc(layer, alloc, PBUF_RAM); - if (p == NULL) { - return NULL; - } - LWIP_ASSERT("need unchained pbuf", p->next == NULL); - *oversize = p->len - length; - /* trim p->len to the currently used size */ - p->len = p->tot_len = length; - return p; -} -#else /* TCP_OVERSIZE */ -#define tcp_pbuf_prealloc(layer, length, mx, os, pcb, api, fst) pbuf_alloc((layer), (length), PBUF_RAM) -#endif /* TCP_OVERSIZE */ - -#if TCP_CHECKSUM_ON_COPY -/** Add a checksum of newly added data to the segment */ -static void -tcp_seg_add_chksum(u16_t chksum, u16_t len, u16_t *seg_chksum, - u8_t *seg_chksum_swapped) -{ - u32_t helper; - /* add chksum to old chksum and fold to u16_t */ - helper = chksum + *seg_chksum; - chksum = FOLD_U32T(helper); - if ((len & 1) != 0) { - *seg_chksum_swapped = 1 - *seg_chksum_swapped; - chksum = SWAP_BYTES_IN_WORD(chksum); - } - *seg_chksum = chksum; -} -#endif /* TCP_CHECKSUM_ON_COPY */ - -/** Checks if tcp_write is allowed or not (checks state, snd_buf and snd_queuelen). - * - * @param pcb the tcp pcb to check for - * @param len length of data to send (checked agains snd_buf) - * @return ERR_OK if tcp_write is allowed to proceed, another err_t otherwise - */ -static err_t -tcp_write_checks(struct tcp_pcb *pcb, u16_t len) -{ - /* connection is in invalid state for data transmission? */ - if ((pcb->state != ESTABLISHED) && - (pcb->state != CLOSE_WAIT) && - (pcb->state != SYN_SENT) && - (pcb->state != SYN_RCVD)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE, ("tcp_write() called in invalid state\n")); - return ERR_CONN; - } else if (len == 0) { - return ERR_OK; - } - - /* fail on too much data */ - if (len > pcb->snd_buf) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_write: too much data (len=%"U16_F" > snd_buf=%"U16_F")\n", - len, pcb->snd_buf)); - pcb->flags |= TF_NAGLEMEMERR; - return ERR_MEM; - } - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_write: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - - /* If total number of pbufs on the unsent/unacked queues exceeds the - * configured maximum, return an error */ - /* check for configured max queuelen and possible overflow */ - if ((pcb->snd_queuelen >= TCP_SND_QUEUELEN) || (pcb->snd_queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_write: too long queue %"U16_F" (max %"U16_F")\n", - pcb->snd_queuelen, TCP_SND_QUEUELEN)); - TCP_STATS_INC(tcp.memerr); - pcb->flags |= TF_NAGLEMEMERR; - return ERR_MEM; - } - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_write: pbufs on queue => at least one queue non-empty", - pcb->unacked != NULL || pcb->unsent != NULL); - } else { - LWIP_ASSERT("tcp_write: no pbufs on queue => both queues empty", - pcb->unacked == NULL && pcb->unsent == NULL); - } - return ERR_OK; -} - -/** - * Write data for sending (but does not send it immediately). - * - * It waits in the expectation of more data being sent soon (as - * it can send them more efficiently by combining them together). - * To prompt the system to send data now, call tcp_output() after - * calling tcp_write(). - * - * @param pcb Protocol control block for the TCP connection to enqueue data for. - * @param arg Pointer to the data to be enqueued for sending. - * @param len Data length in bytes - * @param apiflags combination of following flags : - * - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack - * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent, - * @return ERR_OK if enqueued, another err_t on error - */ -err_t -tcp_write(struct tcp_pcb *pcb, const void *arg, u16_t len, u8_t apiflags) -{ - struct pbuf *concat_p = NULL; - struct tcp_seg *last_unsent = NULL, *seg = NULL, *prev_seg = NULL, *queue = NULL; - u16_t pos = 0; /* position in 'arg' data */ - u16_t queuelen; - u8_t optlen = 0; - u8_t optflags = 0; -#if TCP_OVERSIZE - u16_t oversize = 0; - u16_t oversize_used = 0; -#endif /* TCP_OVERSIZE */ -#if TCP_CHECKSUM_ON_COPY - u16_t concat_chksum = 0; - u8_t concat_chksum_swapped = 0; - u16_t concat_chksummed = 0; -#endif /* TCP_CHECKSUM_ON_COPY */ - err_t err; - -#if LWIP_NETIF_TX_SINGLE_PBUF - /* Always copy to try to create single pbufs for TX */ - apiflags |= TCP_WRITE_FLAG_COPY; -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_write(pcb=%p, data=%p, len=%"U16_F", apiflags=%"U16_F")\n", - (void *)pcb, arg, len, (u16_t)apiflags)); - LWIP_ERROR("tcp_write: arg == NULL (programmer violates API)", - arg != NULL, return ERR_ARG;); - - err = tcp_write_checks(pcb, len); - if (err != ERR_OK) { - return err; - } - queuelen = pcb->snd_queuelen; - -#if LWIP_TCP_TIMESTAMPS - if ((pcb->flags & TF_TIMESTAMP)) { - optflags = TF_SEG_OPTS_TS; - optlen = LWIP_TCP_OPT_LENGTH(TF_SEG_OPTS_TS); - } -#endif /* LWIP_TCP_TIMESTAMPS */ - - - /* - * TCP segmentation is done in three phases with increasing complexity: - * - * 1. Copy data directly into an oversized pbuf. - * 2. Chain a new pbuf to the end of pcb->unsent. - * 3. Create new segments. - * - * We may run out of memory at any point. In that case we must - * return ERR_MEM and not change anything in pcb. Therefore, all - * changes are recorded in local variables and committed at the end - * of the function. Some pcb fields are maintained in local copies: - * - * queuelen = pcb->snd_queuelen - * oversize = pcb->unsent_oversize - * - * These variables are set consistently by the phases: - * - * seg points to the last segment tampered with. - * - * pos records progress as data is segmented. - */ - - /* Find the tail of the unsent queue. */ - if (pcb->unsent != NULL) { - u16_t space; - u16_t unsent_optlen; - - /* @todo: this could be sped up by keeping last_unsent in the pcb */ - for (last_unsent = pcb->unsent; last_unsent->next != NULL; - last_unsent = last_unsent->next); - - /* Usable space at the end of the last unsent segment */ - unsent_optlen = LWIP_TCP_OPT_LENGTH(last_unsent->flags); - space = pcb->mss - (last_unsent->len + unsent_optlen); - - /* - * Phase 1: Copy data directly into an oversized pbuf. - * - * The number of bytes copied is recorded in the oversize_used - * variable. The actual copying is done at the bottom of the - * function. - */ -#if TCP_OVERSIZE -#if TCP_OVERSIZE_DBGCHECK - /* check that pcb->unsent_oversize matches last_unsent->unsent_oversize */ - LWIP_ASSERT("unsent_oversize mismatch (pcb vs. last_unsent)", - pcb->unsent_oversize == last_unsent->oversize_left); -#endif /* TCP_OVERSIZE_DBGCHECK */ - oversize = pcb->unsent_oversize; - if (oversize > 0) { - LWIP_ASSERT("inconsistent oversize vs. space", oversize_used <= space); - seg = last_unsent; - oversize_used = oversize < len ? oversize : len; - pos += oversize_used; - oversize -= oversize_used; - space -= oversize_used; - } - /* now we are either finished or oversize is zero */ - LWIP_ASSERT("inconsistend oversize vs. len", (oversize == 0) || (pos == len)); -#endif /* TCP_OVERSIZE */ - - /* - * Phase 2: Chain a new pbuf to the end of pcb->unsent. - * - * We don't extend segments containing SYN/FIN flags or options - * (len==0). The new pbuf is kept in concat_p and pbuf_cat'ed at - * the end. - */ - if ((pos < len) && (space > 0) && (last_unsent->len > 0)) { - u16_t seglen = space < len - pos ? space : len - pos; - seg = last_unsent; - - /* Create a pbuf with a copy or reference to seglen bytes. We - * can use PBUF_RAW here since the data appears in the middle of - * a segment. A header will never be prepended. */ - if (apiflags & TCP_WRITE_FLAG_COPY) { - /* Data is copied */ - if ((concat_p = tcp_pbuf_prealloc(PBUF_RAW, seglen, space, &oversize, pcb, apiflags, 1)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, - ("tcp_write : could not allocate memory for pbuf copy size %"U16_F"\n", - seglen)); - goto memerr; - } -#if TCP_OVERSIZE_DBGCHECK - last_unsent->oversize_left = oversize; -#endif /* TCP_OVERSIZE_DBGCHECK */ - TCP_DATA_COPY2(concat_p->payload, (u8_t*)arg + pos, seglen, &concat_chksum, &concat_chksum_swapped); -#if TCP_CHECKSUM_ON_COPY - concat_chksummed += seglen; -#endif /* TCP_CHECKSUM_ON_COPY */ - } else { - /* Data is not copied */ - if ((concat_p = pbuf_alloc(PBUF_RAW, seglen, PBUF_ROM)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, - ("tcp_write: could not allocate memory for zero-copy pbuf\n")); - goto memerr; - } -#if TCP_CHECKSUM_ON_COPY - /* calculate the checksum of nocopy-data */ - tcp_seg_add_chksum(~inet_chksum((u8_t*)arg + pos, seglen), seglen, - &concat_chksum, &concat_chksum_swapped); - concat_chksummed += seglen; -#endif /* TCP_CHECKSUM_ON_COPY */ - /* reference the non-volatile payload data */ - concat_p->payload = (u8_t*)arg + pos; - } - - pos += seglen; - queuelen += pbuf_clen(concat_p); - } - } else { -#if TCP_OVERSIZE - LWIP_ASSERT("unsent_oversize mismatch (pcb->unsent is NULL)", - pcb->unsent_oversize == 0); -#endif /* TCP_OVERSIZE */ - } - - /* - * Phase 3: Create new segments. - * - * The new segments are chained together in the local 'queue' - * variable, ready to be appended to pcb->unsent. - */ - while (pos < len) { - struct pbuf *p; - u16_t left = len - pos; - u16_t max_len = pcb->mss - optlen; - u16_t seglen = left > max_len ? max_len : left; -#if TCP_CHECKSUM_ON_COPY - u16_t chksum = 0; - u8_t chksum_swapped = 0; -#endif /* TCP_CHECKSUM_ON_COPY */ - - if (apiflags & TCP_WRITE_FLAG_COPY) { - /* If copy is set, memory should be allocated and data copied - * into pbuf */ - if ((p = tcp_pbuf_prealloc(PBUF_TRANSPORT, seglen + optlen, pcb->mss, &oversize, pcb, apiflags, queue == NULL)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_write : could not allocate memory for pbuf copy size %"U16_F"\n", seglen)); - goto memerr; - } - LWIP_ASSERT("tcp_write: check that first pbuf can hold the complete seglen", - (p->len >= seglen)); - TCP_DATA_COPY2((char *)p->payload + optlen, (u8_t*)arg + pos, seglen, &chksum, &chksum_swapped); - } else { - /* Copy is not set: First allocate a pbuf for holding the data. - * Since the referenced data is available at least until it is - * sent out on the link (as it has to be ACKed by the remote - * party) we can safely use PBUF_ROM instead of PBUF_REF here. - */ - struct pbuf *p2; -#if TCP_OVERSIZE - LWIP_ASSERT("oversize == 0", oversize == 0); -#endif /* TCP_OVERSIZE */ - if ((p2 = pbuf_alloc(PBUF_TRANSPORT, seglen, PBUF_ROM)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_write: could not allocate memory for zero-copy pbuf\n")); - goto memerr; - } -#if TCP_CHECKSUM_ON_COPY - /* calculate the checksum of nocopy-data */ - chksum = ~inet_chksum((u8_t*)arg + pos, seglen); -#endif /* TCP_CHECKSUM_ON_COPY */ - /* reference the non-volatile payload data */ - p2->payload = (u8_t*)arg + pos; - - /* Second, allocate a pbuf for the headers. */ - if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { - /* If allocation fails, we have to deallocate the data pbuf as - * well. */ - pbuf_free(p2); - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_write: could not allocate memory for header pbuf\n")); - goto memerr; - } - /* Concatenate the headers and data pbufs together. */ - pbuf_cat(p/*header*/, p2/*data*/); - } - - queuelen += pbuf_clen(p); - - /* Now that there are more segments queued, we check again if the - * length of the queue exceeds the configured maximum or - * overflows. */ - if ((queuelen > TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 2, ("tcp_write: queue too long %"U16_F" (%"U16_F")\n", queuelen, TCP_SND_QUEUELEN)); - pbuf_free(p); - goto memerr; - } - - if ((seg = tcp_create_segment(pcb, p, 0, pcb->snd_lbb + pos, optflags)) == NULL) { - goto memerr; - } -#if TCP_OVERSIZE_DBGCHECK - seg->oversize_left = oversize; -#endif /* TCP_OVERSIZE_DBGCHECK */ -#if TCP_CHECKSUM_ON_COPY - seg->chksum = chksum; - seg->chksum_swapped = chksum_swapped; - seg->flags |= TF_SEG_DATA_CHECKSUMMED; -#endif /* TCP_CHECKSUM_ON_COPY */ - - /* first segment of to-be-queued data? */ - if (queue == NULL) { - queue = seg; - } else { - /* Attach the segment to the end of the queued segments */ - LWIP_ASSERT("prev_seg != NULL", prev_seg != NULL); - prev_seg->next = seg; - } - /* remember last segment of to-be-queued data for next iteration */ - prev_seg = seg; - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_write: queueing %"U32_F":%"U32_F"\n", - ntohl(seg->tcphdr->seqno), - ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg))); - - pos += seglen; - } - - /* - * All three segmentation phases were successful. We can commit the - * transaction. - */ - - /* - * Phase 1: If data has been added to the preallocated tail of - * last_unsent, we update the length fields of the pbuf chain. - */ -#if TCP_OVERSIZE - if (oversize_used > 0) { - struct pbuf *p; - /* Bump tot_len of whole chain, len of tail */ - for (p = last_unsent->p; p; p = p->next) { - p->tot_len += oversize_used; - if (p->next == NULL) { - TCP_DATA_COPY((char *)p->payload + p->len, arg, oversize_used, last_unsent); - p->len += oversize_used; - } - } - last_unsent->len += oversize_used; -#if TCP_OVERSIZE_DBGCHECK - last_unsent->oversize_left -= oversize_used; -#endif /* TCP_OVERSIZE_DBGCHECK */ - } - pcb->unsent_oversize = oversize; -#endif /* TCP_OVERSIZE */ - - /* - * Phase 2: concat_p can be concatenated onto last_unsent->p - */ - if (concat_p != NULL) { - LWIP_ASSERT("tcp_write: cannot concatenate when pcb->unsent is empty", - (last_unsent != NULL)); - pbuf_cat(last_unsent->p, concat_p); - last_unsent->len += concat_p->tot_len; -#if TCP_CHECKSUM_ON_COPY - if (concat_chksummed) { - tcp_seg_add_chksum(concat_chksum, concat_chksummed, &last_unsent->chksum, - &last_unsent->chksum_swapped); - last_unsent->flags |= TF_SEG_DATA_CHECKSUMMED; - } -#endif /* TCP_CHECKSUM_ON_COPY */ - } - - /* - * Phase 3: Append queue to pcb->unsent. Queue may be NULL, but that - * is harmless - */ - if (last_unsent == NULL) { - pcb->unsent = queue; - } else { - last_unsent->next = queue; - } - - /* - * Finally update the pcb state. - */ - pcb->snd_lbb += len; - pcb->snd_buf -= len; - pcb->snd_queuelen = queuelen; - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_write: %"S16_F" (after enqueued)\n", - pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_write: valid queue length", - pcb->unacked != NULL || pcb->unsent != NULL); - } - - /* Set the PSH flag in the last segment that we enqueued. */ - if (seg != NULL && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE)==0)) { - TCPH_SET_FLAG(seg->tcphdr, TCP_PSH); - } - - return ERR_OK; -memerr: - pcb->flags |= TF_NAGLEMEMERR; - TCP_STATS_INC(tcp.memerr); - - if (concat_p != NULL) { - pbuf_free(concat_p); - } - if (queue != NULL) { - tcp_segs_free(queue); - } - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_write: valid queue length", pcb->unacked != NULL || - pcb->unsent != NULL); - } - LWIP_DEBUGF(TCP_QLEN_DEBUG | LWIP_DBG_STATE, ("tcp_write: %"S16_F" (with mem err)\n", pcb->snd_queuelen)); - return ERR_MEM; -} - -/** - * Enqueue TCP options for transmission. - * - * Called by tcp_connect(), tcp_listen_input(), and tcp_send_ctrl(). - * - * @param pcb Protocol control block for the TCP connection. - * @param flags TCP header flags to set in the outgoing segment. - * @param optdata pointer to TCP options, or NULL. - * @param optlen length of TCP options in bytes. - */ -err_t -tcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags) -{ - struct pbuf *p; - struct tcp_seg *seg; - u8_t optflags = 0; - u8_t optlen = 0; - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue_flags: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - - LWIP_ASSERT("tcp_enqueue_flags: need either TCP_SYN or TCP_FIN in flags (programmer violates API)", - (flags & (TCP_SYN | TCP_FIN)) != 0); - - /* check for configured max queuelen and possible overflow */ - if ((pcb->snd_queuelen >= TCP_SND_QUEUELEN) || (pcb->snd_queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_enqueue_flags: too long queue %"U16_F" (max %"U16_F")\n", - pcb->snd_queuelen, TCP_SND_QUEUELEN)); - TCP_STATS_INC(tcp.memerr); - pcb->flags |= TF_NAGLEMEMERR; - return ERR_MEM; - } - - if (flags & TCP_SYN) { - optflags = TF_SEG_OPTS_MSS; - } -#if LWIP_TCP_TIMESTAMPS - if ((pcb->flags & TF_TIMESTAMP)) { - optflags |= TF_SEG_OPTS_TS; - } -#endif /* LWIP_TCP_TIMESTAMPS */ - optlen = LWIP_TCP_OPT_LENGTH(optflags); - - /* tcp_enqueue_flags is always called with either SYN or FIN in flags. - * We need one available snd_buf byte to do that. - * This means we can't send FIN while snd_buf==0. A better fix would be to - * not include SYN and FIN sequence numbers in the snd_buf count. */ - if (pcb->snd_buf == 0) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_enqueue_flags: no send buffer available\n")); - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - } - - /* Allocate pbuf with room for TCP header + options */ - if ((p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { - pcb->flags |= TF_NAGLEMEMERR; - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - } - LWIP_ASSERT("tcp_enqueue_flags: check that first pbuf can hold optlen", - (p->len >= optlen)); - - /* Allocate memory for tcp_seg, and fill in fields. */ - if ((seg = tcp_create_segment(pcb, p, flags, pcb->snd_lbb, optflags)) == NULL) { - pcb->flags |= TF_NAGLEMEMERR; - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - } - LWIP_ASSERT("seg->tcphdr not aligned", ((mem_ptr_t)seg->tcphdr % MEM_ALIGNMENT) == 0); - LWIP_ASSERT("tcp_enqueue_flags: invalid segment length", seg->len == 0); - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, - ("tcp_enqueue_flags: queueing %"U32_F":%"U32_F" (0x%"X16_F")\n", - ntohl(seg->tcphdr->seqno), - ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg), - (u16_t)flags)); - - /* Now append seg to pcb->unsent queue */ - if (pcb->unsent == NULL) { - pcb->unsent = seg; - } else { - struct tcp_seg *useg; - for (useg = pcb->unsent; useg->next != NULL; useg = useg->next); - useg->next = seg; - } -#if TCP_OVERSIZE - /* The new unsent tail has no space */ - pcb->unsent_oversize = 0; -#endif /* TCP_OVERSIZE */ - - /* SYN and FIN bump the sequence number */ - if ((flags & TCP_SYN) || (flags & TCP_FIN)) { - pcb->snd_lbb++; - /* optlen does not influence snd_buf */ - pcb->snd_buf--; - } - if (flags & TCP_FIN) { - pcb->flags |= TF_FIN; - } - - /* update number of segments on the queues */ - pcb->snd_queuelen += pbuf_clen(seg->p); - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue_flags: %"S16_F" (after enqueued)\n", pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_enqueue_flags: invalid queue length", - pcb->unacked != NULL || pcb->unsent != NULL); - } - - return ERR_OK; -} - -#if LWIP_TCP_TIMESTAMPS -/* Build a timestamp option (12 bytes long) at the specified options pointer) - * - * @param pcb tcp_pcb - * @param opts option pointer where to store the timestamp option - */ -static void -tcp_build_timestamp_option(struct tcp_pcb *pcb, u32_t *opts) -{ - /* Pad with two NOP options to make everything nicely aligned */ - opts[0] = PP_HTONL(0x0101080A); - opts[1] = htonl(sys_now()); - opts[2] = htonl(pcb->ts_recent); -} -#endif - -/** Send an ACK without data. - * - * @param pcb Protocol control block for the TCP connection to send the ACK - */ -err_t -tcp_send_empty_ack(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - u8_t optlen = 0; - -#if LWIP_TCP_TIMESTAMPS - if (pcb->flags & TF_TIMESTAMP) { - optlen = LWIP_TCP_OPT_LENGTH(TF_SEG_OPTS_TS); - } -#endif - - p = tcp_output_alloc_header(pcb, optlen, 0, htonl(pcb->snd_nxt)); - if (p == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n")); - return ERR_BUF; - } - tcphdr = (struct tcp_hdr *)p->payload; - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, - ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt)); - /* remove ACK flags from the PCB, as we send an empty ACK now */ - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - - /* NB. MSS option is only sent on SYNs, so ignore it here */ -#if LWIP_TCP_TIMESTAMPS - pcb->ts_lastacksent = pcb->rcv_nxt; - - if (pcb->flags & TF_TIMESTAMP) { - tcp_build_timestamp_option(pcb, (u32_t *)(tcphdr + 1)); - } -#endif - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = ipX_chksum_pseudo(PCB_ISIPV6(pcb), p, IP_PROTO_TCP, p->tot_len, - &pcb->local_ip, &pcb->remote_ip); -#endif -#if LWIP_NETIF_HWADDRHINT - ipX_output_hinted(PCB_ISIPV6(pcb), p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, pcb->tos, - IP_PROTO_TCP, &pcb->addr_hint); -#else /* LWIP_NETIF_HWADDRHINT*/ - ipX_output(PCB_ISIPV6(pcb), p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, pcb->tos, - IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - pbuf_free(p); - - return ERR_OK; -} - -/** - * Find out what we can send and send it - * - * @param pcb Protocol control block for the TCP connection to send data - * @return ERR_OK if data has been sent or nothing to send - * another err_t on error - */ -err_t -tcp_output(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg, *useg; - u32_t wnd, snd_nxt; -#if TCP_CWND_DEBUG - s16_t i = 0; -#endif /* TCP_CWND_DEBUG */ - - /* pcb->state LISTEN not allowed here */ - LWIP_ASSERT("don't call tcp_output for listen-pcbs", - pcb->state != LISTEN); - - /* First, check if we are invoked by the TCP input processing - code. If so, we do not output anything. Instead, we rely on the - input processing code to call us when input processing is done - with. */ - if (tcp_input_pcb == pcb) { - return ERR_OK; - } - - wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd); - - seg = pcb->unsent; - - /* If the TF_ACK_NOW flag is set and no data will be sent (either - * because the ->unsent queue is empty or because the window does - * not allow it), construct an empty ACK segment and send it. - * - * If data is to be sent, we will just piggyback the ACK (see below). - */ - if (pcb->flags & TF_ACK_NOW && - (seg == NULL || - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) { - return tcp_send_empty_ack(pcb); - } - - /* useg should point to last segment on unacked queue */ - useg = pcb->unacked; - if (useg != NULL) { - for (; useg->next != NULL; useg = useg->next); - } - -#if TCP_OUTPUT_DEBUG - if (seg == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: nothing to send (%p)\n", - (void*)pcb->unsent)); - } -#endif /* TCP_OUTPUT_DEBUG */ -#if TCP_CWND_DEBUG - if (seg == NULL) { - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F - ", cwnd %"U16_F", wnd %"U32_F - ", seg == NULL, ack %"U32_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, pcb->lastack)); - } else { - LWIP_DEBUGF(TCP_CWND_DEBUG, - ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F - ", effwnd %"U32_F", seq %"U32_F", ack %"U32_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len, - ntohl(seg->tcphdr->seqno), pcb->lastack)); - } -#endif /* TCP_CWND_DEBUG */ - /* data available and window allows it to be sent? */ - while (seg != NULL && - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { - LWIP_ASSERT("RST not expected here!", - (TCPH_FLAGS(seg->tcphdr) & TCP_RST) == 0); - /* Stop sending if the nagle algorithm would prevent it - * Don't stop: - * - if tcp_write had a memory error before (prevent delayed ACK timeout) or - * - if FIN was already enqueued for this PCB (SYN is always alone in a segment - - * either seg->next != NULL or pcb->unacked == NULL; - * RST is no sent using tcp_write/tcp_output. - */ - if((tcp_do_output_nagle(pcb) == 0) && - ((pcb->flags & (TF_NAGLEMEMERR | TF_FIN)) == 0)){ - break; - } -#if TCP_CWND_DEBUG - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F", effwnd %"U32_F", seq %"U32_F", ack %"U32_F", i %"S16_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, - ntohl(seg->tcphdr->seqno) + seg->len - - pcb->lastack, - ntohl(seg->tcphdr->seqno), pcb->lastack, i)); - ++i; -#endif /* TCP_CWND_DEBUG */ - - pcb->unsent = seg->next; - - if (pcb->state != SYN_SENT) { - TCPH_SET_FLAG(seg->tcphdr, TCP_ACK); - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - } - - tcp_output_segment(seg, pcb); - snd_nxt = ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); - if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { - pcb->snd_nxt = snd_nxt; - } - /* put segment on unacknowledged list if length > 0 */ - if (TCP_TCPLEN(seg) > 0) { - seg->next = NULL; - /* unacked list is empty? */ - if (pcb->unacked == NULL) { - pcb->unacked = seg; - useg = seg; - /* unacked list is not empty? */ - } else { - /* In the case of fast retransmit, the packet should not go to the tail - * of the unacked queue, but rather somewhere before it. We need to check for - * this case. -STJ Jul 27, 2004 */ - if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))) { - /* add segment to before tail of unacked list, keeping the list sorted */ - struct tcp_seg **cur_seg = &(pcb->unacked); - while (*cur_seg && - TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - } - seg->next = (*cur_seg); - (*cur_seg) = seg; - } else { - /* add segment to tail of unacked list */ - useg->next = seg; - useg = useg->next; - } - } - /* do not queue empty segments on the unacked list */ - } else { - tcp_seg_free(seg); - } - seg = pcb->unsent; - } -#if TCP_OVERSIZE - if (pcb->unsent == NULL) { - /* last unsent has been removed, reset unsent_oversize */ - pcb->unsent_oversize = 0; - } -#endif /* TCP_OVERSIZE */ - - if (seg != NULL && pcb->persist_backoff == 0 && - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > pcb->snd_wnd) { - /* prepare for persist timer */ - pcb->persist_cnt = 0; - pcb->persist_backoff = 1; - } - - pcb->flags &= ~TF_NAGLEMEMERR; - return ERR_OK; -} - -/** - * Called by tcp_output() to actually send a TCP segment over IP. - * - * @param seg the tcp_seg to send - * @param pcb the tcp_pcb for the TCP connection used to send the segment - */ -static void -tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb) -{ - u16_t len; - u32_t *opts; - - /** @bug Exclude retransmitted segments from this count. */ - snmp_inc_tcpoutsegs(); - - /* The TCP header has already been constructed, but the ackno and - wnd fields remain. */ - seg->tcphdr->ackno = htonl(pcb->rcv_nxt); - - /* advertise our receive window size in this TCP segment */ - seg->tcphdr->wnd = htons(pcb->rcv_ann_wnd); - - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - - /* Add any requested options. NB MSS option is only set on SYN - packets, so ignore it here */ - LWIP_ASSERT("seg->tcphdr not aligned", ((mem_ptr_t)seg->tcphdr % MEM_ALIGNMENT) == 0); - opts = (u32_t *)(void *)(seg->tcphdr + 1); - if (seg->flags & TF_SEG_OPTS_MSS) { - TCP_BUILD_MSS_OPTION(*opts); - opts += 1; - } -#if LWIP_TCP_TIMESTAMPS - pcb->ts_lastacksent = pcb->rcv_nxt; - - if (seg->flags & TF_SEG_OPTS_TS) { - tcp_build_timestamp_option(pcb, opts); - opts += 3; - } -#endif - - /* Set retransmission timer running if it is not currently enabled - This must be set before checking the route. */ - if (pcb->rtime == -1) { - pcb->rtime = 0; - } - - /* If we don't have a local IP address, we get one by - calling ip_route(). */ - if (ipX_addr_isany(PCB_ISIPV6(pcb), &pcb->local_ip)) { - struct netif *netif; - ipX_addr_t *local_ip; - ipX_route_get_local_ipX(PCB_ISIPV6(pcb), &pcb->local_ip, &pcb->remote_ip, netif, local_ip); - if ((netif == NULL) || (local_ip == NULL)) { - return; - } - ipX_addr_copy(PCB_ISIPV6(pcb), pcb->local_ip, *local_ip); - } - - if (pcb->rttest == 0) { - pcb->rttest = tcp_ticks; - pcb->rtseq = ntohl(seg->tcphdr->seqno); - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_output_segment: rtseq %"U32_F"\n", pcb->rtseq)); - } - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n", - htonl(seg->tcphdr->seqno), htonl(seg->tcphdr->seqno) + - seg->len)); - - len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload); - - seg->p->len -= len; - seg->p->tot_len -= len; - - seg->p->payload = seg->tcphdr; - - seg->tcphdr->chksum = 0; -#if TCP_CHECKSUM_ON_COPY - { - u32_t acc; -#if TCP_CHECKSUM_ON_COPY_SANITY_CHECK - u16_t chksum_slow = ipX_chksum_pseudo(PCB_ISIPV6(pcb), seg->p, IP_PROTO_TCP, - seg->p->tot_len, &pcb->local_ip, &pcb->remote_ip); -#endif /* TCP_CHECKSUM_ON_COPY_SANITY_CHECK */ - if ((seg->flags & TF_SEG_DATA_CHECKSUMMED) == 0) { - LWIP_ASSERT("data included but not checksummed", - seg->p->tot_len == (TCPH_HDRLEN(seg->tcphdr) * 4)); - } - - /* rebuild TCP header checksum (TCP header changes for retransmissions!) */ - acc = ipX_chksum_pseudo_partial(PCB_ISIPV6(pcb), seg->p, IP_PROTO_TCP, - seg->p->tot_len, TCPH_HDRLEN(seg->tcphdr) * 4, &pcb->local_ip, &pcb->remote_ip); - /* add payload checksum */ - if (seg->chksum_swapped) { - seg->chksum = SWAP_BYTES_IN_WORD(seg->chksum); - seg->chksum_swapped = 0; - } - acc += (u16_t)~(seg->chksum); - seg->tcphdr->chksum = FOLD_U32T(acc); -#if TCP_CHECKSUM_ON_COPY_SANITY_CHECK - if (chksum_slow != seg->tcphdr->chksum) { - LWIP_DEBUGF(TCP_DEBUG | LWIP_DBG_LEVEL_WARNING, - ("tcp_output_segment: calculated checksum is %"X16_F" instead of %"X16_F"\n", - seg->tcphdr->chksum, chksum_slow)); - seg->tcphdr->chksum = chksum_slow; - } -#endif /* TCP_CHECKSUM_ON_COPY_SANITY_CHECK */ - } -#else /* TCP_CHECKSUM_ON_COPY */ -#if CHECKSUM_GEN_TCP - seg->tcphdr->chksum = ipX_chksum_pseudo(PCB_ISIPV6(pcb), seg->p, IP_PROTO_TCP, - seg->p->tot_len, &pcb->local_ip, &pcb->remote_ip); -#endif /* CHECKSUM_GEN_TCP */ -#endif /* TCP_CHECKSUM_ON_COPY */ - TCP_STATS_INC(tcp.xmit); - -#if LWIP_NETIF_HWADDRHINT - ipX_output_hinted(PCB_ISIPV6(pcb), seg->p, &pcb->local_ip, &pcb->remote_ip, - pcb->ttl, pcb->tos, IP_PROTO_TCP, &pcb->addr_hint); -#else /* LWIP_NETIF_HWADDRHINT*/ - ipX_output(PCB_ISIPV6(pcb), seg->p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, - pcb->tos, IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ -} - -/** - * Send a TCP RESET packet (empty segment with RST flag set) either to - * abort a connection or to show that there is no matching local connection - * for a received segment. - * - * Called by tcp_abort() (to abort a local connection), tcp_input() (if no - * matching local pcb was found), tcp_listen_input() (if incoming segment - * has ACK flag set) and tcp_process() (received segment in the wrong state) - * - * Since a RST segment is in most cases not sent for an active connection, - * tcp_rst() has a number of arguments that are taken from a tcp_pcb for - * most other segment output functions. - * - * @param seqno the sequence number to use for the outgoing segment - * @param ackno the acknowledge number to use for the outgoing segment - * @param local_ip the local IP address to send the segment from - * @param remote_ip the remote IP address to send the segment to - * @param local_port the local TCP port to send the segment from - * @param remote_port the remote TCP port to send the segment to - */ -void -tcp_rst_impl(u32_t seqno, u32_t ackno, - ipX_addr_t *local_ip, ipX_addr_t *remote_ip, - u16_t local_port, u16_t remote_port -#if LWIP_IPV6 - , u8_t isipv6 -#endif /* LWIP_IPV6 */ - ) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM); - if (p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_rst: could not allocate memory for pbuf\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= sizeof(struct tcp_hdr))); - - tcphdr = (struct tcp_hdr *)p->payload; - tcphdr->src = htons(local_port); - tcphdr->dest = htons(remote_port); - tcphdr->seqno = htonl(seqno); - tcphdr->ackno = htonl(ackno); - TCPH_HDRLEN_FLAGS_SET(tcphdr, TCP_HLEN/4, TCP_RST | TCP_ACK); - tcphdr->wnd = PP_HTONS(TCP_WND); - tcphdr->chksum = 0; - tcphdr->urgp = 0; - - TCP_STATS_INC(tcp.xmit); - snmp_inc_tcpoutrsts(); - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = ipX_chksum_pseudo(isipv6, p, IP_PROTO_TCP, p->tot_len, - local_ip, remote_ip); -#endif - /* Send output with hardcoded TTL/HL since we have no access to the pcb */ - ipX_output(isipv6, p, local_ip, remote_ip, TCP_TTL, 0, IP_PROTO_TCP); - pbuf_free(p); - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno)); -} - -/** - * Requeue all unacked segments for retransmission - * - * Called by tcp_slowtmr() for slow retransmission. - * - * @param pcb the tcp_pcb for which to re-enqueue all unacked segments - */ -void -tcp_rexmit_rto(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg; - - if (pcb->unacked == NULL) { - return; - } - - /* Move all unacked segments to the head of the unsent queue */ - for (seg = pcb->unacked; seg->next != NULL; seg = seg->next); - /* concatenate unsent queue after unacked queue */ - seg->next = pcb->unsent; - /* unsent queue is the concatenated queue (of unacked, unsent) */ - pcb->unsent = pcb->unacked; - /* unacked queue is now empty */ - pcb->unacked = NULL; - - /* increment number of retransmissions */ - ++pcb->nrtx; - - /* Don't take any RTT measurements after retransmitting. */ - pcb->rttest = 0; - - /* Do the actual retransmission */ - tcp_output(pcb); -} - -/** - * Requeue the first unacked segment for retransmission - * - * Called by tcp_receive() for fast retramsmit. - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -void -tcp_rexmit(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg; - struct tcp_seg **cur_seg; - - if (pcb->unacked == NULL) { - return; - } - - /* Move the first unacked segment to the unsent queue */ - /* Keep the unsent queue sorted. */ - seg = pcb->unacked; - pcb->unacked = seg->next; - - cur_seg = &(pcb->unsent); - while (*cur_seg && - TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - } - seg->next = *cur_seg; - *cur_seg = seg; - - ++pcb->nrtx; - - /* Don't take any rtt measurements after retransmitting. */ - pcb->rttest = 0; - - /* Do the actual retransmission. */ - snmp_inc_tcpretranssegs(); - /* No need to call tcp_output: we are always called from tcp_input() - and thus tcp_output directly returns. */ -} - - -/** - * Handle retransmission after three dupacks received - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -void -tcp_rexmit_fast(struct tcp_pcb *pcb) -{ - if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) { - /* This is fast retransmit. Retransmit the first unacked segment. */ - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: dupacks %"U16_F" (%"U32_F - "), fast retransmit %"U32_F"\n", - (u16_t)pcb->dupacks, pcb->lastack, - ntohl(pcb->unacked->tcphdr->seqno))); - tcp_rexmit(pcb); - - /* Set ssthresh to half of the minimum of the current - * cwnd and the advertised window */ - if (pcb->cwnd > pcb->snd_wnd) { - pcb->ssthresh = pcb->snd_wnd / 2; - } else { - pcb->ssthresh = pcb->cwnd / 2; - } - - /* The minimum value for ssthresh should be 2 MSS */ - if (pcb->ssthresh < 2*pcb->mss) { - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: The minimum value for ssthresh %"U16_F - " should be min 2 mss %"U16_F"...\n", - pcb->ssthresh, 2*pcb->mss)); - pcb->ssthresh = 2*pcb->mss; - } - - pcb->cwnd = pcb->ssthresh + 3 * pcb->mss; - pcb->flags |= TF_INFR; - } -} - - -/** - * Send keepalive packets to keep a connection active although - * no data is sent over it. - * - * Called by tcp_slowtmr() - * - * @param pcb the tcp_pcb for which to send a keepalive packet - */ -void -tcp_keepalive(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: sending KEEPALIVE probe to ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), TCP_DEBUG, &pcb->remote_ip); - LWIP_DEBUGF(TCP_DEBUG, ("\n")); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F" pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, pcb->keep_cnt_sent)); - - p = tcp_output_alloc_header(pcb, 0, 0, htonl(pcb->snd_nxt - 1)); - if(p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_keepalive: could not allocate memory for pbuf\n")); - return; - } - tcphdr = (struct tcp_hdr *)p->payload; - - tcphdr->chksum = ipX_chksum_pseudo(PCB_ISIPV6(pcb), p, IP_PROTO_TCP, p->tot_len, - &pcb->local_ip, &pcb->remote_ip); - TCP_STATS_INC(tcp.xmit); - - /* Send output to IP */ -#if LWIP_NETIF_HWADDRHINT - ipX_output_hinted(PCB_ISIPV6(pcb), p, &pcb->local_ip, &pcb->remote_ip, - pcb->ttl, 0, IP_PROTO_TCP, &pcb->addr_hint); -#else /* LWIP_NETIF_HWADDRHINT*/ - ipX_output(PCB_ISIPV6(pcb), p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, - 0, IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - - pbuf_free(p); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F".\n", - pcb->snd_nxt - 1, pcb->rcv_nxt)); -} - - -/** - * Send persist timer zero-window probes to keep a connection active - * when a window update is lost. - * - * Called by tcp_slowtmr() - * - * @param pcb the tcp_pcb for which to send a zero-window probe packet - */ -void -tcp_zero_window_probe(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - struct tcp_seg *seg; - u16_t len; - u8_t is_fin; - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: sending ZERO WINDOW probe to ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), TCP_DEBUG, &pcb->remote_ip); - LWIP_DEBUGF(TCP_DEBUG, ("\n")); - - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_zero_window_probe: tcp_ticks %"U32_F - " pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, pcb->keep_cnt_sent)); - - seg = pcb->unacked; - - if(seg == NULL) { - seg = pcb->unsent; - } - if(seg == NULL) { - return; - } - - is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0); - /* we want to send one seqno: either FIN or data (no options) */ - len = is_fin ? 0 : 1; - - p = tcp_output_alloc_header(pcb, 0, len, seg->tcphdr->seqno); - if(p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n")); - return; - } - tcphdr = (struct tcp_hdr *)p->payload; - - if (is_fin) { - /* FIN segment, no data */ - TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN); - } else { - /* Data segment, copy in one byte from the head of the unacked queue */ - struct tcp_hdr *thdr = (struct tcp_hdr *)seg->p->payload; - char *d = ((char *)p->payload + TCP_HLEN); - pbuf_copy_partial(seg->p, d, 1, TCPH_HDRLEN(thdr) * 4); - } - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = ipX_chksum_pseudo(PCB_ISIPV6(pcb), p, IP_PROTO_TCP, p->tot_len, - &pcb->local_ip, &pcb->remote_ip); -#endif - TCP_STATS_INC(tcp.xmit); - - /* Send output to IP */ -#if LWIP_NETIF_HWADDRHINT - ipX_output_hinted(PCB_ISIPV6(pcb), p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, - 0, IP_PROTO_TCP, &pcb->addr_hint); -#else /* LWIP_NETIF_HWADDRHINT*/ - ipX_output(PCB_ISIPV6(pcb), p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - - pbuf_free(p); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F - " ackno %"U32_F".\n", - pcb->snd_nxt - 1, pcb->rcv_nxt)); -} -#endif /* LWIP_TCP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/timers.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/timers.c deleted file mode 100644 index 3c4f8d1d8..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/timers.c +++ /dev/null @@ -1,546 +0,0 @@ -/** - * @file - * Stack-internal timers implementation. - * This file includes timer callbacks for stack-internal timers as well as - * functions to set up or stop timers and check for expired timers. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * Simon Goldschmidt - * - */ - -#include "lwip/opt.h" - -#include "lwip/timers.h" -#include "lwip/tcp_impl.h" - -#if LWIP_TIMERS - -#include "lwip/def.h" -#include "lwip/memp.h" -#include "lwip/tcpip.h" - -#include "lwip/ip_frag.h" -#include "netif/etharp.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "lwip/igmp.h" -#include "lwip/dns.h" -#include "lwip/nd6.h" -#include "lwip/ip6_frag.h" -#include "lwip/mld6.h" -#include "lwip/sys.h" -#include "lwip/pbuf.h" - -/** The one and only timeout list */ -static struct sys_timeo *next_timeout; -#if NO_SYS -static u32_t timeouts_last_time; -#endif /* NO_SYS */ - -#if LWIP_TCP -/** global variable that shows if the tcp timer is currently scheduled or not */ -static int tcpip_tcp_timer_active; - -/** - * Timer callback function that calls tcp_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -tcpip_tcp_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - - /* call TCP timer handler */ - tcp_tmr(); - /* timer still needed? */ - if (tcp_active_pcbs || tcp_tw_pcbs) { - /* restart timer */ - sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); - } else { - /* disable timer */ - tcpip_tcp_timer_active = 0; - } -} - -/** - * Called from TCP_REG when registering a new PCB: - * the reason is to have the TCP timer only running when - * there are active (or time-wait) PCBs. - */ -void -tcp_timer_needed(void) -{ - /* timer is off but needed again? */ - if (!tcpip_tcp_timer_active && (tcp_active_pcbs || tcp_tw_pcbs)) { - /* enable and start timer */ - tcpip_tcp_timer_active = 1; - sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); - } -} -#endif /* LWIP_TCP */ - -#if IP_REASSEMBLY -/** - * Timer callback function that calls ip_reass_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -ip_reass_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: ip_reass_tmr()\n")); - ip_reass_tmr(); - sys_timeout(IP_TMR_INTERVAL, ip_reass_timer, NULL); -} -#endif /* IP_REASSEMBLY */ - -#if LWIP_ARP -/** - * Timer callback function that calls etharp_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -arp_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: etharp_tmr()\n")); - etharp_tmr(); - sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); -} -#endif /* LWIP_ARP */ - -#if LWIP_DHCP -/** - * Timer callback function that calls dhcp_coarse_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -dhcp_timer_coarse(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: dhcp_coarse_tmr()\n")); - dhcp_coarse_tmr(); - sys_timeout(DHCP_COARSE_TIMER_MSECS, dhcp_timer_coarse, NULL); -} - -/** - * Timer callback function that calls dhcp_fine_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -dhcp_timer_fine(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: dhcp_fine_tmr()\n")); - dhcp_fine_tmr(); - sys_timeout(DHCP_FINE_TIMER_MSECS, dhcp_timer_fine, NULL); -} -#endif /* LWIP_DHCP */ - -#if LWIP_AUTOIP -/** - * Timer callback function that calls autoip_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -autoip_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: autoip_tmr()\n")); - autoip_tmr(); - sys_timeout(AUTOIP_TMR_INTERVAL, autoip_timer, NULL); -} -#endif /* LWIP_AUTOIP */ - -#if LWIP_IGMP -/** - * Timer callback function that calls igmp_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -igmp_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: igmp_tmr()\n")); - igmp_tmr(); - sys_timeout(IGMP_TMR_INTERVAL, igmp_timer, NULL); -} -#endif /* LWIP_IGMP */ - -#if LWIP_DNS -/** - * Timer callback function that calls dns_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -dns_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: dns_tmr()\n")); - dns_tmr(); - sys_timeout(DNS_TMR_INTERVAL, dns_timer, NULL); -} -#endif /* LWIP_DNS */ - -#if LWIP_IPV6 -/** - * Timer callback function that calls nd6_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -nd6_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: nd6_tmr()\n")); - nd6_tmr(); - sys_timeout(ND6_TMR_INTERVAL, nd6_timer, NULL); -} - -#if LWIP_IPV6_REASS -/** - * Timer callback function that calls ip6_reass_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -ip6_reass_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: ip6_reass_tmr()\n")); - ip6_reass_tmr(); - sys_timeout(IP6_REASS_TMR_INTERVAL, ip6_reass_timer, NULL); -} -#endif /* LWIP_IPV6_REASS */ - -#if LWIP_IPV6_MLD -/** - * Timer callback function that calls mld6_tmr() and reschedules itself. - * - * @param arg unused argument - */ -static void -mld6_timer(void *arg) -{ - LWIP_UNUSED_ARG(arg); - LWIP_DEBUGF(TIMERS_DEBUG, ("tcpip: mld6_tmr()\n")); - mld6_tmr(); - sys_timeout(MLD6_TMR_INTERVAL, mld6_timer, NULL); -} -#endif /* LWIP_IPV6_MLD */ -#endif /* LWIP_IPV6 */ - -/** Initialize this module */ -void sys_timeouts_init(void) -{ -#if IP_REASSEMBLY - sys_timeout(IP_TMR_INTERVAL, ip_reass_timer, NULL); -#endif /* IP_REASSEMBLY */ -#if LWIP_ARP - sys_timeout(ARP_TMR_INTERVAL, arp_timer, NULL); -#endif /* LWIP_ARP */ -#if LWIP_DHCP - sys_timeout(DHCP_COARSE_TIMER_MSECS, dhcp_timer_coarse, NULL); - sys_timeout(DHCP_FINE_TIMER_MSECS, dhcp_timer_fine, NULL); -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - sys_timeout(AUTOIP_TMR_INTERVAL, autoip_timer, NULL); -#endif /* LWIP_AUTOIP */ -#if LWIP_IGMP - sys_timeout(IGMP_TMR_INTERVAL, igmp_timer, NULL); -#endif /* LWIP_IGMP */ -#if LWIP_DNS - sys_timeout(DNS_TMR_INTERVAL, dns_timer, NULL); -#endif /* LWIP_DNS */ -#if LWIP_IPV6 - sys_timeout(ND6_TMR_INTERVAL, nd6_timer, NULL); -#if LWIP_IPV6_REASS - sys_timeout(IP6_REASS_TMR_INTERVAL, ip6_reass_timer, NULL); -#endif /* LWIP_IPV6_REASS */ -#if LWIP_IPV6_MLD - sys_timeout(MLD6_TMR_INTERVAL, mld6_timer, NULL); -#endif /* LWIP_IPV6_MLD */ -#endif /* LWIP_IPV6 */ - -#if NO_SYS - /* Initialise timestamp for sys_check_timeouts */ - timeouts_last_time = sys_now(); -#endif -} - -/** - * Create a one-shot timer (aka timeout). Timeouts are processed in the - * following cases: - * - while waiting for a message using sys_timeouts_mbox_fetch() - * - by calling sys_check_timeouts() (NO_SYS==1 only) - * - * @param msecs time in milliseconds after that the timer should expire - * @param handler callback function to call when msecs have elapsed - * @param arg argument to pass to the callback function - */ -#if LWIP_DEBUG_TIMERNAMES -void -sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char* handler_name) -#else /* LWIP_DEBUG_TIMERNAMES */ -void -sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg) -#endif /* LWIP_DEBUG_TIMERNAMES */ -{ - struct sys_timeo *timeout, *t; - - timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT); - if (timeout == NULL) { - LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL); - return; - } - timeout->next = NULL; - timeout->h = handler; - timeout->arg = arg; - timeout->time = msecs; -#if LWIP_DEBUG_TIMERNAMES - timeout->handler_name = handler_name; - LWIP_DEBUGF(TIMERS_DEBUG, ("sys_timeout: %p msecs=%"U32_F" handler=%s arg=%p\n", - (void *)timeout, msecs, handler_name, (void *)arg)); -#endif /* LWIP_DEBUG_TIMERNAMES */ - - if (next_timeout == NULL) { - next_timeout = timeout; - return; - } - - if (next_timeout->time > msecs) { - next_timeout->time -= msecs; - timeout->next = next_timeout; - next_timeout = timeout; - } else { - for(t = next_timeout; t != NULL; t = t->next) { - timeout->time -= t->time; - if (t->next == NULL || t->next->time > timeout->time) { - if (t->next != NULL) { - t->next->time -= timeout->time; - } - timeout->next = t->next; - t->next = timeout; - break; - } - } - } -} - -/** - * Go through timeout list (for this task only) and remove the first matching - * entry, even though the timeout has not triggered yet. - * - * @note This function only works as expected if there is only one timeout - * calling 'handler' in the list of timeouts. - * - * @param handler callback function that would be called by the timeout - * @param arg callback argument that would be passed to handler -*/ -void -sys_untimeout(sys_timeout_handler handler, void *arg) -{ - struct sys_timeo *prev_t, *t; - - if (next_timeout == NULL) { - return; - } - - for (t = next_timeout, prev_t = NULL; t != NULL; prev_t = t, t = t->next) { - if ((t->h == handler) && (t->arg == arg)) { - /* We have a match */ - /* Unlink from previous in list */ - if (prev_t == NULL) { - next_timeout = t->next; - } else { - prev_t->next = t->next; - } - /* If not the last one, add time of this one back to next */ - if (t->next != NULL) { - t->next->time += t->time; - } - memp_free(MEMP_SYS_TIMEOUT, t); - return; - } - } - return; -} - -#if NO_SYS - -/** Handle timeouts for NO_SYS==1 (i.e. without using - * tcpip_thread/sys_timeouts_mbox_fetch(). Uses sys_now() to call timeout - * handler functions when timeouts expire. - * - * Must be called periodically from your main loop. - */ -void -sys_check_timeouts(void) -{ - struct sys_timeo *tmptimeout; - u32_t diff; - sys_timeout_handler handler; - void *arg; - int had_one; - u32_t now; - - now = sys_now(); - if (next_timeout) { - /* this cares for wraparounds */ - diff = LWIP_U32_DIFF(now, timeouts_last_time); - do - { -#if PBUF_POOL_FREE_OOSEQ - PBUF_CHECK_FREE_OOSEQ(); -#endif /* PBUF_POOL_FREE_OOSEQ */ - had_one = 0; - tmptimeout = next_timeout; - if (tmptimeout->time <= diff) { - /* timeout has expired */ - had_one = 1; - timeouts_last_time = now; - diff -= tmptimeout->time; - next_timeout = tmptimeout->next; - handler = tmptimeout->h; - arg = tmptimeout->arg; -#if LWIP_DEBUG_TIMERNAMES - if (handler != NULL) { - LWIP_DEBUGF(TIMERS_DEBUG, ("sct calling h=%s arg=%p\n", - tmptimeout->handler_name, arg)); - } -#endif /* LWIP_DEBUG_TIMERNAMES */ - memp_free(MEMP_SYS_TIMEOUT, tmptimeout); - if (handler != NULL) { - handler(arg); - } - } - /* repeat until all expired timers have been called */ - }while(had_one); - } -} - -/** Set back the timestamp of the last call to sys_check_timeouts() - * This is necessary if sys_check_timeouts() hasn't been called for a long - * time (e.g. while saving energy) to prevent all timer functions of that - * period being called. - */ -void -sys_restart_timeouts(void) -{ - timeouts_last_time = sys_now(); -} - -#else /* NO_SYS */ - -/** - * Wait (forever) for a message to arrive in an mbox. - * While waiting, timeouts are processed. - * - * @param mbox the mbox to fetch the message from - * @param msg the place to store the message - */ -void -sys_timeouts_mbox_fetch(sys_mbox_t *mbox, void **msg) -{ - u32_t time_needed; - struct sys_timeo *tmptimeout; - sys_timeout_handler handler; - void *arg; - - again: - if (!next_timeout) { - time_needed = sys_arch_mbox_fetch(mbox, msg, 0); - } else { - if (next_timeout->time > 0) { - time_needed = sys_arch_mbox_fetch(mbox, msg, next_timeout->time); - } else { - time_needed = SYS_ARCH_TIMEOUT; - } - - if (time_needed == SYS_ARCH_TIMEOUT) { - /* If time == SYS_ARCH_TIMEOUT, a timeout occured before a message - could be fetched. We should now call the timeout handler and - deallocate the memory allocated for the timeout. */ - tmptimeout = next_timeout; - next_timeout = tmptimeout->next; - handler = tmptimeout->h; - arg = tmptimeout->arg; -#if LWIP_DEBUG_TIMERNAMES - if (handler != NULL) { - LWIP_DEBUGF(TIMERS_DEBUG, ("stmf calling h=%s arg=%p\n", - tmptimeout->handler_name, arg)); - } -#endif /* LWIP_DEBUG_TIMERNAMES */ - memp_free(MEMP_SYS_TIMEOUT, tmptimeout); - if (handler != NULL) { - /* For LWIP_TCPIP_CORE_LOCKING, lock the core before calling the - timeout handler function. */ - LOCK_TCPIP_CORE(); - handler(arg); - UNLOCK_TCPIP_CORE(); - } - LWIP_TCPIP_THREAD_ALIVE(); - - /* We try again to fetch a message from the mbox. */ - goto again; - } else { - /* If time != SYS_ARCH_TIMEOUT, a message was received before the timeout - occured. The time variable is set to the number of - milliseconds we waited for the message. */ - if (time_needed < next_timeout->time) { - next_timeout->time -= time_needed; - } else { - next_timeout->time = 0; - } - } - } -} - -#endif /* NO_SYS */ - -#else /* LWIP_TIMERS */ -/* Satisfy the TCP code which calls this function */ -void -tcp_timer_needed(void) -{ -} -#endif /* LWIP_TIMERS */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/udp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/udp.c deleted file mode 100644 index f948d1e18..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/core/udp.c +++ /dev/null @@ -1,1094 +0,0 @@ -/** - * @file - * User Datagram Protocol module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - - -/* udp.c - * - * The code for the User Datagram Protocol UDP & UDPLite (RFC 3828). - * - */ - -/* @todo Check the use of '(struct udp_pcb).chksum_len_rx'! - */ - -#include "lwip/opt.h" - -#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/udp.h" -#include "lwip/def.h" -#include "lwip/memp.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip_addr.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/icmp6.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" -#include "lwip/dhcp.h" - -#include - -/* The list of UDP PCBs */ -/* exported in udp.h (was static) */ -struct udp_pcb *udp_pcbs; - -/** - * Process an incoming UDP datagram. - * - * Given an incoming UDP datagram (as a chain of pbufs) this function - * finds a corresponding UDP PCB and hands over the pbuf to the pcbs - * recv function. If no pcb is found or the datagram is incorrect, the - * pbuf is freed. - * - * @param p pbuf to be demultiplexed to a UDP PCB (p->payload pointing to the UDP header) - * @param inp network interface on which the datagram was received. - * - */ -void -udp_input(struct pbuf *p, struct netif *inp) -{ - struct udp_hdr *udphdr; - struct udp_pcb *pcb, *prev; - struct udp_pcb *uncon_pcb; - u16_t src, dest; - u8_t local_match; - u8_t broadcast; - u8_t for_us; - - PERF_START; - - UDP_STATS_INC(udp.recv); - - /* Check minimum length (UDP header) */ - if (p->len < UDP_HLEN) { - /* drop short packets */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len)); - UDP_STATS_INC(udp.lenerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - - udphdr = (struct udp_hdr *)p->payload; - - /* is broadcast packet ? */ -#if LWIP_IPV6 - broadcast = !ip_current_is_v6() && ip_addr_isbroadcast(ip_current_dest_addr(), inp); -#else /* LWIP_IPV6 */ - broadcast = ip_addr_isbroadcast(ip_current_dest_addr(), inp); -#endif /* LWIP_IPV6 */ - - LWIP_DEBUGF(UDP_DEBUG, ("udp_input: received datagram of length %"U16_F"\n", p->tot_len)); - - /* convert src and dest ports to host byte order */ - src = ntohs(udphdr->src); - dest = ntohs(udphdr->dest); - - udp_debug_print(udphdr); - - /* print the UDP source and destination */ - LWIP_DEBUGF(UDP_DEBUG, ("udp (")); - ipX_addr_debug_print(ip_current_is_v6(), UDP_DEBUG, ipX_current_dest_addr()); - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F") <-- (", ntohs(udphdr->dest))); - ipX_addr_debug_print(ip_current_is_v6(), UDP_DEBUG, ipX_current_src_addr()); - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F")\n", ntohs(udphdr->src))); - -#if LWIP_DHCP - pcb = NULL; - /* when LWIP_DHCP is active, packets to DHCP_CLIENT_PORT may only be processed by - the dhcp module, no other UDP pcb may use the local UDP port DHCP_CLIENT_PORT */ - if (dest == DHCP_CLIENT_PORT) { - /* all packets for DHCP_CLIENT_PORT not coming from DHCP_SERVER_PORT are dropped! */ - if (src == DHCP_SERVER_PORT) { - if ((inp->dhcp != NULL) && (inp->dhcp->pcb != NULL)) { - /* accept the packe if - (- broadcast or directed to us) -> DHCP is link-layer-addressed, local ip is always ANY! - - inp->dhcp->pcb->remote == ANY or iphdr->src - (no need to check for IPv6 since the dhcp struct always uses IPv4) */ - if (ipX_addr_isany(0, &inp->dhcp->pcb->remote_ip) || - ip_addr_cmp(ipX_2_ip(&(inp->dhcp->pcb->remote_ip)), ip_current_src_addr())) { - pcb = inp->dhcp->pcb; - } - } - } - } else -#endif /* LWIP_DHCP */ - { - prev = NULL; - local_match = 0; - uncon_pcb = NULL; - /* Iterate through the UDP pcb list for a matching pcb. - * 'Perfect match' pcbs (connected to the remote port & ip address) are - * preferred. If no perfect match is found, the first unconnected pcb that - * matches the local port and ip address gets the datagram. */ - for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - local_match = 0; - /* print the PCB local and remote address */ - LWIP_DEBUGF(UDP_DEBUG, ("pcb (")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), UDP_DEBUG, &pcb->local_ip); - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F") <-- (", pcb->local_port)); - ipX_addr_debug_print(PCB_ISIPV6(pcb), UDP_DEBUG, &pcb->remote_ip); - LWIP_DEBUGF(UDP_DEBUG, (", %"U16_F")\n", pcb->remote_port)); - - /* compare PCB local addr+port to UDP destination addr+port */ - if ((pcb->local_port == dest) && -#if LWIP_IPV6 - ((PCB_ISIPV6(pcb) && (ip_current_is_v6()) && - (ip6_addr_isany(ipX_2_ip6(&pcb->local_ip)) || -#if LWIP_IPV6_MLD - ip6_addr_ismulticast(ip6_current_dest_addr()) || -#endif /* LWIP_IPV6_MLD */ - ip6_addr_cmp(ipX_2_ip6(&pcb->local_ip), ip6_current_dest_addr()))) || - (!PCB_ISIPV6(pcb) && - (ip_current_header() != NULL) && -#else /* LWIP_IPV6 */ - (( -#endif /* LWIP_IPV6 */ - ((!broadcast && ipX_addr_isany(0, &pcb->local_ip)) || - ip_addr_cmp(ipX_2_ip(&pcb->local_ip), ip_current_dest_addr()) || -#if LWIP_IGMP - ip_addr_ismulticast(ip_current_dest_addr()) || -#endif /* LWIP_IGMP */ -#if IP_SOF_BROADCAST_RECV - (broadcast && (pcb->so_options & SOF_BROADCAST)))))) { -#else /* IP_SOF_BROADCAST_RECV */ - (broadcast))))) { -#endif /* IP_SOF_BROADCAST_RECV */ - local_match = 1; - if ((uncon_pcb == NULL) && - ((pcb->flags & UDP_FLAGS_CONNECTED) == 0)) { - /* the first unconnected matching PCB */ - uncon_pcb = pcb; - } - } - /* compare PCB remote addr+port to UDP source addr+port */ - if ((local_match != 0) && - (pcb->remote_port == src) && IP_PCB_IPVER_INPUT_MATCH(pcb) && - (ipX_addr_isany(PCB_ISIPV6(pcb), &pcb->remote_ip) || - ipX_addr_cmp(PCB_ISIPV6(pcb), &pcb->remote_ip, ipX_current_src_addr()))) { - /* the first fully matching PCB */ - if (prev != NULL) { - /* move the pcb to the front of udp_pcbs so that is - found faster next time */ - prev->next = pcb->next; - pcb->next = udp_pcbs; - udp_pcbs = pcb; - } else { - UDP_STATS_INC(udp.cachehit); - } - break; - } - prev = pcb; - } - /* no fully matching pcb found? then look for an unconnected pcb */ - if (pcb == NULL) { - pcb = uncon_pcb; - } - } - - /* Check checksum if this is a match or if it was directed at us. */ - if (pcb != NULL) { - for_us = 1; - } else { -#if LWIP_IPV6 - if (ip_current_is_v6()) { - for_us = netif_matches_ip6_addr(inp, ip6_current_dest_addr()); - } else -#endif /* LWIP_IPV6 */ - { - for_us = ip_addr_cmp(&inp->ip_addr, ip_current_dest_addr()); - } - } - if (for_us) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: calculating checksum\n")); -#if CHECKSUM_CHECK_UDP -#if LWIP_UDPLITE - if (ip_current_header_proto() == IP_PROTO_UDPLITE) { - /* Do the UDP Lite checksum */ - u16_t chklen = ntohs(udphdr->len); - if (chklen < sizeof(struct udp_hdr)) { - if (chklen == 0) { - /* For UDP-Lite, checksum length of 0 means checksum - over the complete packet (See RFC 3828 chap. 3.1) */ - chklen = p->tot_len; - } else { - /* At least the UDP-Lite header must be covered by the - checksum! (Again, see RFC 3828 chap. 3.1) */ - goto chkerr; - } - } - if (ipX_chksum_pseudo_partial(ip_current_is_v6(), p, IP_PROTO_UDPLITE, - p->tot_len, chklen, - ipX_current_src_addr(), ipX_current_dest_addr()) != 0) { - goto chkerr; - } - } else -#endif /* LWIP_UDPLITE */ - { - if (udphdr->chksum != 0) { - if (ipX_chksum_pseudo(ip_current_is_v6(), p, IP_PROTO_UDP, p->tot_len, - ipX_current_src_addr(), - ipX_current_dest_addr()) != 0) { - goto chkerr; - } - } - } -#endif /* CHECKSUM_CHECK_UDP */ - if(pbuf_header(p, -UDP_HLEN)) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - if (pcb != NULL) { - snmp_inc_udpindatagrams(); -#if SO_REUSE && SO_REUSE_RXTOALL - if ((broadcast || -#if LWIP_IPV6 - ip6_addr_ismulticast(ip6_current_dest_addr()) || -#endif /* LWIP_IPV6 */ - ip_addr_ismulticast(ip_current_dest_addr())) && - ((pcb->so_options & SOF_REUSEADDR) != 0)) { - /* pass broadcast- or multicast packets to all multicast pcbs - if SOF_REUSEADDR is set on the first match */ - struct udp_pcb *mpcb; - u8_t p_header_changed = 0; - s16_t hdrs_len = (s16_t)(ip_current_header_tot_len() + UDP_HLEN); - for (mpcb = udp_pcbs; mpcb != NULL; mpcb = mpcb->next) { - if (mpcb != pcb) { - /* compare PCB local addr+port to UDP destination addr+port */ - if ((mpcb->local_port == dest) && -#if LWIP_IPV6 - ((PCB_ISIPV6(mpcb) && - (ip6_addr_ismulticast(ip6_current_dest_addr()) || - ip6_addr_cmp(ipX_2_ip6(&mpcb->local_ip), ip6_current_dest_addr()))) || - (!PCB_ISIPV6(mpcb) && -#else /* LWIP_IPV6 */ - (( -#endif /* LWIP_IPV6 */ - ((!broadcast && ipX_addr_isany(0, &mpcb->local_ip)) || - ip_addr_cmp(ipX_2_ip(&mpcb->local_ip), ip_current_dest_addr()) || -#if LWIP_IGMP - ip_addr_ismulticast(ip_current_dest_addr()) || -#endif /* LWIP_IGMP */ -#if IP_SOF_BROADCAST_RECV - (broadcast && (mpcb->so_options & SOF_BROADCAST)))))) { -#else /* IP_SOF_BROADCAST_RECV */ - (broadcast))))) { -#endif /* IP_SOF_BROADCAST_RECV */ - /* pass a copy of the packet to all local matches */ - if (mpcb->recv.ip4 != NULL) { - struct pbuf *q; - /* for that, move payload to IP header again */ - if (p_header_changed == 0) { - pbuf_header(p, hdrs_len); - p_header_changed = 1; - } - q = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); - if (q != NULL) { - err_t err = pbuf_copy(q, p); - if (err == ERR_OK) { - /* move payload to UDP data */ - pbuf_header(q, -hdrs_len); -#if LWIP_IPV6 - if (PCB_ISIPV6(mpcb)) { - mpcb->recv.ip6(mpcb->recv_arg, mpcb, q, ip6_current_src_addr(), src); - } - else -#endif /* LWIP_IPV6 */ - { - mpcb->recv.ip4(mpcb->recv_arg, mpcb, q, ip_current_src_addr(), src); - } - } - } - } - } - } - } - if (p_header_changed) { - /* and move payload to UDP data again */ - pbuf_header(p, -hdrs_len); - } - } -#endif /* SO_REUSE && SO_REUSE_RXTOALL */ - /* callback */ - if (pcb->recv.ip4 != NULL) { - /* now the recv function is responsible for freeing p */ -#if LWIP_IPV6 - if (PCB_ISIPV6(pcb)) { - pcb->recv.ip6(pcb->recv_arg, pcb, p, ip6_current_src_addr(), src); - } - else -#endif /* LWIP_IPV6 */ - { - pcb->recv.ip4(pcb->recv_arg, pcb, p, ip_current_src_addr(), src); - } - } else { - /* no recv function registered? then we have to free the pbuf! */ - pbuf_free(p); - goto end; - } - } else { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: not for us.\n")); - -#if LWIP_ICMP || LWIP_ICMP6 - /* No match was found, send ICMP destination port unreachable unless - destination address was broadcast/multicast. */ - if (!broadcast && -#if LWIP_IPV6 - !ip6_addr_ismulticast(ip6_current_dest_addr()) && -#endif /* LWIP_IPV6 */ - !ip_addr_ismulticast(ip_current_dest_addr())) { - /* move payload pointer back to ip header */ - pbuf_header(p, ip_current_header_tot_len() + UDP_HLEN); - icmp_port_unreach(ip_current_is_v6(), p); - } -#endif /* LWIP_ICMP || LWIP_ICMP6 */ - UDP_STATS_INC(udp.proterr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpnoports(); - pbuf_free(p); - } - } else { - pbuf_free(p); - } -end: - PERF_STOP("udp_input"); - return; -chkerr: - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_input: UDP (or UDP Lite) datagram discarded due to failing checksum\n")); - UDP_STATS_INC(udp.chkerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - PERF_STOP("udp_input"); -} - -/** - * Send data using UDP. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * - * The datagram will be sent to the current remote_ip & remote_port - * stored in pcb. If the pcb is not bound to a port, it will - * automatically be bound to a random port. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_MEM. Out of memory. - * - ERR_RTE. Could not find route to destination address. - * - More errors could be returned by lower protocol layers. - * - * @see udp_disconnect() udp_sendto() - */ -err_t -udp_send(struct udp_pcb *pcb, struct pbuf *p) -{ - /* send to the packet using remote ip and port stored in the pcb */ - return udp_sendto(pcb, p, ipX_2_ip(&pcb->remote_ip), pcb->remote_port); -} - -#if LWIP_CHECKSUM_ON_COPY -/** Same as udp_send() but with checksum - */ -err_t -udp_send_chksum(struct udp_pcb *pcb, struct pbuf *p, - u8_t have_chksum, u16_t chksum) -{ - /* send to the packet using remote ip and port stored in the pcb */ - return udp_sendto_chksum(pcb, p, ipX_2_ip(&pcb->remote_ip), pcb->remote_port, - have_chksum, chksum); -} -#endif /* LWIP_CHECKSUM_ON_COPY */ - -/** - * Send data to a specified address using UDP. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * @param dst_ip Destination IP address. - * @param dst_port Destination UDP port. - * - * dst_ip & dst_port are expected to be in the same byte order as in the pcb. - * - * If the PCB already has a remote address association, it will - * be restored after the data is sent. - * - * @return lwIP error code (@see udp_send for possible error codes) - * - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto(struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *dst_ip, u16_t dst_port) -{ -#if LWIP_CHECKSUM_ON_COPY - return udp_sendto_chksum(pcb, p, dst_ip, dst_port, 0, 0); -} - -/** Same as udp_sendto(), but with checksum */ -err_t -udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *dst_ip, - u16_t dst_port, u8_t have_chksum, u16_t chksum) -{ -#endif /* LWIP_CHECKSUM_ON_COPY */ - struct netif *netif; - ipX_addr_t *dst_ip_route = ip_2_ipX(dst_ip); - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send\n")); - -#if LWIP_IPV6 || LWIP_IGMP - if (ipX_addr_ismulticast(PCB_ISIPV6(pcb), dst_ip_route)) { - /* For multicast, find a netif based on source address. */ -#if LWIP_IPV6 - if (PCB_ISIPV6(pcb)) { - dst_ip_route = &pcb->local_ip; - } else -#endif /* LWIP_IPV6 */ - { -#if LWIP_IGMP - dst_ip_route = ip_2_ipX(&pcb->multicast_ip); -#endif /* LWIP_IGMP */ - } - } -#endif /* LWIP_IPV6 || LWIP_IGMP */ - - /* find the outgoing network interface for this packet */ - netif = ipX_route(PCB_ISIPV6(pcb), &pcb->local_ip, dst_ip_route); - - /* no outgoing network interface could be found? */ - if (netif == NULL) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: No route to ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ip_2_ipX(dst_ip)); - LWIP_DEBUGF(UDP_DEBUG, ("\n")); - UDP_STATS_INC(udp.rterr); - return ERR_RTE; - } -#if LWIP_CHECKSUM_ON_COPY - return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, have_chksum, chksum); -#else /* LWIP_CHECKSUM_ON_COPY */ - return udp_sendto_if(pcb, p, dst_ip, dst_port, netif); -#endif /* LWIP_CHECKSUM_ON_COPY */ -} - -/** - * Send data to a specified address using UDP. - * The netif used for sending can be specified. - * - * This function exists mainly for DHCP, to be able to send UDP packets - * on a netif that is still down. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * @param dst_ip Destination IP address. - * @param dst_port Destination UDP port. - * @param netif the netif used for sending. - * - * dst_ip & dst_port are expected to be in the same byte order as in the pcb. - * - * @return lwIP error code (@see udp_send for possible error codes) - * - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif) -{ -#if LWIP_CHECKSUM_ON_COPY - return udp_sendto_if_chksum(pcb, p, dst_ip, dst_port, netif, 0, 0); -} - -/** Same as udp_sendto_if(), but with checksum */ -err_t -udp_sendto_if_chksum(struct udp_pcb *pcb, struct pbuf *p, ip_addr_t *dst_ip, - u16_t dst_port, struct netif *netif, u8_t have_chksum, - u16_t chksum) -{ -#endif /* LWIP_CHECKSUM_ON_COPY */ - struct udp_hdr *udphdr; - ip_addr_t *src_ip; - err_t err; - struct pbuf *q; /* q will be sent down the stack */ - u8_t ip_proto; - -#if IP_SOF_BROADCAST - /* broadcast filter? */ - if ( ((pcb->so_options & SOF_BROADCAST) == 0) && -#if LWIP_IPV6 - !PCB_ISIPV6(pcb) && -#endif /* LWIP_IPV6 */ - ip_addr_isbroadcast(dst_ip, netif) ) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_sendto_if: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb)); - return ERR_VAL; - } -#endif /* IP_SOF_BROADCAST */ - - /* if the PCB is not yet bound to a port, bind it here */ - if (pcb->local_port == 0) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n")); - err = udp_bind(pcb, ipX_2_ip(&pcb->local_ip), pcb->local_port); - if (err != ERR_OK) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: forced port bind failed\n")); - return err; - } - } - - /* not enough space to add an UDP header to first pbuf in given p chain? */ - if (pbuf_header(p, UDP_HLEN)) { - /* allocate header in a separate new pbuf */ - q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM); - /* new header pbuf could not be allocated? */ - if (q == NULL) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n")); - return ERR_MEM; - } - if (p->tot_len != 0) { - /* chain header q in front of given pbuf p (only if p contains data) */ - pbuf_chain(q, p); - } - /* first pbuf q points to header pbuf */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_send: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); - } else { - /* adding space for header within p succeeded */ - /* first pbuf q equals given pbuf */ - q = p; - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header in given pbuf %p\n", (void *)p)); - } - LWIP_ASSERT("check that first pbuf can hold struct udp_hdr", - (q->len >= sizeof(struct udp_hdr))); - /* q now represents the packet to be sent */ - udphdr = (struct udp_hdr *)q->payload; - udphdr->src = htons(pcb->local_port); - udphdr->dest = htons(dst_port); - /* in UDP, 0 checksum means 'no checksum' */ - udphdr->chksum = 0x0000; - - /* Multicast Loop? */ -#if LWIP_IGMP - if (((pcb->flags & UDP_FLAGS_MULTICAST_LOOP) != 0) && -#if LWIP_IPV6 - ( -#if LWIP_IPV6_MLD - (PCB_ISIPV6(pcb) && - ip6_addr_ismulticast(ip_2_ip6(dst_ip))) || -#endif /* LWIP_IPV6_MLD */ - (!PCB_ISIPV6(pcb) && -#else /* LWIP_IPV6 */ - (( -#endif /* LWIP_IPV6 */ - ip_addr_ismulticast(dst_ip)))) { - q->flags |= PBUF_FLAG_MCASTLOOP; - } -#endif /* LWIP_IGMP */ - - - /* PCB local address is IP_ANY_ADDR? */ -#if LWIP_IPV6 - if (PCB_ISIPV6(pcb)) { - if (ip6_addr_isany(ipX_2_ip6(&pcb->local_ip))) { - src_ip = ip6_2_ip(ip6_select_source_address(netif, ip_2_ip6(dst_ip))); - if (src_ip == NULL) { - /* No suitable source address was found. */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - /* p is still referenced by the caller, and will live on */ - } - return ERR_RTE; - } - } else { - /* use UDP PCB local IPv6 address as source address, if still valid. */ - if (netif_matches_ip6_addr(netif, ipX_2_ip6(&pcb->local_ip)) < 0) { - /* Address isn't valid anymore. */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - /* p is still referenced by the caller, and will live on */ - } - return ERR_RTE; - } - src_ip = ipX_2_ip(&pcb->local_ip); - } - } - else -#endif /* LWIP_IPV6 */ - if (ip_addr_isany(ipX_2_ip(&pcb->local_ip))) { - /* use outgoing network interface IP address as source address */ - src_ip = &(netif->ip_addr); - } else { - /* check if UDP PCB local IP address is correct - * this could be an old address if netif->ip_addr has changed */ - if (!ip_addr_cmp(ipX_2_ip(&(pcb->local_ip)), &(netif->ip_addr))) { - /* local_ip doesn't match, drop the packet */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - q = NULL; - /* p is still referenced by the caller, and will live on */ - } - return ERR_VAL; - } - /* use UDP PCB local IP address as source address */ - src_ip = ipX_2_ip(&(pcb->local_ip)); - } - - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: sending datagram of length %"U16_F"\n", q->tot_len)); - -#if LWIP_UDPLITE - /* UDP Lite protocol? */ - if (pcb->flags & UDP_FLAGS_UDPLITE) { - u16_t chklen, chklen_hdr; - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE packet length %"U16_F"\n", q->tot_len)); - /* set UDP message length in UDP header */ - chklen_hdr = chklen = pcb->chksum_len_tx; - if ((chklen < sizeof(struct udp_hdr)) || (chklen > q->tot_len)) { - if (chklen != 0) { - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE pcb->chksum_len is illegal: %"U16_F"\n", chklen)); - } - /* For UDP-Lite, checksum length of 0 means checksum - over the complete packet. (See RFC 3828 chap. 3.1) - At least the UDP-Lite header must be covered by the - checksum, therefore, if chksum_len has an illegal - value, we generate the checksum over the complete - packet to be safe. */ - chklen_hdr = 0; - chklen = q->tot_len; - } - udphdr->len = htons(chklen_hdr); - /* calculate checksum */ -#if CHECKSUM_GEN_UDP -#if LWIP_CHECKSUM_ON_COPY - if (have_chksum) { - chklen = UDP_HLEN; - } -#endif /* LWIP_CHECKSUM_ON_COPY */ - udphdr->chksum = ipX_chksum_pseudo_partial(PCB_ISIPV6(pcb), q, IP_PROTO_UDPLITE, - q->tot_len, chklen, ip_2_ipX(src_ip), ip_2_ipX(dst_ip)); -#if LWIP_CHECKSUM_ON_COPY - if (have_chksum) { - u32_t acc; - acc = udphdr->chksum + (u16_t)~(chksum); - udphdr->chksum = FOLD_U32T(acc); - } -#endif /* LWIP_CHECKSUM_ON_COPY */ - - /* chksum zero must become 0xffff, as zero means 'no checksum' */ - if (udphdr->chksum == 0x0000) { - udphdr->chksum = 0xffff; - } -#endif /* CHECKSUM_GEN_UDP */ - - ip_proto = IP_PROTO_UDPLITE; - } else -#endif /* LWIP_UDPLITE */ - { /* UDP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP packet length %"U16_F"\n", q->tot_len)); - udphdr->len = htons(q->tot_len); - /* calculate checksum */ -#if CHECKSUM_GEN_UDP - /* Checksum is mandatory over IPv6. */ - if (PCB_ISIPV6(pcb) || (pcb->flags & UDP_FLAGS_NOCHKSUM) == 0) { - u16_t udpchksum; -#if LWIP_CHECKSUM_ON_COPY - if (have_chksum) { - u32_t acc; - udpchksum = ipX_chksum_pseudo_partial(PCB_ISIPV6(pcb), q, IP_PROTO_UDP, - q->tot_len, UDP_HLEN, ip_2_ipX(src_ip), ip_2_ipX(dst_ip)); - acc = udpchksum + (u16_t)~(chksum); - udpchksum = FOLD_U32T(acc); - } else -#endif /* LWIP_CHECKSUM_ON_COPY */ - { - udpchksum = ipX_chksum_pseudo(PCB_ISIPV6(pcb), q, IP_PROTO_UDP, q->tot_len, - ip_2_ipX(src_ip), ip_2_ipX(dst_ip)); - } - - /* chksum zero must become 0xffff, as zero means 'no checksum' */ - if (udpchksum == 0x0000) { - udpchksum = 0xffff; - } - udphdr->chksum = udpchksum; - } -#endif /* CHECKSUM_GEN_UDP */ - ip_proto = IP_PROTO_UDP; - } - - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP checksum 0x%04"X16_F"\n", udphdr->chksum)); - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,0x%02"X16_F",)\n", (u16_t)ip_proto)); - /* output to IP */ - NETIF_SET_HWADDRHINT(netif, &(pcb->addr_hint)); - err = ipX_output_if(PCB_ISIPV6(pcb), q, src_ip, dst_ip, pcb->ttl, pcb->tos, ip_proto, netif); - NETIF_SET_HWADDRHINT(netif, NULL); - - /* TODO: must this be increased even if error occured? */ - snmp_inc_udpoutdatagrams(); - - /* did we chain a separate header pbuf earlier? */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - q = NULL; - /* p is still referenced by the caller, and will live on */ - } - - UDP_STATS_INC(udp.xmit); - return err; -} - -/** - * Bind an UDP PCB. - * - * @param pcb UDP PCB to be bound with a local address ipaddr and port. - * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to - * bind to all local interfaces. - * @param port local UDP port to bind with. Use 0 to automatically bind - * to a random port between UDP_LOCAL_PORT_RANGE_START and - * UDP_LOCAL_PORT_RANGE_END. - * - * ipaddr & port are expected to be in the same byte order as in the pcb. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_USE. The specified ipaddr and port are already bound to by - * another UDP PCB. - * - * @see udp_disconnect() - */ -err_t -udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) -{ - struct udp_pcb *ipcb; - u8_t rebind; - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), UDP_DEBUG | LWIP_DBG_TRACE, ip_2_ipX(ipaddr)); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port)); - - rebind = 0; - /* Check for double bind and rebind of the same pcb */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - /* is this UDP PCB already on active list? */ - if (pcb == ipcb) { - /* pcb may occur at most once in active list */ - LWIP_ASSERT("rebind == 0", rebind == 0); - /* pcb already in list, just rebind */ - rebind = 1; - } - - /* By default, we don't allow to bind to a port that any other udp - PCB is alread bound to, unless *all* PCBs with that port have tha - REUSEADDR flag set. */ -#if SO_REUSE - else if (((pcb->so_options & SOF_REUSEADDR) == 0) && - ((ipcb->so_options & SOF_REUSEADDR) == 0)) { -#else /* SO_REUSE */ - /* port matches that of PCB in list and REUSEADDR not set -> reject */ - else { -#endif /* SO_REUSE */ - if ((ipcb->local_port == port) && IP_PCB_IPVER_EQ(pcb, ipcb) && - /* IP address matches, or one is IP_ADDR_ANY? */ - (ipX_addr_isany(PCB_ISIPV6(ipcb), &(ipcb->local_ip)) || - ipX_addr_isany(PCB_ISIPV6(ipcb), ip_2_ipX(ipaddr)) || - ipX_addr_cmp(PCB_ISIPV6(ipcb), &(ipcb->local_ip), ip_2_ipX(ipaddr)))) { - /* other PCB already binds to this local IP and port */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_bind: local port %"U16_F" already bound by another pcb\n", port)); - return ERR_USE; - } - } - } - - ipX_addr_set_ipaddr(PCB_ISIPV6(pcb), &pcb->local_ip, ipaddr); - - /* no port specified? */ - if (port == 0) { -#ifndef UDP_LOCAL_PORT_RANGE_START -/* From http://www.iana.org/assignments/port-numbers: - "The Dynamic and/or Private Ports are those from 49152 through 65535" */ -#define UDP_LOCAL_PORT_RANGE_START 0xc000 -#define UDP_LOCAL_PORT_RANGE_END 0xffff -#endif - port = UDP_LOCAL_PORT_RANGE_START; - ipcb = udp_pcbs; - while ((ipcb != NULL) && (port != UDP_LOCAL_PORT_RANGE_END)) { - if (ipcb->local_port == port) { - /* port is already used by another udp_pcb */ - port++; - /* restart scanning all udp pcbs */ - ipcb = udp_pcbs; - } else { - /* go on with next udp pcb */ - ipcb = ipcb->next; - } - } - if (ipcb != NULL) { - /* no more ports available in local range */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n")); - return ERR_USE; - } - } - pcb->local_port = port; - snmp_insert_udpidx_tree(pcb); - /* pcb not active yet? */ - if (rebind == 0) { - /* place the PCB on the active list if not already there */ - pcb->next = udp_pcbs; - udp_pcbs = pcb; - } - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("udp_bind: bound to ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, &pcb->local_ip); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, (", port %"U16_F")\n", pcb->local_port)); - return ERR_OK; -} - -/** - * Connect an UDP PCB. - * - * This will associate the UDP PCB with the remote address. - * - * @param pcb UDP PCB to be connected with remote address ipaddr and port. - * @param ipaddr remote IP address to connect with. - * @param port remote UDP port to connect with. - * - * @return lwIP error code - * - * ipaddr & port are expected to be in the same byte order as in the pcb. - * - * The udp pcb is bound to a random local port if not already bound. - * - * @see udp_disconnect() - */ -err_t -udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) -{ - struct udp_pcb *ipcb; - - if (pcb->local_port == 0) { - err_t err = udp_bind(pcb, ipX_2_ip(&pcb->local_ip), pcb->local_port); - if (err != ERR_OK) { - return err; - } - } - - ipX_addr_set_ipaddr(PCB_ISIPV6(pcb), &pcb->remote_ip, ipaddr); - pcb->remote_port = port; - pcb->flags |= UDP_FLAGS_CONNECTED; -/** TODO: this functionality belongs in upper layers */ -#ifdef LWIP_UDP_TODO -#if LWIP_IPV6 - if (!PCB_ISIPV6(pcb)) -#endif /* LWIP_IPV6 */ - { - /* Nail down local IP for netconn_addr()/getsockname() */ - if (ip_addr_isany(ipX_2_ip(&pcb->local_ip)) && !ip_addr_isany(ipX_2_ip(&pcb->remote_ip))) { - struct netif *netif; - - if ((netif = ip_route(ipX_2_ip(&pcb->remote_ip))) == NULL) { - LWIP_DEBUGF(UDP_DEBUG, ("udp_connect: No route to 0x%lx\n", - ip4_addr_get_u32(ipX_2_ip(&pcb->remote_ip)))); - UDP_STATS_INC(udp.rterr); - return ERR_RTE; - } - /** TODO: this will bind the udp pcb locally, to the interface which - is used to route output packets to the remote address. However, we - might want to accept incoming packets on any interface! */ - ipX_addr_copy(0, pcb->local_ip, netif->ip_addr); - } else if (ip_addr_isany(ipX_2_ip(&pcb->remote_ip))) { - ipX_addr_set_any(0, &pcb->local_ip); - } - } -#endif - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("udp_connect: connected to ")); - ipX_addr_debug_print(PCB_ISIPV6(pcb), UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - &pcb->remote_ip); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, (", port %"U16_F")\n", pcb->remote_port)); - - /* Insert UDP PCB into the list of active UDP PCBs. */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - if (pcb == ipcb) { - /* already on the list, just return */ - return ERR_OK; - } - } - /* PCB not yet on the list, add PCB now */ - pcb->next = udp_pcbs; - udp_pcbs = pcb; - return ERR_OK; -} - -/** - * Disconnect a UDP PCB - * - * @param pcb the udp pcb to disconnect. - */ -void -udp_disconnect(struct udp_pcb *pcb) -{ - /* reset remote address association */ - ipX_addr_set_any(PCB_ISIPV6(pcb), &pcb->remote_ip); - pcb->remote_port = 0; - /* mark PCB as unconnected */ - pcb->flags &= ~UDP_FLAGS_CONNECTED; -} - -/** - * Set a receive callback for a UDP PCB - * - * This callback will be called when receiving a datagram for the pcb. - * - * @param pcb the pcb for wich to set the recv callback - * @param recv function pointer of the callback function - * @param recv_arg additional argument to pass to the callback function - */ -void -udp_recv(struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg) -{ - /* remember recv() callback and user data */ - pcb->recv.ip4 = recv; - pcb->recv_arg = recv_arg; -} - -/** - * Remove an UDP PCB. - * - * @param pcb UDP PCB to be removed. The PCB is removed from the list of - * UDP PCB's and the data structure is freed from memory. - * - * @see udp_new() - */ -void -udp_remove(struct udp_pcb *pcb) -{ - struct udp_pcb *pcb2; - - snmp_delete_udpidx_tree(pcb); - /* pcb to be removed is first in list? */ - if (udp_pcbs == pcb) { - /* make list start at 2nd pcb */ - udp_pcbs = udp_pcbs->next; - /* pcb not 1st in list */ - } else { - for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - /* find pcb in udp_pcbs list */ - if (pcb2->next != NULL && pcb2->next == pcb) { - /* remove pcb from list */ - pcb2->next = pcb->next; - } - } - } - memp_free(MEMP_UDP_PCB, pcb); -} - -/** - * Create a UDP PCB. - * - * @return The UDP PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @see udp_remove() - */ -struct udp_pcb * -udp_new(void) -{ - struct udp_pcb *pcb; - pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB); - /* could allocate UDP PCB? */ - if (pcb != NULL) { - /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0 - * which means checksum is generated over the whole datagram per default - * (recommended as default by RFC 3828). */ - /* initialize PCB to all zeroes */ - memset(pcb, 0, sizeof(struct udp_pcb)); - pcb->ttl = UDP_TTL; - } - return pcb; -} - -#if LWIP_IPV6 -/** - * Create a UDP PCB for IPv6. - * - * @return The UDP PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @see udp_remove() - */ -struct udp_pcb * -udp_new_ip6(void) -{ - struct udp_pcb *pcb; - pcb = udp_new(); - ip_set_v6(pcb, 1); - return pcb; -} -#endif /* LWIP_IPV6 */ - -#if UDP_DEBUG -/** - * Print UDP header information for debug purposes. - * - * @param udphdr pointer to the udp header in memory. - */ -void -udp_debug_print(struct udp_hdr *udphdr) -{ - LWIP_DEBUGF(UDP_DEBUG, ("UDP header:\n")); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n", - ntohs(udphdr->src), ntohs(udphdr->dest))); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | 0x%04"X16_F" | (len, chksum)\n", - ntohs(udphdr->len), ntohs(udphdr->chksum))); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); -} -#endif /* UDP_DEBUG */ - -#endif /* LWIP_UDP */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/autoip.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/autoip.h deleted file mode 100644 index e62b72e8c..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/autoip.h +++ /dev/null @@ -1,118 +0,0 @@ -/** - * @file - * - * AutoIP Automatic LinkLocal IP Configuration - */ - -/* - * - * Copyright (c) 2007 Dominik Spies - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Dominik Spies - * - * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform - * with RFC 3927. - * - * - * Please coordinate changes and requests with Dominik Spies - * - */ - -#ifndef __LWIP_AUTOIP_H__ -#define __LWIP_AUTOIP_H__ - -#include "lwip/opt.h" - -#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netif.h" -#include "lwip/udp.h" -#include "netif/etharp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* AutoIP Timing */ -#define AUTOIP_TMR_INTERVAL 100 -#define AUTOIP_TICKS_PER_SECOND (1000 / AUTOIP_TMR_INTERVAL) - -/* RFC 3927 Constants */ -#define PROBE_WAIT 1 /* second (initial random delay) */ -#define PROBE_MIN 1 /* second (minimum delay till repeated probe) */ -#define PROBE_MAX 2 /* seconds (maximum delay till repeated probe) */ -#define PROBE_NUM 3 /* (number of probe packets) */ -#define ANNOUNCE_NUM 2 /* (number of announcement packets) */ -#define ANNOUNCE_INTERVAL 2 /* seconds (time between announcement packets) */ -#define ANNOUNCE_WAIT 2 /* seconds (delay before announcing) */ -#define MAX_CONFLICTS 10 /* (max conflicts before rate limiting) */ -#define RATE_LIMIT_INTERVAL 60 /* seconds (delay between successive attempts) */ -#define DEFEND_INTERVAL 10 /* seconds (min. wait between defensive ARPs) */ - -/* AutoIP client states */ -#define AUTOIP_STATE_OFF 0 -#define AUTOIP_STATE_PROBING 1 -#define AUTOIP_STATE_ANNOUNCING 2 -#define AUTOIP_STATE_BOUND 3 - -struct autoip -{ - ip_addr_t llipaddr; /* the currently selected, probed, announced or used LL IP-Address */ - u8_t state; /* current AutoIP state machine state */ - u8_t sent_num; /* sent number of probes or announces, dependent on state */ - u16_t ttw; /* ticks to wait, tick is AUTOIP_TMR_INTERVAL long */ - u8_t lastconflict; /* ticks until a conflict can be solved by defending */ - u8_t tried_llipaddr; /* total number of probed/used Link Local IP-Addresses */ -}; - - -#define autoip_init() /* Compatibility define, no init needed. */ - -/** Set a struct autoip allocated by the application to work with */ -void autoip_set_struct(struct netif *netif, struct autoip *autoip); - -/** Start AutoIP client */ -err_t autoip_start(struct netif *netif); - -/** Stop AutoIP client */ -err_t autoip_stop(struct netif *netif); - -/** Handles every incoming ARP Packet, called by etharp_arp_input */ -void autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr); - -/** Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds */ -void autoip_tmr(void); - -/** Handle a possible change in the network configuration */ -void autoip_network_changed(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_AUTOIP */ - -#endif /* __LWIP_AUTOIP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/icmp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/icmp.h deleted file mode 100644 index fa893b6b4..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/icmp.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ICMP_H__ -#define __LWIP_ICMP_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" - -#if LWIP_IPV6 && LWIP_ICMP6 -#include "lwip/icmp6.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#define ICMP_ER 0 /* echo reply */ -#define ICMP_DUR 3 /* destination unreachable */ -#define ICMP_SQ 4 /* source quench */ -#define ICMP_RD 5 /* redirect */ -#define ICMP_ECHO 8 /* echo */ -#define ICMP_TE 11 /* time exceeded */ -#define ICMP_PP 12 /* parameter problem */ -#define ICMP_TS 13 /* timestamp */ -#define ICMP_TSR 14 /* timestamp reply */ -#define ICMP_IRQ 15 /* information request */ -#define ICMP_IR 16 /* information reply */ - -enum icmp_dur_type { - ICMP_DUR_NET = 0, /* net unreachable */ - ICMP_DUR_HOST = 1, /* host unreachable */ - ICMP_DUR_PROTO = 2, /* protocol unreachable */ - ICMP_DUR_PORT = 3, /* port unreachable */ - ICMP_DUR_FRAG = 4, /* fragmentation needed and DF set */ - ICMP_DUR_SR = 5 /* source route failed */ -}; - -enum icmp_te_type { - ICMP_TE_TTL = 0, /* time to live exceeded in transit */ - ICMP_TE_FRAG = 1 /* fragment reassembly time exceeded */ -}; - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -/** This is the standard ICMP header only that the u32_t data - * is splitted to two u16_t like ICMP echo needs it. - * This header is also used for other ICMP types that do not - * use the data part. - */ -PACK_STRUCT_BEGIN -struct icmp_echo_hdr { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t id); - PACK_STRUCT_FIELD(u16_t seqno); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define ICMPH_TYPE(hdr) ((hdr)->type) -#define ICMPH_CODE(hdr) ((hdr)->code) - -/** Combines type and code to an u16_t */ -#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t)) -#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c)) - - -#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */ - -void icmp_input(struct pbuf *p, struct netif *inp); -void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t); -void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t); - -#endif /* LWIP_ICMP */ - -#if (LWIP_IPV6 && LWIP_ICMP6) -#define icmp_port_unreach(isipv6, pbuf) ((isipv6) ? \ - icmp6_dest_unreach(pbuf, ICMP6_DUR_PORT) : \ - icmp_dest_unreach(pbuf, ICMP_DUR_PORT)) -#elif LWIP_ICMP -#define icmp_port_unreach(isipv6, pbuf) icmp_dest_unreach(pbuf, ICMP_DUR_PORT) -#else /* (LWIP_IPV6 && LWIP_ICMP6) || LWIP_ICMP*/ -#define icmp_port_unreach(isipv6, pbuf) -#endif /* (LWIP_IPV6 && LWIP_ICMP6) || LWIP_ICMP*/ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ICMP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/igmp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/igmp.h deleted file mode 100644 index 8aabac248..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/igmp.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2002 CITEL Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of CITEL Technologies Ltd nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``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 CITEL TECHNOLOGIES OR CONTRIBUTORS 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. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. -*/ - -#ifndef __LWIP_IGMP_H__ -#define __LWIP_IGMP_H__ - -#include "lwip/opt.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/pbuf.h" - -#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */ - -#ifdef __cplusplus -extern "C" { -#endif - - -/* IGMP timer */ -#define IGMP_TMR_INTERVAL 100 /* Milliseconds */ -#define IGMP_V1_DELAYING_MEMBER_TMR (1000/IGMP_TMR_INTERVAL) -#define IGMP_JOIN_DELAYING_MEMBER_TMR (500 /IGMP_TMR_INTERVAL) - -/* MAC Filter Actions, these are passed to a netif's - * igmp_mac_filter callback function. */ -#define IGMP_DEL_MAC_FILTER 0 -#define IGMP_ADD_MAC_FILTER 1 - - -/** - * igmp group structure - there is - * a list of groups for each interface - * these should really be linked from the interface, but - * if we keep them separate we will not affect the lwip original code - * too much - * - * There will be a group for the all systems group address but this - * will not run the state machine as it is used to kick off reports - * from all the other groups - */ -struct igmp_group { - /** next link */ - struct igmp_group *next; - /** interface on which the group is active */ - struct netif *netif; - /** multicast address */ - ip_addr_t group_address; - /** signifies we were the last person to report */ - u8_t last_reporter_flag; - /** current state of the group */ - u8_t group_state; - /** timer for reporting, negative is OFF */ - u16_t timer; - /** counter of simultaneous uses */ - u8_t use; -}; - -/* Prototypes */ -void igmp_init(void); -err_t igmp_start(struct netif *netif); -err_t igmp_stop(struct netif *netif); -void igmp_report_groups(struct netif *netif); -struct igmp_group *igmp_lookfor_group(struct netif *ifp, ip_addr_t *addr); -void igmp_input(struct pbuf *p, struct netif *inp, ip_addr_t *dest); -err_t igmp_joingroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr); -err_t igmp_leavegroup(ip_addr_t *ifaddr, ip_addr_t *groupaddr); -void igmp_tmr(void); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IGMP */ - -#endif /* __LWIP_IGMP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet.h deleted file mode 100644 index 7bff49b59..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INET_H__ -#define __LWIP_INET_H__ - -#include "lwip/opt.h" -#include "lwip/def.h" -#include "lwip/ip_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** For compatibility with BSD code */ -struct in_addr { - u32_t s_addr; -}; - -/** 255.255.255.255 */ -#define INADDR_NONE IPADDR_NONE -/** 127.0.0.1 */ -#define INADDR_LOOPBACK IPADDR_LOOPBACK -/** 0.0.0.0 */ -#define INADDR_ANY IPADDR_ANY -/** 255.255.255.255 */ -#define INADDR_BROADCAST IPADDR_BROADCAST - -/* Definitions of the bits in an Internet address integer. - - On subnets, host and network parts are found according to - the subnet mask, not these masks. */ -#define IN_CLASSA(a) IP_CLASSA(a) -#define IN_CLASSA_NET IP_CLASSA_NET -#define IN_CLASSA_NSHIFT IP_CLASSA_NSHIFT -#define IN_CLASSA_HOST IP_CLASSA_HOST -#define IN_CLASSA_MAX IP_CLASSA_MAX - -#define IN_CLASSB(b) IP_CLASSB(b) -#define IN_CLASSB_NET IP_CLASSB_NET -#define IN_CLASSB_NSHIFT IP_CLASSB_NSHIFT -#define IN_CLASSB_HOST IP_CLASSB_HOST -#define IN_CLASSB_MAX IP_CLASSB_MAX - -#define IN_CLASSC(c) IP_CLASSC(c) -#define IN_CLASSC_NET IP_CLASSC_NET -#define IN_CLASSC_NSHIFT IP_CLASSC_NSHIFT -#define IN_CLASSC_HOST IP_CLASSC_HOST -#define IN_CLASSC_MAX IP_CLASSC_MAX - -#define IN_CLASSD(d) IP_CLASSD(d) -#define IN_CLASSD_NET IP_CLASSD_NET /* These ones aren't really */ -#define IN_CLASSD_NSHIFT IP_CLASSD_NSHIFT /* net and host fields, but */ -#define IN_CLASSD_HOST IP_CLASSD_HOST /* routing needn't know. */ -#define IN_CLASSD_MAX IP_CLASSD_MAX - -#define IN_MULTICAST(a) IP_MULTICAST(a) - -#define IN_EXPERIMENTAL(a) IP_EXPERIMENTAL(a) -#define IN_BADCLASS(a) IP_BADCLASS(a) - -#define IN_LOOPBACKNET IP_LOOPBACKNET - -#define inet_addr_from_ipaddr(target_inaddr, source_ipaddr) ((target_inaddr)->s_addr = ip4_addr_get_u32(source_ipaddr)) -#define inet_addr_to_ipaddr(target_ipaddr, source_inaddr) (ip4_addr_set_u32(target_ipaddr, (source_inaddr)->s_addr)) -/* ATTENTION: the next define only works because both s_addr and ip_addr_t are an u32_t effectively! */ -#define inet_addr_to_ipaddr_p(target_ipaddr_p, source_inaddr) ((target_ipaddr_p) = (ip_addr_t*)&((source_inaddr)->s_addr)) - -/* directly map this to the lwip internal functions */ -#define inet_addr(cp) ipaddr_addr(cp) -#define inet_aton(cp, addr) ipaddr_aton(cp, (ip_addr_t*)addr) -#define inet_ntoa(addr) ipaddr_ntoa((ip_addr_t*)&(addr)) -#define inet_ntoa_r(addr, buf, buflen) ipaddr_ntoa_r((ip_addr_t*)&(addr), buf, buflen) - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INET_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet_chksum.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet_chksum.h deleted file mode 100644 index 79a2d90f2..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/inet_chksum.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INET_CHKSUM_H__ -#define __LWIP_INET_CHKSUM_H__ - -#include "lwip/opt.h" - -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" - -/** Swap the bytes in an u16_t: much like htons() for little-endian */ -#ifndef SWAP_BYTES_IN_WORD -#if LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN) -/* little endian and PLATFORM_BYTESWAP defined */ -#define SWAP_BYTES_IN_WORD(w) LWIP_PLATFORM_HTONS(w) -#else /* LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN) */ -/* can't use htons on big endian (or PLATFORM_BYTESWAP not defined)... */ -#define SWAP_BYTES_IN_WORD(w) (((w) & 0xff) << 8) | (((w) & 0xff00) >> 8) -#endif /* LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN)*/ -#endif /* SWAP_BYTES_IN_WORD */ - -/** Split an u32_t in two u16_ts and add them up */ -#ifndef FOLD_U32T -#define FOLD_U32T(u) (((u) >> 16) + ((u) & 0x0000ffffUL)) -#endif - -#if LWIP_CHECKSUM_ON_COPY -/** Function-like macro: same as MEMCPY but returns the checksum of copied data - as u16_t */ -#ifndef LWIP_CHKSUM_COPY -#define LWIP_CHKSUM_COPY(dst, src, len) lwip_chksum_copy(dst, src, len) -#ifndef LWIP_CHKSUM_COPY_ALGORITHM -#define LWIP_CHKSUM_COPY_ALGORITHM 1 -#endif /* LWIP_CHKSUM_COPY_ALGORITHM */ -#endif /* LWIP_CHKSUM_COPY */ -#else /* LWIP_CHECKSUM_ON_COPY */ -#define LWIP_CHKSUM_COPY_ALGORITHM 0 -#endif /* LWIP_CHECKSUM_ON_COPY */ - -#ifdef __cplusplus -extern "C" { -#endif - -u16_t inet_chksum(void *dataptr, u16_t len); -u16_t inet_chksum_pbuf(struct pbuf *p); -u16_t inet_chksum_pseudo(struct pbuf *p, - ip_addr_t *src, ip_addr_t *dest, - u8_t proto, u16_t proto_len); -u16_t inet_chksum_pseudo_partial(struct pbuf *p, - ip_addr_t *src, ip_addr_t *dest, - u8_t proto, u16_t proto_len, u16_t chksum_len); -#if LWIP_CHKSUM_COPY_ALGORITHM -u16_t lwip_chksum_copy(void *dst, const void *src, u16_t len); -#endif /* LWIP_CHKSUM_COPY_ALGORITHM */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INET_H__ */ - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4.h deleted file mode 100644 index 64c9b4d7e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP4_H__ -#define __LWIP_IP4_H__ - -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/ip6_addr.h" -#include "lwip/err.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Currently, the function ip_output_if_opt() is only used with IGMP */ -#define IP_OPTIONS_SEND LWIP_IGMP - -#define IP_HLEN 20 - -#define IP_PROTO_ICMP 1 -#define IP_PROTO_IGMP 2 -#define IP_PROTO_UDP 17 -#define IP_PROTO_UDPLITE 136 -#define IP_PROTO_TCP 6 - - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_hdr { - /* version / header length */ - PACK_STRUCT_FIELD(u8_t _v_hl); - /* type of service */ - PACK_STRUCT_FIELD(u8_t _tos); - /* total length */ - PACK_STRUCT_FIELD(u16_t _len); - /* identification */ - PACK_STRUCT_FIELD(u16_t _id); - /* fragment offset field */ - PACK_STRUCT_FIELD(u16_t _offset); -#define IP_RF 0x8000U /* reserved fragment flag */ -#define IP_DF 0x4000U /* dont fragment flag */ -#define IP_MF 0x2000U /* more fragments flag */ -#define IP_OFFMASK 0x1fffU /* mask for fragmenting bits */ - /* time to live */ - PACK_STRUCT_FIELD(u8_t _ttl); - /* protocol*/ - PACK_STRUCT_FIELD(u8_t _proto); - /* checksum */ - PACK_STRUCT_FIELD(u16_t _chksum); - /* source and destination IP addresses */ - PACK_STRUCT_FIELD(ip_addr_p_t src); - PACK_STRUCT_FIELD(ip_addr_p_t dest); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#if BYTE_ORDER == LITTLE_ENDIAN -#define IPH_V(hdr) ((hdr)->_v_hl >> 4) -#define IPH_HL(hdr) ((hdr)->_v_hl & 0x0f) -#else /* BYTE_ORDER == LITTLE_ENDIAN */ -#define IPH_V(hdr) ((hdr)->_v_hl & 0x0f) -#define IPH_HL(hdr) ((hdr)->_v_hl >> 4) -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ -#define IPH_TOS(hdr) ((hdr)->_tos) -#define IPH_LEN(hdr) ((hdr)->_len) -#define IPH_ID(hdr) ((hdr)->_id) -#define IPH_OFFSET(hdr) ((hdr)->_offset) -#define IPH_TTL(hdr) ((hdr)->_ttl) -#define IPH_PROTO(hdr) ((hdr)->_proto) -#define IPH_CHKSUM(hdr) ((hdr)->_chksum) - -#if BYTE_ORDER == LITTLE_ENDIAN -#define IPH_VHL_SET(hdr, v, hl) (hdr)->_v_hl = (((v) << 4) | (hl)) -#else /* BYTE_ORDER == LITTLE_ENDIAN */ -#define IPH_VHL_SET(hdr, v, hl) (hdr)->_v_hl = ((v) | ((hl) << 4)) -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ -#define IPH_TOS_SET(hdr, tos) (hdr)->_tos = (tos) -#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len) -#define IPH_ID_SET(hdr, id) (hdr)->_id = (id) -#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off) -#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl = (u8_t)(ttl) -#define IPH_PROTO_SET(hdr, proto) (hdr)->_proto = (u8_t)(proto) -#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum) - - -#define ip_init() /* Compatibility define, no init needed. */ -struct netif *ip_route(ip_addr_t *dest); -err_t ip_input(struct pbuf *p, struct netif *inp); -err_t ip_output(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto); -err_t ip_output_if(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto, - struct netif *netif); -#if LWIP_NETIF_HWADDRHINT -err_t ip_output_hinted(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT */ -#if IP_OPTIONS_SEND -err_t ip_output_if_opt(struct pbuf *p, ip_addr_t *src, ip_addr_t *dest, - u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, - u16_t optlen); -#endif /* IP_OPTIONS_SEND */ - -#define ip_netif_get_local_ipX(netif) (((netif) != NULL) ? ip_2_ipX(&((netif)->ip_addr)) : NULL) - -#if IP_DEBUG -void ip_debug_print(struct pbuf *p); -#else -#define ip_debug_print(p) -#endif /* IP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_H__ */ - - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4_addr.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4_addr.h deleted file mode 100644 index b05ae5370..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip4_addr.h +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP4_ADDR_H__ -#define __LWIP_IP4_ADDR_H__ - -#include "lwip/opt.h" -#include "lwip/def.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* This is the aligned version of ip_addr_t, - used as local variable, on the stack, etc. */ -struct ip_addr { - u32_t addr; -}; - -/* This is the packed version of ip_addr_t, - used in network headers that are itself packed */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_addr_packed { - PACK_STRUCT_FIELD(u32_t addr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** ip_addr_t uses a struct for convenience only, so that the same defines can - * operate both on ip_addr_t as well as on ip_addr_p_t. */ -typedef struct ip_addr ip_addr_t; -typedef struct ip_addr_packed ip_addr_p_t; - -/* - * struct ipaddr2 is used in the definition of the ARP packet format in - * order to support compilers that don't have structure packing. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_addr2 { - PACK_STRUCT_FIELD(u16_t addrw[2]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* Forward declaration to not include netif.h */ -struct netif; - -extern const ip_addr_t ip_addr_any; -extern const ip_addr_t ip_addr_broadcast; - -/** IP_ADDR_ can be used as a fixed IP address - * for the wildcard and the broadcast address - */ -#define IP_ADDR_ANY ((ip_addr_t *)&ip_addr_any) -#define IP_ADDR_BROADCAST ((ip_addr_t *)&ip_addr_broadcast) - -/** 255.255.255.255 */ -#define IPADDR_NONE ((u32_t)0xffffffffUL) -/** 127.0.0.1 */ -#define IPADDR_LOOPBACK ((u32_t)0x7f000001UL) -/** 0.0.0.0 */ -#define IPADDR_ANY ((u32_t)0x00000000UL) -/** 255.255.255.255 */ -#define IPADDR_BROADCAST ((u32_t)0xffffffffUL) - -/* Definitions of the bits in an Internet address integer. - - On subnets, host and network parts are found according to - the subnet mask, not these masks. */ -#define IP_CLASSA(a) ((((u32_t)(a)) & 0x80000000UL) == 0) -#define IP_CLASSA_NET 0xff000000 -#define IP_CLASSA_NSHIFT 24 -#define IP_CLASSA_HOST (0xffffffff & ~IP_CLASSA_NET) -#define IP_CLASSA_MAX 128 - -#define IP_CLASSB(a) ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL) -#define IP_CLASSB_NET 0xffff0000 -#define IP_CLASSB_NSHIFT 16 -#define IP_CLASSB_HOST (0xffffffff & ~IP_CLASSB_NET) -#define IP_CLASSB_MAX 65536 - -#define IP_CLASSC(a) ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL) -#define IP_CLASSC_NET 0xffffff00 -#define IP_CLASSC_NSHIFT 8 -#define IP_CLASSC_HOST (0xffffffff & ~IP_CLASSC_NET) - -#define IP_CLASSD(a) (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL) -#define IP_CLASSD_NET 0xf0000000 /* These ones aren't really */ -#define IP_CLASSD_NSHIFT 28 /* net and host fields, but */ -#define IP_CLASSD_HOST 0x0fffffff /* routing needn't know. */ -#define IP_MULTICAST(a) IP_CLASSD(a) - -#define IP_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) -#define IP_BADCLASS(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) - -#define IP_LOOPBACKNET 127 /* official! */ - - -#if BYTE_ORDER == BIG_ENDIAN -/** Set an IP address given by the four byte-parts */ -#define IP4_ADDR(ipaddr, a,b,c,d) \ - (ipaddr)->addr = ((u32_t)((a) & 0xff) << 24) | \ - ((u32_t)((b) & 0xff) << 16) | \ - ((u32_t)((c) & 0xff) << 8) | \ - (u32_t)((d) & 0xff) -#else -/** Set an IP address given by the four byte-parts. - Little-endian version that prevents the use of htonl. */ -#define IP4_ADDR(ipaddr, a,b,c,d) \ - (ipaddr)->addr = ((u32_t)((d) & 0xff) << 24) | \ - ((u32_t)((c) & 0xff) << 16) | \ - ((u32_t)((b) & 0xff) << 8) | \ - (u32_t)((a) & 0xff) -#endif - -/** MEMCPY-like copying of IP addresses where addresses are known to be - * 16-bit-aligned if the port is correctly configured (so a port could define - * this to copying 2 u16_t's) - no NULL-pointer-checking needed. */ -#ifndef IPADDR2_COPY -#define IPADDR2_COPY(dest, src) SMEMCPY(dest, src, sizeof(ip_addr_t)) -#endif - -/** Copy IP address - faster than ip_addr_set: no NULL check */ -#define ip_addr_copy(dest, src) ((dest).addr = (src).addr) -/** Safely copy one IP address to another (src may be NULL) */ -#define ip_addr_set(dest, src) ((dest)->addr = \ - ((src) == NULL ? 0 : \ - (src)->addr)) -/** Set complete address to zero */ -#define ip_addr_set_zero(ipaddr) ((ipaddr)->addr = 0) -/** Set address to IPADDR_ANY (no need for htonl()) */ -#define ip_addr_set_any(ipaddr) ((ipaddr)->addr = IPADDR_ANY) -/** Set address to loopback address */ -#define ip_addr_set_loopback(ipaddr) ((ipaddr)->addr = PP_HTONL(IPADDR_LOOPBACK)) -/** Safely copy one IP address to another and change byte order - * from host- to network-order. */ -#define ip_addr_set_hton(dest, src) ((dest)->addr = \ - ((src) == NULL ? 0:\ - htonl((src)->addr))) -/** IPv4 only: set the IP address given as an u32_t */ -#define ip4_addr_set_u32(dest_ipaddr, src_u32) ((dest_ipaddr)->addr = (src_u32)) -/** IPv4 only: get the IP address as an u32_t */ -#define ip4_addr_get_u32(src_ipaddr) ((src_ipaddr)->addr) - -/** Get the network address by combining host address with netmask */ -#define ip_addr_get_network(target, host, netmask) ((target)->addr = ((host)->addr) & ((netmask)->addr)) - -/** - * Determine if two address are on the same network. - * - * @arg addr1 IP address 1 - * @arg addr2 IP address 2 - * @arg mask network identifier mask - * @return !0 if the network identifiers of both address match - */ -#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \ - (mask)->addr) == \ - ((addr2)->addr & \ - (mask)->addr)) -#define ip_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr) - -#define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == IPADDR_ANY) - -#define ip_addr_isbroadcast(ipaddr, netif) ip4_addr_isbroadcast((ipaddr)->addr, (netif)) -u8_t ip4_addr_isbroadcast(u32_t addr, const struct netif *netif); - -#define ip_addr_netmask_valid(netmask) ip4_addr_netmask_valid((netmask)->addr) -u8_t ip4_addr_netmask_valid(u32_t netmask); - -#define ip_addr_ismulticast(addr1) (((addr1)->addr & PP_HTONL(0xf0000000UL)) == PP_HTONL(0xe0000000UL)) - -#define ip_addr_islinklocal(addr1) (((addr1)->addr & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xa9fe0000UL)) - -#define ip_addr_debug_print(debug, ipaddr) \ - LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F, \ - ipaddr != NULL ? ip4_addr1_16(ipaddr) : 0, \ - ipaddr != NULL ? ip4_addr2_16(ipaddr) : 0, \ - ipaddr != NULL ? ip4_addr3_16(ipaddr) : 0, \ - ipaddr != NULL ? ip4_addr4_16(ipaddr) : 0)) - -/* Get one byte from the 4-byte address */ -#define ip4_addr1(ipaddr) (((u8_t*)(ipaddr))[0]) -#define ip4_addr2(ipaddr) (((u8_t*)(ipaddr))[1]) -#define ip4_addr3(ipaddr) (((u8_t*)(ipaddr))[2]) -#define ip4_addr4(ipaddr) (((u8_t*)(ipaddr))[3]) -/* These are cast to u16_t, with the intent that they are often arguments - * to printf using the U16_F format from cc.h. */ -#define ip4_addr1_16(ipaddr) ((u16_t)ip4_addr1(ipaddr)) -#define ip4_addr2_16(ipaddr) ((u16_t)ip4_addr2(ipaddr)) -#define ip4_addr3_16(ipaddr) ((u16_t)ip4_addr3(ipaddr)) -#define ip4_addr4_16(ipaddr) ((u16_t)ip4_addr4(ipaddr)) - -/** For backwards compatibility */ -#define ip_ntoa(ipaddr) ipaddr_ntoa(ipaddr) - -u32_t ipaddr_addr(const char *cp); -int ipaddr_aton(const char *cp, ip_addr_t *addr); -/** returns ptr to static buffer; not reentrant! */ -char *ipaddr_ntoa(const ip_addr_t *addr); -char *ipaddr_ntoa_r(const ip_addr_t *addr, char *buf, int buflen); - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_ADDR_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip_frag.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip_frag.h deleted file mode 100644 index 47eca9f42..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv4/lwip/ip_frag.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Jani Monoses - * - */ - -#ifndef __LWIP_IP_FRAG_H__ -#define __LWIP_IP_FRAG_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/ip_addr.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if IP_REASSEMBLY -/* The IP reassembly timer interval in milliseconds. */ -#define IP_TMR_INTERVAL 1000 - -/* IP reassembly helper struct. - * This is exported because memp needs to know the size. - */ -struct ip_reassdata { - struct ip_reassdata *next; - struct pbuf *p; - struct ip_hdr iphdr; - u16_t datagram_len; - u8_t flags; - u8_t timer; -}; - -void ip_reass_init(void); -void ip_reass_tmr(void); -struct pbuf * ip_reass(struct pbuf *p); -#endif /* IP_REASSEMBLY */ - -#if IP_FRAG -#if !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF -/** A custom pbuf that holds a reference to another pbuf, which is freed - * when this custom pbuf is freed. This is used to create a custom PBUF_REF - * that points into the original pbuf. */ -#ifndef __LWIP_PBUF_CUSTOM_REF__ -#define __LWIP_PBUF_CUSTOM_REF__ -struct pbuf_custom_ref { - /** 'base class' */ - struct pbuf_custom pc; - /** pointer to the original pbuf that is referenced */ - struct pbuf *original; -}; -#endif /* __LWIP_PBUF_CUSTOM_REF__ */ -#endif /* !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF */ - -err_t ip_frag(struct pbuf *p, struct netif *netif, ip_addr_t *dest); -#endif /* IP_FRAG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_FRAG_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/dhcp6.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/dhcp6.h deleted file mode 100644 index 83ce306b4..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/dhcp6.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - * @file - * - * IPv6 address autoconfiguration as per RFC 4862. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * IPv6 address autoconfiguration as per RFC 4862. - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#ifndef __LWIP_IP6_DHCP6_H__ -#define __LWIP_IP6_DHCP6_H__ - -#include "lwip/opt.h" - -#if LWIP_IPV6_DHCP6 /* don't build if not configured for use in lwipopts.h */ - - -struct dhcp6 -{ - //TODO: implement DHCP6 -}; - -#endif /* LWIP_IPV6_DHCP6 */ - -#endif /* __LWIP_IP6_DHCP6_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ethip6.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ethip6.h deleted file mode 100644 index e7f412b49..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ethip6.h +++ /dev/null @@ -1,68 +0,0 @@ -/** - * @file - * - * Ethernet output for IPv6. Uses ND tables for link-layer addressing. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#ifndef __LWIP_ETHIP6_H__ -#define __LWIP_ETHIP6_H__ - -#include "lwip/opt.h" - -#if LWIP_IPV6 && LWIP_ETHERNET /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/netif.h" - - -#ifdef __cplusplus -extern "C" { -#endif - - -err_t ethip6_output(struct netif *netif, struct pbuf *q, ip6_addr_t *ip6addr); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IPV6 && LWIP_ETHERNET */ - -#endif /* __LWIP_ETHIP6_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/icmp6.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/icmp6.h deleted file mode 100644 index 74bfdbe09..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/icmp6.h +++ /dev/null @@ -1,152 +0,0 @@ -/** - * @file - * - * IPv6 version of ICMP, as per RFC 4443. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ -#ifndef __LWIP_ICMP6_H__ -#define __LWIP_ICMP6_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip6_addr.h" -#include "lwip/netif.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -enum icmp6_type { - ICMP6_TYPE_DUR = 1, /* Destination unreachable */ - ICMP6_TYPE_PTB = 2, /* Packet too big */ - ICMP6_TYPE_TE = 3, /* Time exceeded */ - ICMP6_TYPE_PP = 4, /* Parameter problem */ - ICMP6_TYPE_PE1 = 100, /* Private experimentation */ - ICMP6_TYPE_PE2 = 101, /* Private experimentation */ - ICMP6_TYPE_RSV_ERR = 127, /* Reserved for expansion of error messages */ - - ICMP6_TYPE_EREQ = 128, /* Echo request */ - ICMP6_TYPE_EREP = 129, /* Echo reply */ - ICMP6_TYPE_MLQ = 130, /* Multicast listener query */ - ICMP6_TYPE_MLR = 131, /* Multicast listener report */ - ICMP6_TYPE_MLD = 132, /* Multicast listener done */ - ICMP6_TYPE_RS = 133, /* Router solicitation */ - ICMP6_TYPE_RA = 134, /* Router advertisement */ - ICMP6_TYPE_NS = 135, /* Neighbor solicitation */ - ICMP6_TYPE_NA = 136, /* Neighbor advertisement */ - ICMP6_TYPE_RD = 137, /* Redirect */ - ICMP6_TYPE_MRA = 151, /* Multicast router advertisement */ - ICMP6_TYPE_MRS = 152, /* Multicast router solicitation */ - ICMP6_TYPE_MRT = 153, /* Multicast router termination */ - ICMP6_TYPE_PE3 = 200, /* Private experimentation */ - ICMP6_TYPE_PE4 = 201, /* Private experimentation */ - ICMP6_TYPE_RSV_INF = 255 /* Reserved for expansion of informational messages */ -}; - -enum icmp6_dur_code { - ICMP6_DUR_NO_ROUTE = 0, /* No route to destination */ - ICMP6_DUR_PROHIBITED = 1, /* Communication with destination administratively prohibited */ - ICMP6_DUR_SCOPE = 2, /* Beyond scope of source address */ - ICMP6_DUR_ADDRESS = 3, /* Address unreachable */ - ICMP6_DUR_PORT = 4, /* Port unreachable */ - ICMP6_DUR_POLICY = 5, /* Source address failed ingress/egress policy */ - ICMP6_DUR_REJECT_ROUTE = 6 /* Reject route to destination */ -}; - -enum icmp6_te_code { - ICMP6_TE_HL = 0, /* Hop limit exceeded in transit */ - ICMP6_TE_FRAG = 1 /* Fragment reassembly time exceeded */ -}; - -enum icmp6_pp_code { - ICMP6_PP_FIELD = 0, /* Erroneous header field encountered */ - ICMP6_PP_HEADER = 1, /* Unrecognized next header type encountered */ - ICMP6_PP_OPTION = 2 /* Unrecognized IPv6 option encountered */ -}; - -/** This is the standard ICMP6 header. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct icmp6_hdr { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u32_t data); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** This is the ICMP6 header adapted for echo req/resp. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct icmp6_echo_hdr { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t id); - PACK_STRUCT_FIELD(u16_t seqno); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - - -#if LWIP_ICMP6 && LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -void icmp6_input(struct pbuf *p, struct netif *inp); -void icmp6_dest_unreach(struct pbuf *p, enum icmp6_dur_code c); -void icmp6_packet_too_big(struct pbuf *p, u32_t mtu); -void icmp6_time_exceeded(struct pbuf *p, enum icmp6_te_code c); -void icmp6_param_problem(struct pbuf *p, enum icmp6_pp_code c, u32_t pointer); - -#endif /* LWIP_ICMP6 && LWIP_IPV6 */ - - -#ifdef __cplusplus -} -#endif - - -#endif /* __LWIP_ICMP6_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/inet6.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/inet6.h deleted file mode 100644 index fbbdcf19a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/inet6.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * @file - * - * INET v6 addresses. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ -#ifndef __LWIP_INET6_H__ -#define __LWIP_INET6_H__ - -#include "lwip/opt.h" - -#if LWIP_IPV6 && LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/ip6_addr.h" -#include "lwip/def.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** For compatibility with BSD code */ -struct in6_addr { - u32_t s_addr[4]; -}; - -#define IN6ADDR_ANY_INIT {0,0,0,0} -#define IN6ADDR_LOOPBACK_INIT {0,0,0,PP_HTONL(1)} - - - -#define inet6_addr_from_ip6addr(target_in6addr, source_ip6addr) {(target_in6addr)->s_addr[0] = (source_ip6addr)->addr[0]; \ - (target_in6addr)->s_addr[1] = (source_ip6addr)->addr[1]; \ - (target_in6addr)->s_addr[2] = (source_ip6addr)->addr[2]; \ - (target_in6addr)->s_addr[3] = (source_ip6addr)->addr[3];} -#define inet6_addr_to_ip6addr(target_ip6addr, source_in6addr) {(target_ip6addr)->addr[0] = (source_in6addr)->s_addr[0]; \ - (target_ip6addr)->addr[0] = (source_in6addr)->s_addr[0]; \ - (target_ip6addr)->addr[0] = (source_in6addr)->s_addr[0]; \ - (target_ip6addr)->addr[0] = (source_in6addr)->s_addr[0];} -/* ATTENTION: the next define only works because both in6_addr and ip6_addr_t are an u32_t[4] effectively! */ -#define inet6_addr_to_ip6addr_p(target_ip6addr_p, source_in6addr) ((target_ip6addr_p) = (ip6_addr_t*)(source_in6addr)) - -/* directly map this to the lwip internal functions */ -#define inet6_aton(cp, addr) ip6addr_aton(cp, (ip6_addr_t*)addr) -#define inet6_ntoa(addr) ip6addr_ntoa((ip6_addr_t*)&(addr)) -#define inet6_ntoa_r(addr, buf, buflen) ip6addr_ntoa_r((ip6_addr_t*)&(addr), buf, buflen) - - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IPV6 */ - -#endif /* __LWIP_INET6_H__ */ - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6.h deleted file mode 100644 index b199c95a9..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6.h +++ /dev/null @@ -1,197 +0,0 @@ -/** - * @file - * - * IPv6 layer. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ -#ifndef __LWIP_IP6_H__ -#define __LWIP_IP6_H__ - -#include "lwip/opt.h" - -#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/ip.h" -#include "lwip/ip6_addr.h" -#include "lwip/def.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" - -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define IP6_HLEN 40 - -#define IP6_NEXTH_HOPBYHOP 0 -#define IP6_NEXTH_TCP 6 -#define IP6_NEXTH_UDP 17 -#define IP6_NEXTH_ENCAPS 41 -#define IP6_NEXTH_ROUTING 43 -#define IP6_NEXTH_FRAGMENT 44 -#define IP6_NEXTH_ICMP6 58 -#define IP6_NEXTH_NONE 59 -#define IP6_NEXTH_DESTOPTS 60 -#define IP6_NEXTH_UDPLITE 136 - - -/* The IPv6 header. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip6_hdr { - /* version / traffic class / flow label */ - PACK_STRUCT_FIELD(u32_t _v_tc_fl); - /* payload length */ - PACK_STRUCT_FIELD(u16_t _plen); - /* next header */ - PACK_STRUCT_FIELD(u8_t _nexth); - /* hop limit */ - PACK_STRUCT_FIELD(u8_t _hoplim); - /* source and destination IP addresses */ - PACK_STRUCT_FIELD(ip6_addr_p_t src); - PACK_STRUCT_FIELD(ip6_addr_p_t dest); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* Hop-by-hop router alert option. */ -#define IP6_HBH_HLEN 8 -#define IP6_PAD1_OPTION 0 -#define IP6_PADN_ALERT_OPTION 1 -#define IP6_ROUTER_ALERT_OPTION 5 -#define IP6_ROUTER_ALERT_VALUE_MLD 0 -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip6_hbh_hdr { - /* next header */ - PACK_STRUCT_FIELD(u8_t _nexth); - /* header length */ - PACK_STRUCT_FIELD(u8_t _hlen); - /* router alert option type */ - PACK_STRUCT_FIELD(u8_t _ra_opt_type); - /* router alert option data len */ - PACK_STRUCT_FIELD(u8_t _ra_opt_dlen); - /* router alert option data */ - PACK_STRUCT_FIELD(u16_t _ra_opt_data); - /* PadN option type */ - PACK_STRUCT_FIELD(u8_t _padn_opt_type); - /* PadN option data len */ - PACK_STRUCT_FIELD(u8_t _padn_opt_dlen); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* Fragment header. */ -#define IP6_FRAG_HLEN 8 -#define IP6_FRAG_OFFSET_MASK 0xfff8 -#define IP6_FRAG_MORE_FLAG 0x0001 -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip6_frag_hdr { - /* next header */ - PACK_STRUCT_FIELD(u8_t _nexth); - /* reserved */ - PACK_STRUCT_FIELD(u8_t reserved); - /* fragment offset */ - PACK_STRUCT_FIELD(u16_t _fragment_offset); - /* fragmented packet identification */ - PACK_STRUCT_FIELD(u32_t _identification); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define IP6H_V(hdr) ((ntohl((hdr)->_v_tc_fl) >> 28) & 0x0f) -#define IP6H_TC(hdr) ((ntohl((hdr)->_v_tc_fl) >> 20) & 0xff) -#define IP6H_FL(hdr) (ntohl((hdr)->_v_tc_fl) & 0x000fffff) -#define IP6H_PLEN(hdr) (ntohs((hdr)->_plen)) -#define IP6H_NEXTH(hdr) ((hdr)->_nexth) -#define IP6H_NEXTH_P(hdr) ((u8_t *)(hdr) + 6) -#define IP6H_HOPLIM(hdr) ((hdr)->_hoplim) - -#define IP6H_VTCFL_SET(hdr, v, tc, fl) (hdr)->_v_tc_fl = (htonl(((v) << 28) | ((tc) << 20) | (fl))) -#define IP6H_PLEN_SET(hdr, plen) (hdr)->_plen = htons(plen) -#define IP6H_NEXTH_SET(hdr, nexth) (hdr)->_nexth = (nexth) -#define IP6H_HOPLIM_SET(hdr, hl) (hdr)->_hoplim = (u8_t)(hl) - - -#define ip6_init() /* TODO should we init current addresses and header pointer? */ -struct netif *ip6_route(struct ip6_addr *src, struct ip6_addr *dest); -ip6_addr_t *ip6_select_source_address(struct netif *netif, ip6_addr_t * dest); -err_t ip6_input(struct pbuf *p, struct netif *inp); -err_t ip6_output(struct pbuf *p, struct ip6_addr *src, struct ip6_addr *dest, - u8_t hl, u8_t tc, u8_t nexth); -err_t ip6_output_if(struct pbuf *p, struct ip6_addr *src, struct ip6_addr *dest, - u8_t hl, u8_t tc, u8_t nexth, struct netif *netif); -#if LWIP_NETIF_HWADDRHINT -err_t ip6_output_hinted(struct pbuf *p, ip6_addr_t *src, ip6_addr_t *dest, - u8_t hl, u8_t tc, u8_t nexth, u8_t *addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT */ -#if LWIP_IPV6_MLD -err_t ip6_options_add_hbh_ra(struct pbuf * p, u8_t nexth, u8_t value); -#endif /* LWIP_IPV6_MLD */ - -#define ip6_netif_get_local_ipX(netif, dest) (((netif) != NULL) ? \ - ip6_2_ipX(ip6_select_source_address(netif, dest)) : NULL) - -#if IP6_DEBUG -void ip6_debug_print(struct pbuf *p); -#else -#define ip6_debug_print(p) -#endif /* IP6_DEBUG */ - - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IPV6 */ - -#endif /* __LWIP_IP6_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_addr.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_addr.h deleted file mode 100644 index 68e93e060..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_addr.h +++ /dev/null @@ -1,282 +0,0 @@ -/** - * @file - * - * IPv6 addresses. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * Structs and macros for handling IPv6 addresses. - * - * Please coordinate changes and requests with Ivan Delamer - * - */ -#ifndef __LWIP_IP6_ADDR_H__ -#define __LWIP_IP6_ADDR_H__ - -#include "lwip/opt.h" - -#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - - -#ifdef __cplusplus -extern "C" { -#endif - - -/* This is the aligned version of ip6_addr_t, - used as local variable, on the stack, etc. */ -struct ip6_addr { - u32_t addr[4]; -}; - -/* This is the packed version of ip6_addr_t, - used in network headers that are itself packed */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip6_addr_packed { - PACK_STRUCT_FIELD(u32_t addr[4]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** ip6_addr_t uses a struct for convenience only, so that the same defines can - * operate both on ip6_addr_t as well as on ip6_addr_p_t. */ -typedef struct ip6_addr ip6_addr_t; -typedef struct ip6_addr_packed ip6_addr_p_t; - - -/** IP6_ADDR_ANY can be used as a fixed IPv6 address - * for the wildcard - */ -extern const ip6_addr_t ip6_addr_any; -#define IP6_ADDR_ANY ((ip6_addr_t *)&ip6_addr_any) - - - - -#if BYTE_ORDER == BIG_ENDIAN -/** Set an IPv6 partial address given by byte-parts. */ -#define IP6_ADDR(ip6addr, index, a,b,c,d) \ - (ip6addr)->addr[index] = ((u32_t)((a) & 0xff) << 24) | \ - ((u32_t)((b) & 0xff) << 16) | \ - ((u32_t)((c) & 0xff) << 8) | \ - (u32_t)((d) & 0xff) -#else -/** Set an IPv6 partial address given by byte-parts. -Little-endian version, stored in network order (no htonl). */ -#define IP6_ADDR(ip6addr, index, a,b,c,d) \ - (ip6addr)->addr[index] = ((u32_t)((d) & 0xff) << 24) | \ - ((u32_t)((c) & 0xff) << 16) | \ - ((u32_t)((b) & 0xff) << 8) | \ - (u32_t)((a) & 0xff) -#endif - -/** Access address in 16-bit block */ -#define IP6_ADDR_BLOCK1(ip6addr) ((u16_t)(htonl((ip6addr)->addr[0]) >> 16) & 0xffff) -#define IP6_ADDR_BLOCK2(ip6addr) ((u16_t)(htonl((ip6addr)->addr[0])) & 0xffff) -#define IP6_ADDR_BLOCK3(ip6addr) ((u16_t)(htonl((ip6addr)->addr[1]) >> 16) & 0xffff) -#define IP6_ADDR_BLOCK4(ip6addr) ((u16_t)(htonl((ip6addr)->addr[1])) & 0xffff) -#define IP6_ADDR_BLOCK5(ip6addr) ((u16_t)(htonl((ip6addr)->addr[2]) >> 16) & 0xffff) -#define IP6_ADDR_BLOCK6(ip6addr) ((u16_t)(htonl((ip6addr)->addr[2])) & 0xffff) -#define IP6_ADDR_BLOCK7(ip6addr) ((u16_t)(htonl((ip6addr)->addr[3]) >> 16) & 0xffff) -#define IP6_ADDR_BLOCK8(ip6addr) ((u16_t)(htonl((ip6addr)->addr[3])) & 0xffff) - -/** Copy IPv6 address - faster than ip6_addr_set: no NULL check */ -#define ip6_addr_copy(dest, src) do{(dest).addr[0] = (src).addr[0]; \ - (dest).addr[1] = (src).addr[1]; \ - (dest).addr[2] = (src).addr[2]; \ - (dest).addr[3] = (src).addr[3];}while(0) -/** Safely copy one IPv6 address to another (src may be NULL) */ -#define ip6_addr_set(dest, src) do{(dest)->addr[0] = (src) == NULL ? 0 : (src)->addr[0]; \ - (dest)->addr[1] = (src) == NULL ? 0 : (src)->addr[1]; \ - (dest)->addr[2] = (src) == NULL ? 0 : (src)->addr[2]; \ - (dest)->addr[3] = (src) == NULL ? 0 : (src)->addr[3];}while(0) - -/** Set complete address to zero */ -#define ip6_addr_set_zero(ip6addr) do{(ip6addr)->addr[0] = 0; \ - (ip6addr)->addr[1] = 0; \ - (ip6addr)->addr[2] = 0; \ - (ip6addr)->addr[3] = 0;}while(0) - -/** Set address to ipv6 'any' (no need for htonl()) */ -#define ip6_addr_set_any(ip6addr) ip6_addr_set_zero(ip6addr) -/** Set address to ipv6 loopback address */ -#define ip6_addr_set_loopback(ip6addr) do{(ip6addr)->addr[0] = 0; \ - (ip6addr)->addr[1] = 0; \ - (ip6addr)->addr[2] = 0; \ - (ip6addr)->addr[3] = PP_HTONL(0x00000001UL);}while(0) -/** Safely copy one IPv6 address to another and change byte order - * from host- to network-order. */ -#define ip6_addr_set_hton(dest, src) do{(dest)->addr[0] = (src) == NULL ? 0 : htonl((src)->addr[0]); \ - (dest)->addr[1] = (src) == NULL ? 0 : htonl((src)->addr[1]); \ - (dest)->addr[2] = (src) == NULL ? 0 : htonl((src)->addr[2]); \ - (dest)->addr[3] = (src) == NULL ? 0 : htonl((src)->addr[3]);}while(0) - - - -/** - * Determine if two IPv6 address are on the same network. - * - * @arg addr1 IPv6 address 1 - * @arg addr2 IPv6 address 2 - * @return !0 if the network identifiers of both address match - */ -#define ip6_addr_netcmp(addr1, addr2) (((addr1)->addr[0] == (addr2)->addr[0]) && \ - ((addr1)->addr[1] == (addr2)->addr[1])) - -#define ip6_addr_cmp(addr1, addr2) (((addr1)->addr[0] == (addr2)->addr[0]) && \ - ((addr1)->addr[1] == (addr2)->addr[1]) && \ - ((addr1)->addr[2] == (addr2)->addr[2]) && \ - ((addr1)->addr[3] == (addr2)->addr[3])) - -#define ip6_get_subnet_id(ip6addr) (htonl((ip6addr)->addr[2]) & 0x0000ffffUL) - -#define ip6_addr_isany(ip6addr) (((ip6addr) == NULL) || \ - (((ip6addr)->addr[0] == 0) && \ - ((ip6addr)->addr[1] == 0) && \ - ((ip6addr)->addr[2] == 0) && \ - ((ip6addr)->addr[3] == 0))) - - -#define ip6_addr_isglobal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xe0000000UL)) == PP_HTONL(0x20000000UL)) - -#define ip6_addr_islinklocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffc00000UL)) == PP_HTONL(0xfe800000UL)) - -#define ip6_addr_issitelocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffc00000UL)) == PP_HTONL(0xfec00000UL)) - -#define ip6_addr_isuniquelocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xfe000000UL)) == PP_HTONL(0xfc000000UL)) - -#define ip6_addr_ismulticast(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xff000000UL)) == PP_HTONL(0xff000000UL)) -#define ip6_addr_multicast_transient_flag(ip6addr) ((ip6addr)->addr[0] & PP_HTONL(0x00100000UL)) -#define ip6_addr_multicast_prefix_flag(ip6addr) ((ip6addr)->addr[0] & PP_HTONL(0x00200000UL)) -#define ip6_addr_multicast_rendezvous_flag(ip6addr) ((ip6addr)->addr[0] & PP_HTONL(0x00400000UL)) -#define ip6_addr_multicast_scope(ip6addr) ((htonl((ip6addr)->addr[0]) >> 16) & 0xf) -#define IP6_MULTICAST_SCOPE_RESERVED 0x0 -#define IP6_MULTICAST_SCOPE_RESERVED0 0x0 -#define IP6_MULTICAST_SCOPE_INTERFACE_LOCAL 0x1 -#define IP6_MULTICAST_SCOPE_LINK_LOCAL 0x2 -#define IP6_MULTICAST_SCOPE_RESERVED3 0x3 -#define IP6_MULTICAST_SCOPE_ADMIN_LOCAL 0x4 -#define IP6_MULTICAST_SCOPE_SITE_LOCAL 0x5 -#define IP6_MULTICAST_SCOPE_ORGANIZATION_LOCAL 0x8 -#define IP6_MULTICAST_SCOPE_GLOBAL 0xe -#define IP6_MULTICAST_SCOPE_RESERVEDF 0xf -#define ip6_addr_ismulticast_iflocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xff010000UL)) -#define ip6_addr_ismulticast_linklocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xff020000UL)) -#define ip6_addr_ismulticast_adminlocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xff040000UL)) -#define ip6_addr_ismulticast_sitelocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xff050000UL)) -#define ip6_addr_ismulticast_orglocal(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xff080000UL)) -#define ip6_addr_ismulticast_global(ip6addr) (((ip6addr)->addr[0] & PP_HTONL(0xffff0000UL)) == PP_HTONL(0xff0e0000UL)) - -/* TODO define get/set for well-know multicast addresses, e.g. ff02::1 */ -#define ip6_addr_isallnodes_iflocal(ip6addr) (((ip6addr)->addr[0] == PP_HTONL(0xff010000UL)) && \ - ((ip6addr)->addr[1] == 0UL) && \ - ((ip6addr)->addr[2] == 0UL) && \ - ((ip6addr)->addr[3] == PP_HTONL(0x00000001UL))) - -#define ip6_addr_isallnodes_linklocal(ip6addr) (((ip6addr)->addr[0] == PP_HTONL(0xff020000UL)) && \ - ((ip6addr)->addr[1] == 0UL) && \ - ((ip6addr)->addr[2] == 0UL) && \ - ((ip6addr)->addr[3] == PP_HTONL(0x00000001UL))) -#define ip6_addr_set_allnodes_linklocal(ip6addr) do{(ip6addr)->addr[0] = PP_HTONL(0xff020000UL); \ - (ip6addr)->addr[1] = 0; \ - (ip6addr)->addr[2] = 0; \ - (ip6addr)->addr[3] = PP_HTONL(0x00000001UL);}while(0) - -#define ip6_addr_isallrouters_linklocal(ip6addr) (((ip6addr)->addr[0] == PP_HTONL(0xff020000UL)) && \ - ((ip6addr)->addr[1] == 0UL) && \ - ((ip6addr)->addr[2] == 0UL) && \ - ((ip6addr)->addr[3] == PP_HTONL(0x00000002UL))) -#define ip6_addr_set_allrouters_linklocal(ip6addr) do{(ip6addr)->addr[0] = PP_HTONL(0xff020000UL); \ - (ip6addr)->addr[1] = 0; \ - (ip6addr)->addr[2] = 0; \ - (ip6addr)->addr[3] = PP_HTONL(0x00000002UL);}while(0) - -#define ip6_addr_issolicitednode(ip6addr) ( ((ip6addr)->addr[0] == PP_HTONL(0xff020000UL)) && \ - ((ip6addr)->addr[2] == PP_HTONL(0x00000001UL)) && \ - (((ip6addr)->addr[3] & PP_HTONL(0xff000000UL)) == PP_HTONL(0xff000000UL)) ) - -#define ip6_addr_set_solicitednode(ip6addr, if_id) do{(ip6addr)->addr[0] = PP_HTONL(0xff020000UL); \ - (ip6addr)->addr[1] = 0; \ - (ip6addr)->addr[2] = PP_HTONL(0x00000001UL); \ - (ip6addr)->addr[3] = htonl(0xff000000UL | (htonl(if_id) & 0x00ffffffUL));}while(0) - - -/* IPv6 address states. */ -#define IP6_ADDR_INVALID 0x00 -#define IP6_ADDR_TENTATIVE 0x08 -#define IP6_ADDR_TENTATIVE_1 0x09 /* 1 probe sent */ -#define IP6_ADDR_TENTATIVE_2 0x0a /* 2 probes sent */ -#define IP6_ADDR_TENTATIVE_3 0x0b /* 3 probes sent */ -#define IP6_ADDR_TENTATIVE_4 0x0c /* 4 probes sent */ -#define IP6_ADDR_TENTATIVE_5 0x0d /* 5 probes sent */ -#define IP6_ADDR_TENTATIVE_6 0x0e /* 6 probes sent */ -#define IP6_ADDR_TENTATIVE_7 0x0f /* 7 probes sent */ -#define IP6_ADDR_VALID 0x10 -#define IP6_ADDR_PREFERRED 0x30 -#define IP6_ADDR_DEPRECATED 0x50 - -#define ip6_addr_isinvalid(addr_state) (addr_state == IP6_ADDR_INVALID) -#define ip6_addr_istentative(addr_state) (addr_state & IP6_ADDR_TENTATIVE) -#define ip6_addr_isvalid(addr_state) (addr_state & IP6_ADDR_VALID) /* Include valid, preferred, and deprecated. */ -#define ip6_addr_ispreferred(addr_state) (addr_state == IP6_ADDR_PREFERRED) -#define ip6_addr_isdeprecated(addr_state) (addr_state == IP6_ADDR_DEPRECATED) - -#define ip6_addr_debug_print(debug, ipaddr) \ - LWIP_DEBUGF(debug, ("%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F":%"X16_F, \ - ipaddr != NULL ? IP6_ADDR_BLOCK1(ipaddr) : 0, \ - ipaddr != NULL ? IP6_ADDR_BLOCK2(ipaddr) : 0, \ - ipaddr != NULL ? IP6_ADDR_BLOCK3(ipaddr) : 0, \ - ipaddr != NULL ? IP6_ADDR_BLOCK4(ipaddr) : 0, \ - ipaddr != NULL ? IP6_ADDR_BLOCK5(ipaddr) : 0, \ - ipaddr != NULL ? IP6_ADDR_BLOCK6(ipaddr) : 0, \ - ipaddr != NULL ? IP6_ADDR_BLOCK7(ipaddr) : 0, \ - ipaddr != NULL ? IP6_ADDR_BLOCK8(ipaddr) : 0)) - -int ip6addr_aton(const char *cp, ip6_addr_t *addr); -/** returns ptr to static buffer; not reentrant! */ -char *ip6addr_ntoa(const ip6_addr_t *addr); -char *ip6addr_ntoa_r(const ip6_addr_t *addr, char *buf, int buflen); - - - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IPV6 */ - -#endif /* __LWIP_IP6_ADDR_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_frag.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_frag.h deleted file mode 100644 index 75898b8fc..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/ip6_frag.h +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @file - * - * IPv6 fragmentation and reassembly. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ -#ifndef __LWIP_IP6_FRAG_H__ -#define __LWIP_IP6_FRAG_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip6_addr.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -#if LWIP_IPV6 && LWIP_IPV6_REASS /* don't build if not configured for use in lwipopts.h */ - -/* The IPv6 reassembly timer interval in milliseconds. */ -#define IP6_REASS_TMR_INTERVAL 1000 - -/* IPv6 reassembly helper struct. - * This is exported because memp needs to know the size. - */ -struct ip6_reassdata { - struct ip6_reassdata *next; - struct pbuf *p; - struct ip6_hdr * iphdr; - u32_t identification; - u16_t datagram_len; - u8_t nexth; - u8_t timer; -}; - -#define ip6_reass_init() /* Compatibility define */ -void ip6_reass_tmr(void); -struct pbuf * ip6_reass(struct pbuf *p); - -#endif /* LWIP_IPV6 && LWIP_IPV6_REASS */ - -#if LWIP_IPV6 && LWIP_IPV6_FRAG /* don't build if not configured for use in lwipopts.h */ - -/** A custom pbuf that holds a reference to another pbuf, which is freed - * when this custom pbuf is freed. This is used to create a custom PBUF_REF - * that points into the original pbuf. */ -#ifndef __LWIP_PBUF_CUSTOM_REF__ -#define __LWIP_PBUF_CUSTOM_REF__ -struct pbuf_custom_ref { - /** 'base class' */ - struct pbuf_custom pc; - /** pointer to the original pbuf that is referenced */ - struct pbuf *original; -}; -#endif /* __LWIP_PBUF_CUSTOM_REF__ */ - -err_t ip6_frag(struct pbuf *p, struct netif *netif, ip6_addr_t *dest); - -#endif /* LWIP_IPV6 && LWIP_IPV6_FRAG */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP6_FRAG_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/mld6.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/mld6.h deleted file mode 100644 index abd86e553..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/mld6.h +++ /dev/null @@ -1,118 +0,0 @@ -/** - * @file - * - * Multicast listener discovery for IPv6. Aims to be compliant with RFC 2710. - * No support for MLDv2. - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#ifndef __LWIP_MLD6_H__ -#define __LWIP_MLD6_H__ - -#include "lwip/opt.h" - -#if LWIP_IPV6_MLD && LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/netif.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -struct mld_group { - /** next link */ - struct mld_group *next; - /** interface on which the group is active */ - struct netif *netif; - /** multicast address */ - ip6_addr_t group_address; - /** signifies we were the last person to report */ - u8_t last_reporter_flag; - /** current state of the group */ - u8_t group_state; - /** timer for reporting */ - u16_t timer; - /** counter of simultaneous uses */ - u8_t use; -}; - -/** Multicast listener report/query/done message header. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct mld_header { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t max_resp_delay); - PACK_STRUCT_FIELD(u16_t reserved); - PACK_STRUCT_FIELD(ip6_addr_p_t multicast_address); - /* Options follow. */ -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define MLD6_TMR_INTERVAL 100 /* Milliseconds */ - -/* MAC Filter Actions, these are passed to a netif's - * mld_mac_filter callback function. */ -#define MLD6_DEL_MAC_FILTER 0 -#define MLD6_ADD_MAC_FILTER 1 - - -#define mld6_init() /* TODO should we init tables? */ -err_t mld6_stop(struct netif *netif); -void mld6_report_groups(struct netif *netif); -void mld6_tmr(void); -struct mld_group *mld6_lookfor_group(struct netif *ifp, ip6_addr_t *addr); -void mld6_input(struct pbuf *p, struct netif *inp); -err_t mld6_joingroup(ip6_addr_t *srcaddr, ip6_addr_t *groupaddr); -err_t mld6_leavegroup(ip6_addr_t *srcaddr, ip6_addr_t *groupaddr); - - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IPV6_MLD && LWIP_IPV6 */ - -#endif /* __LWIP_MLD6_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/nd6.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/nd6.h deleted file mode 100644 index 3009f76c9..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/ipv6/lwip/nd6.h +++ /dev/null @@ -1,368 +0,0 @@ -/** - * @file - * - * Neighbor discovery and stateless address autoconfiguration for IPv6. - * Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862 - * (Address autoconfiguration). - */ - -/* - * Copyright (c) 2010 Inico Technologies Ltd. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Ivan Delamer - * - * - * Please coordinate changes and requests with Ivan Delamer - * - */ - -#ifndef __LWIP_ND6_H__ -#define __LWIP_ND6_H__ - -#include "lwip/opt.h" - -#if LWIP_IPV6 /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" -#include "lwip/netif.h" - - -#ifdef __cplusplus -extern "C" { -#endif - -/* Struct for tables. */ -struct nd6_neighbor_cache_entry { - ip6_addr_t next_hop_address; - struct netif * netif; - u8_t lladdr[NETIF_MAX_HWADDR_LEN]; - /*u32_t pmtu;*/ -#if LWIP_ND6_QUEUEING - /** Pointer to queue of pending outgoing packets on this entry. */ - struct nd6_q_entry *q; -#endif /* LWIP_ND6_QUEUEING */ - u8_t state; - u8_t isrouter; - union { - u32_t reachable_time; - u32_t delay_time; - u32_t probes_sent; - u32_t stale_time; - } counter; -}; - -struct nd6_destination_cache_entry { - ip6_addr_t destination_addr; - ip6_addr_t next_hop_addr; - u32_t pmtu; - u32_t age; -}; - -struct nd6_prefix_list_entry { - ip6_addr_t prefix; - struct netif * netif; - u32_t invalidation_timer; -#if LWIP_IPV6_AUTOCONFIG - u8_t flags; -#define ND6_PREFIX_AUTOCONFIG_AUTONOMOUS 0x01 -#define ND6_PREFIX_AUTOCONFIG_ADDRESS_GENERATED 0x02 -#define ND6_PREFIX_AUTOCONFIG_ADDRESS_DUPLICATE 0x04 -#endif /* LWIP_IPV6_AUTOCONFIG */ -}; - -struct nd6_router_list_entry { - struct nd6_neighbor_cache_entry * neighbor_entry; - u32_t invalidation_timer; - u8_t flags; -}; - - -enum nd6_neighbor_cache_entry_state { - ND6_NO_ENTRY = 0, - ND6_INCOMPLETE, - ND6_REACHABLE, - ND6_STALE, - ND6_DELAY, - ND6_PROBE -}; - -#if LWIP_ND6_QUEUEING -/** struct for queueing outgoing packets for unknown address - * defined here to be accessed by memp.h - */ -struct nd6_q_entry { - struct nd6_q_entry *next; - struct pbuf *p; -}; -#endif /* LWIP_ND6_QUEUEING */ - -/** Neighbor solicitation message header. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ns_header { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u32_t reserved); - PACK_STRUCT_FIELD(ip6_addr_p_t target_address); - /* Options follow. */ -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Neighbor advertisement message header. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct na_header { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u8_t flags); - PACK_STRUCT_FIELD(u8_t reserved[3]); - PACK_STRUCT_FIELD(ip6_addr_p_t target_address); - /* Options follow. */ -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define ND6_FLAG_ROUTER (0x80) -#define ND6_FLAG_SOLICITED (0x40) -#define ND6_FLAG_OVERRIDE (0x20) - -/** Router solicitation message header. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct rs_header { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u32_t reserved); - /* Options follow. */ -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Router advertisement message header. */ -#define ND6_RA_FLAG_MANAGED_ADDR_CONFIG (0x80) -#define ND6_RA_FLAG_OTHER_STATEFUL_CONFIG (0x40) -#define ND6_RA_FLAG_HOME_AGENT (0x20) -#define ND6_RA_PREFERENCE_MASK (0x18) -#define ND6_RA_PREFERENCE_HIGH (0x08) -#define ND6_RA_PREFERENCE_MEDIUM (0x00) -#define ND6_RA_PREFERENCE_LOW (0x18) -#define ND6_RA_PREFERENCE_DISABLED (0x10) -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ra_header { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u8_t current_hop_limit); - PACK_STRUCT_FIELD(u8_t flags); - PACK_STRUCT_FIELD(u16_t router_lifetime); - PACK_STRUCT_FIELD(u32_t reachable_time); - PACK_STRUCT_FIELD(u32_t retrans_timer); - /* Options follow. */ -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Redirect message header. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct redirect_header { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u32_t reserved); - PACK_STRUCT_FIELD(ip6_addr_p_t target_address); - PACK_STRUCT_FIELD(ip6_addr_p_t destination_address); - /* Options follow. */ -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Link-layer address option. */ -#define ND6_OPTION_TYPE_SOURCE_LLADDR (0x01) -#define ND6_OPTION_TYPE_TARGET_LLADDR (0x02) -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct lladdr_option { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t length); - PACK_STRUCT_FIELD(u8_t addr[NETIF_MAX_HWADDR_LEN]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Prefix information option. */ -#define ND6_OPTION_TYPE_PREFIX_INFO (0x03) -#define ND6_PREFIX_FLAG_ON_LINK (0x80) -#define ND6_PREFIX_FLAG_AUTONOMOUS (0x40) -#define ND6_PREFIX_FLAG_ROUTER_ADDRESS (0x20) -#define ND6_PREFIX_FLAG_SITE_PREFIX (0x10) -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct prefix_option { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t length); - PACK_STRUCT_FIELD(u8_t prefix_length); - PACK_STRUCT_FIELD(u8_t flags); - PACK_STRUCT_FIELD(u32_t valid_lifetime); - PACK_STRUCT_FIELD(u32_t preferred_lifetime); - PACK_STRUCT_FIELD(u8_t reserved2[3]); - PACK_STRUCT_FIELD(u8_t site_prefix_length); - PACK_STRUCT_FIELD(ip6_addr_p_t prefix); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Redirected header option. */ -#define ND6_OPTION_TYPE_REDIR_HDR (0x04) -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct redirected_header_option { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t length); - PACK_STRUCT_FIELD(u8_t reserved[6]); - /* Portion of redirected packet follows. */ - /* PACK_STRUCT_FIELD(u8_t redirected[8]); */ -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** MTU option. */ -#define ND6_OPTION_TYPE_MTU (0x05) -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct mtu_option { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t length); - PACK_STRUCT_FIELD(u16_t reserved); - PACK_STRUCT_FIELD(u32_t mtu); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** Route information option. */ -#define ND6_OPTION_TYPE_ROUTE_INFO (24) -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct route_option { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t length); - PACK_STRUCT_FIELD(u8_t prefix_length); - PACK_STRUCT_FIELD(u8_t preference); - PACK_STRUCT_FIELD(u32_t route_lifetime); - PACK_STRUCT_FIELD(ip6_addr_p_t prefix); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* the possible states of an IP address */ -#define IP6_ADDRESS_STATE_INVALID (0) -#define IP6_ADDRESS_STATE_VALID (0x4) -#define IP6_ADDRESS_STATE_PREFERRED (0x5) /* includes valid */ -#define IP6_ADDRESS_STATE_DEPRECATED (0x6) /* includes valid */ -#define IP6_ADDRESS_STATE_TENTATIV (0x8) - -/** 1 second period */ -#define ND6_TMR_INTERVAL 1000 - -/* Router tables. */ -/* TODO make these static? and entries accessible through API? */ -extern struct nd6_neighbor_cache_entry neighbor_cache[]; -extern struct nd6_destination_cache_entry destination_cache[]; -extern struct nd6_prefix_list_entry prefix_list[]; -extern struct nd6_router_list_entry default_router_list[]; - -/* Default values, can be updated by a RA message. */ -extern u32_t reachable_time; -extern u32_t retrans_timer; - -#define nd6_init() /* TODO should we init tables? */ -void nd6_tmr(void); -void nd6_input(struct pbuf *p, struct netif *inp); -s8_t nd6_get_next_hop_entry(ip6_addr_t * ip6addr, struct netif * netif); -s8_t nd6_select_router(ip6_addr_t * ip6addr, struct netif * netif); -u16_t nd6_get_destination_mtu(ip6_addr_t * ip6addr, struct netif * netif); -#if LWIP_ND6_QUEUEING -err_t nd6_queue_packet(s8_t neighbor_index, struct pbuf * p); -#endif /* LWIP_ND6_QUEUEING */ -#if LWIP_ND6_TCP_REACHABILITY_HINTS -void nd6_reachability_hint(ip6_addr_t * ip6addr); -#endif /* LWIP_ND6_TCP_REACHABILITY_HINTS */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IPV6 */ - -#endif /* __LWIP_ND6_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api.h deleted file mode 100644 index 326528a23..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api.h +++ /dev/null @@ -1,321 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_API_H__ -#define __LWIP_API_H__ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/netbuf.h" -#include "lwip/sys.h" -#include "lwip/ip_addr.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Throughout this file, IP addresses and port numbers are expected to be in - * the same byte order as in the corresponding pcb. - */ - -/* Flags for netconn_write (u8_t) */ -#define NETCONN_NOFLAG 0x00 -#define NETCONN_NOCOPY 0x00 /* Only for source code compatibility */ -#define NETCONN_COPY 0x01 -#define NETCONN_MORE 0x02 -#define NETCONN_DONTBLOCK 0x04 - -/* Flags for struct netconn.flags (u8_t) */ -/** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores whether to wake up the original application task - if data couldn't be sent in the first try. */ -#define NETCONN_FLAG_WRITE_DELAYED 0x01 -/** Should this netconn avoid blocking? */ -#define NETCONN_FLAG_NON_BLOCKING 0x02 -/** Was the last connect action a non-blocking one? */ -#define NETCONN_FLAG_IN_NONBLOCKING_CONNECT 0x04 -/** If this is set, a TCP netconn must call netconn_recved() to update - the TCP receive window (done automatically if not set). */ -#define NETCONN_FLAG_NO_AUTO_RECVED 0x08 -/** If a nonblocking write has been rejected before, poll_tcp needs to - check if the netconn is writable again */ -#define NETCONN_FLAG_CHECK_WRITESPACE 0x10 - - -/* Helpers to process several netconn_types by the same code */ -#define NETCONNTYPE_GROUP(t) ((t)&0xF0) -#define NETCONNTYPE_DATAGRAM(t) ((t)&0xE0) -#if LWIP_IPV6 -#define NETCONN_TYPE_IPV6 0x08 -#define NETCONNTYPE_ISIPV6(t) ((t)&0x08) -#define NETCONNTYPE_ISUDPLITE(t) (((t)&0xF7) == NETCONN_UDPLITE) -#define NETCONNTYPE_ISUDPNOCHKSUM(t) (((t)&0xF7) == NETCONN_UDPNOCHKSUM) -#else /* LWIP_IPV6 */ -#define NETCONNTYPE_ISUDPLITE(t) ((t) == NETCONN_UDPLITE) -#define NETCONNTYPE_ISUDPNOCHKSUM(t) ((t) == NETCONN_UDPNOCHKSUM) -#endif /* LWIP_IPV6 */ - -/** Protocol family and type of the netconn */ -enum netconn_type { - NETCONN_INVALID = 0, - /* NETCONN_TCP Group */ - NETCONN_TCP = 0x10, -#if LWIP_IPV6 - NETCONN_TCP_IPV6 = NETCONN_TCP | NETCONN_TYPE_IPV6 /* 0x18 */, -#endif /* LWIP_IPV6 */ - /* NETCONN_UDP Group */ - NETCONN_UDP = 0x20, - NETCONN_UDPLITE = 0x21, - NETCONN_UDPNOCHKSUM = 0x22, -#if LWIP_IPV6 - NETCONN_UDP_IPV6 = NETCONN_UDP | NETCONN_TYPE_IPV6 /* 0x28 */, - NETCONN_UDPLITE_IPV6 = NETCONN_UDPLITE | NETCONN_TYPE_IPV6 /* 0x29 */, - NETCONN_UDPNOCHKSUM_IPV6 = NETCONN_UDPNOCHKSUM | NETCONN_TYPE_IPV6 /* 0x2a */, -#endif /* LWIP_IPV6 */ - /* NETCONN_RAW Group */ - NETCONN_RAW = 0x40 -#if LWIP_IPV6 - , - NETCONN_RAW_IPV6 = NETCONN_RAW | NETCONN_TYPE_IPV6 /* 0x48 */ -#endif /* LWIP_IPV6 */ -}; - -/** Current state of the netconn. Non-TCP netconns are always - * in state NETCONN_NONE! */ -enum netconn_state { - NETCONN_NONE, - NETCONN_WRITE, - NETCONN_LISTEN, - NETCONN_CONNECT, - NETCONN_CLOSE -}; - -/** Use to inform the callback function about changes */ -enum netconn_evt { - NETCONN_EVT_RCVPLUS, - NETCONN_EVT_RCVMINUS, - NETCONN_EVT_SENDPLUS, - NETCONN_EVT_SENDMINUS, - NETCONN_EVT_ERROR -}; - -#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) -/** Used for netconn_join_leave_group() */ -enum netconn_igmp { - NETCONN_JOIN, - NETCONN_LEAVE -}; -#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ - -/* forward-declare some structs to avoid to include their headers */ -struct ip_pcb; -struct tcp_pcb; -struct udp_pcb; -struct raw_pcb; -struct netconn; -struct api_msg_msg; - -/** A callback prototype to inform about events for a netconn */ -typedef void (* netconn_callback)(struct netconn *, enum netconn_evt, u16_t len); - -/** A netconn descriptor */ -struct netconn { - /** type of the netconn (TCP, UDP or RAW) */ - enum netconn_type type; - /** current state of the netconn */ - enum netconn_state state; - /** the lwIP internal protocol control block */ - union { - struct ip_pcb *ip; - struct tcp_pcb *tcp; - struct udp_pcb *udp; - struct raw_pcb *raw; - } pcb; - /** the last error this netconn had */ - err_t last_err; - /** sem that is used to synchroneously execute functions in the core context */ - sys_sem_t op_completed; - /** mbox where received packets are stored until they are fetched - by the netconn application thread (can grow quite big) */ - sys_mbox_t recvmbox; -#if LWIP_TCP - /** mbox where new connections are stored until processed - by the application thread */ - sys_mbox_t acceptmbox; -#endif /* LWIP_TCP */ - /** only used for socket layer */ -#if LWIP_SOCKET - int socket; -#endif /* LWIP_SOCKET */ -#if LWIP_SO_RCVTIMEO - /** timeout to wait for new data to be received - (or connections to arrive for listening netconns) */ - int recv_timeout; -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - /** maximum amount of bytes queued in recvmbox - not used for TCP: adjust TCP_WND instead! */ - int recv_bufsize; - /** number of bytes currently in recvmbox to be received, - tested against recv_bufsize to limit bytes on recvmbox - for UDP and RAW, used for FIONREAD */ - s16_t recv_avail; -#endif /* LWIP_SO_RCVBUF */ - /** flags holding more netconn-internal state, see NETCONN_FLAG_* defines */ - u8_t flags; -#if LWIP_TCP - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores how much is already sent. */ - size_t write_offset; - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores the message. - Also used during connect and close. */ - struct api_msg_msg *current_msg; -#endif /* LWIP_TCP */ - /** A callback function that is informed about events for this netconn */ - netconn_callback callback; -}; - -/** Register an Network connection event */ -#define API_EVENT(c,e,l) if (c->callback) { \ - (*c->callback)(c, e, l); \ - } - -/** Set conn->last_err to err but don't overwrite fatal errors */ -#define NETCONN_SET_SAFE_ERR(conn, err) do { \ - SYS_ARCH_DECL_PROTECT(lev); \ - SYS_ARCH_PROTECT(lev); \ - if (!ERR_IS_FATAL((conn)->last_err)) { \ - (conn)->last_err = err; \ - } \ - SYS_ARCH_UNPROTECT(lev); \ -} while(0); - -/* Network connection functions: */ -#define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL) -#define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c) -struct -netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, - netconn_callback callback); -err_t netconn_delete(struct netconn *conn); -/** Get the type of a netconn (as enum netconn_type). */ -#define netconn_type(conn) (conn->type) - -err_t netconn_getaddr(struct netconn *conn, ip_addr_t *addr, - u16_t *port, u8_t local); -#define netconn_peer(c,i,p) netconn_getaddr(c,i,p,0) -#define netconn_addr(c,i,p) netconn_getaddr(c,i,p,1) - -err_t netconn_bind(struct netconn *conn, ip_addr_t *addr, u16_t port); -err_t netconn_connect(struct netconn *conn, ip_addr_t *addr, u16_t port); -err_t netconn_disconnect (struct netconn *conn); -err_t netconn_listen_with_backlog(struct netconn *conn, u8_t backlog); -#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG) -err_t netconn_accept(struct netconn *conn, struct netconn **new_conn); -err_t netconn_recv(struct netconn *conn, struct netbuf **new_buf); -err_t netconn_recv_tcp_pbuf(struct netconn *conn, struct pbuf **new_buf); -void netconn_recved(struct netconn *conn, u32_t length); -err_t netconn_sendto(struct netconn *conn, struct netbuf *buf, - ip_addr_t *addr, u16_t port); -err_t netconn_send(struct netconn *conn, struct netbuf *buf); -err_t netconn_write_partly(struct netconn *conn, const void *dataptr, size_t size, - u8_t apiflags, size_t *bytes_written); -#define netconn_write(conn, dataptr, size, apiflags) \ - netconn_write_partly(conn, dataptr, size, apiflags, NULL) -err_t netconn_close(struct netconn *conn); -err_t netconn_shutdown(struct netconn *conn, u8_t shut_rx, u8_t shut_tx); - -#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) -err_t netconn_join_leave_group(struct netconn *conn, ip_addr_t *multiaddr, - ip_addr_t *netif_addr, enum netconn_igmp join_or_leave); -#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ -#if LWIP_DNS -err_t netconn_gethostbyname(const char *name, ip_addr_t *addr); -#endif /* LWIP_DNS */ -#if LWIP_IPV6 - -#define netconn_bind_ip6(conn, ip6addr, port) (NETCONNTYPE_ISIPV6((conn)->type) ? \ - netconn_bind(conn, ip6_2_ip(ip6addr), port) : ERR_VAL) -#define netconn_connect_ip6(conn, ip6addr, port) (NETCONNTYPE_ISIPV6((conn)->type) ? \ - netconn_connect(conn, ip6_2_ip(ip6addr), port) : ERR_VAL) -#define netconn_sendto_ip6(conn, buf, ip6addr, port) (NETCONNTYPE_ISIPV6((conn)->type) ? \ - netconn_sendto(conn, buf, ip6_2_ip(ip6addr), port) : ERR_VAL) -#if LWIP_IPV6_MLD -#define netconn_join_leave_group_ip6(conn, multiaddr, srcaddr, join_or_leave) (NETCONNTYPE_ISIPV6((conn)->type) ? \ - netconn_join_leave_group(conn, ip6_2_ip(multiaddr), ip6_2_ip(srcaddr), join_or_leave) :\ - ERR_VAL) -#endif /* LWIP_IPV6_MLD*/ -#endif /* LWIP_IPV6 */ - -#define netconn_err(conn) ((conn)->last_err) -#define netconn_recv_bufsize(conn) ((conn)->recv_bufsize) - -/** Set the blocking status of netconn calls (@todo: write/send is missing) */ -#define netconn_set_nonblocking(conn, val) do { if(val) { \ - (conn)->flags |= NETCONN_FLAG_NON_BLOCKING; \ -} else { \ - (conn)->flags &= ~ NETCONN_FLAG_NON_BLOCKING; }} while(0) -/** Get the blocking status of netconn calls (@todo: write/send is missing) */ -#define netconn_is_nonblocking(conn) (((conn)->flags & NETCONN_FLAG_NON_BLOCKING) != 0) - -/** TCP: Set the no-auto-recved status of netconn calls (see NETCONN_FLAG_NO_AUTO_RECVED) */ -#define netconn_set_noautorecved(conn, val) do { if(val) { \ - (conn)->flags |= NETCONN_FLAG_NO_AUTO_RECVED; \ -} else { \ - (conn)->flags &= ~ NETCONN_FLAG_NO_AUTO_RECVED; }} while(0) -/** TCP: Get the no-auto-recved status of netconn calls (see NETCONN_FLAG_NO_AUTO_RECVED) */ -#define netconn_get_noautorecved(conn) (((conn)->flags & NETCONN_FLAG_NO_AUTO_RECVED) != 0) - -#if LWIP_SO_RCVTIMEO -/** Set the receive timeout in milliseconds */ -#define netconn_set_recvtimeout(conn, timeout) ((conn)->recv_timeout = (timeout)) -/** Get the receive timeout in milliseconds */ -#define netconn_get_recvtimeout(conn) ((conn)->recv_timeout) -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF -/** Set the receive buffer in bytes */ -#define netconn_set_recvbufsize(conn, recvbufsize) ((conn)->recv_bufsize = (recvbufsize)) -/** Get the receive buffer in bytes */ -#define netconn_get_recvbufsize(conn) ((conn)->recv_bufsize) -#endif /* LWIP_SO_RCVBUF*/ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETCONN */ - -#endif /* __LWIP_API_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api_msg.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api_msg.h deleted file mode 100644 index fca361d98..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/api_msg.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_API_MSG_H__ -#define __LWIP_API_MSG_H__ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/ip_addr.h" -#include "lwip/err.h" -#include "lwip/sys.h" -#include "lwip/igmp.h" -#include "lwip/api.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* For the netconn API, these values are use as a bitmask! */ -#define NETCONN_SHUT_RD 1 -#define NETCONN_SHUT_WR 2 -#define NETCONN_SHUT_RDWR (NETCONN_SHUT_RD | NETCONN_SHUT_WR) - -/* IP addresses and port numbers are expected to be in - * the same byte order as in the corresponding pcb. - */ -/** This struct includes everything that is necessary to execute a function - for a netconn in another thread context (mainly used to process netconns - in the tcpip_thread context to be thread safe). */ -struct api_msg_msg { - /** The netconn which to process - always needed: it includes the semaphore - which is used to block the application thread until the function finished. */ - struct netconn *conn; - /** The return value of the function executed in tcpip_thread. */ - err_t err; - /** Depending on the executed function, one of these union members is used */ - union { - /** used for do_send */ - struct netbuf *b; - /** used for do_newconn */ - struct { - u8_t proto; - } n; - /** used for do_bind and do_connect */ - struct { - ip_addr_t *ipaddr; - u16_t port; - } bc; - /** used for do_getaddr */ - struct { - ipX_addr_t *ipaddr; - u16_t *port; - u8_t local; - } ad; - /** used for do_write */ - struct { - const void *dataptr; - size_t len; - u8_t apiflags; - } w; - /** used for do_recv */ - struct { - u32_t len; - } r; - /** used for do_close (/shutdown) */ - struct { - u8_t shut; - } sd; -#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) - /** used for do_join_leave_group */ - struct { - ipX_addr_t *multiaddr; - ipX_addr_t *netif_addr; - enum netconn_igmp join_or_leave; - } jl; -#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ -#if TCP_LISTEN_BACKLOG - struct { - u8_t backlog; - } lb; -#endif /* TCP_LISTEN_BACKLOG */ - } msg; -}; - -/** This struct contains a function to execute in another thread context and - a struct api_msg_msg that serves as an argument for this function. - This is passed to tcpip_apimsg to execute functions in tcpip_thread context. */ -struct api_msg { - /** function to execute in tcpip_thread context */ - void (* function)(struct api_msg_msg *msg); - /** arguments for this function */ - struct api_msg_msg msg; -}; - -#if LWIP_DNS -/** As do_gethostbyname requires more arguments but doesn't require a netconn, - it has its own struct (to avoid struct api_msg getting bigger than necessary). - do_gethostbyname must be called using tcpip_callback instead of tcpip_apimsg - (see netconn_gethostbyname). */ -struct dns_api_msg { - /** Hostname to query or dotted IP address string */ - const char *name; - /** Rhe resolved address is stored here */ - ip_addr_t *addr; - /** This semaphore is posted when the name is resolved, the application thread - should wait on it. */ - sys_sem_t *sem; - /** Errors are given back here */ - err_t *err; -}; -#endif /* LWIP_DNS */ - -void do_newconn ( struct api_msg_msg *msg); -void do_delconn ( struct api_msg_msg *msg); -void do_bind ( struct api_msg_msg *msg); -void do_connect ( struct api_msg_msg *msg); -void do_disconnect ( struct api_msg_msg *msg); -void do_listen ( struct api_msg_msg *msg); -void do_send ( struct api_msg_msg *msg); -void do_recv ( struct api_msg_msg *msg); -void do_write ( struct api_msg_msg *msg); -void do_getaddr ( struct api_msg_msg *msg); -void do_close ( struct api_msg_msg *msg); -void do_shutdown ( struct api_msg_msg *msg); -#if LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) -void do_join_leave_group( struct api_msg_msg *msg); -#endif /* LWIP_IGMP || (LWIP_IPV6 && LWIP_IPV6_MLD) */ - -#if LWIP_DNS -void do_gethostbyname(void *arg); -#endif /* LWIP_DNS */ - -struct netconn* netconn_alloc(enum netconn_type t, netconn_callback callback); -void netconn_free(struct netconn *conn); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETCONN */ - -#endif /* __LWIP_API_MSG_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/arch.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/arch.h deleted file mode 100644 index c9960f37c..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/arch.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ARCH_H__ -#define __LWIP_ARCH_H__ - -/* [L4] Commented out to avoid clashes with the definitions in libc. */ -#if 0 -#ifndef LITTLE_ENDIAN -#define LITTLE_ENDIAN 1234 -#endif - -#ifndef BIG_ENDIAN -#define BIG_ENDIAN 4321 -#endif -#endif - -#include "arch/cc.h" - -/** Temporary: define format string for size_t if not defined in cc.h */ -#ifndef SZT_F -#define SZT_F U32_F -#endif /* SZT_F */ -/** Temporary upgrade helper: define format string for u8_t as hex if not - defined in cc.h */ -#ifndef X8_F -#define X8_F "02x" -#endif /* X8_F */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef PACK_STRUCT_BEGIN -#define PACK_STRUCT_BEGIN -#endif /* PACK_STRUCT_BEGIN */ - -#ifndef PACK_STRUCT_END -#define PACK_STRUCT_END -#endif /* PACK_STRUCT_END */ - -#ifndef PACK_STRUCT_FIELD -#define PACK_STRUCT_FIELD(x) x -#endif /* PACK_STRUCT_FIELD */ - - -#ifndef LWIP_UNUSED_ARG -#define LWIP_UNUSED_ARG(x) (void)x -#endif /* LWIP_UNUSED_ARG */ - - -#ifdef LWIP_PROVIDE_ERRNO - -#define EPERM 1 /* Operation not permitted */ -#define ENOENT 2 /* No such file or directory */ -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted system call */ -#define EIO 5 /* I/O error */ -#define ENXIO 6 /* No such device or address */ -#define E2BIG 7 /* Arg list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file number */ -#define ECHILD 10 /* No child processes */ -#define EAGAIN 11 /* Try again */ -#define ENOMEM 12 /* Out of memory */ -#define EACCES 13 /* Permission denied */ -#define EFAULT 14 /* Bad address */ -#define ENOTBLK 15 /* Block device required */ -#define EBUSY 16 /* Device or resource busy */ -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Cross-device link */ -#define ENODEV 19 /* No such device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* File table overflow */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Not a typewriter */ -#define ETXTBSY 26 /* Text file busy */ -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Illegal seek */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ -#define EDOM 33 /* Math argument out of domain of func */ -#define ERANGE 34 /* Math result not representable */ -#define EDEADLK 35 /* Resource deadlock would occur */ -#define ENAMETOOLONG 36 /* File name too long */ -#define ENOLCK 37 /* No record locks available */ -#define ENOSYS 38 /* Function not implemented */ -#define ENOTEMPTY 39 /* Directory not empty */ -#define ELOOP 40 /* Too many symbolic links encountered */ -#define EWOULDBLOCK EAGAIN /* Operation would block */ -#define ENOMSG 42 /* No message of desired type */ -#define EIDRM 43 /* Identifier removed */ -#define ECHRNG 44 /* Channel number out of range */ -#define EL2NSYNC 45 /* Level 2 not synchronized */ -#define EL3HLT 46 /* Level 3 halted */ -#define EL3RST 47 /* Level 3 reset */ -#define ELNRNG 48 /* Link number out of range */ -#define EUNATCH 49 /* Protocol driver not attached */ -#define ENOCSI 50 /* No CSI structure available */ -#define EL2HLT 51 /* Level 2 halted */ -#define EBADE 52 /* Invalid exchange */ -#define EBADR 53 /* Invalid request descriptor */ -#define EXFULL 54 /* Exchange full */ -#define ENOANO 55 /* No anode */ -#define EBADRQC 56 /* Invalid request code */ -#define EBADSLT 57 /* Invalid slot */ - -#define EDEADLOCK EDEADLK - -#define EBFONT 59 /* Bad font file format */ -#define ENOSTR 60 /* Device not a stream */ -#define ENODATA 61 /* No data available */ -#define ETIME 62 /* Timer expired */ -#define ENOSR 63 /* Out of streams resources */ -#define ENONET 64 /* Machine is not on the network */ -#define ENOPKG 65 /* Package not installed */ -#define EREMOTE 66 /* Object is remote */ -#define ENOLINK 67 /* Link has been severed */ -#define EADV 68 /* Advertise error */ -#define ESRMNT 69 /* Srmount error */ -#define ECOMM 70 /* Communication error on send */ -#define EPROTO 71 /* Protocol error */ -#define EMULTIHOP 72 /* Multihop attempted */ -#define EDOTDOT 73 /* RFS specific error */ -#define EBADMSG 74 /* Not a data message */ -#define EOVERFLOW 75 /* Value too large for defined data type */ -#define ENOTUNIQ 76 /* Name not unique on network */ -#define EBADFD 77 /* File descriptor in bad state */ -#define EREMCHG 78 /* Remote address changed */ -#define ELIBACC 79 /* Can not access a needed shared library */ -#define ELIBBAD 80 /* Accessing a corrupted shared library */ -#define ELIBSCN 81 /* .lib section in a.out corrupted */ -#define ELIBMAX 82 /* Attempting to link in too many shared libraries */ -#define ELIBEXEC 83 /* Cannot exec a shared library directly */ -#define EILSEQ 84 /* Illegal byte sequence */ -#define ERESTART 85 /* Interrupted system call should be restarted */ -#define ESTRPIPE 86 /* Streams pipe error */ -#define EUSERS 87 /* Too many users */ -#define ENOTSOCK 88 /* Socket operation on non-socket */ -#define EDESTADDRREQ 89 /* Destination address required */ -#define EMSGSIZE 90 /* Message too long */ -#define EPROTOTYPE 91 /* Protocol wrong type for socket */ -#define ENOPROTOOPT 92 /* Protocol not available */ -#define EPROTONOSUPPORT 93 /* Protocol not supported */ -#define ESOCKTNOSUPPORT 94 /* Socket type not supported */ -#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ -#define EPFNOSUPPORT 96 /* Protocol family not supported */ -#define EAFNOSUPPORT 97 /* Address family not supported by protocol */ -#define EADDRINUSE 98 /* Address already in use */ -#define EADDRNOTAVAIL 99 /* Cannot assign requested address */ -#define ENETDOWN 100 /* Network is down */ -#define ENETUNREACH 101 /* Network is unreachable */ -#define ENETRESET 102 /* Network dropped connection because of reset */ -#define ECONNABORTED 103 /* Software caused connection abort */ -#define ECONNRESET 104 /* Connection reset by peer */ -#define ENOBUFS 105 /* No buffer space available */ -#define EISCONN 106 /* Transport endpoint is already connected */ -#define ENOTCONN 107 /* Transport endpoint is not connected */ -#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ -#define ETOOMANYREFS 109 /* Too many references: cannot splice */ -#define ETIMEDOUT 110 /* Connection timed out */ -#define ECONNREFUSED 111 /* Connection refused */ -#define EHOSTDOWN 112 /* Host is down */ -#define EHOSTUNREACH 113 /* No route to host */ -#define EALREADY 114 /* Operation already in progress */ -#define EINPROGRESS 115 /* Operation now in progress */ -#define ESTALE 116 /* Stale NFS file handle */ -#define EUCLEAN 117 /* Structure needs cleaning */ -#define ENOTNAM 118 /* Not a XENIX named type file */ -#define ENAVAIL 119 /* No XENIX semaphores available */ -#define EISNAM 120 /* Is a named type file */ -#define EREMOTEIO 121 /* Remote I/O error */ -#define EDQUOT 122 /* Quota exceeded */ - -#define ENOMEDIUM 123 /* No medium found */ -#define EMEDIUMTYPE 124 /* Wrong medium type */ - - -#define ENSROK 0 /* DNS server returned answer with no data */ -#define ENSRNODATA 160 /* DNS server returned answer with no data */ -#define ENSRFORMERR 161 /* DNS server claims query was misformatted */ -#define ENSRSERVFAIL 162 /* DNS server returned general failure */ -#define ENSRNOTFOUND 163 /* Domain name not found */ -#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */ -#define ENSRREFUSED 165 /* DNS server refused query */ -#define ENSRBADQUERY 166 /* Misformatted DNS query */ -#define ENSRBADNAME 167 /* Misformatted domain name */ -#define ENSRBADFAMILY 168 /* Unsupported address family */ -#define ENSRBADRESP 169 /* Misformatted DNS reply */ -#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */ -#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */ -#define ENSROF 172 /* End of file */ -#define ENSRFILE 173 /* Error reading file */ -#define ENSRNOMEM 174 /* Out of memory */ -#define ENSRDESTRUCTION 175 /* Application terminated lookup */ -#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */ -#define ENSRCNAMELOOP 177 /* Domain name is too long */ - -#ifndef errno -extern int errno; -#endif - -#endif /* LWIP_PROVIDE_ERRNO */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ARCH_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/debug.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/debug.h deleted file mode 100644 index 0fe041396..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/debug.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_DEBUG_H__ -#define __LWIP_DEBUG_H__ - -#include "lwip/arch.h" -#include "lwip/opt.h" - -/** lower two bits indicate debug level - * - 0 all - * - 1 warning - * - 2 serious - * - 3 severe - */ -#define LWIP_DBG_LEVEL_ALL 0x00 -#define LWIP_DBG_LEVEL_OFF LWIP_DBG_LEVEL_ALL /* compatibility define only */ -#define LWIP_DBG_LEVEL_WARNING 0x01 /* bad checksums, dropped packets, ... */ -#define LWIP_DBG_LEVEL_SERIOUS 0x02 /* memory allocation failures, ... */ -#define LWIP_DBG_LEVEL_SEVERE 0x03 -#define LWIP_DBG_MASK_LEVEL 0x03 - -/** flag for LWIP_DEBUGF to enable that debug message */ -#define LWIP_DBG_ON 0x80U -/** flag for LWIP_DEBUGF to disable that debug message */ -#define LWIP_DBG_OFF 0x00U - -/** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */ -#define LWIP_DBG_TRACE 0x40U -/** flag for LWIP_DEBUGF indicating a state debug message (to follow module states) */ -#define LWIP_DBG_STATE 0x20U -/** flag for LWIP_DEBUGF indicating newly added code, not thoroughly tested yet */ -#define LWIP_DBG_FRESH 0x10U -/** flag for LWIP_DEBUGF to halt after printing this debug message */ -#define LWIP_DBG_HALT 0x08U - -#ifndef LWIP_NOASSERT -#define LWIP_ASSERT(message, assertion) do { if(!(assertion)) \ - LWIP_PLATFORM_ASSERT(message); } while(0) -#else /* LWIP_NOASSERT */ -#define LWIP_ASSERT(message, assertion) -#endif /* LWIP_NOASSERT */ - -/** if "expression" isn't true, then print "message" and execute "handler" expression */ -#ifndef LWIP_ERROR -#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \ - LWIP_PLATFORM_ASSERT(message); handler;}} while(0) -#endif /* LWIP_ERROR */ - -#ifdef LWIP_DEBUG -/** print debug message only if debug message type is enabled... - * AND is of correct type AND is at least LWIP_DBG_LEVEL - */ -#define LWIP_DEBUGF(debug, message) do { \ - if ( \ - ((debug) & LWIP_DBG_ON) && \ - ((debug) & LWIP_DBG_TYPES_ON) && \ - ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \ - LWIP_PLATFORM_DIAG(message); \ - if ((debug) & LWIP_DBG_HALT) { \ - while(1); \ - } \ - } \ - } while(0) - -#else /* LWIP_DEBUG */ -#define LWIP_DEBUGF(debug, message) -#endif /* LWIP_DEBUG */ - -#endif /* __LWIP_DEBUG_H__ */ - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/def.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/def.h deleted file mode 100644 index 9b6de6a8b..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/def.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_DEF_H__ -#define __LWIP_DEF_H__ - -/* arch.h might define NULL already */ -#include "lwip/arch.h" -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define LWIP_MAX(x , y) (((x) > (y)) ? (x) : (y)) -#define LWIP_MIN(x , y) (((x) < (y)) ? (x) : (y)) - -#ifndef NULL -#define NULL ((void *)0) -#endif - -/** Get the absolute difference between 2 u32_t values (correcting overflows) - * 'a' is expected to be 'higher' (without overflow) than 'b'. */ -#define LWIP_U32_DIFF(a, b) (((a) >= (b)) ? ((a) - (b)) : (((a) + ((b) ^ 0xFFFFFFFF) + 1))) - -/* Endianess-optimized shifting of two u8_t to create one u16_t */ -#if BYTE_ORDER == LITTLE_ENDIAN -#define LWIP_MAKE_U16(a, b) ((a << 8) | b) -#else -#define LWIP_MAKE_U16(a, b) ((b << 8) | a) -#endif - -#ifndef LWIP_PLATFORM_BYTESWAP -#define LWIP_PLATFORM_BYTESWAP 0 -#endif - -#ifndef LWIP_PREFIX_BYTEORDER_FUNCS -/* workaround for naming collisions on some platforms */ - -#ifdef htons -#undef htons -#endif /* htons */ -#ifdef htonl -#undef htonl -#endif /* htonl */ -#ifdef ntohs -#undef ntohs -#endif /* ntohs */ -#ifdef ntohl -#undef ntohl -#endif /* ntohl */ - -#define htons(x) lwip_htons(x) -#define ntohs(x) lwip_ntohs(x) -#define htonl(x) lwip_htonl(x) -#define ntohl(x) lwip_ntohl(x) -#endif /* LWIP_PREFIX_BYTEORDER_FUNCS */ - -#if BYTE_ORDER == BIG_ENDIAN -#define lwip_htons(x) (x) -#define lwip_ntohs(x) (x) -#define lwip_htonl(x) (x) -#define lwip_ntohl(x) (x) -#define PP_HTONS(x) (x) -#define PP_NTOHS(x) (x) -#define PP_HTONL(x) (x) -#define PP_NTOHL(x) (x) -#else /* BYTE_ORDER != BIG_ENDIAN */ -#if LWIP_PLATFORM_BYTESWAP -#define lwip_htons(x) LWIP_PLATFORM_HTONS(x) -#define lwip_ntohs(x) LWIP_PLATFORM_HTONS(x) -#define lwip_htonl(x) LWIP_PLATFORM_HTONL(x) -#define lwip_ntohl(x) LWIP_PLATFORM_HTONL(x) -#else /* LWIP_PLATFORM_BYTESWAP */ -u16_t lwip_htons(u16_t x); -u16_t lwip_ntohs(u16_t x); -u32_t lwip_htonl(u32_t x); -u32_t lwip_ntohl(u32_t x); -#endif /* LWIP_PLATFORM_BYTESWAP */ - -/* These macros should be calculated by the preprocessor and are used - with compile-time constants only (so that there is no little-endian - overhead at runtime). */ -#define PP_HTONS(x) ((((x) & 0xff) << 8) | (((x) & 0xff00) >> 8)) -#define PP_NTOHS(x) PP_HTONS(x) -#define PP_HTONL(x) ((((x) & 0xff) << 24) | \ - (((x) & 0xff00) << 8) | \ - (((x) & 0xff0000UL) >> 8) | \ - (((x) & 0xff000000UL) >> 24)) -#define PP_NTOHL(x) PP_HTONL(x) - -#endif /* BYTE_ORDER == BIG_ENDIAN */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_DEF_H__ */ - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dhcp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dhcp.h deleted file mode 100644 index 32d93381d..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dhcp.h +++ /dev/null @@ -1,242 +0,0 @@ -/** @file - */ - -#ifndef __LWIP_DHCP_H__ -#define __LWIP_DHCP_H__ - -#include "lwip/opt.h" - -#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netif.h" -#include "lwip/udp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** period (in seconds) of the application calling dhcp_coarse_tmr() */ -#define DHCP_COARSE_TIMER_SECS 60 -/** period (in milliseconds) of the application calling dhcp_coarse_tmr() */ -#define DHCP_COARSE_TIMER_MSECS (DHCP_COARSE_TIMER_SECS * 1000UL) -/** period (in milliseconds) of the application calling dhcp_fine_tmr() */ -#define DHCP_FINE_TIMER_MSECS 500 - -#define DHCP_CHADDR_LEN 16U -#define DHCP_SNAME_LEN 64U -#define DHCP_FILE_LEN 128U - -struct dhcp -{ - /** transaction identifier of last sent request */ - u32_t xid; - /** our connection to the DHCP server */ - struct udp_pcb *pcb; - /** incoming msg */ - struct dhcp_msg *msg_in; - /** current DHCP state machine state */ - u8_t state; - /** retries of current request */ - u8_t tries; -#if LWIP_DHCP_AUTOIP_COOP - u8_t autoip_coop_state; -#endif - u8_t subnet_mask_given; - - struct pbuf *p_out; /* pbuf of outcoming msg */ - struct dhcp_msg *msg_out; /* outgoing msg */ - u16_t options_out_len; /* outgoing msg options length */ - u16_t request_timeout; /* #ticks with period DHCP_FINE_TIMER_SECS for request timeout */ - u16_t t1_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for renewal time */ - u16_t t2_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for rebind time */ - ip_addr_t server_ip_addr; /* dhcp server address that offered this lease */ - ip_addr_t offered_ip_addr; - ip_addr_t offered_sn_mask; - ip_addr_t offered_gw_addr; - - u32_t offered_t0_lease; /* lease period (in seconds) */ - u32_t offered_t1_renew; /* recommended renew time (usually 50% of lease period) */ - u32_t offered_t2_rebind; /* recommended rebind time (usually 66% of lease period) */ - /* @todo: LWIP_DHCP_BOOTP_FILE configuration option? - integrate with possible TFTP-client for booting? */ -#if LWIP_DHCP_BOOTP_FILE - ip_addr_t offered_si_addr; - char boot_file_name[DHCP_FILE_LEN]; -#endif /* LWIP_DHCP_BOOTPFILE */ -}; - -/* MUST be compiled with "pack structs" or equivalent! */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** minimum set of fields of any DHCP message */ -struct dhcp_msg -{ - PACK_STRUCT_FIELD(u8_t op); - PACK_STRUCT_FIELD(u8_t htype); - PACK_STRUCT_FIELD(u8_t hlen); - PACK_STRUCT_FIELD(u8_t hops); - PACK_STRUCT_FIELD(u32_t xid); - PACK_STRUCT_FIELD(u16_t secs); - PACK_STRUCT_FIELD(u16_t flags); - PACK_STRUCT_FIELD(ip_addr_p_t ciaddr); - PACK_STRUCT_FIELD(ip_addr_p_t yiaddr); - PACK_STRUCT_FIELD(ip_addr_p_t siaddr); - PACK_STRUCT_FIELD(ip_addr_p_t giaddr); - PACK_STRUCT_FIELD(u8_t chaddr[DHCP_CHADDR_LEN]); - PACK_STRUCT_FIELD(u8_t sname[DHCP_SNAME_LEN]); - PACK_STRUCT_FIELD(u8_t file[DHCP_FILE_LEN]); - PACK_STRUCT_FIELD(u32_t cookie); -#define DHCP_MIN_OPTIONS_LEN 68U -/** make sure user does not configure this too small */ -#if ((defined(DHCP_OPTIONS_LEN)) && (DHCP_OPTIONS_LEN < DHCP_MIN_OPTIONS_LEN)) -# undef DHCP_OPTIONS_LEN -#endif -/** allow this to be configured in lwipopts.h, but not too small */ -#if (!defined(DHCP_OPTIONS_LEN)) -/** set this to be sufficient for your options in outgoing DHCP msgs */ -# define DHCP_OPTIONS_LEN DHCP_MIN_OPTIONS_LEN -#endif - PACK_STRUCT_FIELD(u8_t options[DHCP_OPTIONS_LEN]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -void dhcp_set_struct(struct netif *netif, struct dhcp *dhcp); -/** Remove a struct dhcp previously set to the netif using dhcp_set_struct() */ -#define dhcp_remove_struct(netif) do { (netif)->dhcp = NULL; } while(0) -void dhcp_cleanup(struct netif *netif); -/** start DHCP configuration */ -err_t dhcp_start(struct netif *netif); -/** enforce early lease renewal (not needed normally)*/ -err_t dhcp_renew(struct netif *netif); -/** release the DHCP lease, usually called before dhcp_stop()*/ -err_t dhcp_release(struct netif *netif); -/** stop DHCP configuration */ -void dhcp_stop(struct netif *netif); -/** inform server of our manual IP address */ -void dhcp_inform(struct netif *netif); -/** Handle a possible change in the network configuration */ -void dhcp_network_changed(struct netif *netif); - -/** if enabled, check whether the offered IP address is not in use, using ARP */ -#if DHCP_DOES_ARP_CHECK -void dhcp_arp_reply(struct netif *netif, ip_addr_t *addr); -#endif - -/** to be called every minute */ -void dhcp_coarse_tmr(void); -/** to be called every half second */ -void dhcp_fine_tmr(void); - -/** DHCP message item offsets and length */ -#define DHCP_OP_OFS 0 -#define DHCP_HTYPE_OFS 1 -#define DHCP_HLEN_OFS 2 -#define DHCP_HOPS_OFS 3 -#define DHCP_XID_OFS 4 -#define DHCP_SECS_OFS 8 -#define DHCP_FLAGS_OFS 10 -#define DHCP_CIADDR_OFS 12 -#define DHCP_YIADDR_OFS 16 -#define DHCP_SIADDR_OFS 20 -#define DHCP_GIADDR_OFS 24 -#define DHCP_CHADDR_OFS 28 -#define DHCP_SNAME_OFS 44 -#define DHCP_FILE_OFS 108 -#define DHCP_MSG_LEN 236 - -#define DHCP_COOKIE_OFS DHCP_MSG_LEN -#define DHCP_OPTIONS_OFS (DHCP_MSG_LEN + 4) - -#define DHCP_CLIENT_PORT 68 -#define DHCP_SERVER_PORT 67 - -/** DHCP client states */ -#define DHCP_OFF 0 -#define DHCP_REQUESTING 1 -#define DHCP_INIT 2 -#define DHCP_REBOOTING 3 -#define DHCP_REBINDING 4 -#define DHCP_RENEWING 5 -#define DHCP_SELECTING 6 -#define DHCP_INFORMING 7 -#define DHCP_CHECKING 8 -#define DHCP_PERMANENT 9 -#define DHCP_BOUND 10 -/** not yet implemented #define DHCP_RELEASING 11 */ -#define DHCP_BACKING_OFF 12 - -/** AUTOIP cooperatation flags */ -#define DHCP_AUTOIP_COOP_STATE_OFF 0 -#define DHCP_AUTOIP_COOP_STATE_ON 1 - -#define DHCP_BOOTREQUEST 1 -#define DHCP_BOOTREPLY 2 - -/** DHCP message types */ -#define DHCP_DISCOVER 1 -#define DHCP_OFFER 2 -#define DHCP_REQUEST 3 -#define DHCP_DECLINE 4 -#define DHCP_ACK 5 -#define DHCP_NAK 6 -#define DHCP_RELEASE 7 -#define DHCP_INFORM 8 - -/** DHCP hardware type, currently only ethernet is supported */ -#define DHCP_HTYPE_ETH 1 - -#define DHCP_MAGIC_COOKIE 0x63825363UL - -/* This is a list of options for BOOTP and DHCP, see RFC 2132 for descriptions */ - -/** BootP options */ -#define DHCP_OPTION_PAD 0 -#define DHCP_OPTION_SUBNET_MASK 1 /* RFC 2132 3.3 */ -#define DHCP_OPTION_ROUTER 3 -#define DHCP_OPTION_DNS_SERVER 6 -#define DHCP_OPTION_HOSTNAME 12 -#define DHCP_OPTION_IP_TTL 23 -#define DHCP_OPTION_MTU 26 -#define DHCP_OPTION_BROADCAST 28 -#define DHCP_OPTION_TCP_TTL 37 -#define DHCP_OPTION_END 255 - -/** DHCP options */ -#define DHCP_OPTION_REQUESTED_IP 50 /* RFC 2132 9.1, requested IP address */ -#define DHCP_OPTION_LEASE_TIME 51 /* RFC 2132 9.2, time in seconds, in 4 bytes */ -#define DHCP_OPTION_OVERLOAD 52 /* RFC2132 9.3, use file and/or sname field for options */ - -#define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */ -#define DHCP_OPTION_MESSAGE_TYPE_LEN 1 - -#define DHCP_OPTION_SERVER_ID 54 /* RFC 2132 9.7, server IP address */ -#define DHCP_OPTION_PARAMETER_REQUEST_LIST 55 /* RFC 2132 9.8, requested option types */ - -#define DHCP_OPTION_MAX_MSG_SIZE 57 /* RFC 2132 9.10, message size accepted >= 576 */ -#define DHCP_OPTION_MAX_MSG_SIZE_LEN 2 - -#define DHCP_OPTION_T1 58 /* T1 renewal time */ -#define DHCP_OPTION_T2 59 /* T2 rebinding time */ -#define DHCP_OPTION_US 60 -#define DHCP_OPTION_CLIENT_ID 61 -#define DHCP_OPTION_TFTP_SERVERNAME 66 -#define DHCP_OPTION_BOOTFILE 67 - -/** possible combinations of overloading the file and sname fields with options */ -#define DHCP_OVERLOAD_NONE 0 -#define DHCP_OVERLOAD_FILE 1 -#define DHCP_OVERLOAD_SNAME 2 -#define DHCP_OVERLOAD_SNAME_FILE 3 - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_DHCP */ - -#endif /*__LWIP_DHCP_H__*/ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dns.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dns.h deleted file mode 100644 index 6c7d9b073..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/dns.h +++ /dev/null @@ -1,124 +0,0 @@ -/** - * lwip DNS resolver header file. - - * Author: Jim Pettinato - * April 2007 - - * ported from uIP resolv.c Copyright (c) 2002-2003, Adam Dunkels. - * - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. 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. - */ - -#ifndef __LWIP_DNS_H__ -#define __LWIP_DNS_H__ - -#include "lwip/opt.h" - -#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** DNS timer period */ -#define DNS_TMR_INTERVAL 1000 - -/** DNS field TYPE used for "Resource Records" */ -#define DNS_RRTYPE_A 1 /* a host address */ -#define DNS_RRTYPE_NS 2 /* an authoritative name server */ -#define DNS_RRTYPE_MD 3 /* a mail destination (Obsolete - use MX) */ -#define DNS_RRTYPE_MF 4 /* a mail forwarder (Obsolete - use MX) */ -#define DNS_RRTYPE_CNAME 5 /* the canonical name for an alias */ -#define DNS_RRTYPE_SOA 6 /* marks the start of a zone of authority */ -#define DNS_RRTYPE_MB 7 /* a mailbox domain name (EXPERIMENTAL) */ -#define DNS_RRTYPE_MG 8 /* a mail group member (EXPERIMENTAL) */ -#define DNS_RRTYPE_MR 9 /* a mail rename domain name (EXPERIMENTAL) */ -#define DNS_RRTYPE_NULL 10 /* a null RR (EXPERIMENTAL) */ -#define DNS_RRTYPE_WKS 11 /* a well known service description */ -#define DNS_RRTYPE_PTR 12 /* a domain name pointer */ -#define DNS_RRTYPE_HINFO 13 /* host information */ -#define DNS_RRTYPE_MINFO 14 /* mailbox or mail list information */ -#define DNS_RRTYPE_MX 15 /* mail exchange */ -#define DNS_RRTYPE_TXT 16 /* text strings */ - -/** DNS field CLASS used for "Resource Records" */ -#define DNS_RRCLASS_IN 1 /* the Internet */ -#define DNS_RRCLASS_CS 2 /* the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */ -#define DNS_RRCLASS_CH 3 /* the CHAOS class */ -#define DNS_RRCLASS_HS 4 /* Hesiod [Dyer 87] */ -#define DNS_RRCLASS_FLUSH 0x800 /* Flush bit */ - -/* The size used for the next line is rather a hack, but it prevents including socket.h in all files - that include memp.h, and that would possibly break portability (since socket.h defines some types - and constants possibly already define by the OS). - Calculation rule: - sizeof(struct addrinfo) + sizeof(struct sockaddr_in) + DNS_MAX_NAME_LENGTH + 1 byte zero-termination */ -#define NETDB_ELEM_SIZE (32 + 16 + DNS_MAX_NAME_LENGTH + 1) - -#if DNS_LOCAL_HOSTLIST -/** struct used for local host-list */ -struct local_hostlist_entry { - /** static hostname */ - const char *name; - /** static host address in network byteorder */ - ip_addr_t addr; - struct local_hostlist_entry *next; -}; -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC -#ifndef DNS_LOCAL_HOSTLIST_MAX_NAMELEN -#define DNS_LOCAL_HOSTLIST_MAX_NAMELEN DNS_MAX_NAME_LENGTH -#endif -#define LOCALHOSTLIST_ELEM_SIZE ((sizeof(struct local_hostlist_entry) + DNS_LOCAL_HOSTLIST_MAX_NAMELEN + 1)) -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ -#endif /* DNS_LOCAL_HOSTLIST */ - -/** Callback which is invoked when a hostname is found. - * A function of this type must be implemented by the application using the DNS resolver. - * @param name pointer to the name that was looked up. - * @param ipaddr pointer to an ip_addr_t containing the IP address of the hostname, - * or NULL if the name could not be found (or on any other error). - * @param callback_arg a user-specified callback argument passed to dns_gethostbyname -*/ -typedef void (*dns_found_callback)(const char *name, ip_addr_t *ipaddr, void *callback_arg); - -void dns_init(void); -void dns_tmr(void); -void dns_setserver(u8_t numdns, ip_addr_t *dnsserver); -ip_addr_t dns_getserver(u8_t numdns); -err_t dns_gethostbyname(const char *hostname, ip_addr_t *addr, - dns_found_callback found, void *callback_arg); - -#if DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC -int dns_local_removehost(const char *hostname, const ip_addr_t *addr); -err_t dns_local_addhost(const char *hostname, const ip_addr_t *addr); -#endif /* DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_DNS */ - -#endif /* __LWIP_DNS_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/err.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/err.h deleted file mode 100644 index ac907729f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/err.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ERR_H__ -#define __LWIP_ERR_H__ - -#include "lwip/opt.h" -#include "lwip/arch.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Define LWIP_ERR_T in cc.h if you want to use - * a different type for your platform (must be signed). */ -#ifdef LWIP_ERR_T -typedef LWIP_ERR_T err_t; -#else /* LWIP_ERR_T */ -typedef s8_t err_t; -#endif /* LWIP_ERR_T*/ - -/* Definitions for error constants. */ - -#define ERR_OK 0 /* No error, everything OK. */ -#define ERR_MEM -1 /* Out of memory error. */ -#define ERR_BUF -2 /* Buffer error. */ -#define ERR_TIMEOUT -3 /* Timeout. */ -#define ERR_RTE -4 /* Routing problem. */ -#define ERR_INPROGRESS -5 /* Operation in progress */ -#define ERR_VAL -6 /* Illegal value. */ -#define ERR_WOULDBLOCK -7 /* Operation would block. */ -#define ERR_USE -8 /* Address in use. */ -#define ERR_ISCONN -9 /* Already connected. */ - -#define ERR_IS_FATAL(e) ((e) < ERR_ISCONN) - -#define ERR_ABRT -10 /* Connection aborted. */ -#define ERR_RST -11 /* Connection reset. */ -#define ERR_CLSD -12 /* Connection closed. */ -#define ERR_CONN -13 /* Not connected. */ - -#define ERR_ARG -14 /* Illegal argument. */ - -#define ERR_IF -15 /* Low-level netif error */ - - -#ifdef LWIP_DEBUG -extern const char *lwip_strerr(err_t err); -#else -#define lwip_strerr(x) "" -#endif /* LWIP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ERR_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/inet_chksum.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/inet_chksum.h deleted file mode 100644 index e1687888f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/inet_chksum.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INET_CHKSUM_H__ -#define __LWIP_INET_CHKSUM_H__ - -#include "lwip/opt.h" - -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" - -/** Swap the bytes in an u16_t: much like htons() for little-endian */ -#ifndef SWAP_BYTES_IN_WORD -#if LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN) -/* little endian and PLATFORM_BYTESWAP defined */ -#define SWAP_BYTES_IN_WORD(w) LWIP_PLATFORM_HTONS(w) -#else /* LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN) */ -/* can't use htons on big endian (or PLATFORM_BYTESWAP not defined)... */ -#define SWAP_BYTES_IN_WORD(w) (((w) & 0xff) << 8) | (((w) & 0xff00) >> 8) -#endif /* LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN)*/ -#endif /* SWAP_BYTES_IN_WORD */ - -/** Split an u32_t in two u16_ts and add them up */ -#ifndef FOLD_U32T -#define FOLD_U32T(u) (((u) >> 16) + ((u) & 0x0000ffffUL)) -#endif - -#if LWIP_CHECKSUM_ON_COPY -/** Function-like macro: same as MEMCPY but returns the checksum of copied data - as u16_t */ -#ifndef LWIP_CHKSUM_COPY -#define LWIP_CHKSUM_COPY(dst, src, len) lwip_chksum_copy(dst, src, len) -#ifndef LWIP_CHKSUM_COPY_ALGORITHM -#define LWIP_CHKSUM_COPY_ALGORITHM 1 -#endif /* LWIP_CHKSUM_COPY_ALGORITHM */ -#endif /* LWIP_CHKSUM_COPY */ -#else /* LWIP_CHECKSUM_ON_COPY */ -#define LWIP_CHKSUM_COPY_ALGORITHM 0 -#endif /* LWIP_CHECKSUM_ON_COPY */ - -#ifdef __cplusplus -extern "C" { -#endif - -u16_t inet_chksum(void *dataptr, u16_t len); -u16_t inet_chksum_pbuf(struct pbuf *p); -u16_t inet_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, - ip_addr_t *src, ip_addr_t *dest); -u16_t inet_chksum_pseudo_partial(struct pbuf *p, u8_t proto, - u16_t proto_len, u16_t chksum_len, ip_addr_t *src, ip_addr_t *dest); -#if LWIP_CHKSUM_COPY_ALGORITHM -u16_t lwip_chksum_copy(void *dst, const void *src, u16_t len); -#endif /* LWIP_CHKSUM_COPY_ALGORITHM */ - -#if LWIP_IPV6 -u16_t ip6_chksum_pseudo(struct pbuf *p, u8_t proto, u16_t proto_len, - ip6_addr_t *src, ip6_addr_t *dest); -u16_t ip6_chksum_pseudo_partial(struct pbuf *p, u8_t proto, u16_t proto_len, - u16_t chksum_len, ip6_addr_t *src, ip6_addr_t *dest); - -#define ipX_chksum_pseudo(isipv6, p, proto, proto_len, src, dest) \ - ((isipv6) ? \ - ip6_chksum_pseudo(p, proto, proto_len, ipX_2_ip6(src), ipX_2_ip6(dest)) :\ - inet_chksum_pseudo(p, proto, proto_len, ipX_2_ip(src), ipX_2_ip(dest))) -#define ipX_chksum_pseudo_partial(isipv6, p, proto, proto_len, chksum_len, src, dest) \ - ((isipv6) ? \ - ip6_chksum_pseudo_partial(p, proto, proto_len, chksum_len, ipX_2_ip6(src), ipX_2_ip6(dest)) :\ - inet_chksum_pseudo_partial(p, proto, proto_len, chksum_len, ipX_2_ip(src), ipX_2_ip(dest))) - -#else /* LWIP_IPV6 */ - -#define ipX_chksum_pseudo(isipv6, p, proto, proto_len, src, dest) \ - inet_chksum_pseudo(p, proto, proto_len, src, dest) -#define ipX_chksum_pseudo_partial(isipv6, p, proto, proto_len, chksum_len, src, dest) \ - inet_chksum_pseudo_partial(p, proto, proto_len, chksum_len, src, dest) - -#endif /* LWIP_IPV6 */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INET_H__ */ - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/init.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/init.h deleted file mode 100644 index 4e2e28565..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/init.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INIT_H__ -#define __LWIP_INIT_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** X.x.x: Major version of the stack */ -#define LWIP_VERSION_MAJOR 1U -/** x.X.x: Minor version of the stack */ -#define LWIP_VERSION_MINOR 4U -/** x.x.X: Revision of the stack */ -#define LWIP_VERSION_REVISION 1U -/** For release candidates, this is set to 1..254 - * For official releases, this is set to 255 (LWIP_RC_RELEASE) - * For development versions (CVS), this is set to 0 (LWIP_RC_DEVELOPMENT) */ -#define LWIP_VERSION_RC 0U - -/** LWIP_VERSION_RC is set to LWIP_RC_RELEASE for official releases */ -#define LWIP_RC_RELEASE 255U -/** LWIP_VERSION_RC is set to LWIP_RC_DEVELOPMENT for CVS versions */ -#define LWIP_RC_DEVELOPMENT 0U - -#define LWIP_VERSION_IS_RELEASE (LWIP_VERSION_RC == LWIP_RC_RELEASE) -#define LWIP_VERSION_IS_DEVELOPMENT (LWIP_VERSION_RC == LWIP_RC_DEVELOPMENT) -#define LWIP_VERSION_IS_RC ((LWIP_VERSION_RC != LWIP_RC_RELEASE) && (LWIP_VERSION_RC != LWIP_RC_DEVELOPMENT)) - -/** Provides the version of the stack */ -#define LWIP_VERSION (LWIP_VERSION_MAJOR << 24 | LWIP_VERSION_MINOR << 16 | \ - LWIP_VERSION_REVISION << 8 | LWIP_VERSION_RC) - -/* Modules initialization */ -void lwip_init(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INIT_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip.h deleted file mode 100644 index 6de95b180..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip.h +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP_H__ -#define __LWIP_IP_H__ - -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/err.h" -#include "lwip/netif.h" -#include "lwip/ip4.h" -#include "lwip/ip6.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* This is passed as the destination address to ip_output_if (not - to ip_output), meaning that an IP header already is constructed - in the pbuf. This is used when TCP retransmits. */ -#ifdef IP_HDRINCL -#undef IP_HDRINCL -#endif /* IP_HDRINCL */ -#define IP_HDRINCL NULL - -#if LWIP_NETIF_HWADDRHINT -#define IP_PCB_ADDRHINT ;u8_t addr_hint -#else -#define IP_PCB_ADDRHINT -#endif /* LWIP_NETIF_HWADDRHINT */ - -#if LWIP_IPV6 -#define IP_PCB_ISIPV6_MEMBER u8_t isipv6; -#define IP_PCB_IPVER_EQ(pcb1, pcb2) ((pcb1)->isipv6 == (pcb2)->isipv6) -#define IP_PCB_IPVER_INPUT_MATCH(pcb) (ip_current_is_v6() ? \ - ((pcb)->isipv6 != 0) : \ - ((pcb)->isipv6 == 0)) -#define PCB_ISIPV6(pcb) ((pcb)->isipv6) -#else -#define IP_PCB_ISIPV6_MEMBER -#define IP_PCB_IPVER_EQ(pcb1, pcb2) 1 -#define IP_PCB_IPVER_INPUT_MATCH(pcb) 1 -#define PCB_ISIPV6(pcb) 0 -#endif /* LWIP_IPV6 */ - -/* This is the common part of all PCB types. It needs to be at the - beginning of a PCB type definition. It is located here so that - changes to this common part are made in one location instead of - having to change all PCB structs. */ -#define IP_PCB \ - IP_PCB_ISIPV6_MEMBER \ - /* ip addresses in network byte order */ \ - ipX_addr_t local_ip; \ - ipX_addr_t remote_ip; \ - /* Socket options */ \ - u8_t so_options; \ - /* Type Of Service */ \ - u8_t tos; \ - /* Time To Live */ \ - u8_t ttl \ - /* link layer address resolution hint */ \ - IP_PCB_ADDRHINT - -struct ip_pcb { -/* Common members of all PCB types */ - IP_PCB; -}; - -/* - * Option flags per-socket. These are the same like SO_XXX. - */ -/*#define SOF_DEBUG 0x01U Unimplemented: turn on debugging info recording */ -#define SOF_ACCEPTCONN 0x02U /* socket has had listen() */ -#define SOF_REUSEADDR 0x04U /* allow local address reuse */ -#define SOF_KEEPALIVE 0x08U /* keep connections alive */ -/*#define SOF_DONTROUTE 0x10U Unimplemented: just use interface addresses */ -#define SOF_BROADCAST 0x20U /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ -/*#define SOF_USELOOPBACK 0x40U Unimplemented: bypass hardware when possible */ -#define SOF_LINGER 0x80U /* linger on close if data present */ -/*#define SOF_OOBINLINE 0x0100U Unimplemented: leave received OOB data in line */ -/*#define SOF_REUSEPORT 0x0200U Unimplemented: allow local address & port reuse */ - -/* These flags are inherited (e.g. from a listen-pcb to a connection-pcb): */ -#define SOF_INHERITED (SOF_REUSEADDR|SOF_KEEPALIVE|SOF_LINGER/*|SOF_DEBUG|SOF_DONTROUTE|SOF_OOBINLINE*/) - -/* Global variables of this module, kept in a struct for efficient access using base+index. */ -struct ip_globals -{ - /** The interface that provided the packet for the current callback invocation. */ - struct netif *current_netif; - /** Header of the input packet currently being processed. */ - const struct ip_hdr *current_ip4_header; -#if LWIP_IPV6 - /** Header of the input IPv6 packet currently being processed. */ - const struct ip6_hdr *current_ip6_header; -#endif /* LWIP_IPV6 */ - /** Total header length of current_ip4/6_header (i.e. after this, the UDP/TCP header starts) */ - u16_t current_ip_header_tot_len; - /** Source IP address of current_header */ - ipX_addr_t current_iphdr_src; - /** Destination IP address of current_header */ - ipX_addr_t current_iphdr_dest; -}; -extern struct ip_globals ip_data; - - -/** Get the interface that received the current packet. - * This function must only be called from a receive callback (udp_recv, - * raw_recv, tcp_accept). It will return NULL otherwise. */ -#define ip_current_netif() (ip_data.current_netif) -/** Get the IP header of the current packet. - * This function must only be called from a receive callback (udp_recv, - * raw_recv, tcp_accept). It will return NULL otherwise. */ -#define ip_current_header() (ip_data.current_ip4_header) -/** Total header length of ip(6)_current_header() (i.e. after this, the UDP/TCP header starts) */ -#define ip_current_header_tot_len() (ip_data.current_ip_header_tot_len) -/** Source IP address of current_header */ -#define ipX_current_src_addr() (&ip_data.current_iphdr_src) -/** Destination IP address of current_header */ -#define ipX_current_dest_addr() (&ip_data.current_iphdr_dest) - -#if LWIP_IPV6 -/** Get the IPv6 header of the current packet. - * This function must only be called from a receive callback (udp_recv, - * raw_recv, tcp_accept). It will return NULL otherwise. */ -#define ip6_current_header() (ip_data.current_ip6_header) -/** Returns TRUE if the current IP input packet is IPv6, FALSE if it is IPv4 */ -#define ip_current_is_v6() (ip6_current_header() != NULL) -/** Source IPv6 address of current_header */ -#define ip6_current_src_addr() (ipX_2_ip6(&ip_data.current_iphdr_src)) -/** Destination IPv6 address of current_header */ -#define ip6_current_dest_addr() (ipX_2_ip6(&ip_data.current_iphdr_dest)) -/** Get the transport layer protocol */ -#define ip_current_header_proto() (ip_current_is_v6() ? \ - IP6H_NEXTH(ip6_current_header()) :\ - IPH_PROTO(ip_current_header())) -/** Get the transport layer header */ -#define ipX_next_header_ptr() ((void*)((ip_current_is_v6() ? \ - (u8_t*)ip6_current_header() : (u8_t*)ip_current_header()) + ip_current_header_tot_len())) - -/** Set an IP_PCB to IPv6 (IPv4 is the default) */ -#define ip_set_v6(pcb, val) do{if(pcb != NULL) { pcb->isipv6 = val; }}while(0) - -/** Source IP4 address of current_header */ -#define ip_current_src_addr() (ipX_2_ip(&ip_data.current_iphdr_src)) -/** Destination IP4 address of current_header */ -#define ip_current_dest_addr() (ipX_2_ip(&ip_data.current_iphdr_dest)) - -#else /* LWIP_IPV6 */ - -/** Always returns FALSE when only supporting IPv4 */ -#define ip_current_is_v6() 0 -/** Get the transport layer protocol */ -#define ip_current_header_proto() IPH_PROTO(ip_current_header()) -/** Get the transport layer header */ -#define ipX_next_header_ptr() ((void*)((u8_t*)ip_current_header() + ip_current_header_tot_len())) -/** Source IP4 address of current_header */ -#define ip_current_src_addr() (&ip_data.current_iphdr_src) -/** Destination IP4 address of current_header */ -#define ip_current_dest_addr() (&ip_data.current_iphdr_dest) - -#endif /* LWIP_IPV6 */ - -/** Union source address of current_header */ -#define ipX_current_src_addr() (&ip_data.current_iphdr_src) -/** Union destination address of current_header */ -#define ipX_current_dest_addr() (&ip_data.current_iphdr_dest) - -#if LWIP_IPV6 -#define ipX_output(isipv6, p, src, dest, ttl, tos, proto) \ - ((isipv6) ? \ - ip6_output(p, ipX_2_ip6(src), ipX_2_ip6(dest), ttl, tos, proto) : \ - ip_output(p, ipX_2_ip(src), ipX_2_ip(dest), ttl, tos, proto)) -#define ipX_output_if(isipv6, p, src, dest, ttl, tos, proto, netif) \ - ((isipv6) ? \ - ip6_output_if(p, ip_2_ip6(src), ip_2_ip6(dest), ttl, tos, proto, netif) : \ - ip_output_if(p, (src), (dest), ttl, tos, proto, netif)) -#define ipX_output_hinted(isipv6, p, src, dest, ttl, tos, proto, addr_hint) \ - ((isipv6) ? \ - ip6_output_hinted(p, ipX_2_ip6(src), ipX_2_ip6(dest), ttl, tos, proto, addr_hint) : \ - ip_output_hinted(p, ipX_2_ip(src), ipX_2_ip(dest), ttl, tos, proto, addr_hint)) -#define ipX_route(isipv6, src, dest) \ - ((isipv6) ? \ - ip6_route(ipX_2_ip6(src), ipX_2_ip6(dest)) : \ - ip_route(ipX_2_ip(dest))) -#define ipX_netif_get_local_ipX(isipv6, netif, dest) \ - ((isipv6) ? \ - ip6_netif_get_local_ipX(netif, ipX_2_ip6(dest)) : \ - ip_netif_get_local_ipX(netif)) -#define ipX_debug_print(is_ipv6, p) ((is_ipv6) ? ip6_debug_print(p) : ip_debug_print(p)) -#else /* LWIP_IPV6 */ -#define ipX_output(isipv6, p, src, dest, ttl, tos, proto) \ - ip_output(p, src, dest, ttl, tos, proto) -#define ipX_output_if(isipv6, p, src, dest, ttl, tos, proto, netif) \ - ip_output_if(p, src, dest, ttl, tos, proto, netif) -#define ipX_output_hinted(isipv6, p, src, dest, ttl, tos, proto, addr_hint) \ - ip_output_hinted(p, src, dest, ttl, tos, proto, addr_hint) -#define ipX_route(isipv6, src, dest) \ - ip_route(ipX_2_ip(dest)) -#define ipX_netif_get_local_ipX(isipv6, netif, dest) \ - ip_netif_get_local_ipX(netif) -#define ipX_debug_print(is_ipv6, p) ip_debug_print(p) -#endif /* LWIP_IPV6 */ - -#define ipX_route_get_local_ipX(isipv6, src, dest, netif, ipXaddr) do { \ - (netif) = ipX_route(isipv6, src, dest); \ - (ipXaddr) = ipX_netif_get_local_ipX(isipv6, netif, dest); \ -}while(0) - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_H__ */ - - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip_addr.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip_addr.h deleted file mode 100644 index 9690bf8fd..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/ip_addr.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP_ADDR_H__ -#define __LWIP_IP_ADDR_H__ - -#include "lwip/opt.h" -#include "lwip/def.h" - -#include "lwip/ip4_addr.h" -#include "lwip/ip6_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if LWIP_IPV6 -/* A union struct for both IP version's addresses. */ -typedef union { - ip_addr_t ip4; - ip6_addr_t ip6; -} ipX_addr_t; - -/** These functions only exist for type-safe conversion from ip_addr_t to - ip6_addr_t and back */ -#if LWIP_ALLOW_STATIC_FN_IN_HEADER -static ip6_addr_t* ip_2_ip6(ip_addr_t *ipaddr) -{ return (ip6_addr_t*)ipaddr;} -static ip_addr_t* ip6_2_ip(ip6_addr_t *ip6addr) -{ return (ip_addr_t*)ip6addr; } -static ipX_addr_t* ip_2_ipX(ip_addr_t *ipaddr) -{ return (ipX_addr_t*)ipaddr; } -static ipX_addr_t* ip6_2_ipX(ip6_addr_t *ip6addr) -{ return (ipX_addr_t*)ip6addr; } -#else /* LWIP_ALLOW_STATIC_FN_IN_HEADER */ -#define ip_2_ip6(ipaddr) ((ip6_addr_t*)(ipaddr)) -#define ip6_2_ip(ip6addr) ((ip_addr_t*)(ip6addr)) -#define ip_2_ipX(ipaddr) ((ipX_addr_t*)ipaddr) -#define ip6_2_ipX(ip6addr) ((ipX_addr_t*)ip6addr) -#endif /* LWIP_ALLOW_STATIC_FN_IN_HEADER*/ -#define ipX_2_ip6(ip6addr) (&((ip6addr)->ip6)) -#define ipX_2_ip(ipaddr) (&((ipaddr)->ip4)) - -#define ipX_addr_copy(is_ipv6, dest, src) do{if(is_ipv6){ \ - ip6_addr_copy((dest).ip6, (src).ip6); }else{ \ - ip_addr_copy((dest).ip4, (src).ip4); }}while(0) -#define ipX_addr_set(is_ipv6, dest, src) do{if(is_ipv6){ \ - ip6_addr_set(ipX_2_ip6(dest), ipX_2_ip6(src)); }else{ \ - ip_addr_set(ipX_2_ip(dest), ipX_2_ip(src)); }}while(0) -#define ipX_addr_set_ipaddr(is_ipv6, dest, src) do{if(is_ipv6){ \ - ip6_addr_set(ipX_2_ip6(dest), ip_2_ip6(src)); }else{ \ - ip_addr_set(ipX_2_ip(dest), src); }}while(0) -#define ipX_addr_set_zero(is_ipv6, ipaddr) do{if(is_ipv6){ \ - ip6_addr_set_zero(ipX_2_ip6(ipaddr)); }else{ \ - ip_addr_set_zero(ipX_2_ip(ipaddr)); }}while(0) -#define ipX_addr_set_any(is_ipv6, ipaddr) do{if(is_ipv6){ \ - ip6_addr_set_any(ipX_2_ip6(ipaddr)); }else{ \ - ip_addr_set_any(ipX_2_ip(ipaddr)); }}while(0) -#define ipX_addr_set_loopback(is_ipv6, ipaddr) do{if(is_ipv6){ \ - ip6_addr_set_loopback(ipX_2_ip6(ipaddr)); }else{ \ - ip_addr_set_loopback(ipX_2_ip(ipaddr)); }}while(0) -#define ipX_addr_set_hton(is_ipv6, dest, src) do{if(is_ipv6){ \ - ip6_addr_set_hton(ipX_2_ip6(ipaddr), (src)) ;}else{ \ - ip_addr_set_hton(ipX_2_ip(ipaddr), (src));}}while(0) -#define ipX_addr_cmp(is_ipv6, addr1, addr2) ((is_ipv6) ? \ - ip6_addr_cmp(ipX_2_ip6(addr1), ipX_2_ip6(addr2)) : \ - ip_addr_cmp(ipX_2_ip(addr1), ipX_2_ip(addr2))) -#define ipX_addr_isany(is_ipv6, ipaddr) ((is_ipv6) ? \ - ip6_addr_isany(ipX_2_ip6(ipaddr)) : \ - ip_addr_isany(ipX_2_ip(ipaddr))) -#define ipX_addr_ismulticast(is_ipv6, ipaddr) ((is_ipv6) ? \ - ip6_addr_ismulticast(ipX_2_ip6(ipaddr)) : \ - ip_addr_ismulticast(ipX_2_ip(ipaddr))) -#define ipX_addr_debug_print(is_ipv6, debug, ipaddr) do { if(is_ipv6) { \ - ip6_addr_debug_print(debug, ipX_2_ip6(ipaddr)); } else { \ - ip_addr_debug_print(debug, ipX_2_ip(ipaddr)); }}while(0) - -#else /* LWIP_IPV6 */ - -typedef ip_addr_t ipX_addr_t; -#define ipX_2_ip(ipaddr) (ipaddr) -#define ip_2_ipX(ipaddr) (ipaddr) - -#define ipX_addr_copy(is_ipv6, dest, src) ip_addr_copy(dest, src) -#define ipX_addr_set(is_ipv6, dest, src) ip_addr_set(dest, src) -#define ipX_addr_set_ipaddr(is_ipv6, dest, src) ip_addr_set(dest, src) -#define ipX_addr_set_zero(is_ipv6, ipaddr) ip_addr_set_zero(ipaddr) -#define ipX_addr_set_any(is_ipv6, ipaddr) ip_addr_set_any(ipaddr) -#define ipX_addr_set_loopback(is_ipv6, ipaddr) ip_addr_set_loopback(ipaddr) -#define ipX_addr_set_hton(is_ipv6, dest, src) ip_addr_set_hton(dest, src) -#define ipX_addr_cmp(is_ipv6, addr1, addr2) ip_addr_cmp(addr1, addr2) -#define ipX_addr_isany(is_ipv6, ipaddr) ip_addr_isany(ipaddr) -#define ipX_addr_ismulticast(is_ipv6, ipaddr) ip_addr_ismulticast(ipaddr) -#define ipX_addr_debug_print(is_ipv6, debug, ipaddr) ip_addr_debug_print(debug, ipaddr) - -#endif /* LWIP_IPV6 */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_ADDR_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/mem.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/mem.h deleted file mode 100644 index 9507c0aec..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/mem.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_MEM_H__ -#define __LWIP_MEM_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if MEM_LIBC_MALLOC - -#include /* for size_t */ - -typedef size_t mem_size_t; - -/* aliases for C library malloc() */ -#define mem_init() -/* in case C library malloc() needs extra protection, - * allow these defines to be overridden. - */ -#ifndef mem_free -#define mem_free free -#endif -#ifndef mem_malloc -#define mem_malloc malloc -#endif -#ifndef mem_calloc -#define mem_calloc calloc -#endif -/* Since there is no C library allocation function to shrink memory without - moving it, define this to nothing. */ -#ifndef mem_trim -#define mem_trim(mem, size) (mem) -#endif -#else /* MEM_LIBC_MALLOC */ - -/* MEM_SIZE would have to be aligned, but using 64000 here instead of - * 65535 leaves some room for alignment... - */ -#if MEM_SIZE > 64000L -typedef u32_t mem_size_t; -#define MEM_SIZE_F U32_F -#else -typedef u16_t mem_size_t; -#define MEM_SIZE_F U16_F -#endif /* MEM_SIZE > 64000 */ - -#if MEM_USE_POOLS -/** mem_init is not used when using pools instead of a heap */ -#define mem_init() -/** mem_trim is not used when using pools instead of a heap: - we can't free part of a pool element and don't want to copy the rest */ -#define mem_trim(mem, size) (mem) -#else /* MEM_USE_POOLS */ -/* lwIP alternative malloc */ -void mem_init(void); -void *mem_trim(void *mem, mem_size_t size); -#endif /* MEM_USE_POOLS */ -void *mem_malloc(mem_size_t size); -void *mem_calloc(mem_size_t count, mem_size_t size); -void mem_free(void *mem); -#endif /* MEM_LIBC_MALLOC */ - -/** Calculate memory size for an aligned buffer - returns the next highest - * multiple of MEM_ALIGNMENT (e.g. LWIP_MEM_ALIGN_SIZE(3) and - * LWIP_MEM_ALIGN_SIZE(4) will both yield 4 for MEM_ALIGNMENT == 4). - */ -#ifndef LWIP_MEM_ALIGN_SIZE -#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1)) -#endif - -/** Calculate safe memory size for an aligned buffer when using an unaligned - * type as storage. This includes a safety-margin on (MEM_ALIGNMENT - 1) at the - * start (e.g. if buffer is u8_t[] and actual data will be u32_t*) - */ -#ifndef LWIP_MEM_ALIGN_BUFFER -#define LWIP_MEM_ALIGN_BUFFER(size) (((size) + MEM_ALIGNMENT - 1)) -#endif - -/** Align a memory pointer to the alignment defined by MEM_ALIGNMENT - * so that ADDR % MEM_ALIGNMENT == 0 - */ -#ifndef LWIP_MEM_ALIGN -#define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1))) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_MEM_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp.h deleted file mode 100644 index f0d073994..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __LWIP_MEMP_H__ -#define __LWIP_MEMP_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Create the list of all memory pools managed by memp. MEMP_MAX represents a NULL pool at the end */ -typedef enum { -#define LWIP_MEMPOOL(name,num,size,desc) MEMP_##name, -#include "lwip/memp_std.h" - MEMP_MAX -} memp_t; - -#if MEM_USE_POOLS -/* Use a helper type to get the start and end of the user "memory pools" for mem_malloc */ -typedef enum { - /* Get the first (via: - MEMP_POOL_HELPER_START = ((u8_t) 1*MEMP_POOL_A + 0*MEMP_POOL_B + 0*MEMP_POOL_C + 0)*/ - MEMP_POOL_HELPER_FIRST = ((u8_t) -#define LWIP_MEMPOOL(name,num,size,desc) -#define LWIP_MALLOC_MEMPOOL_START 1 -#define LWIP_MALLOC_MEMPOOL(num, size) * MEMP_POOL_##size + 0 -#define LWIP_MALLOC_MEMPOOL_END -#include "lwip/memp_std.h" - ) , - /* Get the last (via: - MEMP_POOL_HELPER_END = ((u8_t) 0 + MEMP_POOL_A*0 + MEMP_POOL_B*0 + MEMP_POOL_C*1) */ - MEMP_POOL_HELPER_LAST = ((u8_t) -#define LWIP_MEMPOOL(name,num,size,desc) -#define LWIP_MALLOC_MEMPOOL_START -#define LWIP_MALLOC_MEMPOOL(num, size) 0 + MEMP_POOL_##size * -#define LWIP_MALLOC_MEMPOOL_END 1 -#include "lwip/memp_std.h" - ) -} memp_pool_helper_t; - -/* The actual start and stop values are here (cast them over) - We use this helper type and these defines so we can avoid using const memp_t values */ -#define MEMP_POOL_FIRST ((memp_t) MEMP_POOL_HELPER_FIRST) -#define MEMP_POOL_LAST ((memp_t) MEMP_POOL_HELPER_LAST) -#endif /* MEM_USE_POOLS */ - -#if MEMP_MEM_MALLOC || MEM_USE_POOLS -extern const u16_t memp_sizes[MEMP_MAX]; -#endif /* MEMP_MEM_MALLOC || MEM_USE_POOLS */ - -#if MEMP_MEM_MALLOC - -#include "mem.h" - -#define memp_init() -#define memp_malloc(type) mem_malloc(memp_sizes[type]) -#define memp_free(type, mem) mem_free(mem) - -#else /* MEMP_MEM_MALLOC */ - -#if MEM_USE_POOLS -/** This structure is used to save the pool one element came from. */ -struct memp_malloc_helper -{ - memp_t poolnr; -}; -#endif /* MEM_USE_POOLS */ - -void memp_init(void); - -#if MEMP_OVERFLOW_CHECK -void *memp_malloc_fn(memp_t type, const char* file, const int line); -#define memp_malloc(t) memp_malloc_fn((t), __FILE__, __LINE__) -#else -void *memp_malloc(memp_t type); -#endif -void memp_free(memp_t type, void *mem); - -#endif /* MEMP_MEM_MALLOC */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_MEMP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp_std.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp_std.h deleted file mode 100644 index e7b90f29a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/memp_std.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * SETUP: Make sure we define everything we will need. - * - * We have create three types of pools: - * 1) MEMPOOL - standard pools - * 2) MALLOC_MEMPOOL - to be used by mem_malloc in mem.c - * 3) PBUF_MEMPOOL - a mempool of pbuf's, so include space for the pbuf struct - * - * If the include'r doesn't require any special treatment of each of the types - * above, then will declare #2 & #3 to be just standard mempools. - */ -#ifndef LWIP_MALLOC_MEMPOOL -/* This treats "malloc pools" just like any other pool. - The pools are a little bigger to provide 'size' as the amount of user data. */ -#define LWIP_MALLOC_MEMPOOL(num, size) LWIP_MEMPOOL(POOL_##size, num, (size + sizeof(struct memp_malloc_helper)), "MALLOC_"#size) -#define LWIP_MALLOC_MEMPOOL_START -#define LWIP_MALLOC_MEMPOOL_END -#endif /* LWIP_MALLOC_MEMPOOL */ - -#ifndef LWIP_PBUF_MEMPOOL -/* This treats "pbuf pools" just like any other pool. - * Allocates buffers for a pbuf struct AND a payload size */ -#define LWIP_PBUF_MEMPOOL(name, num, payload, desc) LWIP_MEMPOOL(name, num, (MEMP_ALIGN_SIZE(sizeof(struct pbuf)) + MEMP_ALIGN_SIZE(payload)), desc) -#endif /* LWIP_PBUF_MEMPOOL */ - - -/* - * A list of internal pools used by LWIP. - * - * LWIP_MEMPOOL(pool_name, number_elements, element_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - */ -#if LWIP_RAW -LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB") -#endif /* LWIP_RAW */ - -#if LWIP_UDP -LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB") -#endif /* LWIP_UDP */ - -#if LWIP_TCP -LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB") -LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN") -LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG") -#endif /* LWIP_TCP */ - -#if IP_REASSEMBLY -LWIP_MEMPOOL(REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip_reassdata), "REASSDATA") -#endif /* IP_REASSEMBLY */ -#if (IP_FRAG && !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF) || LWIP_IPv6_FRAG -LWIP_MEMPOOL(FRAG_PBUF, MEMP_NUM_FRAG_PBUF, sizeof(struct pbuf_custom_ref),"FRAG_PBUF") -#endif /* IP_FRAG && !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF */ - -#if LWIP_NETCONN -LWIP_MEMPOOL(NETBUF, MEMP_NUM_NETBUF, sizeof(struct netbuf), "NETBUF") -LWIP_MEMPOOL(NETCONN, MEMP_NUM_NETCONN, sizeof(struct netconn), "NETCONN") -#endif /* LWIP_NETCONN */ - -#if NO_SYS==0 -LWIP_MEMPOOL(TCPIP_MSG_API, MEMP_NUM_TCPIP_MSG_API, sizeof(struct tcpip_msg), "TCPIP_MSG_API") -#if !LWIP_TCPIP_CORE_LOCKING_INPUT -LWIP_MEMPOOL(TCPIP_MSG_INPKT,MEMP_NUM_TCPIP_MSG_INPKT, sizeof(struct tcpip_msg), "TCPIP_MSG_INPKT") -#endif /* !LWIP_TCPIP_CORE_LOCKING_INPUT */ -#endif /* NO_SYS==0 */ - -#if ARP_QUEUEING -LWIP_MEMPOOL(ARP_QUEUE, MEMP_NUM_ARP_QUEUE, sizeof(struct etharp_q_entry), "ARP_QUEUE") -#endif /* ARP_QUEUEING */ - -#if LWIP_IGMP -LWIP_MEMPOOL(IGMP_GROUP, MEMP_NUM_IGMP_GROUP, sizeof(struct igmp_group), "IGMP_GROUP") -#endif /* LWIP_IGMP */ - -#if (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS)) /* LWIP_TIMERS */ -LWIP_MEMPOOL(SYS_TIMEOUT, MEMP_NUM_SYS_TIMEOUT, sizeof(struct sys_timeo), "SYS_TIMEOUT") -#endif /* LWIP_TIMERS */ - -#if LWIP_SNMP -LWIP_MEMPOOL(SNMP_ROOTNODE, MEMP_NUM_SNMP_ROOTNODE, sizeof(struct mib_list_rootnode), "SNMP_ROOTNODE") -LWIP_MEMPOOL(SNMP_NODE, MEMP_NUM_SNMP_NODE, sizeof(struct mib_list_node), "SNMP_NODE") -LWIP_MEMPOOL(SNMP_VARBIND, MEMP_NUM_SNMP_VARBIND, sizeof(struct snmp_varbind), "SNMP_VARBIND") -LWIP_MEMPOOL(SNMP_VALUE, MEMP_NUM_SNMP_VALUE, SNMP_MAX_VALUE_SIZE, "SNMP_VALUE") -#endif /* LWIP_SNMP */ -#if LWIP_DNS && LWIP_SOCKET -LWIP_MEMPOOL(NETDB, MEMP_NUM_NETDB, NETDB_ELEM_SIZE, "NETDB") -#endif /* LWIP_DNS && LWIP_SOCKET */ -#if LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC -LWIP_MEMPOOL(LOCALHOSTLIST, MEMP_NUM_LOCALHOSTLIST, LOCALHOSTLIST_ELEM_SIZE, "LOCALHOSTLIST") -#endif /* LWIP_DNS && DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ -#if PPP_SUPPORT && PPPOE_SUPPORT -LWIP_MEMPOOL(PPPOE_IF, MEMP_NUM_PPPOE_INTERFACES, sizeof(struct pppoe_softc), "PPPOE_IF") -#endif /* PPP_SUPPORT && PPPOE_SUPPORT */ - -#if LWIP_IPV6 && LWIP_ND6_QUEUEING -LWIP_MEMPOOL(ND6_QUEUE, MEMP_NUM_ND6_QUEUE, sizeof(struct nd6_q_entry), "ND6_QUEUE") -#endif /* LWIP_IPV6 && LWIP_ND6_QUEUEING */ - -#if LWIP_IPV6 && LWIP_IPV6_REASS -LWIP_MEMPOOL(IP6_REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip6_reassdata), "IP6_REASSDATA") -#endif /* LWIP_IPV6 && LWIP_IPV6_REASS */ - -#if LWIP_IPV6 && LWIP_IPV6_MLD -LWIP_MEMPOOL(MLD6_GROUP, MEMP_NUM_MLD6_GROUP, sizeof(struct mld_group), "MLD6_GROUP") -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ - - -/* - * A list of pools of pbuf's used by LWIP. - * - * LWIP_PBUF_MEMPOOL(pool_name, number_elements, pbuf_payload_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - * This allocates enough space for the pbuf struct and a payload. - * (Example: pbuf_payload_size=0 allocates only size for the struct) - */ -LWIP_PBUF_MEMPOOL(PBUF, MEMP_NUM_PBUF, 0, "PBUF_REF/ROM") -LWIP_PBUF_MEMPOOL(PBUF_POOL, PBUF_POOL_SIZE, PBUF_POOL_BUFSIZE, "PBUF_POOL") - - -/* - * Allow for user-defined pools; this must be explicitly set in lwipopts.h - * since the default is to NOT look for lwippools.h - */ -#if MEMP_USE_CUSTOM_POOLS -#include "lwippools.h" -#endif /* MEMP_USE_CUSTOM_POOLS */ - -/* - * REQUIRED CLEANUP: Clear up so we don't get "multiply defined" error later - * (#undef is ignored for something that is not defined) - */ -#undef LWIP_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL_START -#undef LWIP_MALLOC_MEMPOOL_END -#undef LWIP_PBUF_MEMPOOL diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netbuf.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netbuf.h deleted file mode 100644 index d12fe2709..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netbuf.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_NETBUF_H__ -#define __LWIP_NETBUF_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/ip6_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** This netbuf has dest-addr/port set */ -#define NETBUF_FLAG_DESTADDR 0x01 -/** This netbuf includes a checksum */ -#define NETBUF_FLAG_CHKSUM 0x02 - -struct netbuf { - struct pbuf *p, *ptr; - ipX_addr_t addr; - u16_t port; -#if LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY -#if LWIP_CHECKSUM_ON_COPY - u8_t flags; -#endif /* LWIP_CHECKSUM_ON_COPY */ - u16_t toport_chksum; -#if LWIP_NETBUF_RECVINFO - ipX_addr_t toaddr; -#endif /* LWIP_NETBUF_RECVINFO */ -#endif /* LWIP_NETBUF_RECVINFO || LWIP_CHECKSUM_ON_COPY */ -}; - -/* Network buffer functions: */ -struct netbuf * netbuf_new (void); -void netbuf_delete (struct netbuf *buf); -void * netbuf_alloc (struct netbuf *buf, u16_t size); -void netbuf_free (struct netbuf *buf); -err_t netbuf_ref (struct netbuf *buf, - const void *dataptr, u16_t size); -void netbuf_chain (struct netbuf *head, - struct netbuf *tail); - -err_t netbuf_data (struct netbuf *buf, - void **dataptr, u16_t *len); -s8_t netbuf_next (struct netbuf *buf); -void netbuf_first (struct netbuf *buf); - - -#define netbuf_copy_partial(buf, dataptr, len, offset) \ - pbuf_copy_partial((buf)->p, (dataptr), (len), (offset)) -#define netbuf_copy(buf,dataptr,len) netbuf_copy_partial(buf, dataptr, len, 0) -#define netbuf_take(buf, dataptr, len) pbuf_take((buf)->p, dataptr, len) -#define netbuf_len(buf) ((buf)->p->tot_len) -#define netbuf_fromaddr(buf) (ipX_2_ip(&((buf)->addr))) -#define netbuf_set_fromaddr(buf, fromaddr) ip_addr_set(ipX_2_ip(&((buf)->addr)), fromaddr) -#define netbuf_fromport(buf) ((buf)->port) -#if LWIP_NETBUF_RECVINFO -#define netbuf_destaddr(buf) (ipX_2_ip(&((buf)->toaddr))) -#define netbuf_set_destaddr(buf, destaddr) ip_addr_set(ipX_2_ip(&((buf)->toaddr)), destaddr) -#define netbuf_destport(buf) (((buf)->flags & NETBUF_FLAG_DESTADDR) ? (buf)->toport_chksum : 0) -#endif /* LWIP_NETBUF_RECVINFO */ -#if LWIP_CHECKSUM_ON_COPY -#define netbuf_set_chksum(buf, chksum) do { (buf)->flags = NETBUF_FLAG_CHKSUM; \ - (buf)->toport_chksum = chksum; } while(0) -#endif /* LWIP_CHECKSUM_ON_COPY */ - -#if LWIP_IPV6 -#define netbuf_fromaddr_ip6(buf) (ipX_2_ip6(&((buf)->addr))) -#define netbuf_set_fromaddr_ip6(buf, fromaddr) ip6_addr_set(ipX_2_ip6(&((buf)->addr)), fromaddr) -#define netbuf_destaddr_ip6(buf) (ipX_2_ip6(&((buf)->toaddr))) -#define netbuf_set_destaddr_ip6(buf, destaddr) ip6_addr_set(ipX_2_ip6(&((buf)->toaddr)), destaddr) -#endif /* LWIP_IPV6 */ - -#define netbuf_fromaddr_ipX(buf) (&((buf)->addr)) -#define netbuf_destaddr_ipX(buf) (&((buf)->toaddr)) - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_NETBUF_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netdb.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netdb.h deleted file mode 100644 index 7587e2f2d..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netdb.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Simon Goldschmidt - * - */ -#ifndef __LWIP_NETDB_H__ -#define __LWIP_NETDB_H__ - -#include "lwip/opt.h" - -#if LWIP_DNS && LWIP_SOCKET - -#include /* for size_t */ - -#include "lwip/inet.h" -#include "lwip/sockets.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* some rarely used options */ -#ifndef LWIP_DNS_API_DECLARE_H_ERRNO -#define LWIP_DNS_API_DECLARE_H_ERRNO 1 -#endif - -#ifndef LWIP_DNS_API_DEFINE_ERRORS -#define LWIP_DNS_API_DEFINE_ERRORS 1 -#endif - -#ifndef LWIP_DNS_API_DECLARE_STRUCTS -#define LWIP_DNS_API_DECLARE_STRUCTS 1 -#endif - -#if LWIP_DNS_API_DEFINE_ERRORS -/** Errors used by the DNS API functions, h_errno can be one of them */ -#define EAI_NONAME 200 -#define EAI_SERVICE 201 -#define EAI_FAIL 202 -#define EAI_MEMORY 203 - -#define HOST_NOT_FOUND 210 -#define NO_DATA 211 -#define NO_RECOVERY 212 -#define TRY_AGAIN 213 -#endif /* LWIP_DNS_API_DEFINE_ERRORS */ - -#if LWIP_DNS_API_DECLARE_STRUCTS -struct hostent { - char *h_name; /* Official name of the host. */ - char **h_aliases; /* A pointer to an array of pointers to alternative host names, - terminated by a null pointer. */ - int h_addrtype; /* Address type. */ - int h_length; /* The length, in bytes, of the address. */ - char **h_addr_list; /* A pointer to an array of pointers to network addresses (in - network byte order) for the host, terminated by a null pointer. */ -#define h_addr h_addr_list[0] /* for backward compatibility */ -}; - -struct addrinfo { - int ai_flags; /* Input flags. */ - int ai_family; /* Address family of socket. */ - int ai_socktype; /* Socket type. */ - int ai_protocol; /* Protocol of socket. */ - socklen_t ai_addrlen; /* Length of socket address. */ - struct sockaddr *ai_addr; /* Socket address of socket. */ - char *ai_canonname; /* Canonical name of service location. */ - struct addrinfo *ai_next; /* Pointer to next in list. */ -}; -#endif /* LWIP_DNS_API_DECLARE_STRUCTS */ - -#if LWIP_DNS_API_DECLARE_H_ERRNO -/* application accessable error code set by the DNS API functions */ -extern int h_errno; -#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/ - -struct hostent *lwip_gethostbyname(const char *name); -int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf, - size_t buflen, struct hostent **result, int *h_errnop); -void lwip_freeaddrinfo(struct addrinfo *ai); -int lwip_getaddrinfo(const char *nodename, - const char *servname, - const struct addrinfo *hints, - struct addrinfo **res); - -#if LWIP_COMPAT_SOCKETS -#define gethostbyname(name) lwip_gethostbyname(name) -#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \ - lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop) -#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(addrinfo) -#define getaddrinfo(nodname, servname, hints, res) \ - lwip_getaddrinfo(nodname, servname, hints, res) -#endif /* LWIP_COMPAT_SOCKETS */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_DNS && LWIP_SOCKET */ - -#endif /* __LWIP_NETDB_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netif.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netif.h deleted file mode 100644 index c14289b8e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netif.h +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_NETIF_H__ -#define __LWIP_NETIF_H__ - -#include "lwip/opt.h" - -#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF) - -#include "lwip/err.h" - -#include "lwip/ip_addr.h" -#include "lwip/ip6_addr.h" - -#include "lwip/def.h" -#include "lwip/pbuf.h" -#if LWIP_DHCP -struct dhcp; -#endif -#if LWIP_AUTOIP -struct autoip; -#endif -#if LWIP_IPV6_DHCP6 -#include "lwip/dhcp6.h" -#endif /* LWIP_IPV6_DHCP6 */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Throughout this file, IP addresses are expected to be in - * the same byte order as in IP_PCB. */ - -/** must be the maximum of all used hardware address lengths - across all types of interfaces in use */ -#define NETIF_MAX_HWADDR_LEN 6U - -/** Whether the network interface is 'up'. This is - * a software flag used to control whether this network - * interface is enabled and processes traffic. - * It is set by the startup code (for static IP configuration) or - * by dhcp/autoip when an address has been assigned. - */ -#define NETIF_FLAG_UP 0x01U -/** If set, the netif has broadcast capability. - * Set by the netif driver in its init function. */ -#define NETIF_FLAG_BROADCAST 0x02U -/** If set, the netif is one end of a point-to-point connection. - * Set by the netif driver in its init function. */ -#define NETIF_FLAG_POINTTOPOINT 0x04U -/** If set, the interface is configured using DHCP. - * Set by the DHCP code when starting or stopping DHCP. */ -#define NETIF_FLAG_DHCP 0x08U -/** If set, the interface has an active link - * (set by the network interface driver). - * Either set by the netif driver in its init function (if the link - * is up at that time) or at a later point once the link comes up - * (if link detection is supported by the hardware). */ -#define NETIF_FLAG_LINK_UP 0x10U -/** If set, the netif is an ethernet device using ARP. - * Set by the netif driver in its init function. - * Used to check input packet types and use of DHCP. */ -#define NETIF_FLAG_ETHARP 0x20U -/** If set, the netif is an ethernet device. It might not use - * ARP or TCP/IP if it is used for PPPoE only. - */ -#define NETIF_FLAG_ETHERNET 0x40U -/** If set, the netif has IGMP capability. - * Set by the netif driver in its init function. */ -#define NETIF_FLAG_IGMP 0x80U - -/** Function prototype for netif init functions. Set up flags and output/linkoutput - * callback functions in this function. - * - * @param netif The netif to initialize - */ -typedef err_t (*netif_init_fn)(struct netif *netif); -/** Function prototype for netif->input functions. This function is saved as 'input' - * callback function in the netif struct. Call it when a packet has been received. - * - * @param p The received packet, copied into a pbuf - * @param inp The netif which received the packet - */ -typedef err_t (*netif_input_fn)(struct pbuf *p, struct netif *inp); -/** Function prototype for netif->output functions. Called by lwIP when a packet - * shall be sent. For ethernet netif, set this to 'etharp_output' and set - * 'linkoutput'. - * - * @param netif The netif which shall send a packet - * @param p The packet to send (p->payload points to IP header) - * @param ipaddr The IP address to which the packet shall be sent - */ -typedef err_t (*netif_output_fn)(struct netif *netif, struct pbuf *p, - ip_addr_t *ipaddr); -#if LWIP_IPV6 -/** Function prototype for netif->output_ip6 functions. Called by lwIP when a packet - * shall be sent. For ethernet netif, set this to 'nd_output' and set - * 'linkoutput'. - * - * @param netif The netif which shall send a packet - * @param p The packet to send (p->payload points to IP header) - * @param ipaddr The IPv6 address to which the packet shall be sent - */ -typedef err_t (*netif_output_ip6_fn)(struct netif *netif, struct pbuf *p, - ip6_addr_t *ipaddr); -#endif /* LWIP_IPV6 */ -/** Function prototype for netif->linkoutput functions. Only used for ethernet - * netifs. This function is called by ARP when a packet shall be sent. - * - * @param netif The netif which shall send a packet - * @param p The packet to send (raw ethernet packet) - */ -typedef err_t (*netif_linkoutput_fn)(struct netif *netif, struct pbuf *p); -/** Function prototype for netif status- or link-callback functions. */ -typedef void (*netif_status_callback_fn)(struct netif *netif); -/** Function prototype for netif igmp_mac_filter functions */ -typedef err_t (*netif_igmp_mac_filter_fn)(struct netif *netif, - ip_addr_t *group, u8_t action); -#if LWIP_IPV6 && LWIP_IPV6_MLD -/** Function prototype for netif mld_mac_filter functions */ -typedef err_t (*netif_mld_mac_filter_fn)(struct netif *netif, - ip6_addr_t *group, u8_t action); -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ - -/** Generic data structure used for all lwIP network interfaces. - * The following fields should be filled in by the initialization - * function for the device driver: hwaddr_len, hwaddr[], mtu, flags */ -struct netif { - /** pointer to next in linked list */ - struct netif *next; - - /** IP address configuration in network byte order */ - ip_addr_t ip_addr; - ip_addr_t netmask; - ip_addr_t gw; - -#if LWIP_IPV6 - /** Array of IPv6 addresses for this netif. */ - ip6_addr_t ip6_addr[LWIP_IPV6_NUM_ADDRESSES]; - /** The state of each IPv6 address (Tentative, Preferred, etc). - * @see ip6_addr.h */ - u8_t ip6_addr_state[LWIP_IPV6_NUM_ADDRESSES]; -#endif /* LWIP_IPV6 */ - /** This function is called by the network device driver - * to pass a packet up the TCP/IP stack. */ - netif_input_fn input; - /** This function is called by the IP module when it wants - * to send a packet on the interface. This function typically - * first resolves the hardware address, then sends the packet. */ - netif_output_fn output; - /** This function is called by the ARP module when it wants - * to send a packet on the interface. This function outputs - * the pbuf as-is on the link medium. */ - netif_linkoutput_fn linkoutput; -#if LWIP_IPV6 - /** This function is called by the IPv6 module when it wants - * to send a packet on the interface. This function typically - * first resolves the hardware address, then sends the packet. */ - netif_output_ip6_fn output_ip6; -#endif /* LWIP_IPV6 */ -#if LWIP_NETIF_STATUS_CALLBACK - /** This function is called when the netif state is set to up or down - */ - netif_status_callback_fn status_callback; -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - /** This function is called when the netif link is set to up or down - */ - netif_status_callback_fn link_callback; -#endif /* LWIP_NETIF_LINK_CALLBACK */ - /** This field can be set by the device driver and could point - * to state information for the device. */ - void *state; -#if LWIP_DHCP - /** the DHCP client state information for this netif */ - struct dhcp *dhcp; -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - /** the AutoIP client state information for this netif */ - struct autoip *autoip; -#endif -#if LWIP_IPV6_AUTOCONFIG - /** is this netif enabled for IPv6 autoconfiguration */ - u8_t ip6_autoconfig_enabled; -#endif /* LWIP_IPV6_AUTOCONFIG */ -#if LWIP_IPV6_SEND_ROUTER_SOLICIT - /** Number of Router Solicitation messages that remain to be sent. */ - u8_t rs_count; -#endif /* LWIP_IPV6_SEND_ROUTER_SOLICIT */ -#if LWIP_IPV6_DHCP6 - /** the DHCPv6 client state information for this netif */ - struct dhcp6 *dhcp6; -#endif /* LWIP_IPV6_DHCP6 */ -#if LWIP_NETIF_HOSTNAME - /* the hostname for this netif, NULL is a valid value */ - char* hostname; -#endif /* LWIP_NETIF_HOSTNAME */ - /** maximum transfer unit (in bytes) */ - u16_t mtu; - /** number of bytes used in hwaddr */ - u8_t hwaddr_len; - /** link level hardware address of this interface */ - u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; - /** flags (see NETIF_FLAG_ above) */ - u8_t flags; - /** descriptive abbreviation */ - char name[2]; - /** number of this interface */ - u8_t num; -#if LWIP_SNMP - /** link type (from "snmp_ifType" enum from snmp.h) */ - u8_t link_type; - /** (estimate) link speed */ - u32_t link_speed; - /** timestamp at last change made (up/down) */ - u32_t ts; - /** counters */ - u32_t ifinoctets; - u32_t ifinucastpkts; - u32_t ifinnucastpkts; - u32_t ifindiscards; - u32_t ifoutoctets; - u32_t ifoutucastpkts; - u32_t ifoutnucastpkts; - u32_t ifoutdiscards; -#endif /* LWIP_SNMP */ -#if LWIP_IGMP - /** This function could be called to add or delete an entry in the multicast - filter table of the ethernet MAC.*/ - netif_igmp_mac_filter_fn igmp_mac_filter; -#endif /* LWIP_IGMP */ -#if LWIP_IPV6 && LWIP_IPV6_MLD - /** This function could be called to add or delete an entry in the IPv6 multicast - filter table of the ethernet MAC. */ - netif_mld_mac_filter_fn mld_mac_filter; -#endif /* LWIP_IPV6 && LWIP_IPV6_MLD */ -#if LWIP_NETIF_HWADDRHINT - u8_t *addr_hint; -#endif /* LWIP_NETIF_HWADDRHINT */ -#if ENABLE_LOOPBACK - /* List of packets to be queued for ourselves. */ - struct pbuf *loop_first; - struct pbuf *loop_last; -#if LWIP_LOOPBACK_MAX_PBUFS - u16_t loop_cnt_current; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ -#endif /* ENABLE_LOOPBACK */ -}; - -#if LWIP_SNMP -#define NETIF_INIT_SNMP(netif, type, speed) \ - /* use "snmp_ifType" enum from snmp.h for "type", snmp_ifType_ethernet_csmacd by example */ \ - (netif)->link_type = (type); \ - /* your link speed here (units: bits per second) */ \ - (netif)->link_speed = (speed); \ - (netif)->ts = 0; \ - (netif)->ifinoctets = 0; \ - (netif)->ifinucastpkts = 0; \ - (netif)->ifinnucastpkts = 0; \ - (netif)->ifindiscards = 0; \ - (netif)->ifoutoctets = 0; \ - (netif)->ifoutucastpkts = 0; \ - (netif)->ifoutnucastpkts = 0; \ - (netif)->ifoutdiscards = 0 -#else /* LWIP_SNMP */ -#define NETIF_INIT_SNMP(netif, type, speed) -#endif /* LWIP_SNMP */ - - -/** The list of network interfaces. */ -extern struct netif *netif_list; -/** The default network interface. */ -extern struct netif *netif_default; - -void netif_init(void); - -struct netif *netif_add(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, - ip_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input); - -void -netif_set_addr(struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, - ip_addr_t *gw); -void netif_remove(struct netif * netif); - -/* Returns a network interface given its name. The name is of the form - "et0", where the first two letters are the "name" field in the - netif structure, and the digit is in the num field in the same - structure. */ -struct netif *netif_find(char *name); - -void netif_set_default(struct netif *netif); - -void netif_set_ipaddr(struct netif *netif, ip_addr_t *ipaddr); -void netif_set_netmask(struct netif *netif, ip_addr_t *netmask); -void netif_set_gw(struct netif *netif, ip_addr_t *gw); - -void netif_set_up(struct netif *netif); -void netif_set_down(struct netif *netif); -/** Ask if an interface is up */ -#define netif_is_up(netif) (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0) - -#if LWIP_NETIF_STATUS_CALLBACK -void netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -void netif_set_link_up(struct netif *netif); -void netif_set_link_down(struct netif *netif); -/** Ask if a link is up */ -#define netif_is_link_up(netif) (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0) - -#if LWIP_NETIF_LINK_CALLBACK -void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#if LWIP_NETIF_HOSTNAME -#define netif_set_hostname(netif, name) do { if((netif) != NULL) { (netif)->hostname = name; }}while(0) -#define netif_get_hostname(netif) (((netif) != NULL) ? ((netif)->hostname) : NULL) -#endif /* LWIP_NETIF_HOSTNAME */ - -#if LWIP_IGMP -#define netif_set_igmp_mac_filter(netif, function) do { if((netif) != NULL) { (netif)->igmp_mac_filter = function; }}while(0) -#define netif_get_igmp_mac_filter(netif) (((netif) != NULL) ? ((netif)->igmp_mac_filter) : NULL) -#endif /* LWIP_IGMP */ - -#if ENABLE_LOOPBACK -err_t netif_loop_output(struct netif *netif, struct pbuf *p, ip_addr_t *dest_ip); -void netif_poll(struct netif *netif); -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -void netif_poll_all(void); -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#if LWIP_IPV6 -#define netif_ip6_addr(netif, i) (&(netif->ip6_addr[(i)])) -#define netif_ip6_addr_state(netif, i) (netif->ip6_addr_state[(i)]) -#define netif_ip6_addr_set_state(netif, i, state) (netif->ip6_addr_state[(i)] = (state)) -s8_t netif_matches_ip6_addr(struct netif * netif, ip6_addr_t * ip6addr); -void netif_create_ip6_linklocal_address(struct netif * netif, u8_t from_mac_48bit); -#endif /* LWIP_IPV6 */ - -#if LWIP_NETIF_HWADDRHINT -#define NETIF_SET_HWADDRHINT(netif, hint) ((netif)->addr_hint = (hint)) -#else /* LWIP_NETIF_HWADDRHINT */ -#define NETIF_SET_HWADDRHINT(netif, hint) -#endif /* LWIP_NETIF_HWADDRHINT */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_NETIF_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netifapi.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netifapi.h deleted file mode 100644 index 33318efaf..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/netifapi.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - */ - -#ifndef __LWIP_NETIFAPI_H__ -#define __LWIP_NETIFAPI_H__ - -#include "lwip/opt.h" - -#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/sys.h" -#include "lwip/netif.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void (*netifapi_void_fn)(struct netif *netif); -typedef err_t (*netifapi_errt_fn)(struct netif *netif); - -struct netifapi_msg_msg { -#if !LWIP_TCPIP_CORE_LOCKING - sys_sem_t sem; -#endif /* !LWIP_TCPIP_CORE_LOCKING */ - err_t err; - struct netif *netif; - union { - struct { - ip_addr_t *ipaddr; - ip_addr_t *netmask; - ip_addr_t *gw; - void *state; - netif_init_fn init; - netif_input_fn input; - } add; - struct { - netifapi_void_fn voidfunc; - netifapi_errt_fn errtfunc; - } common; - } msg; -}; - -struct netifapi_msg { - void (* function)(struct netifapi_msg_msg *msg); - struct netifapi_msg_msg msg; -}; - - -/* API for application */ -err_t netifapi_netif_add ( struct netif *netif, - ip_addr_t *ipaddr, - ip_addr_t *netmask, - ip_addr_t *gw, - void *state, - netif_init_fn init, - netif_input_fn input); - -err_t netifapi_netif_set_addr ( struct netif *netif, - ip_addr_t *ipaddr, - ip_addr_t *netmask, - ip_addr_t *gw ); - -err_t netifapi_netif_common ( struct netif *netif, - netifapi_void_fn voidfunc, - netifapi_errt_fn errtfunc); - -#define netifapi_netif_remove(n) netifapi_netif_common(n, netif_remove, NULL) -#define netifapi_netif_set_up(n) netifapi_netif_common(n, netif_set_up, NULL) -#define netifapi_netif_set_down(n) netifapi_netif_common(n, netif_set_down, NULL) -#define netifapi_netif_set_default(n) netifapi_netif_common(n, netif_set_default, NULL) -#define netifapi_dhcp_start(n) netifapi_netif_common(n, NULL, dhcp_start) -#define netifapi_dhcp_stop(n) netifapi_netif_common(n, dhcp_stop, NULL) -#define netifapi_autoip_start(n) netifapi_netif_common(n, NULL, autoip_start) -#define netifapi_autoip_stop(n) netifapi_netif_common(n, NULL, autoip_stop) - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETIF_API */ - -#endif /* __LWIP_NETIFAPI_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/opt.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/opt.h deleted file mode 100644 index 8ae6ba4d5..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/opt.h +++ /dev/null @@ -1,2368 +0,0 @@ -/** - * @file - * - * lwIP Options Configuration - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_OPT_H__ -#define __LWIP_OPT_H__ - -/* - * Include user defined options first. Anything not defined in these files - * will be set to standard values. Override anything you dont like! - */ -#include "lwipopts.h" -#include "lwip/debug.h" - -/* - ----------------------------------------------- - ---------- Platform specific locking ---------- - ----------------------------------------------- -*/ - -/** - * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain - * critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#ifndef SYS_LIGHTWEIGHT_PROT -#define SYS_LIGHTWEIGHT_PROT 0 -#endif - -/** - * NO_SYS==1: Provides VERY minimal functionality. Otherwise, - * use lwIP facilities. - */ -#ifndef NO_SYS -#define NO_SYS 0 -#endif - -/** - * NO_SYS_NO_TIMERS==1: Drop support for sys_timeout when NO_SYS==1 - * Mainly for compatibility to old versions. - */ -#ifndef NO_SYS_NO_TIMERS -#define NO_SYS_NO_TIMERS 0 -#endif - -/** - * MEMCPY: override this if you have a faster implementation at hand than the - * one included in your C library - */ -#ifndef MEMCPY -#define MEMCPY(dst,src,len) memcpy(dst,src,len) -#endif - -/** - * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a - * call to memcpy() if the length is known at compile time and is small. - */ -#ifndef SMEMCPY -#define SMEMCPY(dst,src,len) memcpy(dst,src,len) -#endif - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library - * instead of the lwip internal allocator. Can save code size if you - * already use it. - */ -#ifndef MEM_LIBC_MALLOC -#define MEM_LIBC_MALLOC 0 -#endif - -/** -* MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator. -* Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution -* speed and usage from interrupts! -*/ -#ifndef MEMP_MEM_MALLOC -#define MEMP_MEM_MALLOC 0 -#endif - -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#ifndef MEM_ALIGNMENT -#define MEM_ALIGNMENT 1 -#endif - -/** - * MEM_SIZE: the size of the heap memory. If the application will send - * a lot of data that needs to be copied, this should be set high. - */ -#ifndef MEM_SIZE -#define MEM_SIZE 1600 -#endif - -/** - * MEMP_SEPARATE_POOLS: if defined to 1, each pool is placed in its own array. - * This can be used to individually change the location of each pool. - * Default is one big array for all pools - */ -#ifndef MEMP_SEPARATE_POOLS -#define MEMP_SEPARATE_POOLS 0 -#endif - -/** - * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable - * amount of bytes before and after each memp element in every pool and fills - * it with a prominent default value. - * MEMP_OVERFLOW_CHECK == 0 no checking - * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed - * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time - * memp_malloc() or memp_free() is called (useful but slow!) - */ -#ifndef MEMP_OVERFLOW_CHECK -#define MEMP_OVERFLOW_CHECK 0 -#endif - -/** - * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make - * sure that there are no cycles in the linked lists. - */ -#ifndef MEMP_SANITY_CHECK -#define MEMP_SANITY_CHECK 0 -#endif - -/** - * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set - * of memory pools of various sizes. When mem_malloc is called, an element of - * the smallest pool that can provide the length needed is returned. - * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled. - */ -#ifndef MEM_USE_POOLS -#define MEM_USE_POOLS 0 -#endif - -/** - * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next - * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more - * reliable. */ -#ifndef MEM_USE_POOLS_TRY_BIGGER_POOL -#define MEM_USE_POOLS_TRY_BIGGER_POOL 0 -#endif - -/** - * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h - * that defines additional pools beyond the "standard" ones required - * by lwIP. If you set this to 1, you must have lwippools.h in your - * inlude path somewhere. - */ -#ifndef MEMP_USE_CUSTOM_POOLS -#define MEMP_USE_CUSTOM_POOLS 0 -#endif - -/** - * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from - * interrupt context (or another context that doesn't allow waiting for a - * semaphore). - * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT, - * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs - * with each loop so that mem_free can run. - * - * ATTENTION: As you can see from the above description, this leads to dis-/ - * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc - * can need longer. - * - * If you don't want that, at least for NO_SYS=0, you can still use the following - * functions to enqueue a deallocation call which then runs in the tcpip_thread - * context: - * - pbuf_free_callback(p); - * - mem_free_callback(m); - */ -#ifndef LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT -#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0 -#endif - -/* - ------------------------------------------------ - ---------- Internal Memory Pool Sizes ---------- - ------------------------------------------------ -*/ -/** - * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). - * If the application sends a lot of data out of ROM (or other static memory), - * this should be set high. - */ -#ifndef MEMP_NUM_PBUF -#define MEMP_NUM_PBUF 16 -#endif - -/** - * MEMP_NUM_RAW_PCB: Number of raw connection PCBs - * (requires the LWIP_RAW option) - */ -#ifndef MEMP_NUM_RAW_PCB -#define MEMP_NUM_RAW_PCB 4 -#endif - -/** - * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - * per active UDP "connection". - * (requires the LWIP_UDP option) - */ -#ifndef MEMP_NUM_UDP_PCB -#define MEMP_NUM_UDP_PCB 4 -#endif - -/** - * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_PCB -#define MEMP_NUM_TCP_PCB 5 -#endif - -/** - * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_PCB_LISTEN -#define MEMP_NUM_TCP_PCB_LISTEN 8 -#endif - -/** - * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_SEG -#define MEMP_NUM_TCP_SEG 16 -#endif - -/** - * MEMP_NUM_REASSDATA: the number of IP packets simultaneously queued for - * reassembly (whole packets, not fragments!) - */ -#ifndef MEMP_NUM_REASSDATA -#define MEMP_NUM_REASSDATA 5 -#endif - -/** - * MEMP_NUM_FRAG_PBUF: the number of IP fragments simultaneously sent - * (fragments, not whole packets!). - * This is only used with IP_FRAG_USES_STATIC_BUF==0 and - * LWIP_NETIF_TX_SINGLE_PBUF==0 and only has to be > 1 with DMA-enabled MACs - * where the packet is not yet sent when netif->output returns. - */ -#ifndef MEMP_NUM_FRAG_PBUF -#define MEMP_NUM_FRAG_PBUF 15 -#endif - -/** - * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing - * packets (pbufs) that are waiting for an ARP request (to resolve - * their destination address) to finish. - * (requires the ARP_QUEUEING option) - */ -#ifndef MEMP_NUM_ARP_QUEUE -#define MEMP_NUM_ARP_QUEUE 30 -#endif - -/** - * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces - * can be members et the same time (one per netif - allsystems group -, plus one - * per netif membership). - * (requires the LWIP_IGMP option) - */ -#ifndef MEMP_NUM_IGMP_GROUP -#define MEMP_NUM_IGMP_GROUP 8 -#endif - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#ifndef MEMP_NUM_SYS_TIMEOUT -#define MEMP_NUM_SYS_TIMEOUT 3 -#endif - -/** - * MEMP_NUM_NETBUF: the number of struct netbufs. - * (only needed if you use the sequential API, like api_lib.c) - */ -#ifndef MEMP_NUM_NETBUF -#define MEMP_NUM_NETBUF 2 -#endif - -/** - * MEMP_NUM_NETCONN: the number of struct netconns. - * (only needed if you use the sequential API, like api_lib.c) - */ -#ifndef MEMP_NUM_NETCONN -#define MEMP_NUM_NETCONN 4 -#endif - -/** - * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used - * for callback/timeout API communication. - * (only needed if you use tcpip.c) - */ -#ifndef MEMP_NUM_TCPIP_MSG_API -#define MEMP_NUM_TCPIP_MSG_API 8 -#endif - -/** - * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used - * for incoming packets. - * (only needed if you use tcpip.c) - */ -#ifndef MEMP_NUM_TCPIP_MSG_INPKT -#define MEMP_NUM_TCPIP_MSG_INPKT 8 -#endif - -/** - * MEMP_NUM_SNMP_NODE: the number of leafs in the SNMP tree. - */ -#ifndef MEMP_NUM_SNMP_NODE -#define MEMP_NUM_SNMP_NODE 50 -#endif - -/** - * MEMP_NUM_SNMP_ROOTNODE: the number of branches in the SNMP tree. - * Every branch has one leaf (MEMP_NUM_SNMP_NODE) at least! - */ -#ifndef MEMP_NUM_SNMP_ROOTNODE -#define MEMP_NUM_SNMP_ROOTNODE 30 -#endif - -/** - * MEMP_NUM_SNMP_VARBIND: the number of concurrent requests (does not have to - * be changed normally) - 2 of these are used per request (1 for input, - * 1 for output) - */ -#ifndef MEMP_NUM_SNMP_VARBIND -#define MEMP_NUM_SNMP_VARBIND 2 -#endif - -/** - * MEMP_NUM_SNMP_VALUE: the number of OID or values concurrently used - * (does not have to be changed normally) - 3 of these are used per request - * (1 for the value read and 2 for OIDs - input and output) - */ -#ifndef MEMP_NUM_SNMP_VALUE -#define MEMP_NUM_SNMP_VALUE 3 -#endif - -/** - * MEMP_NUM_NETDB: the number of concurrently running lwip_addrinfo() calls - * (before freeing the corresponding memory using lwip_freeaddrinfo()). - */ -#ifndef MEMP_NUM_NETDB -#define MEMP_NUM_NETDB 1 -#endif - -/** - * MEMP_NUM_LOCALHOSTLIST: the number of host entries in the local host list - * if DNS_LOCAL_HOSTLIST_IS_DYNAMIC==1. - */ -#ifndef MEMP_NUM_LOCALHOSTLIST -#define MEMP_NUM_LOCALHOSTLIST 1 -#endif - -/** - * MEMP_NUM_PPPOE_INTERFACES: the number of concurrently active PPPoE - * interfaces (only used with PPPOE_SUPPORT==1) - */ -#ifndef MEMP_NUM_PPPOE_INTERFACES -#define MEMP_NUM_PPPOE_INTERFACES 1 -#endif - -/** - * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. - */ -#ifndef PBUF_POOL_SIZE -#define PBUF_POOL_SIZE 16 -#endif - -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#ifndef LWIP_ARP -#define LWIP_ARP 1 -#endif - -/** - * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached. - */ -#ifndef ARP_TABLE_SIZE -#define ARP_TABLE_SIZE 10 -#endif - -/** - * ARP_QUEUEING==1: Multiple outgoing packets are queued during hardware address - * resolution. By default, only the most recent packet is queued per IP address. - * This is sufficient for most protocols and mainly reduces TCP connection - * startup time. Set this to 1 if you know your application sends more than one - * packet in a row to an IP address that is not in the ARP cache. - */ -#ifndef ARP_QUEUEING -#define ARP_QUEUEING 0 -#endif - -/** - * ETHARP_TRUST_IP_MAC==1: Incoming IP packets cause the ARP table to be - * updated with the source MAC and IP addresses supplied in the packet. - * You may want to disable this if you do not trust LAN peers to have the - * correct addresses, or as a limited approach to attempt to handle - * spoofing. If disabled, lwIP will need to make a new ARP request if - * the peer is not already in the ARP table, adding a little latency. - * The peer *is* in the ARP table if it requested our address before. - * Also notice that this slows down input processing of every IP packet! - */ -#ifndef ETHARP_TRUST_IP_MAC -#define ETHARP_TRUST_IP_MAC 0 -#endif - -/** - * ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header. - * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check. - * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted. - * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted. - * Alternatively, define a function/define ETHARP_VLAN_CHECK_FN(eth_hdr, vlan) - * that returns 1 to accept a packet or 0 to drop a packet. - */ -#ifndef ETHARP_SUPPORT_VLAN -#define ETHARP_SUPPORT_VLAN 0 -#endif - -/** LWIP_ETHERNET==1: enable ethernet support for PPPoE even though ARP - * might be disabled - */ -#ifndef LWIP_ETHERNET -#define LWIP_ETHERNET (LWIP_ARP || PPPOE_SUPPORT) -#endif - -/** ETH_PAD_SIZE: number of bytes added before the ethernet header to ensure - * alignment of payload after that header. Since the header is 14 bytes long, - * without this padding e.g. addresses in the IP header will not be aligned - * on a 32-bit boundary, so setting this to 2 can speed up 32-bit-platforms. - */ -#ifndef ETH_PAD_SIZE -#define ETH_PAD_SIZE 0 -#endif - -/** ETHARP_SUPPORT_STATIC_ENTRIES==1: enable code to support static ARP table - * entries (using etharp_add_static_entry/etharp_remove_static_entry). - */ -#ifndef ETHARP_SUPPORT_STATIC_ENTRIES -#define ETHARP_SUPPORT_STATIC_ENTRIES 0 -#endif - - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#ifndef IP_FORWARD -#define IP_FORWARD 0 -#endif - -/** - * IP_OPTIONS_ALLOWED: Defines the behavior for IP options. - * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped. - * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed). - */ -#ifndef IP_OPTIONS_ALLOWED -#define IP_OPTIONS_ALLOWED 1 -#endif - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#ifndef IP_REASSEMBLY -#define IP_REASSEMBLY 1 -#endif - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#ifndef IP_FRAG -#define IP_FRAG 1 -#endif - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#ifndef IP_REASS_MAXAGE -#define IP_REASS_MAXAGE 3 -#endif - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#ifndef IP_REASS_MAX_PBUFS -#define IP_REASS_MAX_PBUFS 10 -#endif - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented (or with LWIP_NETIF_TX_SINGLE_PBUF==1, - * new PBUF_RAM pbufs are used for fragments). - * ATTENTION: IP_FRAG_USES_STATIC_BUF==1 may not be used for DMA-enabled MACs! - */ -#ifndef IP_FRAG_USES_STATIC_BUF -#define IP_FRAG_USES_STATIC_BUF 0 -#endif - -/** - * IP_FRAG_MAX_MTU: Assumed max MTU on any interface for IP frag buffer - * (requires IP_FRAG_USES_STATIC_BUF==1) - */ -#if IP_FRAG_USES_STATIC_BUF && !defined(IP_FRAG_MAX_MTU) -#define IP_FRAG_MAX_MTU 1500 -#endif - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#ifndef IP_DEFAULT_TTL -#define IP_DEFAULT_TTL 255 -#endif - -/** - * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast - * filter per pcb on udp and raw send operations. To enable broadcast filter - * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1. - */ -#ifndef IP_SOF_BROADCAST -#define IP_SOF_BROADCAST 0 -#endif - -/** - * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast - * filter on recv operations. - */ -#ifndef IP_SOF_BROADCAST_RECV -#define IP_SOF_BROADCAST_RECV 0 -#endif - -/** - * IP_FORWARD_ALLOW_TX_ON_RX_NETIF==1: allow ip_forward() to send packets back - * out on the netif where it was received. This should only be used for - * wireless networks. - * ATTENTION: When this is 1, make sure your netif driver correctly marks incoming - * link-layer-broadcast/multicast packets as such using the corresponding pbuf flags! - */ -#ifndef IP_FORWARD_ALLOW_TX_ON_RX_NETIF -#define IP_FORWARD_ALLOW_TX_ON_RX_NETIF 0 -#endif - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#ifndef LWIP_ICMP -#define LWIP_ICMP 1 -#endif - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#ifndef ICMP_TTL -#define ICMP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only) - */ -#ifndef LWIP_BROADCAST_PING -#define LWIP_BROADCAST_PING 0 -#endif - -/** - * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only) - */ -#ifndef LWIP_MULTICAST_PING -#define LWIP_MULTICAST_PING 0 -#endif - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef LWIP_RAW -#define LWIP_RAW 1 -#endif - -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef RAW_TTL -#define RAW_TTL (IP_DEFAULT_TTL) -#endif - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#ifndef LWIP_DHCP -#define LWIP_DHCP 0 -#endif - -/** - * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. - */ -#ifndef DHCP_DOES_ARP_CHECK -#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP)) -#endif - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#ifndef LWIP_AUTOIP -#define LWIP_AUTOIP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on - * the same interface at the same time. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP -#define LWIP_DHCP_AUTOIP_COOP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes - * that should be sent before falling back on AUTOIP. This can be set - * as low as 1 to get an AutoIP address very quickly, but you should - * be prepared to handle a changing IP address when DHCP overrides - * AutoIP. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP_TRIES -#define LWIP_DHCP_AUTOIP_COOP_TRIES 9 -#endif - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#ifndef LWIP_SNMP -#define LWIP_SNMP 0 -#endif - -/** - * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will - * allow. At least one request buffer is required. - * Does not have to be changed unless external MIBs answer request asynchronously - */ -#ifndef SNMP_CONCURRENT_REQUESTS -#define SNMP_CONCURRENT_REQUESTS 1 -#endif - -/** - * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap - * destination is required - */ -#ifndef SNMP_TRAP_DESTINATIONS -#define SNMP_TRAP_DESTINATIONS 1 -#endif - -/** - * SNMP_PRIVATE_MIB: - * When using a private MIB, you have to create a file 'private_mib.h' that contains - * a 'struct mib_array_node mib_private' which contains your MIB. - */ -#ifndef SNMP_PRIVATE_MIB -#define SNMP_PRIVATE_MIB 0 -#endif - -/** - * Only allow SNMP write actions that are 'safe' (e.g. disabeling netifs is not - * a safe action and disabled when SNMP_SAFE_REQUESTS = 1). - * Unsafe requests are disabled by default! - */ -#ifndef SNMP_SAFE_REQUESTS -#define SNMP_SAFE_REQUESTS 1 -#endif - -/** - * The maximum length of strings used. This affects the size of - * MEMP_SNMP_VALUE elements. - */ -#ifndef SNMP_MAX_OCTET_STRING_LEN -#define SNMP_MAX_OCTET_STRING_LEN 127 -#endif - -/** - * The maximum depth of the SNMP tree. - * With private MIBs enabled, this depends on your MIB! - * This affects the size of MEMP_SNMP_VALUE elements. - */ -#ifndef SNMP_MAX_TREE_DEPTH -#define SNMP_MAX_TREE_DEPTH 15 -#endif - -/** - * The size of the MEMP_SNMP_VALUE elements, normally calculated from - * SNMP_MAX_OCTET_STRING_LEN and SNMP_MAX_TREE_DEPTH. - */ -#ifndef SNMP_MAX_VALUE_SIZE -#define SNMP_MAX_VALUE_SIZE LWIP_MAX((SNMP_MAX_OCTET_STRING_LEN)+1, sizeof(s32_t)*(SNMP_MAX_TREE_DEPTH)) -#endif - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#ifndef LWIP_IGMP -#define LWIP_IGMP 0 -#endif - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#ifndef LWIP_DNS -#define LWIP_DNS 0 -#endif - -/** DNS maximum number of entries to maintain locally. */ -#ifndef DNS_TABLE_SIZE -#define DNS_TABLE_SIZE 4 -#endif - -/** DNS maximum host name length supported in the name table. */ -#ifndef DNS_MAX_NAME_LENGTH -#define DNS_MAX_NAME_LENGTH 256 -#endif - -/** The maximum of DNS servers */ -#ifndef DNS_MAX_SERVERS -#define DNS_MAX_SERVERS 2 -#endif - -/** DNS do a name checking between the query and the response. */ -#ifndef DNS_DOES_NAME_CHECK -#define DNS_DOES_NAME_CHECK 1 -#endif - -/** DNS message max. size. Default value is RFC compliant. */ -#ifndef DNS_MSG_SIZE -#define DNS_MSG_SIZE 512 -#endif - -/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled, - * you have to define - * #define DNS_LOCAL_HOSTLIST_INIT {{"host1", 0x123}, {"host2", 0x234}} - * (an array of structs name/address, where address is an u32_t in network - * byte order). - * - * Instead, you can also use an external function: - * #define DNS_LOOKUP_LOCAL_EXTERN(x) extern u32_t my_lookup_function(const char *name) - * that returns the IP address or INADDR_NONE if not found. - */ -#ifndef DNS_LOCAL_HOSTLIST -#define DNS_LOCAL_HOSTLIST 0 -#endif /* DNS_LOCAL_HOSTLIST */ - -/** If this is turned on, the local host-list can be dynamically changed - * at runtime. */ -#ifndef DNS_LOCAL_HOSTLIST_IS_DYNAMIC -#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#ifndef LWIP_UDP -#define LWIP_UDP 1 -#endif - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#ifndef LWIP_UDPLITE -#define LWIP_UDPLITE 0 -#endif - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#ifndef UDP_TTL -#define UDP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf. - */ -#ifndef LWIP_NETBUF_RECVINFO -#define LWIP_NETBUF_RECVINFO 0 -#endif - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#ifndef LWIP_TCP -#define LWIP_TCP 1 -#endif - -/** - * TCP_TTL: Default Time-To-Live value. - */ -#ifndef TCP_TTL -#define TCP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * TCP_WND: The size of a TCP window. This must be at least - * (2 * TCP_MSS) for things to work well - */ -#ifndef TCP_WND -#define TCP_WND (4 * TCP_MSS) -#endif - -/** - * TCP_MAXRTX: Maximum number of retransmissions of data segments. - */ -#ifndef TCP_MAXRTX -#define TCP_MAXRTX 12 -#endif - -/** - * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments. - */ -#ifndef TCP_SYNMAXRTX -#define TCP_SYNMAXRTX 6 -#endif - -/** - * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order. - * Define to 0 if your device is low on memory. - */ -#ifndef TCP_QUEUE_OOSEQ -#define TCP_QUEUE_OOSEQ (LWIP_TCP) -#endif - -/** - * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default, - * you might want to increase this.) - * For the receive side, this MSS is advertised to the remote side - * when opening a connection. For the transmit size, this MSS sets - * an upper limit on the MSS advertised by the remote host. - */ -#ifndef TCP_MSS -#define TCP_MSS 536 -#endif - -/** - * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really - * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which - * reflects the available reassembly buffer size at the remote host) and the - * largest size permitted by the IP layer" (RFC 1122) - * Setting this to 1 enables code that checks TCP_MSS against the MTU of the - * netif used for a connection and limits the MSS if it would be too big otherwise. - */ -#ifndef TCP_CALCULATE_EFF_SEND_MSS -#define TCP_CALCULATE_EFF_SEND_MSS 1 -#endif - - -/** - * TCP_SND_BUF: TCP sender buffer space (bytes). - */ -#ifndef TCP_SND_BUF -#define TCP_SND_BUF 256 -#endif - -/** - * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least - * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. - */ -#ifndef TCP_SND_QUEUELEN -#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS)) -#endif - -/** - * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than - * TCP_SND_BUF. It is the amount of space which must be available in the - * TCP snd_buf for select to return writable (combined with TCP_SNDQUEUELOWAT). - */ -#ifndef TCP_SNDLOWAT -#define TCP_SNDLOWAT ((TCP_SND_BUF)/2) -#endif - -/** - * TCP_SNDQUEUELOWAT: TCP writable bufs (pbuf count). This must be grater - * than TCP_SND_QUEUELEN. If the number of pbufs queued on a pcb drops below - * this number, select returns writable (combined with TCP_SNDLOWAT). - */ -#ifndef TCP_SNDQUEUELOWAT -#define TCP_SNDQUEUELOWAT ((TCP_SND_QUEUELEN)/2) -#endif - -/** - * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb. - */ -#ifndef TCP_LISTEN_BACKLOG -#define TCP_LISTEN_BACKLOG 0 -#endif - -/** - * The maximum allowed backlog for TCP listen netconns. - * This backlog is used unless another is explicitly specified. - * 0xff is the maximum (u8_t). - */ -#ifndef TCP_DEFAULT_LISTEN_BACKLOG -#define TCP_DEFAULT_LISTEN_BACKLOG 0xff -#endif - -/** - * TCP_OVERSIZE: The maximum number of bytes that tcp_write may - * allocate ahead of time in an attempt to create shorter pbuf chains - * for transmission. The meaningful range is 0 to TCP_MSS. Some - * suggested values are: - * - * 0: Disable oversized allocation. Each tcp_write() allocates a new - pbuf (old behaviour). - * 1: Allocate size-aligned pbufs with minimal excess. Use this if your - * scatter-gather DMA requires aligned fragments. - * 128: Limit the pbuf/memory overhead to 20%. - * TCP_MSS: Try to create unfragmented TCP packets. - * TCP_MSS/4: Try to create 4 fragments or less per TCP packet. - */ -#ifndef TCP_OVERSIZE -#define TCP_OVERSIZE TCP_MSS -#endif - -/** - * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. - */ -#ifndef LWIP_TCP_TIMESTAMPS -#define LWIP_TCP_TIMESTAMPS 0 -#endif - -/** - * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an - * explicit window update - */ -#ifndef TCP_WND_UPDATE_THRESHOLD -#define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4) -#endif - -/** - * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1. - * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all - * events (accept, sent, etc) that happen in the system. - * LWIP_CALLBACK_API==1: The PCB callback function is called directly - * for the event. - */ -#ifndef LWIP_EVENT_API -#define LWIP_EVENT_API 0 -#define LWIP_CALLBACK_API 1 -#else -#define LWIP_EVENT_API 1 -#define LWIP_CALLBACK_API 0 -#endif - - -/* - ---------------------------------- - ---------- Pbuf options ---------- - ---------------------------------- -*/ -/** - * PBUF_LINK_HLEN: the number of bytes that should be allocated for a - * link level header. The default is 14, the standard value for - * Ethernet. - */ -#ifndef PBUF_LINK_HLEN -#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) -#endif - -/** - * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is - * designed to accomodate single full size TCP frame in one pbuf, including - * TCP_MSS, IP header, and link header. - */ -#ifndef PBUF_POOL_BUFSIZE -#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN) -#endif - -/* - ------------------------------------------------ - ---------- Network Interfaces options ---------- - ------------------------------------------------ -*/ -/** - * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname - * field. - */ -#ifndef LWIP_NETIF_HOSTNAME -#define LWIP_NETIF_HOSTNAME 0 -#endif - -/** - * LWIP_NETIF_API==1: Support netif api (in netifapi.c) - */ -#ifndef LWIP_NETIF_API -#define LWIP_NETIF_API 0 -#endif - -/** - * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface - * changes its up/down status (i.e., due to DHCP IP acquistion) - */ -#ifndef LWIP_NETIF_STATUS_CALLBACK -#define LWIP_NETIF_STATUS_CALLBACK 0 -#endif - -/** - * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface - * whenever the link changes (i.e., link down) - */ -#ifndef LWIP_NETIF_LINK_CALLBACK -#define LWIP_NETIF_LINK_CALLBACK 0 -#endif - -/** - * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table - * indices) in struct netif. TCP and UDP can make use of this to prevent - * scanning the ARP table for every sent packet. While this is faster for big - * ARP tables or many concurrent connections, it might be counterproductive - * if you have a tiny ARP table or if there never are concurrent connections. - */ -#ifndef LWIP_NETIF_HWADDRHINT -#define LWIP_NETIF_HWADDRHINT 0 -#endif - -/** - * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP - * address equal to the netif IP address, looping them back up the stack. - */ -#ifndef LWIP_NETIF_LOOPBACK -#define LWIP_NETIF_LOOPBACK 0 -#endif - -/** - * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback - * sending for each netif (0 = disabled) - */ -#ifndef LWIP_LOOPBACK_MAX_PBUFS -#define LWIP_LOOPBACK_MAX_PBUFS 0 -#endif - -/** - * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in - * the system, as netifs must change how they behave depending on this setting - * for the LWIP_NETIF_LOOPBACK option to work. - * Setting this is needed to avoid reentering non-reentrant functions like - * tcp_input(). - * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a - * multithreaded environment like tcpip.c. In this case, netif->input() - * is called directly. - * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup. - * The packets are put on a list and netif_poll() must be called in - * the main application loop. - */ -#ifndef LWIP_NETIF_LOOPBACK_MULTITHREADING -#define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS) -#endif - -/** - * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data - * to be sent into one single pbuf. This is for compatibility with DMA-enabled - * MACs that do not support scatter-gather. - * Beware that this might involve CPU-memcpy before transmitting that would not - * be needed without this flag! Use this only if you need to! - * - * @todo: TCP and IP-frag do not work with this, yet: - */ -#ifndef LWIP_NETIF_TX_SINGLE_PBUF -#define LWIP_NETIF_TX_SINGLE_PBUF 0 -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - -/* - ------------------------------------ - ---------- LOOPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c - */ -#ifndef LWIP_HAVE_LOOPIF -#define LWIP_HAVE_LOOPIF 0 -#endif - -/* - ------------------------------------ - ---------- SLIPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_SLIPIF==1: Support slip interface and slipif.c - */ -#ifndef LWIP_HAVE_SLIPIF -#define LWIP_HAVE_SLIPIF 0 -#endif - -/* - ------------------------------------ - ---------- Thread options ---------- - ------------------------------------ -*/ -/** - * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread. - */ -#ifndef TCPIP_THREAD_NAME -#define TCPIP_THREAD_NAME "tcpip_thread" -#endif - -/** - * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef TCPIP_THREAD_STACKSIZE -#define TCPIP_THREAD_STACKSIZE 0 -#endif - -/** - * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef TCPIP_THREAD_PRIO -#define TCPIP_THREAD_PRIO 1 -#endif - -/** - * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages - * The queue size value itself is platform-dependent, but is passed to - * sys_mbox_new() when tcpip_init is called. - */ -#ifndef TCPIP_MBOX_SIZE -#define TCPIP_MBOX_SIZE 0 -#endif - -/** - * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread. - */ -#ifndef SLIPIF_THREAD_NAME -#define SLIPIF_THREAD_NAME "slipif_loop" -#endif - -/** - * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef SLIPIF_THREAD_STACKSIZE -#define SLIPIF_THREAD_STACKSIZE 0 -#endif - -/** - * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef SLIPIF_THREAD_PRIO -#define SLIPIF_THREAD_PRIO 1 -#endif - -/** - * PPP_THREAD_NAME: The name assigned to the pppInputThread. - */ -#ifndef PPP_THREAD_NAME -#define PPP_THREAD_NAME "pppInputThread" -#endif - -/** - * PPP_THREAD_STACKSIZE: The stack size used by the pppInputThread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef PPP_THREAD_STACKSIZE -#define PPP_THREAD_STACKSIZE 0 -#endif - -/** - * PPP_THREAD_PRIO: The priority assigned to the pppInputThread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef PPP_THREAD_PRIO -#define PPP_THREAD_PRIO 1 -#endif - -/** - * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread. - */ -#ifndef DEFAULT_THREAD_NAME -#define DEFAULT_THREAD_NAME "lwIP" -#endif - -/** - * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef DEFAULT_THREAD_STACKSIZE -#define DEFAULT_THREAD_STACKSIZE 0 -#endif - -/** - * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef DEFAULT_THREAD_PRIO -#define DEFAULT_THREAD_PRIO 1 -#endif - -/** - * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_RAW_RECVMBOX_SIZE -#define DEFAULT_RAW_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_UDP_RECVMBOX_SIZE -#define DEFAULT_UDP_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_TCP_RECVMBOX_SIZE -#define DEFAULT_TCP_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections. - * The queue size value itself is platform-dependent, but is passed to - * sys_mbox_new() when the acceptmbox is created. - */ -#ifndef DEFAULT_ACCEPTMBOX_SIZE -#define DEFAULT_ACCEPTMBOX_SIZE 0 -#endif - -/* - ---------------------------------------------- - ---------- Sequential layer options ---------- - ---------------------------------------------- -*/ -/** - * LWIP_TCPIP_CORE_LOCKING: (EXPERIMENTAL!) - * Don't use it if you're not an active lwIP project member - */ -#ifndef LWIP_TCPIP_CORE_LOCKING -#define LWIP_TCPIP_CORE_LOCKING 0 -#endif - -/** - * LWIP_TCPIP_CORE_LOCKING_INPUT: (EXPERIMENTAL!) - * Don't use it if you're not an active lwIP project member - */ -#ifndef LWIP_TCPIP_CORE_LOCKING_INPUT -#define LWIP_TCPIP_CORE_LOCKING_INPUT 0 -#endif - -/** - * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) - */ -#ifndef LWIP_NETCONN -#define LWIP_NETCONN 1 -#endif - -/** LWIP_TCPIP_TIMEOUT==1: Enable tcpip_timeout/tcpip_untimeout tod create - * timers running in tcpip_thread from another thread. - */ -#ifndef LWIP_TCPIP_TIMEOUT -#define LWIP_TCPIP_TIMEOUT 1 -#endif - -/* - ------------------------------------ - ---------- Socket options ---------- - ------------------------------------ -*/ -/** - * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) - */ -#ifndef LWIP_SOCKET -#define LWIP_SOCKET 1 -#endif - -/** - * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. - * (only used if you use sockets.c) - */ -#ifndef LWIP_COMPAT_SOCKETS -#define LWIP_COMPAT_SOCKETS 1 -#endif - -/** - * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names. - * Disable this option if you use a POSIX operating system that uses the same - * names (read, write & close). (only used if you use sockets.c) - */ -#ifndef LWIP_POSIX_SOCKETS_IO_NAMES -#define LWIP_POSIX_SOCKETS_IO_NAMES 1 -#endif - -/** - * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT - * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set - * in seconds. (does not require sockets.c, and will affect tcp.c) - */ -#ifndef LWIP_TCP_KEEPALIVE -#define LWIP_TCP_KEEPALIVE 0 -#endif - -/** - * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing. - */ -#ifndef LWIP_SO_RCVTIMEO -#define LWIP_SO_RCVTIMEO 0 -#endif - -/** - * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing. - */ -#ifndef LWIP_SO_RCVBUF -#define LWIP_SO_RCVBUF 0 -#endif - -/** - * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize. - */ -#ifndef RECV_BUFSIZE_DEFAULT -#define RECV_BUFSIZE_DEFAULT INT_MAX -#endif - -/** - * SO_REUSE==1: Enable SO_REUSEADDR option. - */ -#ifndef SO_REUSE -#define SO_REUSE 0 -#endif - -/** - * SO_REUSE_RXTOALL==1: Pass a copy of incoming broadcast/multicast packets - * to all local matches if SO_REUSEADDR is turned on. - * WARNING: Adds a memcpy for every packet if passing to more than one pcb! - */ -#ifndef SO_REUSE_RXTOALL -#define SO_REUSE_RXTOALL 0 -#endif - -/** - * LWIP_FIONREAD_LINUXMODE==0 (default): ioctl/FIONREAD returns the amount of - * pending data in the network buffer. This is the way windows does it. It's - * the default for lwIP since it is smaller. - * LWIP_FIONREAD_LINUXMODE==1: ioctl/FIONREAD returns the size of the next - * pending datagram in bytes. This is the way linux does it. This code is only - * here for compatibility. - */ -#ifndef LWIP_FIONREAD_LINUXMODE -#define LWIP_FIONREAD_LINUXMODE 0 -#endif - -/* - ---------------------------------------- - ---------- Statistics options ---------- - ---------------------------------------- -*/ -/** - * LWIP_STATS==1: Enable statistics collection in lwip_stats. - */ -#ifndef LWIP_STATS -#define LWIP_STATS 1 -#endif - -#if LWIP_STATS - -/** - * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions. - */ -#ifndef LWIP_STATS_DISPLAY -#define LWIP_STATS_DISPLAY 0 -#endif - -/** - * LINK_STATS==1: Enable link stats. - */ -#ifndef LINK_STATS -#define LINK_STATS 1 -#endif - -/** - * ETHARP_STATS==1: Enable etharp stats. - */ -#ifndef ETHARP_STATS -#define ETHARP_STATS (LWIP_ARP) -#endif - -/** - * IP_STATS==1: Enable IP stats. - */ -#ifndef IP_STATS -#define IP_STATS 1 -#endif - -/** - * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is - * on if using either frag or reass. - */ -#ifndef IPFRAG_STATS -#define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG) -#endif - -/** - * ICMP_STATS==1: Enable ICMP stats. - */ -#ifndef ICMP_STATS -#define ICMP_STATS 1 -#endif - -/** - * IGMP_STATS==1: Enable IGMP stats. - */ -#ifndef IGMP_STATS -#define IGMP_STATS (LWIP_IGMP) -#endif - -/** - * UDP_STATS==1: Enable UDP stats. Default is on if - * UDP enabled, otherwise off. - */ -#ifndef UDP_STATS -#define UDP_STATS (LWIP_UDP) -#endif - -/** - * TCP_STATS==1: Enable TCP stats. Default is on if TCP - * enabled, otherwise off. - */ -#ifndef TCP_STATS -#define TCP_STATS (LWIP_TCP) -#endif - -/** - * MEM_STATS==1: Enable mem.c stats. - */ -#ifndef MEM_STATS -#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0)) -#endif - -/** - * MEMP_STATS==1: Enable memp.c pool stats. - */ -#ifndef MEMP_STATS -#define MEMP_STATS (MEMP_MEM_MALLOC == 0) -#endif - -/** - * SYS_STATS==1: Enable system stats (sem and mbox counts, etc). - */ -#ifndef SYS_STATS -#define SYS_STATS (NO_SYS == 0) -#endif - -/** - * IP6_STATS==1: Enable IPv6 stats. - */ -#ifndef IP6_STATS -#define IP6_STATS (LWIP_IPV6) -#endif - -/** - * ICMP6_STATS==1: Enable ICMP for IPv6 stats. - */ -#ifndef ICMP6_STATS -#define ICMP6_STATS (LWIP_IPV6 && LWIP_ICMP6) -#endif - -/** - * IP6_FRAG_STATS==1: Enable IPv6 fragmentation stats. - */ -#ifndef IP6_FRAG_STATS -#define IP6_FRAG_STATS (LWIP_IPV6 && (LWIP_IPV6_FRAG || LWIP_IPV6_REASS)) -#endif - -/** - * MLD6_STATS==1: Enable MLD for IPv6 stats. - */ -#ifndef MLD6_STATS -#define MLD6_STATS (LWIP_IPV6 && LWIP_IPV6_MLD) -#endif - -/** - * ND6_STATS==1: Enable Neighbor discovery for IPv6 stats. - */ -#ifndef ND6_STATS -#define ND6_STATS (LWIP_IPV6) -#endif - -#else - -#define LINK_STATS 0 -#define IP_STATS 0 -#define IPFRAG_STATS 0 -#define ICMP_STATS 0 -#define IGMP_STATS 0 -#define UDP_STATS 0 -#define TCP_STATS 0 -#define MEM_STATS 0 -#define MEMP_STATS 0 -#define SYS_STATS 0 -#define LWIP_STATS_DISPLAY 0 -#define IP6_STATS 0 -#define ICMP6_STATS 0 -#define IP6_FRAG_STATS 0 -#define MLD6_STATS 0 -#define ND6_STATS 0 - -#endif /* LWIP_STATS */ - -/* - --------------------------------- - ---------- PPP options ---------- - --------------------------------- -*/ -/** - * PPP_SUPPORT==1: Enable PPP. - */ -#ifndef PPP_SUPPORT -#define PPP_SUPPORT 0 -#endif - -/** - * PPPOE_SUPPORT==1: Enable PPP Over Ethernet - */ -#ifndef PPPOE_SUPPORT -#define PPPOE_SUPPORT 0 -#endif - -/** - * PPPOS_SUPPORT==1: Enable PPP Over Serial - */ -#ifndef PPPOS_SUPPORT -#define PPPOS_SUPPORT PPP_SUPPORT -#endif - -#if PPP_SUPPORT - -/** - * NUM_PPP: Max PPP sessions. - */ -#ifndef NUM_PPP -#define NUM_PPP 1 -#endif - -/** - * PAP_SUPPORT==1: Support PAP. - */ -#ifndef PAP_SUPPORT -#define PAP_SUPPORT 0 -#endif - -/** - * CHAP_SUPPORT==1: Support CHAP. - */ -#ifndef CHAP_SUPPORT -#define CHAP_SUPPORT 0 -#endif - -/** - * MSCHAP_SUPPORT==1: Support MSCHAP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef MSCHAP_SUPPORT -#define MSCHAP_SUPPORT 0 -#endif - -/** - * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef CBCP_SUPPORT -#define CBCP_SUPPORT 0 -#endif - -/** - * CCP_SUPPORT==1: Support CCP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef CCP_SUPPORT -#define CCP_SUPPORT 0 -#endif - -/** - * VJ_SUPPORT==1: Support VJ header compression. - */ -#ifndef VJ_SUPPORT -#define VJ_SUPPORT 0 -#endif - -/** - * MD5_SUPPORT==1: Support MD5 (see also CHAP). - */ -#ifndef MD5_SUPPORT -#define MD5_SUPPORT 0 -#endif - -/* - * Timeouts - */ -#ifndef FSM_DEFTIMEOUT -#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */ -#endif - -#ifndef FSM_DEFMAXTERMREQS -#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */ -#endif - -#ifndef FSM_DEFMAXCONFREQS -#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */ -#endif - -#ifndef FSM_DEFMAXNAKLOOPS -#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */ -#endif - -#ifndef UPAP_DEFTIMEOUT -#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */ -#endif - -#ifndef UPAP_DEFREQTIME -#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */ -#endif - -#ifndef CHAP_DEFTIMEOUT -#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */ -#endif - -#ifndef CHAP_DEFTRANSMITS -#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */ -#endif - -/* Interval in seconds between keepalive echo requests, 0 to disable. */ -#ifndef LCP_ECHOINTERVAL -#define LCP_ECHOINTERVAL 0 -#endif - -/* Number of unanswered echo requests before failure. */ -#ifndef LCP_MAXECHOFAILS -#define LCP_MAXECHOFAILS 3 -#endif - -/* Max Xmit idle time (in jiffies) before resend flag char. */ -#ifndef PPP_MAXIDLEFLAG -#define PPP_MAXIDLEFLAG 100 -#endif - -/* - * Packet sizes - * - * Note - lcp shouldn't be allowed to negotiate stuff outside these - * limits. See lcp.h in the pppd directory. - * (XXX - these constants should simply be shared by lcp.c instead - * of living in lcp.h) - */ -#define PPP_MTU 1500 /* Default MTU (size of Info field) */ -#ifndef PPP_MAXMTU -/* #define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) */ -#define PPP_MAXMTU 1500 /* Largest MTU we allow */ -#endif -#define PPP_MINMTU 64 -#define PPP_MRU 1500 /* default MRU = max length of info field */ -#define PPP_MAXMRU 1500 /* Largest MRU we allow */ -#ifndef PPP_DEFMRU -#define PPP_DEFMRU 296 /* Try for this */ -#endif -#define PPP_MINMRU 128 /* No MRUs below this */ - -#ifndef MAXNAMELEN -#define MAXNAMELEN 256 /* max length of hostname or name for auth */ -#endif -#ifndef MAXSECRETLEN -#define MAXSECRETLEN 256 /* max length of password or secret */ -#endif - -#endif /* PPP_SUPPORT */ - -/* - -------------------------------------- - ---------- Checksum options ---------- - -------------------------------------- -*/ -/** - * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets. - */ -#ifndef CHECKSUM_GEN_IP -#define CHECKSUM_GEN_IP 1 -#endif - -/** - * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets. - */ -#ifndef CHECKSUM_GEN_UDP -#define CHECKSUM_GEN_UDP 1 -#endif - -/** - * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets. - */ -#ifndef CHECKSUM_GEN_TCP -#define CHECKSUM_GEN_TCP 1 -#endif - -/** - * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets. - */ -#ifndef CHECKSUM_CHECK_IP -#define CHECKSUM_CHECK_IP 1 -#endif - -/** - * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets. - */ -#ifndef CHECKSUM_CHECK_UDP -#define CHECKSUM_CHECK_UDP 1 -#endif - -/** - * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets. - */ -#ifndef CHECKSUM_CHECK_TCP -#define CHECKSUM_CHECK_TCP 1 -#endif - -/** - * LWIP_CHECKSUM_ON_COPY==1: Calculate checksum when copying data from - * application buffers to pbufs. - */ -#ifndef LWIP_CHECKSUM_ON_COPY -#define LWIP_CHECKSUM_ON_COPY 0 -#endif - -/* - --------------------------------------- - ---------- IPv6 options --------------- - --------------------------------------- -*/ -/** - * LWIP_IPV6==1: Enable IPv6 - */ -#ifndef LWIP_IPV6 -#define LWIP_IPV6 0 -#endif - -/** - * LWIP_IPV6_NUM_ADDRESSES: Number of IPv6 addresses per netif. - */ -#ifndef LWIP_IPV6_NUM_ADDRESSES -#define LWIP_IPV6_NUM_ADDRESSES 3 -#endif - -/** - * LWIP_IPV6_FORWARD==1: Forward IPv6 packets across netifs - */ -#ifndef LWIP_IPV6_FORWARD -#define LWIP_IPV6_FORWARD 0 -#endif - -/** - * LWIP_ICMP6==1: Enable ICMPv6 (mandatory per RFC) - */ -#ifndef LWIP_ICMP6 -#define LWIP_ICMP6 (LWIP_IPV6) -#endif - -/** - * LWIP_ICMP6_DATASIZE: bytes from original packet to send back in - * ICMPv6 error messages. - */ -#ifndef LWIP_ICMP6_DATASIZE -#define LWIP_ICMP6_DATASIZE 8 -#endif - -/** - * LWIP_ICMP6_HL: default hop limit for ICMPv6 messages - */ -#ifndef LWIP_ICMP6_HL -#define LWIP_ICMP6_HL 255 -#endif - -/** - * LWIP_ICMP6_CHECKSUM_CHECK==1: verify checksum on ICMPv6 packets - */ -#ifndef LWIP_ICMP6_CHECKSUM_CHECK -#define LWIP_ICMP6_CHECKSUM_CHECK 1 -#endif - -/** - * LWIP_IPV6_MLD==1: Enable multicast listener discovery protocol. - */ -#ifndef LWIP_IPV6_MLD -#define LWIP_IPV6_MLD (LWIP_IPV6) -#endif - -/** - * MEMP_NUM_MLD6_GROUP: Max number of IPv6 multicast that can be joined. - */ -#ifndef MEMP_NUM_MLD6_GROUP -#define MEMP_NUM_MLD6_GROUP 4 -#endif - -/** - * LWIP_IPV6_FRAG==1: Fragment outgoing IPv6 packets that are too big. - */ -#ifndef LWIP_IPV6_FRAG -#define LWIP_IPV6_FRAG 0 -#endif - -/** - * LWIP_IPV6_REASS==1: reassemble incoming IPv6 packets that fragmented - */ -#ifndef LWIP_IPV6_REASS -#define LWIP_IPV6_REASS (LWIP_IPV6) -#endif - -/** - * LWIP_ND6_QUEUEING==1: queue outgoing IPv6 packets while MAC address - * is being resolved. - */ -#ifndef LWIP_ND6_QUEUEING -#define LWIP_ND6_QUEUEING (LWIP_IPV6) -#endif - -/** - * MEMP_NUM_ND6_QUEUE: Max number of IPv6 packets to queue during MAC resolution. - */ -#ifndef MEMP_NUM_ND6_QUEUE -#define MEMP_NUM_ND6_QUEUE 20 -#endif - -/** - * LWIP_ND6_NUM_NEIGHBORS: Number of entries in IPv6 neighbor cache - */ -#ifndef LWIP_ND6_NUM_NEIGHBORS -#define LWIP_ND6_NUM_NEIGHBORS 10 -#endif - -/** - * LWIP_ND6_NUM_DESTINATIONS: number of entries in IPv6 destination cache - */ -#ifndef LWIP_ND6_NUM_DESTINATIONS -#define LWIP_ND6_NUM_DESTINATIONS 10 -#endif - -/** - * LWIP_ND6_NUM_PREFIXES: number of entries in IPv6 on-link prefixes cache - */ -#ifndef LWIP_ND6_NUM_PREFIXES -#define LWIP_ND6_NUM_PREFIXES 5 -#endif - -/** - * LWIP_ND6_NUM_ROUTERS: number of entries in IPv6 default router cache - */ -#ifndef LWIP_ND6_NUM_ROUTERS -#define LWIP_ND6_NUM_ROUTERS 3 -#endif - -/** - * LWIP_ND6_MAX_MULTICAST_SOLICIT: max number of multicast solicit messages to send - * (neighbor solicit and router solicit) - */ -#ifndef LWIP_ND6_MAX_MULTICAST_SOLICIT -#define LWIP_ND6_MAX_MULTICAST_SOLICIT 3 -#endif - -/** - * LWIP_ND6_MAX_UNICAST_SOLICIT: max number of unicast neighbor solicitation messages - * to send during neighbor reachability detection. - */ -#ifndef LWIP_ND6_MAX_UNICAST_SOLICIT -#define LWIP_ND6_MAX_UNICAST_SOLICIT 3 -#endif - -/** - * Unused: See ND RFC (time in milliseconds). - */ -#ifndef LWIP_ND6_MAX_ANYCAST_DELAY_TIME -#define LWIP_ND6_MAX_ANYCAST_DELAY_TIME 1000 -#endif - -/** - * Unused: See ND RFC - */ -#ifndef LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT -#define LWIP_ND6_MAX_NEIGHBOR_ADVERTISEMENT 3 -#endif - -/** - * LWIP_ND6_REACHABLE_TIME: default neighbor reachable time (in milliseconds). - * May be updated by router advertisement messages. - */ -#ifndef LWIP_ND6_REACHABLE_TIME -#define LWIP_ND6_REACHABLE_TIME 30000 -#endif - -/** - * LWIP_ND6_RETRANS_TIMER: default retransmission timer for solicitation messages - */ -#ifndef LWIP_ND6_RETRANS_TIMER -#define LWIP_ND6_RETRANS_TIMER 1000 -#endif - -/** - * LWIP_ND6_DELAY_FIRST_PROBE_TIME: Delay before first unicast neighbor solicitation - * message is sent, during neighbor reachability detection. - */ -#ifndef LWIP_ND6_DELAY_FIRST_PROBE_TIME -#define LWIP_ND6_DELAY_FIRST_PROBE_TIME 5000 -#endif - -/** - * LWIP_ND6_ALLOW_RA_UPDATES==1: Allow Router Advertisement messages to update - * Reachable time and retransmission timers, and netif MTU. - */ -#ifndef LWIP_ND6_ALLOW_RA_UPDATES -#define LWIP_ND6_ALLOW_RA_UPDATES 1 -#endif - -/** - * LWIP_IPV6_SEND_ROUTER_SOLICIT==1: Send router solicitation messages during - * network startup. - */ -#ifndef LWIP_IPV6_SEND_ROUTER_SOLICIT -#define LWIP_IPV6_SEND_ROUTER_SOLICIT 1 -#endif - -/** - * LWIP_ND6_TCP_REACHABILITY_HINTS==1: Allow TCP to provide Neighbor Discovery - * with reachability hints for connected destinations. This helps avoid sending - * unicast neighbor solicitation messages. - */ -#ifndef LWIP_ND6_TCP_REACHABILITY_HINTS -#define LWIP_ND6_TCP_REACHABILITY_HINTS 1 -#endif - -/** - * LWIP_IPV6_AUTOCONFIG==1: Enable stateless address autoconfiguration as per RFC 4862. - */ -#ifndef LWIP_IPV6_AUTOCONFIG -#define LWIP_IPV6_AUTOCONFIG (LWIP_IPV6) -#endif - -/** - * LWIP_IPV6_DUP_DETECT_ATTEMPTS: Number of duplicate address detection attempts. - */ -#ifndef LWIP_IPV6_DUP_DETECT_ATTEMPTS -#define LWIP_IPV6_DUP_DETECT_ATTEMPTS 1 -#endif - -/** - * LWIP_IPV6_DHCP6==1: enable DHCPv6 stateful address autoconfiguration. - */ -#ifndef LWIP_IPV6_DHCP6 -#define LWIP_IPV6_DHCP6 0 -#endif - -/* - --------------------------------------- - ---------- Hook options --------------- - --------------------------------------- -*/ - -/* Hooks are undefined by default, define them to a function if you need them. */ - -/** - * LWIP_HOOK_IP4_INPUT(pbuf, input_netif): - * - called from ip_input() (IPv4) - * - pbuf: received struct pbuf passed to ip_input() - * - input_netif: struct netif on which the packet has been received - * Return values: - * - 0: Hook has not consumed the packet, packet is processed as normal - * - != 0: Hook has consumed the packet. - * If the hook consumed the packet, 'pbuf' is in the responsibility of the hook - * (i.e. free it when done). - */ - -/** - * LWIP_HOOK_IP4_ROUTE(dest): - * - called from ip_route() (IPv4) - * - dest: destination IPv4 address - * Returns the destination netif or NULL if no destination netif is found. In - * that case, ip_route() continues as normal. - */ - -/* - --------------------------------------- - ---------- Debugging options ---------- - --------------------------------------- -*/ -/** - * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is - * compared against this value. If it is smaller, then debugging - * messages are written. - */ -#ifndef LWIP_DBG_MIN_LEVEL -#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL -#endif - -/** - * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable - * debug messages of certain types. - */ -#ifndef LWIP_DBG_TYPES_ON -#define LWIP_DBG_TYPES_ON LWIP_DBG_ON -#endif - -/** - * ETHARP_DEBUG: Enable debugging in etharp.c. - */ -#ifndef ETHARP_DEBUG -#define ETHARP_DEBUG LWIP_DBG_OFF -#endif - -/** - * NETIF_DEBUG: Enable debugging in netif.c. - */ -#ifndef NETIF_DEBUG -#define NETIF_DEBUG LWIP_DBG_OFF -#endif - -/** - * PBUF_DEBUG: Enable debugging in pbuf.c. - */ -#ifndef PBUF_DEBUG -#define PBUF_DEBUG LWIP_DBG_OFF -#endif - -/** - * API_LIB_DEBUG: Enable debugging in api_lib.c. - */ -#ifndef API_LIB_DEBUG -#define API_LIB_DEBUG LWIP_DBG_OFF -#endif - -/** - * API_MSG_DEBUG: Enable debugging in api_msg.c. - */ -#ifndef API_MSG_DEBUG -#define API_MSG_DEBUG LWIP_DBG_OFF -#endif - -/** - * SOCKETS_DEBUG: Enable debugging in sockets.c. - */ -#ifndef SOCKETS_DEBUG -#define SOCKETS_DEBUG LWIP_DBG_OFF -#endif - -/** - * ICMP_DEBUG: Enable debugging in icmp.c. - */ -#ifndef ICMP_DEBUG -#define ICMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * IGMP_DEBUG: Enable debugging in igmp.c. - */ -#ifndef IGMP_DEBUG -#define IGMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * INET_DEBUG: Enable debugging in inet.c. - */ -#ifndef INET_DEBUG -#define INET_DEBUG LWIP_DBG_OFF -#endif - -/** - * IP_DEBUG: Enable debugging for IP. - */ -#ifndef IP_DEBUG -#define IP_DEBUG LWIP_DBG_OFF -#endif - -/** - * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass. - */ -#ifndef IP_REASS_DEBUG -#define IP_REASS_DEBUG LWIP_DBG_OFF -#endif - -/** - * RAW_DEBUG: Enable debugging in raw.c. - */ -#ifndef RAW_DEBUG -#define RAW_DEBUG LWIP_DBG_OFF -#endif - -/** - * MEM_DEBUG: Enable debugging in mem.c. - */ -#ifndef MEM_DEBUG -#define MEM_DEBUG LWIP_DBG_OFF -#endif - -/** - * MEMP_DEBUG: Enable debugging in memp.c. - */ -#ifndef MEMP_DEBUG -#define MEMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SYS_DEBUG: Enable debugging in sys.c. - */ -#ifndef SYS_DEBUG -#define SYS_DEBUG LWIP_DBG_OFF -#endif - -/** - * TIMERS_DEBUG: Enable debugging in timers.c. - */ -#ifndef TIMERS_DEBUG -#define TIMERS_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_DEBUG: Enable debugging for TCP. - */ -#ifndef TCP_DEBUG -#define TCP_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug. - */ -#ifndef TCP_INPUT_DEBUG -#define TCP_INPUT_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit. - */ -#ifndef TCP_FR_DEBUG -#define TCP_FR_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit - * timeout. - */ -#ifndef TCP_RTO_DEBUG -#define TCP_RTO_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_CWND_DEBUG: Enable debugging for TCP congestion window. - */ -#ifndef TCP_CWND_DEBUG -#define TCP_CWND_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating. - */ -#ifndef TCP_WND_DEBUG -#define TCP_WND_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions. - */ -#ifndef TCP_OUTPUT_DEBUG -#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_RST_DEBUG: Enable debugging for TCP with the RST message. - */ -#ifndef TCP_RST_DEBUG -#define TCP_RST_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths. - */ -#ifndef TCP_QLEN_DEBUG -#define TCP_QLEN_DEBUG LWIP_DBG_OFF -#endif - -/** - * UDP_DEBUG: Enable debugging in UDP. - */ -#ifndef UDP_DEBUG -#define UDP_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCPIP_DEBUG: Enable debugging in tcpip.c. - */ -#ifndef TCPIP_DEBUG -#define TCPIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * PPP_DEBUG: Enable debugging for PPP. - */ -#ifndef PPP_DEBUG -#define PPP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SLIP_DEBUG: Enable debugging in slipif.c. - */ -#ifndef SLIP_DEBUG -#define SLIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * DHCP_DEBUG: Enable debugging in dhcp.c. - */ -#ifndef DHCP_DEBUG -#define DHCP_DEBUG LWIP_DBG_OFF -#endif - -/** - * AUTOIP_DEBUG: Enable debugging in autoip.c. - */ -#ifndef AUTOIP_DEBUG -#define AUTOIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SNMP_MSG_DEBUG: Enable debugging for SNMP messages. - */ -#ifndef SNMP_MSG_DEBUG -#define SNMP_MSG_DEBUG LWIP_DBG_OFF -#endif - -/** - * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs. - */ -#ifndef SNMP_MIB_DEBUG -#define SNMP_MIB_DEBUG LWIP_DBG_OFF -#endif - -/** - * DNS_DEBUG: Enable debugging for DNS. - */ -#ifndef DNS_DEBUG -#define DNS_DEBUG LWIP_DBG_OFF -#endif - -/** - * IP6_DEBUG: Enable debugging for IPv6. - */ -#ifndef IP6_DEBUG -#define IP6_DEBUG LWIP_DBG_OFF -#endif - -#endif /* __LWIP_OPT_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/pbuf.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/pbuf.h deleted file mode 100644 index 41c49099f..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/pbuf.h +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __LWIP_PBUF_H__ -#define __LWIP_PBUF_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Currently, the pbuf_custom code is only needed for one specific configuration - * of IP_FRAG */ -#define LWIP_SUPPORT_CUSTOM_PBUF (IP_FRAG && !IP_FRAG_USES_STATIC_BUF && !LWIP_NETIF_TX_SINGLE_PBUF) - -/* @todo: We need a mechanism to prevent wasting memory in every pbuf - (TCP vs. UDP, IPv4 vs. IPv6: UDP/IPv4 packets may waste up to 28 bytes) */ - -#define PBUF_TRANSPORT_HLEN 20 -#if LWIP_IPV6 -#define PBUF_IP_HLEN 40 -#else -#define PBUF_IP_HLEN 20 -#endif - -typedef enum { - PBUF_TRANSPORT, - PBUF_IP, - PBUF_LINK, - PBUF_RAW -} pbuf_layer; - -typedef enum { - PBUF_RAM, /* pbuf data is stored in RAM */ - PBUF_ROM, /* pbuf data is stored in ROM */ - PBUF_REF, /* pbuf comes from the pbuf pool */ - PBUF_POOL /* pbuf payload refers to RAM */ -} pbuf_type; - - -/** indicates this packet's data should be immediately passed to the application */ -#define PBUF_FLAG_PUSH 0x01U -/** indicates this is a custom pbuf: pbuf_free and pbuf_header handle such a - a pbuf differently */ -#define PBUF_FLAG_IS_CUSTOM 0x02U -/** indicates this pbuf is UDP multicast to be looped back */ -#define PBUF_FLAG_MCASTLOOP 0x04U -/** indicates this pbuf was received as link-level broadcast */ -#define PBUF_FLAG_LLBCAST 0x08U -/** indicates this pbuf was received as link-level multicast */ -#define PBUF_FLAG_LLMCAST 0x10U - -struct pbuf { - /** next pbuf in singly linked pbuf chain */ - struct pbuf *next; - - /** pointer to the actual data in the buffer */ - void *payload; - - /** - * total length of this buffer and all next buffers in chain - * belonging to the same packet. - * - * For non-queue packet chains this is the invariant: - * p->tot_len == p->len + (p->next? p->next->tot_len: 0) - */ - u16_t tot_len; - - /** length of this buffer */ - u16_t len; - - /** pbuf_type as u8_t instead of enum to save space */ - u8_t /*pbuf_type*/ type; - - /** misc flags */ - u8_t flags; - - /** - * the reference count always equals the number of pointers - * that refer to this pbuf. This can be pointers from an application, - * the stack itself, or pbuf->next pointers from a chain. - */ - u16_t ref; -}; - -#if LWIP_SUPPORT_CUSTOM_PBUF -/** Prototype for a function to free a custom pbuf */ -typedef void (*pbuf_free_custom_fn)(struct pbuf *p); - -/** A custom pbuf: like a pbuf, but following a function pointer to free it. */ -struct pbuf_custom { - /** The actual pbuf */ - struct pbuf pbuf; - /** This function is called when pbuf_free deallocates this pbuf(_custom) */ - pbuf_free_custom_fn custom_free_function; -}; -#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ - -#if LWIP_TCP && TCP_QUEUE_OOSEQ -/** Define this to 0 to prevent freeing ooseq pbufs when the PBUF_POOL is empty */ -#ifndef PBUF_POOL_FREE_OOSEQ -#define PBUF_POOL_FREE_OOSEQ 1 -#endif /* PBUF_POOL_FREE_OOSEQ */ -#if NO_SYS && PBUF_POOL_FREE_OOSEQ -extern volatile u8_t pbuf_free_ooseq_pending; -void pbuf_free_ooseq(); -/** When not using sys_check_timeouts(), call PBUF_CHECK_FREE_OOSEQ() - at regular intervals from main level to check if ooseq pbufs need to be - freed! */ -#define PBUF_CHECK_FREE_OOSEQ() do { if(pbuf_free_ooseq_pending) { \ - /* pbuf_alloc() reported PBUF_POOL to be empty -> try to free some \ - ooseq queued pbufs now */ \ - pbuf_free_ooseq(); }}while(0) -#endif /* NO_SYS && PBUF_POOL_FREE_OOSEQ*/ -#endif /* LWIP_TCP && TCP_QUEUE_OOSEQ */ - -/* Initializes the pbuf module. This call is empty for now, but may not be in future. */ -#define pbuf_init() - -struct pbuf *pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type); -#if LWIP_SUPPORT_CUSTOM_PBUF -struct pbuf *pbuf_alloced_custom(pbuf_layer l, u16_t length, pbuf_type type, - struct pbuf_custom *p, void *payload_mem, - u16_t payload_mem_len); -#endif /* LWIP_SUPPORT_CUSTOM_PBUF */ -void pbuf_realloc(struct pbuf *p, u16_t size); -u8_t pbuf_header(struct pbuf *p, s16_t header_size); -void pbuf_ref(struct pbuf *p); -u8_t pbuf_free(struct pbuf *p); -u8_t pbuf_clen(struct pbuf *p); -void pbuf_cat(struct pbuf *head, struct pbuf *tail); -void pbuf_chain(struct pbuf *head, struct pbuf *tail); -struct pbuf *pbuf_dechain(struct pbuf *p); -err_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from); -u16_t pbuf_copy_partial(struct pbuf *p, void *dataptr, u16_t len, u16_t offset); -err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len); -struct pbuf *pbuf_coalesce(struct pbuf *p, pbuf_layer layer); -#if LWIP_CHECKSUM_ON_COPY -err_t pbuf_fill_chksum(struct pbuf *p, u16_t start_offset, const void *dataptr, - u16_t len, u16_t *chksum); -#endif /* LWIP_CHECKSUM_ON_COPY */ - -u8_t pbuf_get_at(struct pbuf* p, u16_t offset); -u16_t pbuf_memcmp(struct pbuf* p, u16_t offset, const void* s2, u16_t n); -u16_t pbuf_memfind(struct pbuf* p, const void* mem, u16_t mem_len, u16_t start_offset); -u16_t pbuf_strstr(struct pbuf* p, const char* substr); - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_PBUF_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/raw.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/raw.h deleted file mode 100644 index f0c8ed475..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/raw.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_RAW_H__ -#define __LWIP_RAW_H__ - -#include "lwip/opt.h" - -#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/def.h" -#include "lwip/ip.h" -#include "lwip/ip_addr.h" -#include "lwip/ip6_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct raw_pcb; - -/** Function prototype for raw pcb receive callback functions. - * @param arg user supplied argument (raw_pcb.recv_arg) - * @param pcb the raw_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IP address from which the packet was received - * @return 1 if the packet was 'eaten' (aka. deleted), - * 0 if the packet lives on - * If returning 1, the callback is responsible for freeing the pbuf - * if it's not used any more. - */ -typedef u8_t (*raw_recv_fn)(void *arg, struct raw_pcb *pcb, struct pbuf *p, - ip_addr_t *addr); - -#if LWIP_IPV6 -/** Function prototype for raw pcb IPv6 receive callback functions. - * @param arg user supplied argument (raw_pcb.recv_arg) - * @param pcb the raw_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IPv6 address from which the packet was received - * @return 1 if the packet was 'eaten' (aka. deleted), - * 0 if the packet lives on - * If returning 1, the callback is responsible for freeing the pbuf - * if it's not used any more. - */ -typedef u8_t (*raw_recv_ip6_fn)(void *arg, struct raw_pcb *pcb, struct pbuf *p, - ip6_addr_t *addr); -#endif /* LWIP_IPV6 */ - -#if LWIP_IPV6 -#define RAW_PCB_RECV_IP6 raw_recv_ip6_fn ip6; -#else -#define RAW_PCB_RECV_IP6 -#endif /* LWIP_IPV6 */ - -struct raw_pcb { - /* Common members of all PCB types */ - IP_PCB; - - struct raw_pcb *next; - - u8_t protocol; - - /** receive callback function */ - union { - raw_recv_fn ip4; - RAW_PCB_RECV_IP6 - } recv; - /* user-supplied argument for the recv callback */ - void *recv_arg; -}; - -/* The following functions is the application layer interface to the - RAW code. */ -struct raw_pcb * raw_new (u8_t proto); -void raw_remove (struct raw_pcb *pcb); -err_t raw_bind (struct raw_pcb *pcb, ip_addr_t *ipaddr); -err_t raw_connect (struct raw_pcb *pcb, ip_addr_t *ipaddr); - -void raw_recv (struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg); -err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, ip_addr_t *ipaddr); -err_t raw_send (struct raw_pcb *pcb, struct pbuf *p); - -#if LWIP_IPV6 -struct raw_pcb * raw_new_ip6 (u8_t proto); -#define raw_bind_ip6(pcb, ip6addr) raw_bind(pcb, ip6_2_ip(ip6addr)) -#define raw_connect_ip6(pcb, ip6addr) raw_connect(pcb, ip6_2_ip(ip6addr)) -#define raw_recv_ip6(pcb, recv_ip6_fn, recv_arg) raw_recv(pcb, (raw_recv_fn)recv_ip6_fn, recv_arg) -#define raw_sendto_ip6(pcb, pbuf, ip6addr) raw_sendto(pcb, pbuf, ip6_2_ip(ip6addr)) -#endif /* LWIP_IPV6 */ - -/* The following functions are the lower layer interface to RAW. */ -u8_t raw_input (struct pbuf *p, struct netif *inp); -#define raw_init() /* Compatibility define, not init needed. */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_RAW */ - -#endif /* __LWIP_RAW_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sio.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sio.h deleted file mode 100644 index 28ae2f225..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sio.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - */ - -/* - * This is the interface to the platform specific serial IO module - * It needs to be implemented by those platforms which need SLIP or PPP - */ - -#ifndef __SIO_H__ -#define __SIO_H__ - -#include "lwip/arch.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* If you want to define sio_fd_t elsewhere or differently, - define this in your cc.h file. */ -#ifndef __sio_fd_t_defined -typedef void * sio_fd_t; -#endif - -/* The following functions can be defined to something else in your cc.h file - or be implemented in your custom sio.c file. */ - -#ifndef sio_open -/** - * Opens a serial device for communication. - * - * @param devnum device number - * @return handle to serial device if successful, NULL otherwise - */ -sio_fd_t sio_open(u8_t devnum); -#endif - -#ifndef sio_send -/** - * Sends a single character to the serial device. - * - * @param c character to send - * @param fd serial device handle - * - * @note This function will block until the character can be sent. - */ -void sio_send(u8_t c, sio_fd_t fd); -#endif - -#ifndef sio_recv -/** - * Receives a single character from the serial device. - * - * @param fd serial device handle - * - * @note This function will block until a character is received. - */ -u8_t sio_recv(sio_fd_t fd); -#endif - -#ifndef sio_read -/** - * Reads from the serial device. - * - * @param fd serial device handle - * @param data pointer to data buffer for receiving - * @param len maximum length (in bytes) of data to receive - * @return number of bytes actually received - may be 0 if aborted by sio_read_abort - * - * @note This function will block until data can be received. The blocking - * can be cancelled by calling sio_read_abort(). - */ -u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_tryread -/** - * Tries to read from the serial device. Same as sio_read but returns - * immediately if no data is available and never blocks. - * - * @param fd serial device handle - * @param data pointer to data buffer for receiving - * @param len maximum length (in bytes) of data to receive - * @return number of bytes actually received - */ -u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_write -/** - * Writes to the serial device. - * - * @param fd serial device handle - * @param data pointer to data to send - * @param len length (in bytes) of data to send - * @return number of bytes actually sent - * - * @note This function will block until all data can be sent. - */ -u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_read_abort -/** - * Aborts a blocking sio_read() call. - * - * @param fd serial device handle - */ -void sio_read_abort(sio_fd_t fd); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __SIO_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp.h deleted file mode 100644 index 2ed043dd5..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp.h +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (c) 2001, 2002 Leon Woestenberg - * Copyright (c) 2001, 2002 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Leon Woestenberg - * - */ -#ifndef __LWIP_SNMP_H__ -#define __LWIP_SNMP_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#include "lwip/ip_addr.h" - -struct udp_pcb; -struct netif; - -/** - * @see RFC1213, "MIB-II, 6. Definitions" - */ -enum snmp_ifType { - snmp_ifType_other=1, /* none of the following */ - snmp_ifType_regular1822, - snmp_ifType_hdh1822, - snmp_ifType_ddn_x25, - snmp_ifType_rfc877_x25, - snmp_ifType_ethernet_csmacd, - snmp_ifType_iso88023_csmacd, - snmp_ifType_iso88024_tokenBus, - snmp_ifType_iso88025_tokenRing, - snmp_ifType_iso88026_man, - snmp_ifType_starLan, - snmp_ifType_proteon_10Mbit, - snmp_ifType_proteon_80Mbit, - snmp_ifType_hyperchannel, - snmp_ifType_fddi, - snmp_ifType_lapb, - snmp_ifType_sdlc, - snmp_ifType_ds1, /* T-1 */ - snmp_ifType_e1, /* european equiv. of T-1 */ - snmp_ifType_basicISDN, - snmp_ifType_primaryISDN, /* proprietary serial */ - snmp_ifType_propPointToPointSerial, - snmp_ifType_ppp, - snmp_ifType_softwareLoopback, - snmp_ifType_eon, /* CLNP over IP [11] */ - snmp_ifType_ethernet_3Mbit, - snmp_ifType_nsip, /* XNS over IP */ - snmp_ifType_slip, /* generic SLIP */ - snmp_ifType_ultra, /* ULTRA technologies */ - snmp_ifType_ds3, /* T-3 */ - snmp_ifType_sip, /* SMDS */ - snmp_ifType_frame_relay -}; - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -/** SNMP "sysuptime" Interval */ -#define SNMP_SYSUPTIME_INTERVAL 10 - -/** fixed maximum length for object identifier type */ -#define LWIP_SNMP_OBJ_ID_LEN 32 - -/** internal object identifier representation */ -struct snmp_obj_id -{ - u8_t len; - s32_t id[LWIP_SNMP_OBJ_ID_LEN]; -}; - -/* system */ -void snmp_set_sysdesr(u8_t* str, u8_t* len); -void snmp_set_sysobjid(struct snmp_obj_id *oid); -void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid); -void snmp_inc_sysuptime(void); -void snmp_add_sysuptime(u32_t value); -void snmp_get_sysuptime(u32_t *value); -void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen); -void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen); -void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen); - -/* network interface */ -void snmp_add_ifinoctets(struct netif *ni, u32_t value); -void snmp_inc_ifinucastpkts(struct netif *ni); -void snmp_inc_ifinnucastpkts(struct netif *ni); -void snmp_inc_ifindiscards(struct netif *ni); -void snmp_add_ifoutoctets(struct netif *ni, u32_t value); -void snmp_inc_ifoutucastpkts(struct netif *ni); -void snmp_inc_ifoutnucastpkts(struct netif *ni); -void snmp_inc_ifoutdiscards(struct netif *ni); -void snmp_inc_iflist(void); -void snmp_dec_iflist(void); - -/* ARP (for atTable and ipNetToMediaTable) */ -void snmp_insert_arpidx_tree(struct netif *ni, ip_addr_t *ip); -void snmp_delete_arpidx_tree(struct netif *ni, ip_addr_t *ip); - -/* IP */ -void snmp_inc_ipinreceives(void); -void snmp_inc_ipinhdrerrors(void); -void snmp_inc_ipinaddrerrors(void); -void snmp_inc_ipforwdatagrams(void); -void snmp_inc_ipinunknownprotos(void); -void snmp_inc_ipindiscards(void); -void snmp_inc_ipindelivers(void); -void snmp_inc_ipoutrequests(void); -void snmp_inc_ipoutdiscards(void); -void snmp_inc_ipoutnoroutes(void); -void snmp_inc_ipreasmreqds(void); -void snmp_inc_ipreasmoks(void); -void snmp_inc_ipreasmfails(void); -void snmp_inc_ipfragoks(void); -void snmp_inc_ipfragfails(void); -void snmp_inc_ipfragcreates(void); -void snmp_inc_iproutingdiscards(void); -void snmp_insert_ipaddridx_tree(struct netif *ni); -void snmp_delete_ipaddridx_tree(struct netif *ni); -void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni); -void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni); - -/* ICMP */ -void snmp_inc_icmpinmsgs(void); -void snmp_inc_icmpinerrors(void); -void snmp_inc_icmpindestunreachs(void); -void snmp_inc_icmpintimeexcds(void); -void snmp_inc_icmpinparmprobs(void); -void snmp_inc_icmpinsrcquenchs(void); -void snmp_inc_icmpinredirects(void); -void snmp_inc_icmpinechos(void); -void snmp_inc_icmpinechoreps(void); -void snmp_inc_icmpintimestamps(void); -void snmp_inc_icmpintimestampreps(void); -void snmp_inc_icmpinaddrmasks(void); -void snmp_inc_icmpinaddrmaskreps(void); -void snmp_inc_icmpoutmsgs(void); -void snmp_inc_icmpouterrors(void); -void snmp_inc_icmpoutdestunreachs(void); -void snmp_inc_icmpouttimeexcds(void); -void snmp_inc_icmpoutparmprobs(void); -void snmp_inc_icmpoutsrcquenchs(void); -void snmp_inc_icmpoutredirects(void); -void snmp_inc_icmpoutechos(void); -void snmp_inc_icmpoutechoreps(void); -void snmp_inc_icmpouttimestamps(void); -void snmp_inc_icmpouttimestampreps(void); -void snmp_inc_icmpoutaddrmasks(void); -void snmp_inc_icmpoutaddrmaskreps(void); - -/* TCP */ -void snmp_inc_tcpactiveopens(void); -void snmp_inc_tcppassiveopens(void); -void snmp_inc_tcpattemptfails(void); -void snmp_inc_tcpestabresets(void); -void snmp_inc_tcpinsegs(void); -void snmp_inc_tcpoutsegs(void); -void snmp_inc_tcpretranssegs(void); -void snmp_inc_tcpinerrs(void); -void snmp_inc_tcpoutrsts(void); - -/* UDP */ -void snmp_inc_udpindatagrams(void); -void snmp_inc_udpnoports(void); -void snmp_inc_udpinerrors(void); -void snmp_inc_udpoutdatagrams(void); -void snmp_insert_udpidx_tree(struct udp_pcb *pcb); -void snmp_delete_udpidx_tree(struct udp_pcb *pcb); - -/* SNMP */ -void snmp_inc_snmpinpkts(void); -void snmp_inc_snmpoutpkts(void); -void snmp_inc_snmpinbadversions(void); -void snmp_inc_snmpinbadcommunitynames(void); -void snmp_inc_snmpinbadcommunityuses(void); -void snmp_inc_snmpinasnparseerrs(void); -void snmp_inc_snmpintoobigs(void); -void snmp_inc_snmpinnosuchnames(void); -void snmp_inc_snmpinbadvalues(void); -void snmp_inc_snmpinreadonlys(void); -void snmp_inc_snmpingenerrs(void); -void snmp_add_snmpintotalreqvars(u8_t value); -void snmp_add_snmpintotalsetvars(u8_t value); -void snmp_inc_snmpingetrequests(void); -void snmp_inc_snmpingetnexts(void); -void snmp_inc_snmpinsetrequests(void); -void snmp_inc_snmpingetresponses(void); -void snmp_inc_snmpintraps(void); -void snmp_inc_snmpouttoobigs(void); -void snmp_inc_snmpoutnosuchnames(void); -void snmp_inc_snmpoutbadvalues(void); -void snmp_inc_snmpoutgenerrs(void); -void snmp_inc_snmpoutgetrequests(void); -void snmp_inc_snmpoutgetnexts(void); -void snmp_inc_snmpoutsetrequests(void); -void snmp_inc_snmpoutgetresponses(void); -void snmp_inc_snmpouttraps(void); -void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid); -void snmp_set_snmpenableauthentraps(u8_t *value); -void snmp_get_snmpenableauthentraps(u8_t *value); - -/* LWIP_SNMP support not available */ -/* define everything to be empty */ -#else - -/* system */ -#define snmp_set_sysdesr(str, len) -#define snmp_set_sysobjid(oid); -#define snmp_get_sysobjid_ptr(oid) -#define snmp_inc_sysuptime() -#define snmp_add_sysuptime(value) -#define snmp_get_sysuptime(value) -#define snmp_set_syscontact(ocstr, ocstrlen); -#define snmp_set_sysname(ocstr, ocstrlen); -#define snmp_set_syslocation(ocstr, ocstrlen); - -/* network interface */ -#define snmp_add_ifinoctets(ni,value) -#define snmp_inc_ifinucastpkts(ni) -#define snmp_inc_ifinnucastpkts(ni) -#define snmp_inc_ifindiscards(ni) -#define snmp_add_ifoutoctets(ni,value) -#define snmp_inc_ifoutucastpkts(ni) -#define snmp_inc_ifoutnucastpkts(ni) -#define snmp_inc_ifoutdiscards(ni) -#define snmp_inc_iflist() -#define snmp_dec_iflist() - -/* ARP */ -#define snmp_insert_arpidx_tree(ni,ip) -#define snmp_delete_arpidx_tree(ni,ip) - -/* IP */ -#define snmp_inc_ipinreceives() -#define snmp_inc_ipinhdrerrors() -#define snmp_inc_ipinaddrerrors() -#define snmp_inc_ipforwdatagrams() -#define snmp_inc_ipinunknownprotos() -#define snmp_inc_ipindiscards() -#define snmp_inc_ipindelivers() -#define snmp_inc_ipoutrequests() -#define snmp_inc_ipoutdiscards() -#define snmp_inc_ipoutnoroutes() -#define snmp_inc_ipreasmreqds() -#define snmp_inc_ipreasmoks() -#define snmp_inc_ipreasmfails() -#define snmp_inc_ipfragoks() -#define snmp_inc_ipfragfails() -#define snmp_inc_ipfragcreates() -#define snmp_inc_iproutingdiscards() -#define snmp_insert_ipaddridx_tree(ni) -#define snmp_delete_ipaddridx_tree(ni) -#define snmp_insert_iprteidx_tree(dflt, ni) -#define snmp_delete_iprteidx_tree(dflt, ni) - -/* ICMP */ -#define snmp_inc_icmpinmsgs() -#define snmp_inc_icmpinerrors() -#define snmp_inc_icmpindestunreachs() -#define snmp_inc_icmpintimeexcds() -#define snmp_inc_icmpinparmprobs() -#define snmp_inc_icmpinsrcquenchs() -#define snmp_inc_icmpinredirects() -#define snmp_inc_icmpinechos() -#define snmp_inc_icmpinechoreps() -#define snmp_inc_icmpintimestamps() -#define snmp_inc_icmpintimestampreps() -#define snmp_inc_icmpinaddrmasks() -#define snmp_inc_icmpinaddrmaskreps() -#define snmp_inc_icmpoutmsgs() -#define snmp_inc_icmpouterrors() -#define snmp_inc_icmpoutdestunreachs() -#define snmp_inc_icmpouttimeexcds() -#define snmp_inc_icmpoutparmprobs() -#define snmp_inc_icmpoutsrcquenchs() -#define snmp_inc_icmpoutredirects() -#define snmp_inc_icmpoutechos() -#define snmp_inc_icmpoutechoreps() -#define snmp_inc_icmpouttimestamps() -#define snmp_inc_icmpouttimestampreps() -#define snmp_inc_icmpoutaddrmasks() -#define snmp_inc_icmpoutaddrmaskreps() -/* TCP */ -#define snmp_inc_tcpactiveopens() -#define snmp_inc_tcppassiveopens() -#define snmp_inc_tcpattemptfails() -#define snmp_inc_tcpestabresets() -#define snmp_inc_tcpinsegs() -#define snmp_inc_tcpoutsegs() -#define snmp_inc_tcpretranssegs() -#define snmp_inc_tcpinerrs() -#define snmp_inc_tcpoutrsts() - -/* UDP */ -#define snmp_inc_udpindatagrams() -#define snmp_inc_udpnoports() -#define snmp_inc_udpinerrors() -#define snmp_inc_udpoutdatagrams() -#define snmp_insert_udpidx_tree(pcb) -#define snmp_delete_udpidx_tree(pcb) - -/* SNMP */ -#define snmp_inc_snmpinpkts() -#define snmp_inc_snmpoutpkts() -#define snmp_inc_snmpinbadversions() -#define snmp_inc_snmpinbadcommunitynames() -#define snmp_inc_snmpinbadcommunityuses() -#define snmp_inc_snmpinasnparseerrs() -#define snmp_inc_snmpintoobigs() -#define snmp_inc_snmpinnosuchnames() -#define snmp_inc_snmpinbadvalues() -#define snmp_inc_snmpinreadonlys() -#define snmp_inc_snmpingenerrs() -#define snmp_add_snmpintotalreqvars(value) -#define snmp_add_snmpintotalsetvars(value) -#define snmp_inc_snmpingetrequests() -#define snmp_inc_snmpingetnexts() -#define snmp_inc_snmpinsetrequests() -#define snmp_inc_snmpingetresponses() -#define snmp_inc_snmpintraps() -#define snmp_inc_snmpouttoobigs() -#define snmp_inc_snmpoutnosuchnames() -#define snmp_inc_snmpoutbadvalues() -#define snmp_inc_snmpoutgenerrs() -#define snmp_inc_snmpoutgetrequests() -#define snmp_inc_snmpoutgetnexts() -#define snmp_inc_snmpoutsetrequests() -#define snmp_inc_snmpoutgetresponses() -#define snmp_inc_snmpouttraps() -#define snmp_get_snmpgrpid_ptr(oid) -#define snmp_set_snmpenableauthentraps(value) -#define snmp_get_snmpenableauthentraps(value) - -#endif /* LWIP_SNMP */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_SNMP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_asn1.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_asn1.h deleted file mode 100644 index 605fa3f16..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_asn1.h +++ /dev/null @@ -1,101 +0,0 @@ -/** - * @file - * Abstract Syntax Notation One (ISO 8824, 8825) codec. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_ASN1_H__ -#define __LWIP_SNMP_ASN1_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" -#include "lwip/pbuf.h" -#include "lwip/snmp.h" - -#if LWIP_SNMP - -#ifdef __cplusplus -extern "C" { -#endif - -#define SNMP_ASN1_UNIV (0) /* (!0x80 | !0x40) */ -#define SNMP_ASN1_APPLIC (0x40) /* (!0x80 | 0x40) */ -#define SNMP_ASN1_CONTXT (0x80) /* ( 0x80 | !0x40) */ - -#define SNMP_ASN1_CONSTR (0x20) /* ( 0x20) */ -#define SNMP_ASN1_PRIMIT (0) /* (!0x20) */ - -/* universal tags */ -#define SNMP_ASN1_INTEG 2 -#define SNMP_ASN1_OC_STR 4 -#define SNMP_ASN1_NUL 5 -#define SNMP_ASN1_OBJ_ID 6 -#define SNMP_ASN1_SEQ 16 - -/* application specific (SNMP) tags */ -#define SNMP_ASN1_IPADDR 0 /* octet string size(4) */ -#define SNMP_ASN1_COUNTER 1 /* u32_t */ -#define SNMP_ASN1_GAUGE 2 /* u32_t */ -#define SNMP_ASN1_TIMETICKS 3 /* u32_t */ -#define SNMP_ASN1_OPAQUE 4 /* octet string */ - -/* context specific (SNMP) tags */ -#define SNMP_ASN1_PDU_GET_REQ 0 -#define SNMP_ASN1_PDU_GET_NEXT_REQ 1 -#define SNMP_ASN1_PDU_GET_RESP 2 -#define SNMP_ASN1_PDU_SET_REQ 3 -#define SNMP_ASN1_PDU_TRAP 4 - -err_t snmp_asn1_dec_type(struct pbuf *p, u16_t ofs, u8_t *type); -err_t snmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length); -err_t snmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value); -err_t snmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value); -err_t snmp_asn1_dec_oid(struct pbuf *p, u16_t ofs, u16_t len, struct snmp_obj_id *oid); -err_t snmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw); - -void snmp_asn1_enc_length_cnt(u16_t length, u8_t *octets_needed); -void snmp_asn1_enc_u32t_cnt(u32_t value, u16_t *octets_needed); -void snmp_asn1_enc_s32t_cnt(s32_t value, u16_t *octets_needed); -void snmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed); -err_t snmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type); -err_t snmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length); -err_t snmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, u32_t value); -err_t snmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u16_t octets_needed, s32_t value); -err_t snmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident); -err_t snmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u16_t raw_len, u8_t *raw); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_ASN1_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_msg.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_msg.h deleted file mode 100644 index 1183e3a95..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_msg.h +++ /dev/null @@ -1,315 +0,0 @@ -/** - * @file - * SNMP Agent message handling structures. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_MSG_H__ -#define __LWIP_SNMP_MSG_H__ - -#include "lwip/opt.h" -#include "lwip/snmp.h" -#include "lwip/snmp_structs.h" -#include "lwip/ip_addr.h" -#include "lwip/err.h" - -#if LWIP_SNMP - -#if SNMP_PRIVATE_MIB -/* When using a private MIB, you have to create a file 'private_mib.h' that contains - * a 'struct mib_array_node mib_private' which contains your MIB. */ -#include "private_mib.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* The listen port of the SNMP agent. Clients have to make their requests to - this port. Most standard clients won't work if you change this! */ -#ifndef SNMP_IN_PORT -#define SNMP_IN_PORT 161 -#endif -/* The remote port the SNMP agent sends traps to. Most standard trap sinks won't - work if you change this! */ -#ifndef SNMP_TRAP_PORT -#define SNMP_TRAP_PORT 162 -#endif - -#define SNMP_ES_NOERROR 0 -#define SNMP_ES_TOOBIG 1 -#define SNMP_ES_NOSUCHNAME 2 -#define SNMP_ES_BADVALUE 3 -#define SNMP_ES_READONLY 4 -#define SNMP_ES_GENERROR 5 - -#define SNMP_GENTRAP_COLDSTART 0 -#define SNMP_GENTRAP_WARMSTART 1 -#define SNMP_GENTRAP_AUTHFAIL 4 -#define SNMP_GENTRAP_ENTERPRISESPC 6 - -struct snmp_varbind -{ - /* next pointer, NULL for last in list */ - struct snmp_varbind *next; - /* previous pointer, NULL for first in list */ - struct snmp_varbind *prev; - - /* object identifier length (in s32_t) */ - u8_t ident_len; - /* object identifier array */ - s32_t *ident; - - /* object value ASN1 type */ - u8_t value_type; - /* object value length (in u8_t) */ - u8_t value_len; - /* object value */ - void *value; - - /* encoding varbind seq length length */ - u8_t seqlenlen; - /* encoding object identifier length length */ - u8_t olenlen; - /* encoding object value length length */ - u8_t vlenlen; - /* encoding varbind seq length */ - u16_t seqlen; - /* encoding object identifier length */ - u16_t olen; - /* encoding object value length */ - u16_t vlen; -}; - -struct snmp_varbind_root -{ - struct snmp_varbind *head; - struct snmp_varbind *tail; - /* number of variable bindings in list */ - u8_t count; - /* encoding varbind-list seq length length */ - u8_t seqlenlen; - /* encoding varbind-list seq length */ - u16_t seqlen; -}; - -/** output response message header length fields */ -struct snmp_resp_header_lengths -{ - /* encoding error-index length length */ - u8_t erridxlenlen; - /* encoding error-status length length */ - u8_t errstatlenlen; - /* encoding request id length length */ - u8_t ridlenlen; - /* encoding pdu length length */ - u8_t pdulenlen; - /* encoding community length length */ - u8_t comlenlen; - /* encoding version length length */ - u8_t verlenlen; - /* encoding sequence length length */ - u8_t seqlenlen; - - /* encoding error-index length */ - u16_t erridxlen; - /* encoding error-status length */ - u16_t errstatlen; - /* encoding request id length */ - u16_t ridlen; - /* encoding pdu length */ - u16_t pdulen; - /* encoding community length */ - u16_t comlen; - /* encoding version length */ - u16_t verlen; - /* encoding sequence length */ - u16_t seqlen; -}; - -/** output response message header length fields */ -struct snmp_trap_header_lengths -{ - /* encoding timestamp length length */ - u8_t tslenlen; - /* encoding specific-trap length length */ - u8_t strplenlen; - /* encoding generic-trap length length */ - u8_t gtrplenlen; - /* encoding agent-addr length length */ - u8_t aaddrlenlen; - /* encoding enterprise-id length length */ - u8_t eidlenlen; - /* encoding pdu length length */ - u8_t pdulenlen; - /* encoding community length length */ - u8_t comlenlen; - /* encoding version length length */ - u8_t verlenlen; - /* encoding sequence length length */ - u8_t seqlenlen; - - /* encoding timestamp length */ - u16_t tslen; - /* encoding specific-trap length */ - u16_t strplen; - /* encoding generic-trap length */ - u16_t gtrplen; - /* encoding agent-addr length */ - u16_t aaddrlen; - /* encoding enterprise-id length */ - u16_t eidlen; - /* encoding pdu length */ - u16_t pdulen; - /* encoding community length */ - u16_t comlen; - /* encoding version length */ - u16_t verlen; - /* encoding sequence length */ - u16_t seqlen; -}; - -/* Accepting new SNMP messages. */ -#define SNMP_MSG_EMPTY 0 -/* Search for matching object for variable binding. */ -#define SNMP_MSG_SEARCH_OBJ 1 -/* Perform SNMP operation on in-memory object. - Pass-through states, for symmetry only. */ -#define SNMP_MSG_INTERNAL_GET_OBJDEF 2 -#define SNMP_MSG_INTERNAL_GET_VALUE 3 -#define SNMP_MSG_INTERNAL_SET_TEST 4 -#define SNMP_MSG_INTERNAL_GET_OBJDEF_S 5 -#define SNMP_MSG_INTERNAL_SET_VALUE 6 -/* Perform SNMP operation on object located externally. - In theory this could be used for building a proxy agent. - Practical use is for an enterprise spc. app. gateway. */ -#define SNMP_MSG_EXTERNAL_GET_OBJDEF 7 -#define SNMP_MSG_EXTERNAL_GET_VALUE 8 -#define SNMP_MSG_EXTERNAL_SET_TEST 9 -#define SNMP_MSG_EXTERNAL_GET_OBJDEF_S 10 -#define SNMP_MSG_EXTERNAL_SET_VALUE 11 - -#define SNMP_COMMUNITY_STR_LEN 64 -struct snmp_msg_pstat -{ - /* lwIP local port (161) binding */ - struct udp_pcb *pcb; - /* source IP address */ - ip_addr_t sip; - /* source UDP port */ - u16_t sp; - /* request type */ - u8_t rt; - /* request ID */ - s32_t rid; - /* error status */ - s32_t error_status; - /* error index */ - s32_t error_index; - /* community name (zero terminated) */ - u8_t community[SNMP_COMMUNITY_STR_LEN + 1]; - /* community string length (exclusive zero term) */ - u8_t com_strlen; - /* one out of MSG_EMPTY, MSG_DEMUX, MSG_INTERNAL, MSG_EXTERNAL_x */ - u8_t state; - /* saved arguments for MSG_EXTERNAL_x */ - struct mib_external_node *ext_mib_node; - struct snmp_name_ptr ext_name_ptr; - struct obj_def ext_object_def; - struct snmp_obj_id ext_oid; - /* index into input variable binding list */ - u8_t vb_idx; - /* ptr into input variable binding list */ - struct snmp_varbind *vb_ptr; - /* list of variable bindings from input */ - struct snmp_varbind_root invb; - /* list of variable bindings to output */ - struct snmp_varbind_root outvb; - /* output response lengths used in ASN encoding */ - struct snmp_resp_header_lengths rhl; -}; - -struct snmp_msg_trap -{ - /* lwIP local port (161) binding */ - struct udp_pcb *pcb; - /* destination IP address in network order */ - ip_addr_t dip; - - /* source enterprise ID (sysObjectID) */ - struct snmp_obj_id *enterprise; - /* source IP address, raw network order format */ - u8_t sip_raw[4]; - /* generic trap code */ - u32_t gen_trap; - /* specific trap code */ - u32_t spc_trap; - /* timestamp */ - u32_t ts; - /* list of variable bindings to output */ - struct snmp_varbind_root outvb; - /* output trap lengths used in ASN encoding */ - struct snmp_trap_header_lengths thl; -}; - -/** Agent Version constant, 0 = v1 oddity */ -extern const s32_t snmp_version; -/** Agent default "public" community string */ -extern const char snmp_publiccommunity[7]; - -extern struct snmp_msg_trap trap_msg; - -/** Agent setup, start listening to port 161. */ -void snmp_init(void); -void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable); -void snmp_trap_dst_ip_set(u8_t dst_idx, ip_addr_t *dst); - -/** Varbind-list functions. */ -struct snmp_varbind* snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len); -void snmp_varbind_free(struct snmp_varbind *vb); -void snmp_varbind_list_free(struct snmp_varbind_root *root); -void snmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb); -struct snmp_varbind* snmp_varbind_tail_remove(struct snmp_varbind_root *root); - -/** Handle an internal (recv) or external (private response) event. */ -void snmp_msg_event(u8_t request_id); -err_t snmp_send_response(struct snmp_msg_pstat *m_stat); -err_t snmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap); -void snmp_coldstart_trap(void); -void snmp_authfail_trap(void); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_MSG_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_structs.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_structs.h deleted file mode 100644 index 0d3b46a92..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/snmp_structs.h +++ /dev/null @@ -1,268 +0,0 @@ -/** - * @file - * Generic MIB tree structures. - * - * @todo namespace prefixes - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_STRUCTS_H__ -#define __LWIP_SNMP_STRUCTS_H__ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp.h" - -#if SNMP_PRIVATE_MIB -/* When using a private MIB, you have to create a file 'private_mib.h' that contains - * a 'struct mib_array_node mib_private' which contains your MIB. */ -#include "private_mib.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* MIB object instance */ -#define MIB_OBJECT_NONE 0 -#define MIB_OBJECT_SCALAR 1 -#define MIB_OBJECT_TAB 2 - -/* MIB access types */ -#define MIB_ACCESS_READ 1 -#define MIB_ACCESS_WRITE 2 - -/* MIB object access */ -#define MIB_OBJECT_READ_ONLY MIB_ACCESS_READ -#define MIB_OBJECT_READ_WRITE (MIB_ACCESS_READ | MIB_ACCESS_WRITE) -#define MIB_OBJECT_WRITE_ONLY MIB_ACCESS_WRITE -#define MIB_OBJECT_NOT_ACCESSIBLE 0 - -/** object definition returned by (get_object_def)() */ -struct obj_def -{ - /* MIB_OBJECT_NONE (0), MIB_OBJECT_SCALAR (1), MIB_OBJECT_TAB (2) */ - u8_t instance; - /* 0 read-only, 1 read-write, 2 write-only, 3 not-accessible */ - u8_t access; - /* ASN type for this object */ - u8_t asn_type; - /* value length (host length) */ - u16_t v_len; - /* length of instance part of supplied object identifier */ - u8_t id_inst_len; - /* instance part of supplied object identifier */ - s32_t *id_inst_ptr; -}; - -struct snmp_name_ptr -{ - u8_t ident_len; - s32_t *ident; -}; - -/** MIB const scalar (.0) node */ -#define MIB_NODE_SC 0x01 -/** MIB const array node */ -#define MIB_NODE_AR 0x02 -/** MIB array node (mem_malloced from RAM) */ -#define MIB_NODE_RA 0x03 -/** MIB list root node (mem_malloced from RAM) */ -#define MIB_NODE_LR 0x04 -/** MIB node for external objects */ -#define MIB_NODE_EX 0x05 - -/** node "base class" layout, the mandatory fields for a node */ -struct mib_node -{ - /** returns struct obj_def for the given object identifier */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - /** returns object value for the given object identifier, - @note the caller must allocate at least len bytes for the value */ - void (*get_value)(struct obj_def *od, u16_t len, void *value); - /** tests length and/or range BEFORE setting */ - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - /** sets object value, only to be called when set_test() */ - void (*set_value)(struct obj_def *od, u16_t len, void *value); - /** One out of MIB_NODE_AR, MIB_NODE_LR or MIB_NODE_EX */ - u8_t node_type; - /* array or max list length */ - u16_t maxlength; -}; - -/** derived node for scalars .0 index */ -typedef struct mib_node mib_scalar_node; - -/** derived node, points to a fixed size const array - of sub-identifiers plus a 'child' pointer */ -struct mib_array_node -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* additional struct members */ - const s32_t *objid; - struct mib_node* const *nptr; -}; - -/** derived node, points to a fixed size mem_malloced array - of sub-identifiers plus a 'child' pointer */ -struct mib_ram_array_node -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* aditional struct members */ - s32_t *objid; - struct mib_node **nptr; -}; - -struct mib_list_node -{ - struct mib_list_node *prev; - struct mib_list_node *next; - s32_t objid; - struct mib_node *nptr; -}; - -/** derived node, points to a doubly linked list - of sub-identifiers plus a 'child' pointer */ -struct mib_list_rootnode -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* additional struct members */ - struct mib_list_node *head; - struct mib_list_node *tail; - /* counts list nodes in list */ - u16_t count; -}; - -/** derived node, has access functions for mib object in external memory or device - using 'tree_level' and 'idx', with a range 0 .. (level_length() - 1) */ -struct mib_external_node -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* additional struct members */ - /** points to an external (in memory) record of some sort of addressing - information, passed to and interpreted by the funtions below */ - void* addr_inf; - /** tree levels under this node */ - u8_t tree_levels; - /** number of objects at this level */ - u16_t (*level_length)(void* addr_inf, u8_t level); - /** compares object sub identifier with external id - return zero when equal, nonzero when unequal */ - s32_t (*ident_cmp)(void* addr_inf, u8_t level, u16_t idx, s32_t sub_id); - void (*get_objid)(void* addr_inf, u8_t level, u16_t idx, s32_t *sub_id); - - /** async Questions */ - void (*get_object_def_q)(void* addr_inf, u8_t rid, u8_t ident_len, s32_t *ident); - void (*get_value_q)(u8_t rid, struct obj_def *od); - void (*set_test_q)(u8_t rid, struct obj_def *od); - void (*set_value_q)(u8_t rid, struct obj_def *od, u16_t len, void *value); - /** async Answers */ - void (*get_object_def_a)(u8_t rid, u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - u8_t (*set_test_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - void (*set_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - /** async Panic Close (agent returns error reply, - e.g. used for external transaction cleanup) */ - void (*get_object_def_pc)(u8_t rid, u8_t ident_len, s32_t *ident); - void (*get_value_pc)(u8_t rid, struct obj_def *od); - void (*set_test_pc)(u8_t rid, struct obj_def *od); - void (*set_value_pc)(u8_t rid, struct obj_def *od); -}; - -/** export MIB tree from mib2.c */ -extern const struct mib_array_node internet; - -/** dummy function pointers for non-leaf MIB nodes from mib2.c */ -void noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -void noleafs_get_value(struct obj_def *od, u16_t len, void *value); -u8_t noleafs_set_test(struct obj_def *od, u16_t len, void *value); -void noleafs_set_value(struct obj_def *od, u16_t len, void *value); - -void snmp_oidtoip(s32_t *ident, ip_addr_t *ip); -void snmp_iptooid(ip_addr_t *ip, s32_t *ident); -void snmp_ifindextonetif(s32_t ifindex, struct netif **netif); -void snmp_netiftoifindex(struct netif *netif, s32_t *ifidx); - -struct mib_list_node* snmp_mib_ln_alloc(s32_t id); -void snmp_mib_ln_free(struct mib_list_node *ln); -struct mib_list_rootnode* snmp_mib_lrn_alloc(void); -void snmp_mib_lrn_free(struct mib_list_rootnode *lrn); - -s8_t snmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn); -s8_t snmp_mib_node_find(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **fn); -struct mib_list_rootnode *snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n); - -struct mib_node* snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np); -struct mib_node* snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret); -u8_t snmp_iso_prefix_tst(u8_t ident_len, s32_t *ident); -u8_t snmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_STRUCTS_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sockets.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sockets.h deleted file mode 100644 index fcc37b376..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sockets.h +++ /dev/null @@ -1,398 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - - -#ifndef __LWIP_SOCKETS_H__ -#define __LWIP_SOCKETS_H__ - -#include "lwip/opt.h" - -#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/ip_addr.h" -#include "lwip/inet.h" -#include "lwip/inet6.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* members are in network byte order */ -struct sockaddr_in { - u8_t sin_len; - u8_t sin_family; - u16_t sin_port; - struct in_addr sin_addr; -#define SIN_ZERO_LEN 8 - char sin_zero[SIN_ZERO_LEN]; -}; - -#if LWIP_IPV6 -struct sockaddr_in6 { - u8_t sin6_len; /* length of this structure */ - u8_t sin6_family; /* AF_INET6 */ - u16_t sin6_port; /* Transport layer port # */ - u32_t sin6_flowinfo; /* IPv6 flow information */ - struct in6_addr sin6_addr; /* IPv6 address */ -}; -#endif /* LWIP_IPV6 */ - -struct sockaddr { - u8_t sa_len; - u8_t sa_family; -#if LWIP_IPV6 - u8_t sa_data[22]; -#else /* LWIP_IPV6 */ - u8_t sa_data[14]; -#endif /* LWIP_IPV6 */ -}; - -#ifndef socklen_t -# define socklen_t u32_t -#endif - -/* Socket protocol types (TCP/UDP/RAW) */ -#define SOCK_STREAM 1 -#define SOCK_DGRAM 2 -#define SOCK_RAW 3 - -/* - * Option flags per-socket. These must match the SOF_ flags in ip.h (checked in init.c) - */ -#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info recording */ -#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ -#define SO_REUSEADDR 0x0004 /* Allow local address reuse */ -#define SO_KEEPALIVE 0x0008 /* keep connections alive */ -#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface addresses */ -#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ -#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */ -#define SO_LINGER 0x0080 /* linger on close if data present */ -#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data in line */ -#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */ - -#define SO_DONTLINGER ((int)(~SO_LINGER)) - -/* - * Additional options, not kept in so_options. - */ -#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */ -#define SO_RCVBUF 0x1002 /* receive buffer size */ -#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */ -#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */ -#define SO_SNDTIMEO 0x1005 /* Unimplemented: send timeout */ -#define SO_RCVTIMEO 0x1006 /* receive timeout */ -#define SO_ERROR 0x1007 /* get error status and clear */ -#define SO_TYPE 0x1008 /* get socket type */ -#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */ -#define SO_NO_CHECK 0x100a /* don't create UDP checksum */ - - -/* - * Structure used for manipulating linger option. - */ -struct linger { - int l_onoff; /* option on/off */ - int l_linger; /* linger time */ -}; - -/* - * Level number for (get/set)sockopt() to apply to socket itself. - */ -#define SOL_SOCKET 0xfff /* options for socket level */ - - -#define AF_UNSPEC 0 -#define AF_INET 2 -#if LWIP_IPV6 -#define AF_INET6 10 -#else /* LWIP_IPV6 */ -#define AF_INET6 AF_UNSPEC -#endif /* LWIP_IPV6 */ -#define PF_INET AF_INET -#define PF_INET6 AF_INET6 -#define PF_UNSPEC AF_UNSPEC - -#define IPPROTO_IP 0 -#define IPPROTO_TCP 6 -#define IPPROTO_UDP 17 -#define IPPROTO_UDPLITE 136 - -/* Flags we can use with send and recv. */ -#define MSG_PEEK 0x01 /* Peeks at an incoming message */ -#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */ -#define MSG_OOB 0x04 /* Unimplemented: Requests out-of-band data. The significance and semantics of out-of-band data are protocol-specific */ -#define MSG_DONTWAIT 0x08 /* Nonblocking i/o for this operation only */ -#define MSG_MORE 0x10 /* Sender will send more */ - - -/* - * Options for level IPPROTO_IP - */ -#define IP_TOS 1 -#define IP_TTL 2 - -#if LWIP_TCP -/* - * Options for level IPPROTO_TCP - */ -#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ -#define TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */ -#define TCP_KEEPIDLE 0x03 /* set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */ -#define TCP_KEEPINTVL 0x04 /* set pcb->keep_intvl - Use seconds for get/setsockopt */ -#define TCP_KEEPCNT 0x05 /* set pcb->keep_cnt - Use number of probes sent for get/setsockopt */ -#endif /* LWIP_TCP */ - -#if LWIP_UDP && LWIP_UDPLITE -/* - * Options for level IPPROTO_UDPLITE - */ -#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */ -#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */ -#endif /* LWIP_UDP && LWIP_UDPLITE*/ - - -#if LWIP_IGMP -/* - * Options and types for UDP multicast traffic handling - */ -#define IP_ADD_MEMBERSHIP 3 -#define IP_DROP_MEMBERSHIP 4 -#define IP_MULTICAST_TTL 5 -#define IP_MULTICAST_IF 6 -#define IP_MULTICAST_LOOP 7 - -typedef struct ip_mreq { - struct in_addr imr_multiaddr; /* IP multicast address of group */ - struct in_addr imr_interface; /* local IP address of interface */ -} ip_mreq; -#endif /* LWIP_IGMP */ - -/* - * The Type of Service provides an indication of the abstract - * parameters of the quality of service desired. These parameters are - * to be used to guide the selection of the actual service parameters - * when transmitting a datagram through a particular network. Several - * networks offer service precedence, which somehow treats high - * precedence traffic as more important than other traffic (generally - * by accepting only traffic above a certain precedence at time of high - * load). The major choice is a three way tradeoff between low-delay, - * high-reliability, and high-throughput. - * The use of the Delay, Throughput, and Reliability indications may - * increase the cost (in some sense) of the service. In many networks - * better performance for one of these parameters is coupled with worse - * performance on another. Except for very unusual cases at most two - * of these three indications should be set. - */ -#define IPTOS_TOS_MASK 0x1E -#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK) -#define IPTOS_LOWDELAY 0x10 -#define IPTOS_THROUGHPUT 0x08 -#define IPTOS_RELIABILITY 0x04 -#define IPTOS_LOWCOST 0x02 -#define IPTOS_MINCOST IPTOS_LOWCOST - -/* - * The Network Control precedence designation is intended to be used - * within a network only. The actual use and control of that - * designation is up to each network. The Internetwork Control - * designation is intended for use by gateway control originators only. - * If the actual use of these precedence designations is of concern to - * a particular network, it is the responsibility of that network to - * control the access to, and use of, those precedence designations. - */ -#define IPTOS_PREC_MASK 0xe0 -#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK) -#define IPTOS_PREC_NETCONTROL 0xe0 -#define IPTOS_PREC_INTERNETCONTROL 0xc0 -#define IPTOS_PREC_CRITIC_ECP 0xa0 -#define IPTOS_PREC_FLASHOVERRIDE 0x80 -#define IPTOS_PREC_FLASH 0x60 -#define IPTOS_PREC_IMMEDIATE 0x40 -#define IPTOS_PREC_PRIORITY 0x20 -#define IPTOS_PREC_ROUTINE 0x00 - - -/* - * Commands for ioctlsocket(), taken from the BSD file fcntl.h. - * lwip_ioctl only supports FIONREAD and FIONBIO, for now - * - * Ioctl's have the command encoded in the lower word, - * and the size of any in or out parameters in the upper - * word. The high 2 bits of the upper word are used - * to encode the in/out status of the parameter; for now - * we restrict parameters to at most 128 bytes. - */ -#if !defined(FIONREAD) || !defined(FIONBIO) -#define IOCPARM_MASK 0x7fU /* parameters must be < 128 bytes */ -#define IOC_VOID 0x20000000UL /* no parameters */ -#define IOC_OUT 0x40000000UL /* copy out parameters */ -#define IOC_IN 0x80000000UL /* copy in parameters */ -#define IOC_INOUT (IOC_IN|IOC_OUT) - /* 0x20000000 distinguishes new & - old ioctl's */ -#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) - -#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) - -#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) -#endif /* !defined(FIONREAD) || !defined(FIONBIO) */ - -#ifndef FIONREAD -#define FIONREAD _IOR('f', 127, unsigned long) /* get # bytes to read */ -#endif -#ifndef FIONBIO -#define FIONBIO _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */ -#endif - -/* Socket I/O Controls: unimplemented */ -#ifndef SIOCSHIWAT -#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */ -#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */ -#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */ -#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */ -#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */ -#endif - -/* commands for fnctl */ -#ifndef F_GETFL -#define F_GETFL 3 -#endif -#ifndef F_SETFL -#define F_SETFL 4 -#endif - -/* File status flags and file access modes for fnctl, - these are bits in an int. */ -#ifndef O_NONBLOCK -#define O_NONBLOCK 1 /* nonblocking I/O */ -#endif -#ifndef O_NDELAY -#define O_NDELAY 1 /* same as O_NONBLOCK, for compatibility */ -#endif - -#ifndef SHUT_RD - #define SHUT_RD 0 - #define SHUT_WR 1 - #define SHUT_RDWR 2 -#endif - -/* FD_SET used for lwip_select */ -#ifndef FD_SET - #undef FD_SETSIZE - /* Make FD_SETSIZE match NUM_SOCKETS in socket.c */ - #define FD_SETSIZE MEMP_NUM_NETCONN - #define FD_SET(n, p) ((p)->fd_bits[(n)/8] |= (1 << ((n) & 7))) - #define FD_CLR(n, p) ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7))) - #define FD_ISSET(n,p) ((p)->fd_bits[(n)/8] & (1 << ((n) & 7))) - #define FD_ZERO(p) memset((void*)(p),0,sizeof(*(p))) - - typedef struct fd_set { - unsigned char fd_bits [(FD_SETSIZE+7)/8]; - } fd_set; - -#endif /* FD_SET */ - -/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided - * by your system, set this to 0 and include in cc.h */ -#ifndef LWIP_TIMEVAL_PRIVATE -#define LWIP_TIMEVAL_PRIVATE 0 -#endif - -#if LWIP_TIMEVAL_PRIVATE -struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ -}; -#endif /* LWIP_TIMEVAL_PRIVATE */ - -void lwip_socket_init(void); - -int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen); -int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen); -int lwip_shutdown(int s, int how); -int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen); -int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen); -int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen); -int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen); -int lwip_close(int s); -int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen); -int lwip_listen(int s, int backlog); -int lwip_recv(int s, void *mem, size_t len, int flags); -int lwip_read(int s, void *mem, size_t len); -int lwip_recvfrom(int s, void *mem, size_t len, int flags, - struct sockaddr *from, socklen_t *fromlen); -int lwip_send(int s, const void *dataptr, size_t size, int flags); -int lwip_sendto(int s, const void *dataptr, size_t size, int flags, - const struct sockaddr *to, socklen_t tolen); -int lwip_socket(int domain, int type, int protocol); -int lwip_write(int s, const void *dataptr, size_t size); -int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, - struct timeval *timeout); -int lwip_ioctl(int s, long cmd, void *argp); -int lwip_fcntl(int s, int cmd, int val); - -#if LWIP_COMPAT_SOCKETS -#define accept(a,b,c) lwip_accept(a,b,c) -#define bind(a,b,c) lwip_bind(a,b,c) -#define shutdown(a,b) lwip_shutdown(a,b) -#define closesocket(s) lwip_close(s) -#define connect(a,b,c) lwip_connect(a,b,c) -#define getsockname(a,b,c) lwip_getsockname(a,b,c) -#define getpeername(a,b,c) lwip_getpeername(a,b,c) -#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e) -#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e) -#define listen(a,b) lwip_listen(a,b) -#define recv(a,b,c,d) lwip_recv(a,b,c,d) -#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f) -#define send(a,b,c,d) lwip_send(a,b,c,d) -#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f) -#define socket(a,b,c) lwip_socket(a,b,c) -#define select(a,b,c,d,e) lwip_select(a,b,c,d,e) -#define ioctlsocket(a,b,c) lwip_ioctl(a,b,c) - -#if LWIP_POSIX_SOCKETS_IO_NAMES -#define read(a,b,c) lwip_read(a,b,c) -#define write(a,b,c) lwip_write(a,b,c) -#define close(s) lwip_close(s) -#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */ - -#endif /* LWIP_COMPAT_SOCKETS */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SOCKET */ - -#endif /* __LWIP_SOCKETS_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/stats.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/stats.h deleted file mode 100644 index d91121608..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/stats.h +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_STATS_H__ -#define __LWIP_STATS_H__ - -#include "lwip/opt.h" - -#include "lwip/mem.h" -#include "lwip/memp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if LWIP_STATS - -#ifndef LWIP_STATS_LARGE -#define LWIP_STATS_LARGE 0 -#endif - -#if LWIP_STATS_LARGE -#define STAT_COUNTER u32_t -#define STAT_COUNTER_F U32_F -#else -#define STAT_COUNTER u16_t -#define STAT_COUNTER_F U16_F -#endif - -struct stats_proto { - STAT_COUNTER xmit; /* Transmitted packets. */ - STAT_COUNTER recv; /* Received packets. */ - STAT_COUNTER fw; /* Forwarded packets. */ - STAT_COUNTER drop; /* Dropped packets. */ - STAT_COUNTER chkerr; /* Checksum error. */ - STAT_COUNTER lenerr; /* Invalid length error. */ - STAT_COUNTER memerr; /* Out of memory error. */ - STAT_COUNTER rterr; /* Routing error. */ - STAT_COUNTER proterr; /* Protocol error. */ - STAT_COUNTER opterr; /* Error in options. */ - STAT_COUNTER err; /* Misc error. */ - STAT_COUNTER cachehit; -}; - -struct stats_igmp { - STAT_COUNTER xmit; /* Transmitted packets. */ - STAT_COUNTER recv; /* Received packets. */ - STAT_COUNTER drop; /* Dropped packets. */ - STAT_COUNTER chkerr; /* Checksum error. */ - STAT_COUNTER lenerr; /* Invalid length error. */ - STAT_COUNTER memerr; /* Out of memory error. */ - STAT_COUNTER proterr; /* Protocol error. */ - STAT_COUNTER rx_v1; /* Received v1 frames. */ - STAT_COUNTER rx_group; /* Received group-specific queries. */ - STAT_COUNTER rx_general; /* Received general queries. */ - STAT_COUNTER rx_report; /* Received reports. */ - STAT_COUNTER tx_join; /* Sent joins. */ - STAT_COUNTER tx_leave; /* Sent leaves. */ - STAT_COUNTER tx_report; /* Sent reports. */ -}; - -struct stats_mem { -#ifdef LWIP_DEBUG - const char *name; -#endif /* LWIP_DEBUG */ - mem_size_t avail; - mem_size_t used; - mem_size_t max; - STAT_COUNTER err; - STAT_COUNTER illegal; -}; - -struct stats_syselem { - STAT_COUNTER used; - STAT_COUNTER max; - STAT_COUNTER err; -}; - -struct stats_sys { - struct stats_syselem sem; - struct stats_syselem mutex; - struct stats_syselem mbox; -}; - -struct stats_ { -#if LINK_STATS - struct stats_proto link; -#endif -#if ETHARP_STATS - struct stats_proto etharp; -#endif -#if IPFRAG_STATS - struct stats_proto ip_frag; -#endif -#if IP_STATS - struct stats_proto ip; -#endif -#if ICMP_STATS - struct stats_proto icmp; -#endif -#if IGMP_STATS - struct stats_igmp igmp; -#endif -#if UDP_STATS - struct stats_proto udp; -#endif -#if TCP_STATS - struct stats_proto tcp; -#endif -#if MEM_STATS - struct stats_mem mem; -#endif -#if MEMP_STATS - struct stats_mem memp[MEMP_MAX]; -#endif -#if SYS_STATS - struct stats_sys sys; -#endif -#if IP6_STATS - struct stats_proto ip6; -#endif -#if ICMP6_STATS - struct stats_proto icmp6; -#endif -#if IP6_FRAG_STATS - struct stats_proto ip6_frag; -#endif -#if MLD6_STATS - struct stats_igmp mld6; -#endif -#if ND6_STATS - struct stats_proto nd6; -#endif -}; - -extern struct stats_ lwip_stats; - -void stats_init(void); - -#define STATS_INC(x) ++lwip_stats.x -#define STATS_DEC(x) --lwip_stats.x -#define STATS_INC_USED(x, y) do { lwip_stats.x.used += y; \ - if (lwip_stats.x.max < lwip_stats.x.used) { \ - lwip_stats.x.max = lwip_stats.x.used; \ - } \ - } while(0) -#else /* LWIP_STATS */ -#define stats_init() -#define STATS_INC(x) -#define STATS_DEC(x) -#define STATS_INC_USED(x) -#endif /* LWIP_STATS */ - -#if TCP_STATS -#define TCP_STATS_INC(x) STATS_INC(x) -#define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP") -#else -#define TCP_STATS_INC(x) -#define TCP_STATS_DISPLAY() -#endif - -#if UDP_STATS -#define UDP_STATS_INC(x) STATS_INC(x) -#define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP") -#else -#define UDP_STATS_INC(x) -#define UDP_STATS_DISPLAY() -#endif - -#if ICMP_STATS -#define ICMP_STATS_INC(x) STATS_INC(x) -#define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP") -#else -#define ICMP_STATS_INC(x) -#define ICMP_STATS_DISPLAY() -#endif - -#if IGMP_STATS -#define IGMP_STATS_INC(x) STATS_INC(x) -#define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp, "IGMP") -#else -#define IGMP_STATS_INC(x) -#define IGMP_STATS_DISPLAY() -#endif - -#if IP_STATS -#define IP_STATS_INC(x) STATS_INC(x) -#define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP") -#else -#define IP_STATS_INC(x) -#define IP_STATS_DISPLAY() -#endif - -#if IPFRAG_STATS -#define IPFRAG_STATS_INC(x) STATS_INC(x) -#define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG") -#else -#define IPFRAG_STATS_INC(x) -#define IPFRAG_STATS_DISPLAY() -#endif - -#if ETHARP_STATS -#define ETHARP_STATS_INC(x) STATS_INC(x) -#define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP") -#else -#define ETHARP_STATS_INC(x) -#define ETHARP_STATS_DISPLAY() -#endif - -#if LINK_STATS -#define LINK_STATS_INC(x) STATS_INC(x) -#define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK") -#else -#define LINK_STATS_INC(x) -#define LINK_STATS_DISPLAY() -#endif - -#if MEM_STATS -#define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y -#define MEM_STATS_INC(x) STATS_INC(mem.x) -#define MEM_STATS_INC_USED(x, y) STATS_INC_USED(mem, y) -#define MEM_STATS_DEC_USED(x, y) lwip_stats.mem.x -= y -#define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP") -#else -#define MEM_STATS_AVAIL(x, y) -#define MEM_STATS_INC(x) -#define MEM_STATS_INC_USED(x, y) -#define MEM_STATS_DEC_USED(x, y) -#define MEM_STATS_DISPLAY() -#endif - -#if MEMP_STATS -#define MEMP_STATS_AVAIL(x, i, y) lwip_stats.memp[i].x = y -#define MEMP_STATS_INC(x, i) STATS_INC(memp[i].x) -#define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i].x) -#define MEMP_STATS_INC_USED(x, i) STATS_INC_USED(memp[i], 1) -#define MEMP_STATS_DISPLAY(i) stats_display_memp(&lwip_stats.memp[i], i) -#else -#define MEMP_STATS_AVAIL(x, i, y) -#define MEMP_STATS_INC(x, i) -#define MEMP_STATS_DEC(x, i) -#define MEMP_STATS_INC_USED(x, i) -#define MEMP_STATS_DISPLAY(i) -#endif - -#if SYS_STATS -#define SYS_STATS_INC(x) STATS_INC(sys.x) -#define SYS_STATS_DEC(x) STATS_DEC(sys.x) -#define SYS_STATS_INC_USED(x) STATS_INC_USED(sys.x, 1) -#define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys) -#else -#define SYS_STATS_INC(x) -#define SYS_STATS_DEC(x) -#define SYS_STATS_INC_USED(x) -#define SYS_STATS_DISPLAY() -#endif - -#if IP6_STATS -#define IP6_STATS_INC(x) STATS_INC(x) -#define IP6_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip6, "IPv6") -#else -#define IP6_STATS_INC(x) -#define IP6_STATS_DISPLAY() -#endif - -#if ICMP6_STATS -#define ICMP6_STATS_INC(x) STATS_INC(x) -#define ICMP6_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp6, "ICMPv6") -#else -#define ICMP6_STATS_INC(x) -#define ICMP6_STATS_DISPLAY() -#endif - -#if IP6_FRAG_STATS -#define IP6_FRAG_STATS_INC(x) STATS_INC(x) -#define IP6_FRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip6_frag, "IPv6 FRAG") -#else -#define IP6_FRAG_STATS_INC(x) -#define IP6_FRAG_STATS_DISPLAY() -#endif - -#if MLD6_STATS -#define MLD6_STATS_INC(x) STATS_INC(x) -#define MLD6_STATS_DISPLAY() stats_display_igmp(&lwip_stats.mld6, "MLDv1") -#else -#define MLD6_STATS_INC(x) -#define MLD6_STATS_DISPLAY() -#endif - -#if ND6_STATS -#define ND6_STATS_INC(x) STATS_INC(x) -#define ND6_STATS_DISPLAY() stats_display_proto(&lwip_stats.nd6, "ND") -#else -#define ND6_STATS_INC(x) -#define ND6_STATS_DISPLAY() -#endif - -/* Display of statistics */ -#if LWIP_STATS_DISPLAY -void stats_display(void); -void stats_display_proto(struct stats_proto *proto, const char *name); -void stats_display_igmp(struct stats_igmp *igmp, const char *name); -void stats_display_mem(struct stats_mem *mem, const char *name); -void stats_display_memp(struct stats_mem *mem, int index); -void stats_display_sys(struct stats_sys *sys); -#else /* LWIP_STATS_DISPLAY */ -#define stats_display() -#define stats_display_proto(proto, name) -#define stats_display_igmp(igmp, name) -#define stats_display_mem(mem, name) -#define stats_display_memp(mem, index) -#define stats_display_sys(sys) -#endif /* LWIP_STATS_DISPLAY */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_STATS_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sys.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sys.h deleted file mode 100644 index 9f62c7540..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/sys.h +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_SYS_H__ -#define __LWIP_SYS_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if NO_SYS - -/* For a totally minimal and standalone system, we provide null - definitions of the sys_ functions. */ -typedef u8_t sys_sem_t; -typedef u8_t sys_mutex_t; -typedef u8_t sys_mbox_t; - -#define sys_sem_new(s, c) ERR_OK -#define sys_sem_signal(s) -#define sys_sem_wait(s) -#define sys_arch_sem_wait(s,t) -#define sys_sem_free(s) -#define sys_mutex_new(mu) ERR_OK -#define sys_mutex_lock(mu) -#define sys_mutex_unlock(mu) -#define sys_mutex_free(mu) -#define sys_mbox_new(m, s) ERR_OK -#define sys_mbox_fetch(m,d) -#define sys_mbox_tryfetch(m,d) -#define sys_mbox_post(m,d) -#define sys_mbox_trypost(m,d) -#define sys_mbox_free(m) - -#define sys_thread_new(n,t,a,s,p) - -#define sys_msleep(t) - -#else /* NO_SYS */ - -/** Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait */ -#define SYS_ARCH_TIMEOUT 0xffffffffUL - -/** sys_mbox_tryfetch() returns SYS_MBOX_EMPTY if appropriate. - * For now we use the same magic value, but we allow this to change in future. - */ -#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT - -#include "lwip/err.h" -#include "arch/sys_arch.h" - -/** Function prototype for thread functions */ -typedef void (*lwip_thread_fn)(void *arg); - -/* Function prototypes for functions to be implemented by platform ports - (in sys_arch.c) */ - -/* Mutex functions: */ - -/** Define LWIP_COMPAT_MUTEX if the port has no mutexes and binary semaphores - should be used instead */ -#if LWIP_COMPAT_MUTEX -/* for old ports that don't have mutexes: define them to binary semaphores */ -#define sys_mutex_t sys_sem_t -#define sys_mutex_new(mutex) sys_sem_new(mutex, 1) -#define sys_mutex_lock(mutex) sys_sem_wait(mutex) -#define sys_mutex_unlock(mutex) sys_sem_signal(mutex) -#define sys_mutex_free(mutex) sys_sem_free(mutex) -#define sys_mutex_valid(mutex) sys_sem_valid(mutex) -#define sys_mutex_set_invalid(mutex) sys_sem_set_invalid(mutex) - -#else /* LWIP_COMPAT_MUTEX */ - -/** Create a new mutex - * @param mutex pointer to the mutex to create - * @return a new mutex */ -err_t sys_mutex_new(sys_mutex_t *mutex); -/** Lock a mutex - * @param mutex the mutex to lock */ -void sys_mutex_lock(sys_mutex_t *mutex); -/** Unlock a mutex - * @param mutex the mutex to unlock */ -void sys_mutex_unlock(sys_mutex_t *mutex); -/** Delete a semaphore - * @param mutex the mutex to delete */ -void sys_mutex_free(sys_mutex_t *mutex); -#ifndef sys_mutex_valid -/** Check if a mutex is valid/allocated: return 1 for valid, 0 for invalid */ -int sys_mutex_valid(sys_mutex_t *mutex); -#endif -#ifndef sys_mutex_set_invalid -/** Set a mutex invalid so that sys_mutex_valid returns 0 */ -void sys_mutex_set_invalid(sys_mutex_t *mutex); -#endif -#endif /* LWIP_COMPAT_MUTEX */ - -/* Semaphore functions: */ - -/** Create a new semaphore - * @param sem pointer to the semaphore to create - * @param count initial count of the semaphore - * @return ERR_OK if successful, another err_t otherwise */ -err_t sys_sem_new(sys_sem_t *sem, u8_t count); -/** Signals a semaphore - * @param sem the semaphore to signal */ -void sys_sem_signal(sys_sem_t *sem); -/** Wait for a semaphore for the specified timeout - * @param sem the semaphore to wait for - * @param timeout timeout in milliseconds to wait (0 = wait forever) - * @return time (in milliseconds) waited for the semaphore - * or SYS_ARCH_TIMEOUT on timeout */ -u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout); -/** Delete a semaphore - * @param sem semaphore to delete */ -void sys_sem_free(sys_sem_t *sem); -/** Wait for a semaphore - forever/no timeout */ -#define sys_sem_wait(sem) sys_arch_sem_wait(sem, 0) -#ifndef sys_sem_valid -/** Check if a sempahore is valid/allocated: return 1 for valid, 0 for invalid */ -int sys_sem_valid(sys_sem_t *sem); -#endif -#ifndef sys_sem_set_invalid -/** Set a semaphore invalid so that sys_sem_valid returns 0 */ -void sys_sem_set_invalid(sys_sem_t *sem); -#endif - -/* Time functions. */ -#ifndef sys_msleep -void sys_msleep(u32_t ms); /* only has a (close to) 1 jiffy resolution. */ -#endif - -/* Mailbox functions. */ - -/** Create a new mbox of specified size - * @param mbox pointer to the mbox to create - * @param size (miminum) number of messages in this mbox - * @return ERR_OK if successful, another err_t otherwise */ -err_t sys_mbox_new(sys_mbox_t *mbox, int size); -/** Post a message to an mbox - may not fail - * -> blocks if full, only used from tasks not from ISR - * @param mbox mbox to posts the message - * @param msg message to post (ATTENTION: can be NULL) */ -void sys_mbox_post(sys_mbox_t *mbox, void *msg); -/** Try to post a message to an mbox - may fail if full or ISR - * @param mbox mbox to posts the message - * @param msg message to post (ATTENTION: can be NULL) */ -err_t sys_mbox_trypost(sys_mbox_t *mbox, void *msg); -/** Wait for a new message to arrive in the mbox - * @param mbox mbox to get a message from - * @param msg pointer where the message is stored - * @param timeout maximum time (in milliseconds) to wait for a message - * @return time (in milliseconds) waited for a message, may be 0 if not waited - or SYS_ARCH_TIMEOUT on timeout - * The returned time has to be accurate to prevent timer jitter! */ -u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout); -/* Allow port to override with a macro, e.g. special timout for sys_arch_mbox_fetch() */ -#ifndef sys_arch_mbox_tryfetch -/** Wait for a new message to arrive in the mbox - * @param mbox mbox to get a message from - * @param msg pointer where the message is stored - * @param timeout maximum time (in milliseconds) to wait for a message - * @return 0 (milliseconds) if a message has been received - * or SYS_MBOX_EMPTY if the mailbox is empty */ -u32_t sys_arch_mbox_tryfetch(sys_mbox_t *mbox, void **msg); -#endif -/** For now, we map straight to sys_arch implementation. */ -#define sys_mbox_tryfetch(mbox, msg) sys_arch_mbox_tryfetch(mbox, msg) -/** Delete an mbox - * @param mbox mbox to delete */ -void sys_mbox_free(sys_mbox_t *mbox); -#define sys_mbox_fetch(mbox, msg) sys_arch_mbox_fetch(mbox, msg, 0) -#ifndef sys_mbox_valid -/** Check if an mbox is valid/allocated: return 1 for valid, 0 for invalid */ -int sys_mbox_valid(sys_mbox_t *mbox); -#endif -#ifndef sys_mbox_set_invalid -/** Set an mbox invalid so that sys_mbox_valid returns 0 */ -void sys_mbox_set_invalid(sys_mbox_t *mbox); -#endif - -/** The only thread function: - * Creates a new thread - * @param name human-readable name for the thread (used for debugging purposes) - * @param thread thread-function - * @param arg parameter passed to 'thread' - * @param stacksize stack size in bytes for the new thread (may be ignored by ports) - * @param prio priority of the new thread (may be ignored by ports) */ -sys_thread_t sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize, int prio); - -#endif /* NO_SYS */ - -/* sys_init() must be called before anthing else. */ -void sys_init(void); - -#ifndef sys_jiffies -/** Ticks/jiffies since power up. */ -u32_t sys_jiffies(void); -#endif - -/** Returns the current time in milliseconds, - * may be the same as sys_jiffies or at least based on it. */ -u32_t sys_now(void); - -/* Critical Region Protection */ -/* These functions must be implemented in the sys_arch.c file. - In some implementations they can provide a more light-weight protection - mechanism than using semaphores. Otherwise semaphores can be used for - implementation */ -#ifndef SYS_ARCH_PROTECT -/** SYS_LIGHTWEIGHT_PROT - * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection - * for certain critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#if SYS_LIGHTWEIGHT_PROT - -/** SYS_ARCH_DECL_PROTECT - * declare a protection variable. This macro will default to defining a variable of - * type sys_prot_t. If a particular port needs a different implementation, then - * this macro may be defined in sys_arch.h. - */ -#define SYS_ARCH_DECL_PROTECT(lev) sys_prot_t lev -/** SYS_ARCH_PROTECT - * Perform a "fast" protect. This could be implemented by - * disabling interrupts for an embedded system or by using a semaphore or - * mutex. The implementation should allow calling SYS_ARCH_PROTECT when - * already protected. The old protection level is returned in the variable - * "lev". This macro will default to calling the sys_arch_protect() function - * which should be implemented in sys_arch.c. If a particular port needs a - * different implementation, then this macro may be defined in sys_arch.h - */ -#define SYS_ARCH_PROTECT(lev) lev = sys_arch_protect() -/** SYS_ARCH_UNPROTECT - * Perform a "fast" set of the protection level to "lev". This could be - * implemented by setting the interrupt level to "lev" within the MACRO or by - * using a semaphore or mutex. This macro will default to calling the - * sys_arch_unprotect() function which should be implemented in - * sys_arch.c. If a particular port needs a different implementation, then - * this macro may be defined in sys_arch.h - */ -#define SYS_ARCH_UNPROTECT(lev) sys_arch_unprotect(lev) -sys_prot_t sys_arch_protect(void); -void sys_arch_unprotect(sys_prot_t pval); - -#else - -#define SYS_ARCH_DECL_PROTECT(lev) -#define SYS_ARCH_PROTECT(lev) -#define SYS_ARCH_UNPROTECT(lev) - -#endif /* SYS_LIGHTWEIGHT_PROT */ - -#endif /* SYS_ARCH_PROTECT */ - -/* - * Macros to set/get and increase/decrease variables in a thread-safe way. - * Use these for accessing variable that are used from more than one thread. - */ - -#ifndef SYS_ARCH_INC -#define SYS_ARCH_INC(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var += val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_INC */ - -#ifndef SYS_ARCH_DEC -#define SYS_ARCH_DEC(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var -= val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_DEC */ - -#ifndef SYS_ARCH_GET -#define SYS_ARCH_GET(var, ret) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - ret = var; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_GET */ - -#ifndef SYS_ARCH_SET -#define SYS_ARCH_SET(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var = val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_SET */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_SYS_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp.h deleted file mode 100644 index 8a7f418bb..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp.h +++ /dev/null @@ -1,395 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_TCP_H__ -#define __LWIP_TCP_H__ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/ip.h" -#include "lwip/icmp.h" -#include "lwip/err.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct tcp_pcb; - -/** Function prototype for tcp accept callback functions. Called when a new - * connection can be accepted on a listening pcb. - * - * @param arg Additional argument to pass to the callback function (@see tcp_arg()) - * @param newpcb The new connection pcb - * @param err An error code if there has been an error accepting. - * Only return ERR_ABRT if you have called tcp_abort from within the - * callback function! - */ -typedef err_t (*tcp_accept_fn)(void *arg, struct tcp_pcb *newpcb, err_t err); - -/** Function prototype for tcp receive callback functions. Called when data has - * been received. - * - * @param arg Additional argument to pass to the callback function (@see tcp_arg()) - * @param tpcb The connection pcb which received data - * @param p The received data (or NULL when the connection has been closed!) - * @param err An error code if there has been an error receiving - * Only return ERR_ABRT if you have called tcp_abort from within the - * callback function! - */ -typedef err_t (*tcp_recv_fn)(void *arg, struct tcp_pcb *tpcb, - struct pbuf *p, err_t err); - -/** Function prototype for tcp sent callback functions. Called when sent data has - * been acknowledged by the remote side. Use it to free corresponding resources. - * This also means that the pcb has now space available to send new data. - * - * @param arg Additional argument to pass to the callback function (@see tcp_arg()) - * @param tpcb The connection pcb for which data has been acknowledged - * @param len The amount of bytes acknowledged - * @return ERR_OK: try to send some data by calling tcp_output - * Only return ERR_ABRT if you have called tcp_abort from within the - * callback function! - */ -typedef err_t (*tcp_sent_fn)(void *arg, struct tcp_pcb *tpcb, - u16_t len); - -/** Function prototype for tcp poll callback functions. Called periodically as - * specified by @see tcp_poll. - * - * @param arg Additional argument to pass to the callback function (@see tcp_arg()) - * @param tpcb tcp pcb - * @return ERR_OK: try to send some data by calling tcp_output - * Only return ERR_ABRT if you have called tcp_abort from within the - * callback function! - */ -typedef err_t (*tcp_poll_fn)(void *arg, struct tcp_pcb *tpcb); - -/** Function prototype for tcp error callback functions. Called when the pcb - * receives a RST or is unexpectedly closed for any other reason. - * - * @note The corresponding pcb is already freed when this callback is called! - * - * @param arg Additional argument to pass to the callback function (@see tcp_arg()) - * @param err Error code to indicate why the pcb has been closed - * ERR_ABRT: aborted through tcp_abort or by a TCP timer - * ERR_RST: the connection was reset by the remote host - */ -typedef void (*tcp_err_fn)(void *arg, err_t err); - -/** Function prototype for tcp connected callback functions. Called when a pcb - * is connected to the remote side after initiating a connection attempt by - * calling tcp_connect(). - * - * @param arg Additional argument to pass to the callback function (@see tcp_arg()) - * @param tpcb The connection pcb which is connected - * @param err An unused error code, always ERR_OK currently ;-) TODO! - * Only return ERR_ABRT if you have called tcp_abort from within the - * callback function! - * - * @note When a connection attempt fails, the error callback is currently called! - */ -typedef err_t (*tcp_connected_fn)(void *arg, struct tcp_pcb *tpcb, err_t err); - -enum tcp_state { - CLOSED = 0, - LISTEN = 1, - SYN_SENT = 2, - SYN_RCVD = 3, - ESTABLISHED = 4, - FIN_WAIT_1 = 5, - FIN_WAIT_2 = 6, - CLOSE_WAIT = 7, - CLOSING = 8, - LAST_ACK = 9, - TIME_WAIT = 10 -}; - -#if LWIP_CALLBACK_API - /* Function to call when a listener has been connected. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb a new tcp_pcb that now is connected - * @param err an error argument (TODO: that is current always ERR_OK?) - * @return ERR_OK: accept the new connection, - * any other err_t abortsthe new connection - */ -#define DEF_ACCEPT_CALLBACK tcp_accept_fn accept; -#else /* LWIP_CALLBACK_API */ -#define DEF_ACCEPT_CALLBACK -#endif /* LWIP_CALLBACK_API */ - -/** - * members common to struct tcp_pcb and struct tcp_listen_pcb - */ -#define TCP_PCB_COMMON(type) \ - type *next; /* for the linked list */ \ - void *callback_arg; \ - /* the accept callback for listen- and normal pcbs, if LWIP_CALLBACK_API */ \ - DEF_ACCEPT_CALLBACK \ - enum tcp_state state; /* TCP state */ \ - u8_t prio; \ - /* ports are in host byte order */ \ - u16_t local_port - - -/* the TCP protocol control block */ -struct tcp_pcb { -/** common PCB members */ - IP_PCB; -/** protocol specific PCB members */ - TCP_PCB_COMMON(struct tcp_pcb); - - /* ports are in host byte order */ - u16_t remote_port; - - u8_t flags; -#define TF_ACK_DELAY ((u8_t)0x01U) /* Delayed ACK. */ -#define TF_ACK_NOW ((u8_t)0x02U) /* Immediate ACK. */ -#define TF_INFR ((u8_t)0x04U) /* In fast recovery. */ -#define TF_TIMESTAMP ((u8_t)0x08U) /* Timestamp option enabled */ -#define TF_RXCLOSED ((u8_t)0x10U) /* rx closed by tcp_shutdown */ -#define TF_FIN ((u8_t)0x20U) /* Connection was closed locally (FIN segment enqueued). */ -#define TF_NODELAY ((u8_t)0x40U) /* Disable Nagle algorithm */ -#define TF_NAGLEMEMERR ((u8_t)0x80U) /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */ - - /* the rest of the fields are in host byte order - as we have to do some math with them */ - - /* Timers */ - u8_t polltmr, pollinterval; - u32_t tmr; - - /* receiver variables */ - u32_t rcv_nxt; /* next seqno expected */ - u16_t rcv_wnd; /* receiver window available */ - u16_t rcv_ann_wnd; /* receiver window to announce */ - u32_t rcv_ann_right_edge; /* announced right edge of window */ - - /* Retransmission timer. */ - s16_t rtime; - - u16_t mss; /* maximum segment size */ - - /* RTT (round trip time) estimation variables */ - u32_t rttest; /* RTT estimate in 500ms ticks */ - u32_t rtseq; /* sequence number being timed */ - s16_t sa, sv; /* @todo document this */ - - s16_t rto; /* retransmission time-out */ - u8_t nrtx; /* number of retransmissions */ - - /* fast retransmit/recovery */ - u8_t dupacks; - u32_t lastack; /* Highest acknowledged seqno. */ - - /* congestion avoidance/control variables */ - u16_t cwnd; - u16_t ssthresh; - - /* sender variables */ - u32_t snd_nxt; /* next new seqno to be sent */ - u32_t snd_wl1, snd_wl2; /* Sequence and acknowledgement numbers of last - window update. */ - u32_t snd_lbb; /* Sequence number of next byte to be buffered. */ - u16_t snd_wnd; /* sender window */ - - u16_t acked; - - u16_t snd_buf; /* Available buffer space for sending (in bytes). */ -#define TCP_SNDQUEUELEN_OVERFLOW (0xffffU-3) - u16_t snd_queuelen; /* Available buffer space for sending (in tcp_segs). */ - -#if TCP_OVERSIZE - /* Extra bytes available at the end of the last pbuf in unsent. */ - u16_t unsent_oversize; -#endif /* TCP_OVERSIZE */ - - /* These are ordered by sequence number: */ - struct tcp_seg *unsent; /* Unsent (queued) segments. */ - struct tcp_seg *unacked; /* Sent but unacknowledged segments. */ -#if TCP_QUEUE_OOSEQ - struct tcp_seg *ooseq; /* Received out of sequence segments. */ -#endif /* TCP_QUEUE_OOSEQ */ - - struct pbuf *refused_data; /* Data previously received but not yet taken by upper layer */ - -#if LWIP_CALLBACK_API - /* Function to be called when more send buffer space is available. */ - tcp_sent_fn sent; - /* Function to be called when (in-sequence) data has arrived. */ - tcp_recv_fn recv; - /* Function to be called when a connection has been set up. */ - tcp_connected_fn connected; - /* Function which is called periodically. */ - tcp_poll_fn poll; - /* Function to be called whenever a fatal error occurs. */ - tcp_err_fn errf; -#endif /* LWIP_CALLBACK_API */ - -#if LWIP_TCP_TIMESTAMPS - u32_t ts_lastacksent; - u32_t ts_recent; -#endif /* LWIP_TCP_TIMESTAMPS */ - - /* idle time before KEEPALIVE is sent */ - u32_t keep_idle; -#if LWIP_TCP_KEEPALIVE - u32_t keep_intvl; - u32_t keep_cnt; -#endif /* LWIP_TCP_KEEPALIVE */ - - /* Persist timer counter */ - u32_t persist_cnt; - /* Persist timer back-off */ - u8_t persist_backoff; - - /* KEEPALIVE counter */ - u8_t keep_cnt_sent; -}; - -struct tcp_pcb_listen { -/* Common members of all PCB types */ - IP_PCB; -/* Protocol specific PCB members */ - TCP_PCB_COMMON(struct tcp_pcb_listen); - -#if TCP_LISTEN_BACKLOG - u8_t backlog; - u8_t accepts_pending; -#endif /* TCP_LISTEN_BACKLOG */ -#if LWIP_IPV6 - u8_t accept_any_ip_version; -#endif /* LWIP_IPV6 */ -}; - -#if LWIP_EVENT_API - -enum lwip_event { - LWIP_EVENT_ACCEPT, - LWIP_EVENT_SENT, - LWIP_EVENT_RECV, - LWIP_EVENT_CONNECTED, - LWIP_EVENT_POLL, - LWIP_EVENT_ERR -}; - -err_t lwip_tcp_event(void *arg, struct tcp_pcb *pcb, - enum lwip_event, - struct pbuf *p, - u16_t size, - err_t err); - -#endif /* LWIP_EVENT_API */ - -/* Application program's interface: */ -struct tcp_pcb * tcp_new (void); - -void tcp_arg (struct tcp_pcb *pcb, void *arg); -void tcp_accept (struct tcp_pcb *pcb, tcp_accept_fn accept); -void tcp_recv (struct tcp_pcb *pcb, tcp_recv_fn recv); -void tcp_sent (struct tcp_pcb *pcb, tcp_sent_fn sent); -void tcp_poll (struct tcp_pcb *pcb, tcp_poll_fn poll, u8_t interval); -void tcp_err (struct tcp_pcb *pcb, tcp_err_fn err); - -#define tcp_mss(pcb) (((pcb)->flags & TF_TIMESTAMP) ? ((pcb)->mss - 12) : (pcb)->mss) -#define tcp_sndbuf(pcb) ((pcb)->snd_buf) -#define tcp_sndqueuelen(pcb) ((pcb)->snd_queuelen) -#define tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY) -#define tcp_nagle_enable(pcb) ((pcb)->flags &= ~TF_NODELAY) -#define tcp_nagle_disabled(pcb) (((pcb)->flags & TF_NODELAY) != 0) - -#if TCP_LISTEN_BACKLOG -#define tcp_accepted(pcb) do { \ - LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", pcb->state == LISTEN); \ - (((struct tcp_pcb_listen *)(pcb))->accepts_pending--); } while(0) -#else /* TCP_LISTEN_BACKLOG */ -#define tcp_accepted(pcb) LWIP_ASSERT("pcb->state == LISTEN (called for wrong pcb?)", \ - pcb->state == LISTEN) -#endif /* TCP_LISTEN_BACKLOG */ - -void tcp_recved (struct tcp_pcb *pcb, u16_t len); -err_t tcp_bind (struct tcp_pcb *pcb, ip_addr_t *ipaddr, - u16_t port); -err_t tcp_connect (struct tcp_pcb *pcb, ip_addr_t *ipaddr, - u16_t port, tcp_connected_fn connected); - -struct tcp_pcb * tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog); -#define tcp_listen(pcb) tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG) - -void tcp_abort (struct tcp_pcb *pcb); -err_t tcp_close (struct tcp_pcb *pcb); -err_t tcp_shutdown(struct tcp_pcb *pcb, int shut_rx, int shut_tx); - -/* Flags for "apiflags" parameter in tcp_write */ -#define TCP_WRITE_FLAG_COPY 0x01 -#define TCP_WRITE_FLAG_MORE 0x02 - -err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len, - u8_t apiflags); - -void tcp_setprio (struct tcp_pcb *pcb, u8_t prio); - -#define TCP_PRIO_MIN 1 -#define TCP_PRIO_NORMAL 64 -#define TCP_PRIO_MAX 127 - -err_t tcp_output (struct tcp_pcb *pcb); - - -const char* tcp_debug_state_str(enum tcp_state s); - -#if LWIP_IPV6 -struct tcp_pcb * tcp_new_ip6 (void); -#define tcp_bind_ip6(pcb, ip6addr, port) \ - tcp_bind(pcb, ip6_2_ip(ip6addr), port) -#define tcp_connect_ip6(pcb, ip6addr, port, connected) \ - tcp_connect(pcb, ip6_2_ip(ip6addr), port, connected) -struct tcp_pcb * tcp_listen_dual_with_backlog(struct tcp_pcb *pcb, u8_t backlog); -#define tcp_listen_dual(pcb) tcp_listen_dual_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG) -#else /* LWIP_IPV6 */ -#define tcp_listen_dual_with_backlog(pcb, backlog) tcp_listen_with_backlog(pcb, backlog) -#define tcp_listen_dual(pcb) tcp_listen(pcb) -#endif /* LWIP_IPV6 */ - - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_TCP */ - -#endif /* __LWIP_TCP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp_impl.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp_impl.h deleted file mode 100644 index 14c92fbb4..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcp_impl.h +++ /dev/null @@ -1,492 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_TCP_IMPL_H__ -#define __LWIP_TCP_IMPL_H__ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/tcp.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/ip.h" -#include "lwip/icmp.h" -#include "lwip/err.h" -#include "lwip/ip6.h" -#include "lwip/ip6_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Functions for interfacing with TCP: */ - -/* Lower layer interface to TCP: */ -#define tcp_init() /* Compatibility define, no init needed. */ -void tcp_tmr (void); /* Must be called every - TCP_TMR_INTERVAL - ms. (Typically 250 ms). */ -/* It is also possible to call these two functions at the right - intervals (instead of calling tcp_tmr()). */ -void tcp_slowtmr (void); -void tcp_fasttmr (void); - - -/* Only used by IP to pass a TCP segment to TCP: */ -void tcp_input (struct pbuf *p, struct netif *inp); -/* Used within the TCP code only: */ -struct tcp_pcb * tcp_alloc (u8_t prio); -void tcp_abandon (struct tcp_pcb *pcb, int reset); -err_t tcp_send_empty_ack(struct tcp_pcb *pcb); -void tcp_rexmit (struct tcp_pcb *pcb); -void tcp_rexmit_rto (struct tcp_pcb *pcb); -void tcp_rexmit_fast (struct tcp_pcb *pcb); -u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb); - -/** - * This is the Nagle algorithm: try to combine user data to send as few TCP - * segments as possible. Only send if - * - no previously transmitted data on the connection remains unacknowledged or - * - the TF_NODELAY flag is set (nagle algorithm turned off for this pcb) or - * - the only unsent segment is at least pcb->mss bytes long (or there is more - * than one unsent segment - with lwIP, this can happen although unsent->len < mss) - * - or if we are in fast-retransmit (TF_INFR) - */ -#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \ - ((tpcb)->flags & (TF_NODELAY | TF_INFR)) || \ - (((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \ - ((tpcb)->unsent->len >= (tpcb)->mss))) \ - ) ? 1 : 0) -#define tcp_output_nagle(tpcb) (tcp_do_output_nagle(tpcb) ? tcp_output(tpcb) : ERR_OK) - - -#define TCP_SEQ_LT(a,b) ((s32_t)((a)-(b)) < 0) -#define TCP_SEQ_LEQ(a,b) ((s32_t)((a)-(b)) <= 0) -#define TCP_SEQ_GT(a,b) ((s32_t)((a)-(b)) > 0) -#define TCP_SEQ_GEQ(a,b) ((s32_t)((a)-(b)) >= 0) -/* is b<=a<=c? */ -#if 0 /* see bug #10548 */ -#define TCP_SEQ_BETWEEN(a,b,c) ((c)-(b) >= (a)-(b)) -#endif -#define TCP_SEQ_BETWEEN(a,b,c) (TCP_SEQ_GEQ(a,b) && TCP_SEQ_LEQ(a,c)) -#define TCP_FIN 0x01U -#define TCP_SYN 0x02U -#define TCP_RST 0x04U -#define TCP_PSH 0x08U -#define TCP_ACK 0x10U -#define TCP_URG 0x20U -#define TCP_ECE 0x40U -#define TCP_CWR 0x80U - -#define TCP_FLAGS 0x3fU - -/* Length of the TCP header, excluding options. */ -#define TCP_HLEN 20 - -#ifndef TCP_TMR_INTERVAL -#define TCP_TMR_INTERVAL 250 /* The TCP timer interval in milliseconds. */ -#endif /* TCP_TMR_INTERVAL */ - -#ifndef TCP_FAST_INTERVAL -#define TCP_FAST_INTERVAL TCP_TMR_INTERVAL /* the fine grained timeout in milliseconds */ -#endif /* TCP_FAST_INTERVAL */ - -#ifndef TCP_SLOW_INTERVAL -#define TCP_SLOW_INTERVAL (2*TCP_TMR_INTERVAL) /* the coarse grained timeout in milliseconds */ -#endif /* TCP_SLOW_INTERVAL */ - -#define TCP_FIN_WAIT_TIMEOUT 20000 /* milliseconds */ -#define TCP_SYN_RCVD_TIMEOUT 20000 /* milliseconds */ - -#define TCP_OOSEQ_TIMEOUT 6U /* x RTO */ - -#ifndef TCP_MSL -#define TCP_MSL 60000UL /* The maximum segment lifetime in milliseconds */ -#endif - -/* Keepalive values, compliant with RFC 1122. Don't change this unless you know what you're doing */ -#ifndef TCP_KEEPIDLE_DEFAULT -#define TCP_KEEPIDLE_DEFAULT 7200000UL /* Default KEEPALIVE timer in milliseconds */ -#endif - -#ifndef TCP_KEEPINTVL_DEFAULT -#define TCP_KEEPINTVL_DEFAULT 75000UL /* Default Time between KEEPALIVE probes in milliseconds */ -#endif - -#ifndef TCP_KEEPCNT_DEFAULT -#define TCP_KEEPCNT_DEFAULT 9U /* Default Counter for KEEPALIVE probes */ -#endif - -#define TCP_MAXIDLE TCP_KEEPCNT_DEFAULT * TCP_KEEPINTVL_DEFAULT /* Maximum KEEPALIVE probe time */ - -/* Fields are (of course) in network byte order. - * Some fields are converted to host byte order in tcp_input(). - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct tcp_hdr { - PACK_STRUCT_FIELD(u16_t src); - PACK_STRUCT_FIELD(u16_t dest); - PACK_STRUCT_FIELD(u32_t seqno); - PACK_STRUCT_FIELD(u32_t ackno); - PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags); - PACK_STRUCT_FIELD(u16_t wnd); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t urgp); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define TCPH_OFFSET(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 8) -#define TCPH_HDRLEN(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 12) -#define TCPH_FLAGS(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) & TCP_FLAGS) - -#define TCPH_OFFSET_SET(phdr, offset) (phdr)->_hdrlen_rsvd_flags = htons(((offset) << 8) | TCPH_FLAGS(phdr)) -#define TCPH_HDRLEN_SET(phdr, len) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | TCPH_FLAGS(phdr)) -#define TCPH_FLAGS_SET(phdr, flags) (phdr)->_hdrlen_rsvd_flags = (((phdr)->_hdrlen_rsvd_flags & PP_HTONS((u16_t)(~(u16_t)(TCP_FLAGS)))) | htons(flags)) -#define TCPH_HDRLEN_FLAGS_SET(phdr, len, flags) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | (flags)) - -#define TCPH_SET_FLAG(phdr, flags ) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags | htons(flags)) -#define TCPH_UNSET_FLAG(phdr, flags) (phdr)->_hdrlen_rsvd_flags = htons(ntohs((phdr)->_hdrlen_rsvd_flags) | (TCPH_FLAGS(phdr) & ~(flags)) ) - -#define TCP_TCPLEN(seg) ((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & (TCP_FIN | TCP_SYN)) != 0)) - -/** Flags used on input processing, not on pcb->flags -*/ -#define TF_RESET (u8_t)0x08U /* Connection was reset. */ -#define TF_CLOSED (u8_t)0x10U /* Connection was sucessfully closed. */ -#define TF_GOT_FIN (u8_t)0x20U /* Connection was closed by the remote end. */ - - -#if LWIP_EVENT_API - -#define TCP_EVENT_ACCEPT(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_ACCEPT, NULL, 0, err) -#define TCP_EVENT_SENT(pcb,space,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_SENT, NULL, space, ERR_OK) -#define TCP_EVENT_RECV(pcb,p,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_RECV, (p), 0, (err)) -#define TCP_EVENT_CLOSED(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_RECV, NULL, 0, ERR_OK) -#define TCP_EVENT_CONNECTED(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_CONNECTED, NULL, 0, (err)) -#define TCP_EVENT_POLL(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_POLL, NULL, 0, ERR_OK) -#define TCP_EVENT_ERR(errf,arg,err) lwip_tcp_event((arg), NULL, \ - LWIP_EVENT_ERR, NULL, 0, (err)) - -#else /* LWIP_EVENT_API */ - -#define TCP_EVENT_ACCEPT(pcb,err,ret) \ - do { \ - if((pcb)->accept != NULL) \ - (ret) = (pcb)->accept((pcb)->callback_arg,(pcb),(err)); \ - else (ret) = ERR_ARG; \ - } while (0) - -#define TCP_EVENT_SENT(pcb,space,ret) \ - do { \ - if((pcb)->sent != NULL) \ - (ret) = (pcb)->sent((pcb)->callback_arg,(pcb),(space)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_RECV(pcb,p,err,ret) \ - do { \ - if((pcb)->recv != NULL) { \ - (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err));\ - } else { \ - (ret) = tcp_recv_null(NULL, (pcb), (p), (err)); \ - } \ - } while (0) - -#define TCP_EVENT_CLOSED(pcb,ret) \ - do { \ - if(((pcb)->recv != NULL)) { \ - (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),NULL,ERR_OK);\ - } else { \ - (ret) = ERR_OK; \ - } \ - } while (0) - -#define TCP_EVENT_CONNECTED(pcb,err,ret) \ - do { \ - if((pcb)->connected != NULL) \ - (ret) = (pcb)->connected((pcb)->callback_arg,(pcb),(err)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_POLL(pcb,ret) \ - do { \ - if((pcb)->poll != NULL) \ - (ret) = (pcb)->poll((pcb)->callback_arg,(pcb)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_ERR(errf,arg,err) \ - do { \ - if((errf) != NULL) \ - (errf)((arg),(err)); \ - } while (0) - -#endif /* LWIP_EVENT_API */ - -/** Enabled extra-check for TCP_OVERSIZE if LWIP_DEBUG is enabled */ -#if TCP_OVERSIZE && defined(LWIP_DEBUG) -#define TCP_OVERSIZE_DBGCHECK 1 -#else -#define TCP_OVERSIZE_DBGCHECK 0 -#endif - -/** Don't generate checksum on copy if CHECKSUM_GEN_TCP is disabled */ -#define TCP_CHECKSUM_ON_COPY (LWIP_CHECKSUM_ON_COPY && CHECKSUM_GEN_TCP) - -/* This structure represents a TCP segment on the unsent, unacked and ooseq queues */ -struct tcp_seg { - struct tcp_seg *next; /* used when putting segements on a queue */ - struct pbuf *p; /* buffer containing data + TCP header */ - u16_t len; /* the TCP length of this segment */ -#if TCP_OVERSIZE_DBGCHECK - u16_t oversize_left; /* Extra bytes available at the end of the last - pbuf in unsent (used for asserting vs. - tcp_pcb.unsent_oversized only) */ -#endif /* TCP_OVERSIZE_DBGCHECK */ -#if TCP_CHECKSUM_ON_COPY - u16_t chksum; - u8_t chksum_swapped; -#endif /* TCP_CHECKSUM_ON_COPY */ - u8_t flags; -#define TF_SEG_OPTS_MSS (u8_t)0x01U /* Include MSS option. */ -#define TF_SEG_OPTS_TS (u8_t)0x02U /* Include timestamp option. */ -#define TF_SEG_DATA_CHECKSUMMED (u8_t)0x04U /* ALL data (not the header) is - checksummed into 'chksum' */ - struct tcp_hdr *tcphdr; /* the TCP header */ -}; - -#define LWIP_TCP_OPT_LENGTH(flags) \ - (flags & TF_SEG_OPTS_MSS ? 4 : 0) + \ - (flags & TF_SEG_OPTS_TS ? 12 : 0) - -/** This returns a TCP header option for MSS in an u32_t */ -#define TCP_BUILD_MSS_OPTION(x) (x) = PP_HTONL(((u32_t)2 << 24) | \ - ((u32_t)4 << 16) | \ - (((u32_t)TCP_MSS / 256) << 8) | \ - (TCP_MSS & 255)) - -/* Global variables: */ -extern struct tcp_pcb *tcp_input_pcb; -extern u32_t tcp_ticks; - -/* The TCP PCB lists. */ -union tcp_listen_pcbs_t { /* List of all TCP PCBs in LISTEN state. */ - struct tcp_pcb_listen *listen_pcbs; - struct tcp_pcb *pcbs; -}; -extern struct tcp_pcb *tcp_bound_pcbs; -extern union tcp_listen_pcbs_t tcp_listen_pcbs; -extern struct tcp_pcb *tcp_active_pcbs; /* List of all TCP PCBs that are in a - state in which they accept or send - data. */ -extern struct tcp_pcb *tcp_tw_pcbs; /* List of all TCP PCBs in TIME-WAIT. */ - -extern struct tcp_pcb *tcp_tmp_pcb; /* Only used for temporary storage. */ - -/* Axioms about the above lists: - 1) Every TCP PCB that is not CLOSED is in one of the lists. - 2) A PCB is only in one of the lists. - 3) All PCBs in the tcp_listen_pcbs list is in LISTEN state. - 4) All PCBs in the tcp_tw_pcbs list is in TIME-WAIT state. -*/ -/* Define two macros, TCP_REG and TCP_RMV that registers a TCP PCB - with a PCB list or removes a PCB from a list, respectively. */ -#ifndef TCP_DEBUG_PCB_LISTS -#define TCP_DEBUG_PCB_LISTS 0 -#endif -#if TCP_DEBUG_PCB_LISTS -#define TCP_REG(pcbs, npcb) do {\ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_REG %p local port %d\n", (npcb), (npcb)->local_port)); \ - for(tcp_tmp_pcb = *(pcbs); \ - tcp_tmp_pcb != NULL; \ - tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - LWIP_ASSERT("TCP_REG: already registered\n", tcp_tmp_pcb != (npcb)); \ - } \ - LWIP_ASSERT("TCP_REG: pcb->state != CLOSED", ((pcbs) == &tcp_bound_pcbs) || ((npcb)->state != CLOSED)); \ - (npcb)->next = *(pcbs); \ - LWIP_ASSERT("TCP_REG: npcb->next != npcb", (npcb)->next != (npcb)); \ - *(pcbs) = (npcb); \ - LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ - tcp_timer_needed(); \ - } while(0) -#define TCP_RMV(pcbs, npcb) do { \ - LWIP_ASSERT("TCP_RMV: pcbs != NULL", *(pcbs) != NULL); \ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removing %p from %p\n", (npcb), *(pcbs))); \ - if(*(pcbs) == (npcb)) { \ - *(pcbs) = (*pcbs)->next; \ - } else for(tcp_tmp_pcb = *(pcbs); tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - if(tcp_tmp_pcb->next == (npcb)) { \ - tcp_tmp_pcb->next = (npcb)->next; \ - break; \ - } \ - } \ - (npcb)->next = NULL; \ - LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removed %p from %p\n", (npcb), *(pcbs))); \ - } while(0) - -#else /* LWIP_DEBUG */ - -#define TCP_REG(pcbs, npcb) \ - do { \ - (npcb)->next = *pcbs; \ - *(pcbs) = (npcb); \ - tcp_timer_needed(); \ - } while (0) - -#define TCP_RMV(pcbs, npcb) \ - do { \ - if(*(pcbs) == (npcb)) { \ - (*(pcbs)) = (*pcbs)->next; \ - } \ - else { \ - for(tcp_tmp_pcb = *pcbs; \ - tcp_tmp_pcb != NULL; \ - tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - if(tcp_tmp_pcb->next == (npcb)) { \ - tcp_tmp_pcb->next = (npcb)->next; \ - break; \ - } \ - } \ - } \ - (npcb)->next = NULL; \ - } while(0) - -#endif /* LWIP_DEBUG */ - - -/* Internal functions: */ -struct tcp_pcb *tcp_pcb_copy(struct tcp_pcb *pcb); -void tcp_pcb_purge(struct tcp_pcb *pcb); -void tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb); - -void tcp_segs_free(struct tcp_seg *seg); -void tcp_seg_free(struct tcp_seg *seg); -struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg); - -#define tcp_ack(pcb) \ - do { \ - if((pcb)->flags & TF_ACK_DELAY) { \ - (pcb)->flags &= ~TF_ACK_DELAY; \ - (pcb)->flags |= TF_ACK_NOW; \ - } \ - else { \ - (pcb)->flags |= TF_ACK_DELAY; \ - } \ - } while (0) - -#define tcp_ack_now(pcb) \ - do { \ - (pcb)->flags |= TF_ACK_NOW; \ - } while (0) - -err_t tcp_send_fin(struct tcp_pcb *pcb); -err_t tcp_enqueue_flags(struct tcp_pcb *pcb, u8_t flags); - -void tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg); - -void tcp_rst_impl(u32_t seqno, u32_t ackno, - ipX_addr_t *local_ip, ipX_addr_t *remote_ip, - u16_t local_port, u16_t remote_port -#if LWIP_IPV6 - , u8_t isipv6 -#endif /* LWIP_IPV6 */ - ); -#if LWIP_IPV6 -#define tcp_rst(seqno, ackno, local_ip, remote_ip, local_port, remote_port, isipv6) \ - tcp_rst_impl(seqno, ackno, local_ip, remote_ip, local_port, remote_port, isipv6) -#else /* LWIP_IPV6 */ -#define tcp_rst(seqno, ackno, local_ip, remote_ip, local_port, remote_port, isipv6) \ - tcp_rst_impl(seqno, ackno, local_ip, remote_ip, local_port, remote_port) -#endif /* LWIP_IPV6 */ - -u32_t tcp_next_iss(void); - -void tcp_keepalive(struct tcp_pcb *pcb); -void tcp_zero_window_probe(struct tcp_pcb *pcb); - -#if TCP_CALCULATE_EFF_SEND_MSS -u16_t tcp_eff_send_mss_impl(u16_t sendmss, ipX_addr_t *dest -#if LWIP_IPV6 - , ipX_addr_t *src, u8_t isipv6 -#endif /* LWIP_IPV6 */ - ); -#if LWIP_IPV6 -#define tcp_eff_send_mss(sendmss, src, dest, isipv6) tcp_eff_send_mss_impl(sendmss, dest, src, isipv6) -#else /* LWIP_IPV6 */ -#define tcp_eff_send_mss(sendmss, src, dest, isipv6) tcp_eff_send_mss_impl(sendmss, dest) -#endif /* LWIP_IPV6 */ -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - -#if LWIP_CALLBACK_API -err_t tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err); -#endif /* LWIP_CALLBACK_API */ - -#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG -void tcp_debug_print(struct tcp_hdr *tcphdr); -void tcp_debug_print_flags(u8_t flags); -void tcp_debug_print_state(enum tcp_state s); -void tcp_debug_print_pcbs(void); -s16_t tcp_pcbs_sane(void); -#else -# define tcp_debug_print(tcphdr) -# define tcp_debug_print_flags(flags) -# define tcp_debug_print_state(s) -# define tcp_debug_print_pcbs() -# define tcp_pcbs_sane() 1 -#endif /* TCP_DEBUG */ - -/** External function (implemented in timers.c), called when TCP detects - * that a timer is needed (i.e. active- or time-wait-pcb found). */ -void tcp_timer_needed(void); - - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_TCP */ - -#endif /* __LWIP_TCP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcpip.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcpip.h deleted file mode 100644 index 637476e1a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/tcpip.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_TCPIP_H__ -#define __LWIP_TCPIP_H__ - -#include "lwip/opt.h" - -#if !NO_SYS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/api_msg.h" -#include "lwip/netifapi.h" -#include "lwip/pbuf.h" -#include "lwip/api.h" -#include "lwip/sys.h" -#include "lwip/timers.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Define this to something that triggers a watchdog. This is called from - * tcpip_thread after processing a message. */ -#ifndef LWIP_TCPIP_THREAD_ALIVE -#define LWIP_TCPIP_THREAD_ALIVE() -#endif - -#if LWIP_TCPIP_CORE_LOCKING -/** The global semaphore to lock the stack. */ -extern sys_mutex_t lock_tcpip_core; -#define LOCK_TCPIP_CORE() sys_mutex_lock(&lock_tcpip_core) -#define UNLOCK_TCPIP_CORE() sys_mutex_unlock(&lock_tcpip_core) -#define TCPIP_APIMSG(m) tcpip_apimsg_lock(m) -#define TCPIP_APIMSG_ACK(m) -#define TCPIP_NETIFAPI(m) tcpip_netifapi_lock(m) -#define TCPIP_NETIFAPI_ACK(m) -#else /* LWIP_TCPIP_CORE_LOCKING */ -#define LOCK_TCPIP_CORE() -#define UNLOCK_TCPIP_CORE() -#define TCPIP_APIMSG(m) tcpip_apimsg(m) -#define TCPIP_APIMSG_ACK(m) sys_sem_signal(&m->conn->op_completed) -#define TCPIP_NETIFAPI(m) tcpip_netifapi(m) -#define TCPIP_NETIFAPI_ACK(m) sys_sem_signal(&m->sem) -#endif /* LWIP_TCPIP_CORE_LOCKING */ - -/** Function prototype for the init_done function passed to tcpip_init */ -typedef void (*tcpip_init_done_fn)(void *arg); -/** Function prototype for functions passed to tcpip_callback() */ -typedef void (*tcpip_callback_fn)(void *ctx); - -/* Forward declarations */ -struct tcpip_callback_msg; - -void tcpip_init(tcpip_init_done_fn tcpip_init_done, void *arg); - -#if LWIP_NETCONN -err_t tcpip_apimsg(struct api_msg *apimsg); -#if LWIP_TCPIP_CORE_LOCKING -err_t tcpip_apimsg_lock(struct api_msg *apimsg); -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETCONN */ - -err_t tcpip_input(struct pbuf *p, struct netif *inp); - -#if LWIP_NETIF_API -err_t tcpip_netifapi(struct netifapi_msg *netifapimsg); -#if LWIP_TCPIP_CORE_LOCKING -err_t tcpip_netifapi_lock(struct netifapi_msg *netifapimsg); -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETIF_API */ - -err_t tcpip_callback_with_block(tcpip_callback_fn function, void *ctx, u8_t block); -#define tcpip_callback(f, ctx) tcpip_callback_with_block(f, ctx, 1) - -struct tcpip_callback_msg* tcpip_callbackmsg_new(tcpip_callback_fn function, void *ctx); -void tcpip_callbackmsg_delete(struct tcpip_callback_msg* msg); -err_t tcpip_trycallback(struct tcpip_callback_msg* msg); - -/* free pbufs or heap memory from another context without blocking */ -err_t pbuf_free_callback(struct pbuf *p); -err_t mem_free_callback(void *m); - -#if LWIP_TCPIP_TIMEOUT -err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg); -err_t tcpip_untimeout(sys_timeout_handler h, void *arg); -#endif /* LWIP_TCPIP_TIMEOUT */ - -enum tcpip_msg_type { -#if LWIP_NETCONN - TCPIP_MSG_API, -#endif /* LWIP_NETCONN */ - TCPIP_MSG_INPKT, -#if LWIP_NETIF_API - TCPIP_MSG_NETIFAPI, -#endif /* LWIP_NETIF_API */ -#if LWIP_TCPIP_TIMEOUT - TCPIP_MSG_TIMEOUT, - TCPIP_MSG_UNTIMEOUT, -#endif /* LWIP_TCPIP_TIMEOUT */ - TCPIP_MSG_CALLBACK, - TCPIP_MSG_CALLBACK_STATIC -}; - -struct tcpip_msg { - enum tcpip_msg_type type; - sys_sem_t *sem; - union { -#if LWIP_NETCONN - struct api_msg *apimsg; -#endif /* LWIP_NETCONN */ -#if LWIP_NETIF_API - struct netifapi_msg *netifapimsg; -#endif /* LWIP_NETIF_API */ - struct { - struct pbuf *p; - struct netif *netif; - } inp; - struct { - tcpip_callback_fn function; - void *ctx; - } cb; -#if LWIP_TCPIP_TIMEOUT - struct { - u32_t msecs; - sys_timeout_handler h; - void *arg; - } tmo; -#endif /* LWIP_TCPIP_TIMEOUT */ - } msg; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* !NO_SYS */ - -#endif /* __LWIP_TCPIP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/timers.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/timers.h deleted file mode 100644 index 04e78e0fe..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/timers.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * Simon Goldschmidt - * - */ -#ifndef __LWIP_TIMERS_H__ -#define __LWIP_TIMERS_H__ - -#include "lwip/opt.h" - -/* Timers are not supported when NO_SYS==1 and NO_SYS_NO_TIMERS==1 */ -#define LWIP_TIMERS (!NO_SYS || (NO_SYS && !NO_SYS_NO_TIMERS)) - -#if LWIP_TIMERS - -#include "lwip/err.h" -#if !NO_SYS -#include "lwip/sys.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef LWIP_DEBUG_TIMERNAMES -#ifdef LWIP_DEBUG -#define LWIP_DEBUG_TIMERNAMES SYS_DEBUG -#else /* LWIP_DEBUG */ -#define LWIP_DEBUG_TIMERNAMES 0 -#endif /* LWIP_DEBUG*/ -#endif - -/** Function prototype for a timeout callback function. Register such a function - * using sys_timeout(). - * - * @param arg Additional argument to pass to the function - set up by sys_timeout() - */ -typedef void (* sys_timeout_handler)(void *arg); - -struct sys_timeo { - struct sys_timeo *next; - u32_t time; - sys_timeout_handler h; - void *arg; -#if LWIP_DEBUG_TIMERNAMES - const char* handler_name; -#endif /* LWIP_DEBUG_TIMERNAMES */ -}; - -void sys_timeouts_init(void); - -#if LWIP_DEBUG_TIMERNAMES -void sys_timeout_debug(u32_t msecs, sys_timeout_handler handler, void *arg, const char* handler_name); -#define sys_timeout(msecs, handler, arg) sys_timeout_debug(msecs, handler, arg, #handler) -#else /* LWIP_DEBUG_TIMERNAMES */ -void sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg); -#endif /* LWIP_DEBUG_TIMERNAMES */ - -void sys_untimeout(sys_timeout_handler handler, void *arg); -#if NO_SYS -void sys_check_timeouts(void); -void sys_restart_timeouts(void); -#else /* NO_SYS */ -void sys_timeouts_mbox_fetch(sys_mbox_t *mbox, void **msg); -#endif /* NO_SYS */ - - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_TIMERS */ -#endif /* __LWIP_TIMERS_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/udp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/udp.h deleted file mode 100644 index 648c9a469..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/lwip/udp.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_UDP_H__ -#define __LWIP_UDP_H__ - -#include "lwip/opt.h" - -#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/ip_addr.h" -#include "lwip/ip.h" -#include "lwip/ip6_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define UDP_HLEN 8 - -/* Fields are (of course) in network byte order. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct udp_hdr { - PACK_STRUCT_FIELD(u16_t src); - PACK_STRUCT_FIELD(u16_t dest); /* src/dest UDP ports */ - PACK_STRUCT_FIELD(u16_t len); - PACK_STRUCT_FIELD(u16_t chksum); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define UDP_FLAGS_NOCHKSUM 0x01U -#define UDP_FLAGS_UDPLITE 0x02U -#define UDP_FLAGS_CONNECTED 0x04U -#define UDP_FLAGS_MULTICAST_LOOP 0x08U - -struct udp_pcb; - -/** Function prototype for udp pcb receive callback functions - * addr and port are in same byte order as in the pcb - * The callback is responsible for freeing the pbuf - * if it's not used any more. - * - * ATTENTION: Be aware that 'addr' points into the pbuf 'p' so freeing this pbuf - * makes 'addr' invalid, too. - * - * @param arg user supplied argument (udp_pcb.recv_arg) - * @param pcb the udp_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IP address from which the packet was received - * @param port the remote port from which the packet was received - */ -typedef void (*udp_recv_fn)(void *arg, struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *addr, u16_t port); - -#if LWIP_IPV6 -/** Function prototype for udp pcb IPv6 receive callback functions - * The callback is responsible for freeing the pbuf - * if it's not used any more. - * - * @param arg user supplied argument (udp_pcb.recv_arg) - * @param pcb the udp_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IPv6 address from which the packet was received - * @param port the remote port from which the packet was received - */ -typedef void (*udp_recv_ip6_fn)(void *arg, struct udp_pcb *pcb, struct pbuf *p, - ip6_addr_t *addr, u16_t port); -#endif /* LWIP_IPV6 */ - -#if LWIP_IPV6 -#define UDP_PCB_RECV_IP6 udp_recv_ip6_fn ip6; -#else -#define UDP_PCB_RECV_IP6 -#endif /* LWIP_IPV6 */ - -struct udp_pcb { -/* Common members of all PCB types */ - IP_PCB; - -/* Protocol specific PCB members */ - - struct udp_pcb *next; - - u8_t flags; - /** ports are in host byte order */ - u16_t local_port, remote_port; - -#if LWIP_IGMP - /** outgoing network interface for multicast packets */ - ip_addr_t multicast_ip; -#endif /* LWIP_IGMP */ - -#if LWIP_UDPLITE - /** used for UDP_LITE only */ - u16_t chksum_len_rx, chksum_len_tx; -#endif /* LWIP_UDPLITE */ - - /** receive callback function */ - union { - udp_recv_fn ip4; - UDP_PCB_RECV_IP6 - }recv; - /** user-supplied argument for the recv callback */ - void *recv_arg; -}; -/* udp_pcbs export for exernal reference (e.g. SNMP agent) */ -extern struct udp_pcb *udp_pcbs; - -/* The following functions is the application layer interface to the - UDP code. */ -struct udp_pcb * udp_new (void); -void udp_remove (struct udp_pcb *pcb); -err_t udp_bind (struct udp_pcb *pcb, ip_addr_t *ipaddr, - u16_t port); -err_t udp_connect (struct udp_pcb *pcb, ip_addr_t *ipaddr, - u16_t port); -void udp_disconnect (struct udp_pcb *pcb); -void udp_recv (struct udp_pcb *pcb, udp_recv_fn recv, - void *recv_arg); -err_t udp_sendto_if (struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *dst_ip, u16_t dst_port, - struct netif *netif); -err_t udp_sendto (struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *dst_ip, u16_t dst_port); -err_t udp_send (struct udp_pcb *pcb, struct pbuf *p); - -#if LWIP_CHECKSUM_ON_COPY -err_t udp_sendto_if_chksum(struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *dst_ip, u16_t dst_port, - struct netif *netif, u8_t have_chksum, - u16_t chksum); -err_t udp_sendto_chksum(struct udp_pcb *pcb, struct pbuf *p, - ip_addr_t *dst_ip, u16_t dst_port, - u8_t have_chksum, u16_t chksum); -err_t udp_send_chksum(struct udp_pcb *pcb, struct pbuf *p, - u8_t have_chksum, u16_t chksum); -#endif /* LWIP_CHECKSUM_ON_COPY */ - -#define udp_flags(pcb) ((pcb)->flags) -#define udp_setflags(pcb, f) ((pcb)->flags = (f)) - -/* The following functions are the lower layer interface to UDP. */ -void udp_input (struct pbuf *p, struct netif *inp); - -#define udp_init() /* Compatibility define, not init needed. */ - -#if LWIP_IPV6 -struct udp_pcb * udp_new_ip6(void); -#define udp_bind_ip6(pcb, ip6addr, port) \ - udp_bind(pcb, ip6_2_ip(ip6addr), port) -#define udp_connect_ip6(pcb, ip6addr, port) \ - udp_connect(pcb, ip6_2_ip(ip6addr), port) -#define udp_recv_ip6(pcb, recv_ip6_fn, recv_arg) \ - udp_recv(pcb, (udp_recv_fn)recv_ip6_fn, recv_arg) -#define udp_sendto_ip6(pcb, pbuf, ip6addr, port) \ - udp_sendto(pcb, pbuf, ip6_2_ip(ip6addr), port) -#define udp_sendto_if_ip6(pcb, pbuf, ip6addr, port, netif) \ - udp_sendto_if(pcb, pbuf, ip6_2_ip(ip6addr), port, netif) -#if LWIP_CHECKSUM_ON_COPY -#define udp_sendto_chksum_ip6(pcb, pbuf, ip6addr, port, have_chk, chksum) \ - udp_sendto_chksum(pcb, pbuf, ip6_2_ip(ip6addr), port, have_chk, chksum) -#define udp_sendto_if_chksum_ip6(pcb, pbuf, ip6addr, port, netif, have_chk, chksum) \ - udp_sendto_if_chksum(pcb, pbuf, ip6_2_ip(ip6addr), port, netif, have_chk, chksum) -#endif /*LWIP_CHECKSUM_ON_COPY */ -#endif /* LWIP_IPV6 */ - -#if UDP_DEBUG -void udp_debug_print(struct udp_hdr *udphdr); -#else -#define udp_debug_print(udphdr) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_UDP */ - -#endif /* __LWIP_UDP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/etharp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/etharp.h deleted file mode 100644 index 2eda1488b..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/etharp.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * Copyright (c) 2003-2004 Leon Woestenberg - * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __NETIF_ETHARP_H__ -#define __NETIF_ETHARP_H__ - -#include "lwip/opt.h" - -#if LWIP_ARP || LWIP_ETHERNET /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef ETHARP_HWADDR_LEN -#define ETHARP_HWADDR_LEN 6 -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_addr { - PACK_STRUCT_FIELD(u8_t addr[ETHARP_HWADDR_LEN]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** Ethernet header */ -struct eth_hdr { -#if ETH_PAD_SIZE - PACK_STRUCT_FIELD(u8_t padding[ETH_PAD_SIZE]); -#endif - PACK_STRUCT_FIELD(struct eth_addr dest); - PACK_STRUCT_FIELD(struct eth_addr src); - PACK_STRUCT_FIELD(u16_t type); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE) - -#if ETHARP_SUPPORT_VLAN - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** VLAN header inserted between ethernet header and payload - * if 'type' in ethernet header is ETHTYPE_VLAN. - * See IEEE802.Q */ -struct eth_vlan_hdr { - PACK_STRUCT_FIELD(u16_t prio_vid); - PACK_STRUCT_FIELD(u16_t tpid); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_VLAN_HDR 4 -#define VLAN_ID(vlan_hdr) (htons((vlan_hdr)->prio_vid) & 0xFFF) - -#endif /* ETHARP_SUPPORT_VLAN */ - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** the ARP message, see RFC 826 ("Packet format") */ -struct etharp_hdr { - PACK_STRUCT_FIELD(u16_t hwtype); - PACK_STRUCT_FIELD(u16_t proto); - PACK_STRUCT_FIELD(u8_t hwlen); - PACK_STRUCT_FIELD(u8_t protolen); - PACK_STRUCT_FIELD(u16_t opcode); - PACK_STRUCT_FIELD(struct eth_addr shwaddr); - PACK_STRUCT_FIELD(struct ip_addr2 sipaddr); - PACK_STRUCT_FIELD(struct eth_addr dhwaddr); - PACK_STRUCT_FIELD(struct ip_addr2 dipaddr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_ETHARP_HDR 28 -#define SIZEOF_ETHARP_PACKET (SIZEOF_ETH_HDR + SIZEOF_ETHARP_HDR) - -/** 5 seconds period */ -#define ARP_TMR_INTERVAL 5000 - -#define ETHTYPE_ARP 0x0806U -#define ETHTYPE_IP 0x0800U -#define ETHTYPE_VLAN 0x8100U -#define ETHTYPE_IPV6 0x86DDU -#define ETHTYPE_PPPOEDISC 0x8863U /* PPP Over Ethernet Discovery Stage */ -#define ETHTYPE_PPPOE 0x8864U /* PPP Over Ethernet Session Stage */ - -/** MEMCPY-like macro to copy to/from struct eth_addr's that are local variables - * or known to be 32-bit aligned within the protocol header. */ -#ifndef ETHADDR32_COPY -#define ETHADDR32_COPY(src, dst) SMEMCPY(src, dst, ETHARP_HWADDR_LEN) -#endif - -/** MEMCPY-like macro to copy to/from struct eth_addr's that are no local - * variables and known to be 16-bit aligned within the protocol header. */ -#ifndef ETHADDR16_COPY -#define ETHADDR16_COPY(src, dst) SMEMCPY(src, dst, ETHARP_HWADDR_LEN) -#endif - -#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */ - -/** ARP message types (opcodes) */ -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -/** Define this to 1 and define LWIP_ARP_FILTER_NETIF_FN(pbuf, netif, type) - * to a filter function that returns the correct netif when using multiple - * netifs on one hardware interface where the netif's low-level receive - * routine cannot decide for the correct netif (e.g. when mapping multiple - * IP addresses to one hardware interface). - */ -#ifndef LWIP_ARP_FILTER_NETIF -#define LWIP_ARP_FILTER_NETIF 0 -#endif - -#if ARP_QUEUEING -/** struct for queueing outgoing packets for unknown address - * defined here to be accessed by memp.h - */ -struct etharp_q_entry { - struct etharp_q_entry *next; - struct pbuf *p; -}; -#endif /* ARP_QUEUEING */ - -#define etharp_init() /* Compatibility define, not init needed. */ -void etharp_tmr(void); -s8_t etharp_find_addr(struct netif *netif, ip_addr_t *ipaddr, - struct eth_addr **eth_ret, ip_addr_t **ip_ret); -err_t etharp_output(struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr); -err_t etharp_query(struct netif *netif, ip_addr_t *ipaddr, struct pbuf *q); -err_t etharp_request(struct netif *netif, ip_addr_t *ipaddr); -/** For Ethernet network interfaces, we might want to send "gratuitous ARP"; - * this is an ARP packet sent by a node in order to spontaneously cause other - * nodes to update an entry in their ARP cache. - * From RFC 3220 "IP Mobility Support for IPv4" section 4.6. */ -#define etharp_gratuitous(netif) etharp_request((netif), &(netif)->ip_addr) - -#if ETHARP_SUPPORT_STATIC_ENTRIES -err_t etharp_add_static_entry(ip_addr_t *ipaddr, struct eth_addr *ethaddr); -err_t etharp_remove_static_entry(ip_addr_t *ipaddr); -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - -#if LWIP_AUTOIP -err_t etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, - const struct eth_addr *ethdst_addr, - const struct eth_addr *hwsrc_addr, const ip_addr_t *ipsrc_addr, - const struct eth_addr *hwdst_addr, const ip_addr_t *ipdst_addr, - const u16_t opcode); -#endif /* LWIP_AUTOIP */ - -#endif /* LWIP_ARP */ - -err_t ethernet_input(struct pbuf *p, struct netif *netif); - -#define eth_addr_cmp(addr1, addr2) (memcmp((addr1)->addr, (addr2)->addr, ETHARP_HWADDR_LEN) == 0) - -extern const struct eth_addr ethbroadcast, ethzero; - -#endif /* LWIP_ARP || LWIP_ETHERNET */ - -#ifdef __cplusplus -} -#endif - -#endif /* __NETIF_ARP_H__ */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/ppp_oe.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/ppp_oe.h deleted file mode 100644 index e1cdfa519..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/ppp_oe.h +++ /dev/null @@ -1,190 +0,0 @@ -/***************************************************************************** -* ppp_oe.h - PPP Over Ethernet implementation for lwIP. -* -* Copyright (c) 2006 by Marc Boucher, Services Informatiques (MBSI) inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 06-01-01 Marc Boucher -* Ported to lwIP. -*****************************************************************************/ - - - -/* based on NetBSD: if_pppoe.c,v 1.64 2006/01/31 23:50:15 martin Exp */ - -/*- - * Copyright (c) 2002 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Martin Husemann . - * - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``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 FOUNDATION OR CONTRIBUTORS - * 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. - */ -#ifndef PPP_OE_H -#define PPP_OE_H - -#include "lwip/opt.h" - -#if PPPOE_SUPPORT > 0 - -#include "netif/etharp.h" - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct pppoehdr { - PACK_STRUCT_FIELD(u8_t vertype); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t session); - PACK_STRUCT_FIELD(u16_t plen); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct pppoetag { - PACK_STRUCT_FIELD(u16_t tag); - PACK_STRUCT_FIELD(u16_t len); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - - -#define PPPOE_STATE_INITIAL 0 -#define PPPOE_STATE_PADI_SENT 1 -#define PPPOE_STATE_PADR_SENT 2 -#define PPPOE_STATE_SESSION 3 -#define PPPOE_STATE_CLOSING 4 -/* passive */ -#define PPPOE_STATE_PADO_SENT 1 - -#define PPPOE_HEADERLEN sizeof(struct pppoehdr) -#define PPPOE_VERTYPE 0x11 /* VER=1, TYPE = 1 */ - -#define PPPOE_TAG_EOL 0x0000 /* end of list */ -#define PPPOE_TAG_SNAME 0x0101 /* service name */ -#define PPPOE_TAG_ACNAME 0x0102 /* access concentrator name */ -#define PPPOE_TAG_HUNIQUE 0x0103 /* host unique */ -#define PPPOE_TAG_ACCOOKIE 0x0104 /* AC cookie */ -#define PPPOE_TAG_VENDOR 0x0105 /* vendor specific */ -#define PPPOE_TAG_RELAYSID 0x0110 /* relay session id */ -#define PPPOE_TAG_SNAME_ERR 0x0201 /* service name error */ -#define PPPOE_TAG_ACSYS_ERR 0x0202 /* AC system error */ -#define PPPOE_TAG_GENERIC_ERR 0x0203 /* gerneric error */ - -#define PPPOE_CODE_PADI 0x09 /* Active Discovery Initiation */ -#define PPPOE_CODE_PADO 0x07 /* Active Discovery Offer */ -#define PPPOE_CODE_PADR 0x19 /* Active Discovery Request */ -#define PPPOE_CODE_PADS 0x65 /* Active Discovery Session confirmation */ -#define PPPOE_CODE_PADT 0xA7 /* Active Discovery Terminate */ - -#ifndef ETHERMTU -#define ETHERMTU 1500 -#endif - -/* two byte PPP protocol discriminator, then IP data */ -#define PPPOE_MAXMTU (ETHERMTU-PPPOE_HEADERLEN-2) - -#ifndef PPPOE_MAX_AC_COOKIE_LEN -#define PPPOE_MAX_AC_COOKIE_LEN 64 -#endif - -struct pppoe_softc { - struct pppoe_softc *next; - struct netif *sc_ethif; /* ethernet interface we are using */ - int sc_pd; /* ppp unit number */ - void (*sc_linkStatusCB)(int pd, int up); - - int sc_state; /* discovery phase or session connected */ - struct eth_addr sc_dest; /* hardware address of concentrator */ - u16_t sc_session; /* PPPoE session id */ - -#ifdef PPPOE_TODO - char *sc_service_name; /* if != NULL: requested name of service */ - char *sc_concentrator_name; /* if != NULL: requested concentrator id */ -#endif /* PPPOE_TODO */ - u8_t sc_ac_cookie[PPPOE_MAX_AC_COOKIE_LEN]; /* content of AC cookie we must echo back */ - size_t sc_ac_cookie_len; /* length of cookie data */ -#ifdef PPPOE_SERVER - u8_t *sc_hunique; /* content of host unique we must echo back */ - size_t sc_hunique_len; /* length of host unique */ -#endif - int sc_padi_retried; /* number of PADI retries already done */ - int sc_padr_retried; /* number of PADR retries already done */ -}; - - -#define pppoe_init() /* compatibility define, no initialization needed */ - -err_t pppoe_create(struct netif *ethif, int pd, void (*linkStatusCB)(int pd, int up), struct pppoe_softc **scptr); -err_t pppoe_destroy(struct netif *ifp); - -int pppoe_connect(struct pppoe_softc *sc); -void pppoe_disconnect(struct pppoe_softc *sc); - -void pppoe_disc_input(struct netif *netif, struct pbuf *p); -void pppoe_data_input(struct netif *netif, struct pbuf *p); - -err_t pppoe_xmit(struct pppoe_softc *sc, struct pbuf *pb); - -/** used in ppp.c */ -#define PPPOE_HDRLEN (sizeof(struct eth_hdr) + PPPOE_HEADERLEN) - -#endif /* PPPOE_SUPPORT */ - -#endif /* PPP_OE_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/slipif.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/slipif.h deleted file mode 100644 index ccd03c8a1..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/include/netif/slipif.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __NETIF_SLIPIF_H__ -#define __NETIF_SLIPIF_H__ - -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -err_t slipif_init(struct netif * netif); -void slipif_poll(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/FILES b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/FILES deleted file mode 100644 index 099dbf3ec..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/FILES +++ /dev/null @@ -1,29 +0,0 @@ -This directory contains generic network interface device drivers that -do not contain any hardware or architecture specific code. The files -are: - -etharp.c - Implements the ARP (Address Resolution Protocol) over - Ethernet. The code in this file should be used together with - Ethernet device drivers. Note that this module has been - largely made Ethernet independent so you should be able to - adapt this for other link layers (such as Firewire). - -ethernetif.c - An example of how an Ethernet device driver could look. This - file can be used as a "skeleton" for developing new Ethernet - network device drivers. It uses the etharp.c ARP code. - -loopif.c - A "loopback" network interface driver. It requires configuration - through the define LWIP_LOOPIF_MULTITHREADING (see opt.h). - -slipif.c - A generic implementation of the SLIP (Serial Line IP) - protocol. It requires a sio (serial I/O) module to work. - -ppp/ Point-to-Point Protocol stack - The PPP stack has been ported from ucip (http://ucip.sourceforge.net). - It matches quite well to pppd 2.3.1 (http://ppp.samba.org), although - compared to that, it has some modifications for embedded systems and - the source code has been reordered a bit. \ No newline at end of file diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/etharp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/etharp.c deleted file mode 100644 index 8b333dd90..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/etharp.c +++ /dev/null @@ -1,1400 +0,0 @@ -/** - * @file - * Address Resolution Protocol module for IP over Ethernet - * - * Functionally, ARP is divided into two parts. The first maps an IP address - * to a physical address when sending a packet, and the second part answers - * requests from other machines for our physical address. - * - * This implementation complies with RFC 826 (Ethernet ARP). It supports - * Gratuitious ARP from RFC3220 (IP Mobility Support for IPv4) section 4.6 - * if an interface calls etharp_gratuitous(our_netif) upon address change. - */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * Copyright (c) 2003-2004 Leon Woestenberg - * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - */ - -#include "lwip/opt.h" - -#if LWIP_ARP || LWIP_ETHERNET - -#include "lwip/ip_addr.h" -#include "lwip/def.h" -#include "lwip/ip.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "netif/etharp.h" -#include "lwip/ip6.h" - -#if PPPOE_SUPPORT -#include "netif/ppp_oe.h" -#endif /* PPPOE_SUPPORT */ - -#include - -const struct eth_addr ethbroadcast = {{0xff,0xff,0xff,0xff,0xff,0xff}}; -const struct eth_addr ethzero = {{0,0,0,0,0,0}}; - -/** The 24-bit IANA multicast OUI is 01-00-5e: */ -#define LL_MULTICAST_ADDR_0 0x01 -#define LL_MULTICAST_ADDR_1 0x00 -#define LL_MULTICAST_ADDR_2 0x5e - -#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */ - -/** the time an ARP entry stays valid after its last update, - * for ARP_TMR_INTERVAL = 5000, this is - * (240 * 5) seconds = 20 minutes. - */ -#define ARP_MAXAGE 240 -/** Re-request a used ARP entry 1 minute before it would expire to prevent - * breaking a steadily used connection because the ARP entry timed out. */ -#define ARP_AGE_REREQUEST_USED (ARP_MAXAGE - 12) - -/** the time an ARP entry stays pending after first request, - * for ARP_TMR_INTERVAL = 5000, this is - * (2 * 5) seconds = 10 seconds. - * - * @internal Keep this number at least 2, otherwise it might - * run out instantly if the timeout occurs directly after a request. - */ -#define ARP_MAXPENDING 2 - -#define HWTYPE_ETHERNET 1 - -enum etharp_state { - ETHARP_STATE_EMPTY = 0, - ETHARP_STATE_PENDING, - ETHARP_STATE_STABLE, - ETHARP_STATE_STABLE_REREQUESTING -#if ETHARP_SUPPORT_STATIC_ENTRIES - ,ETHARP_STATE_STATIC -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ -}; - -struct etharp_entry { -#if ARP_QUEUEING - /** Pointer to queue of pending outgoing packets on this ARP entry. */ - struct etharp_q_entry *q; -#else /* ARP_QUEUEING */ - /** Pointer to a single pending outgoing packet on this ARP entry. */ - struct pbuf *q; -#endif /* ARP_QUEUEING */ - ip_addr_t ipaddr; -#if LWIP_SNMP - struct netif *netif; -#endif /* LWIP_SNMP */ - struct eth_addr ethaddr; - u8_t state; - u8_t ctime; -}; - -static struct etharp_entry arp_table[ARP_TABLE_SIZE]; - -#if !LWIP_NETIF_HWADDRHINT -static u8_t etharp_cached_entry; -#endif /* !LWIP_NETIF_HWADDRHINT */ - -/** Try hard to create a new entry - we want the IP address to appear in - the cache (even if this means removing an active entry or so). */ -#define ETHARP_FLAG_TRY_HARD 1 -#define ETHARP_FLAG_FIND_ONLY 2 -#if ETHARP_SUPPORT_STATIC_ENTRIES -#define ETHARP_FLAG_STATIC_ENTRY 4 -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - -#if LWIP_NETIF_HWADDRHINT -#define ETHARP_SET_HINT(netif, hint) if (((netif) != NULL) && ((netif)->addr_hint != NULL)) \ - *((netif)->addr_hint) = (hint); -#else /* LWIP_NETIF_HWADDRHINT */ -#define ETHARP_SET_HINT(netif, hint) (etharp_cached_entry = (hint)) -#endif /* LWIP_NETIF_HWADDRHINT */ - - -/* Some checks, instead of etharp_init(): */ -#if (LWIP_ARP && (ARP_TABLE_SIZE > 0x7f)) - #error "ARP_TABLE_SIZE must fit in an s8_t, you have to reduce it in your lwipopts.h" -#endif - - -#if ARP_QUEUEING -/** - * Free a complete queue of etharp entries - * - * @param q a qeueue of etharp_q_entry's to free - */ -static void -free_etharp_q(struct etharp_q_entry *q) -{ - struct etharp_q_entry *r; - LWIP_ASSERT("q != NULL", q != NULL); - LWIP_ASSERT("q->p != NULL", q->p != NULL); - while (q) { - r = q; - q = q->next; - LWIP_ASSERT("r->p != NULL", (r->p != NULL)); - pbuf_free(r->p); - memp_free(MEMP_ARP_QUEUE, r); - } -} -#else /* ARP_QUEUEING */ - -/** Compatibility define: free the queued pbuf */ -#define free_etharp_q(q) pbuf_free(q) - -#endif /* ARP_QUEUEING */ - -/** Clean up ARP table entries */ -static void -etharp_free_entry(int i) -{ - /* remove from SNMP ARP index tree */ - snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr); - /* and empty packet queue */ - if (arp_table[i].q != NULL) { - /* remove all queued packets */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_free_entry: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q))); - free_etharp_q(arp_table[i].q); - arp_table[i].q = NULL; - } - /* recycle entry for re-use */ - arp_table[i].state = ETHARP_STATE_EMPTY; -#ifdef LWIP_DEBUG - /* for debugging, clean out the complete entry */ - arp_table[i].ctime = 0; -#if LWIP_SNMP - arp_table[i].netif = NULL; -#endif /* LWIP_SNMP */ - ip_addr_set_zero(&arp_table[i].ipaddr); - arp_table[i].ethaddr = ethzero; -#endif /* LWIP_DEBUG */ -} - -/** - * Clears expired entries in the ARP table. - * - * This function should be called every ETHARP_TMR_INTERVAL milliseconds (5 seconds), - * in order to expire entries in the ARP table. - */ -void -etharp_tmr(void) -{ - u8_t i; - - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n")); - /* remove expired entries from the ARP table */ - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - u8_t state = arp_table[i].state; - if (state != ETHARP_STATE_EMPTY -#if ETHARP_SUPPORT_STATIC_ENTRIES - && (state != ETHARP_STATE_STATIC) -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - ) { - arp_table[i].ctime++; - if ((arp_table[i].ctime >= ARP_MAXAGE) || - ((arp_table[i].state == ETHARP_STATE_PENDING) && - (arp_table[i].ctime >= ARP_MAXPENDING))) { - /* pending or stable entry has become old! */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired %s entry %"U16_F".\n", - arp_table[i].state >= ETHARP_STATE_STABLE ? "stable" : "pending", (u16_t)i)); - /* clean up entries that have just been expired */ - etharp_free_entry(i); - } - else if (arp_table[i].state == ETHARP_STATE_STABLE_REREQUESTING) { - /* Reset state to stable, so that the next transmitted packet will - re-send an ARP request. */ - arp_table[i].state = ETHARP_STATE_STABLE; - } -#if ARP_QUEUEING - /* still pending entry? (not expired) */ - if (arp_table[i].state == ETHARP_STATE_PENDING) { - /* resend an ARP query here? */ - } -#endif /* ARP_QUEUEING */ - } - } -} - -/** - * Search the ARP table for a matching or new entry. - * - * If an IP address is given, return a pending or stable ARP entry that matches - * the address. If no match is found, create a new entry with this address set, - * but in state ETHARP_EMPTY. The caller must check and possibly change the - * state of the returned entry. - * - * If ipaddr is NULL, return a initialized new entry in state ETHARP_EMPTY. - * - * In all cases, attempt to create new entries from an empty entry. If no - * empty entries are available and ETHARP_FLAG_TRY_HARD flag is set, recycle - * old entries. Heuristic choose the least important entry for recycling. - * - * @param ipaddr IP address to find in ARP cache, or to add if not found. - * @param flags @see definition of ETHARP_FLAG_* - * @param netif netif related to this address (used for NETIF_HWADDRHINT) - * - * @return The ARP entry index that matched or is created, ERR_MEM if no - * entry is found or could be recycled. - */ -static s8_t -etharp_find_entry(ip_addr_t *ipaddr, u8_t flags) -{ - s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE; - s8_t empty = ARP_TABLE_SIZE; - u8_t i = 0, age_pending = 0, age_stable = 0; - /* oldest entry with packets on queue */ - s8_t old_queue = ARP_TABLE_SIZE; - /* its age */ - u8_t age_queue = 0; - - /** - * a) do a search through the cache, remember candidates - * b) select candidate entry - * c) create new entry - */ - - /* a) in a single search sweep, do all of this - * 1) remember the first empty entry (if any) - * 2) remember the oldest stable entry (if any) - * 3) remember the oldest pending entry without queued packets (if any) - * 4) remember the oldest pending entry with queued packets (if any) - * 5) search for a matching IP entry, either pending or stable - * until 5 matches, or all entries are searched for. - */ - - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - u8_t state = arp_table[i].state; - /* no empty entry found yet and now we do find one? */ - if ((empty == ARP_TABLE_SIZE) && (state == ETHARP_STATE_EMPTY)) { - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_find_entry: found empty entry %"U16_F"\n", (u16_t)i)); - /* remember first empty entry */ - empty = i; - } else if (state != ETHARP_STATE_EMPTY) { - LWIP_ASSERT("state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE", - state == ETHARP_STATE_PENDING || state >= ETHARP_STATE_STABLE); - /* if given, does IP address match IP address in ARP entry? */ - if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: found matching entry %"U16_F"\n", (u16_t)i)); - /* found exact IP address match, simply bail out */ - return i; - } - /* pending entry? */ - if (state == ETHARP_STATE_PENDING) { - /* pending with queued packets? */ - if (arp_table[i].q != NULL) { - if (arp_table[i].ctime >= age_queue) { - old_queue = i; - age_queue = arp_table[i].ctime; - } - } else - /* pending without queued packets? */ - { - if (arp_table[i].ctime >= age_pending) { - old_pending = i; - age_pending = arp_table[i].ctime; - } - } - /* stable entry? */ - } else if (state >= ETHARP_STATE_STABLE) { -#if ETHARP_SUPPORT_STATIC_ENTRIES - /* don't record old_stable for static entries since they never expire */ - if (state < ETHARP_STATE_STATIC) -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - { - /* remember entry with oldest stable entry in oldest, its age in maxtime */ - if (arp_table[i].ctime >= age_stable) { - old_stable = i; - age_stable = arp_table[i].ctime; - } - } - } - } - } - /* { we have no match } => try to create a new entry */ - - /* don't create new entry, only search? */ - if (((flags & ETHARP_FLAG_FIND_ONLY) != 0) || - /* or no empty entry found and not allowed to recycle? */ - ((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_FLAG_TRY_HARD) == 0))) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty entry found and not allowed to recycle\n")); - return (s8_t)ERR_MEM; - } - - /* b) choose the least destructive entry to recycle: - * 1) empty entry - * 2) oldest stable entry - * 3) oldest pending entry without queued packets - * 4) oldest pending entry with queued packets - * - * { ETHARP_FLAG_TRY_HARD is set at this point } - */ - - /* 1) empty entry available? */ - if (empty < ARP_TABLE_SIZE) { - i = empty; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting empty entry %"U16_F"\n", (u16_t)i)); - } else { - /* 2) found recyclable stable entry? */ - if (old_stable < ARP_TABLE_SIZE) { - /* recycle oldest stable*/ - i = old_stable; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest stable entry %"U16_F"\n", (u16_t)i)); - /* no queued packets should exist on stable entries */ - LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL); - /* 3) found recyclable pending entry without queued packets? */ - } else if (old_pending < ARP_TABLE_SIZE) { - /* recycle oldest pending */ - i = old_pending; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest pending entry %"U16_F" (without queue)\n", (u16_t)i)); - /* 4) found recyclable pending entry with queued packets? */ - } else if (old_queue < ARP_TABLE_SIZE) { - /* recycle oldest pending (queued packets are free in etharp_free_entry) */ - i = old_queue; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: selecting oldest pending entry %"U16_F", freeing packet queue %p\n", (u16_t)i, (void *)(arp_table[i].q))); - /* no empty or recyclable entries found */ - } else { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_find_entry: no empty or recyclable entries found\n")); - return (s8_t)ERR_MEM; - } - - /* { empty or recyclable entry found } */ - LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - etharp_free_entry(i); - } - - LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - LWIP_ASSERT("arp_table[i].state == ETHARP_STATE_EMPTY", - arp_table[i].state == ETHARP_STATE_EMPTY); - - /* IP address given? */ - if (ipaddr != NULL) { - /* set IP address */ - ip_addr_copy(arp_table[i].ipaddr, *ipaddr); - } - arp_table[i].ctime = 0; - return (err_t)i; -} - -/** - * Send an IP packet on the network using netif->linkoutput - * The ethernet header is filled in before sending. - * - * @params netif the lwIP network interface on which to send the packet - * @params p the packet to send, p->payload pointing to the (uninitialized) ethernet header - * @params src the source MAC address to be copied into the ethernet header - * @params dst the destination MAC address to be copied into the ethernet header - * @return ERR_OK if the packet was sent, any other err_t on failure - */ -static err_t -etharp_send_ip(struct netif *netif, struct pbuf *p, struct eth_addr *src, struct eth_addr *dst) -{ - struct eth_hdr *ethhdr = (struct eth_hdr *)p->payload; - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); - ETHADDR32_COPY(ðhdr->dest, dst); - ETHADDR16_COPY(ðhdr->src, src); - ethhdr->type = PP_HTONS(ETHTYPE_IP); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_send_ip: sending packet %p\n", (void *)p)); - /* send the packet */ - return netif->linkoutput(netif, p); -} - -/** - * Update (or insert) a IP/MAC address pair in the ARP cache. - * - * If a pending entry is resolved, any queued packets will be sent - * at this point. - * - * @param netif netif related to this entry (used for NETIF_ADDRHINT) - * @param ipaddr IP address of the inserted ARP entry. - * @param ethaddr Ethernet address of the inserted ARP entry. - * @param flags @see definition of ETHARP_FLAG_* - * - * @return - * - ERR_OK Succesfully updated ARP cache. - * - ERR_MEM If we could not add a new ARP entry when ETHARP_FLAG_TRY_HARD was set. - * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. - * - * @see pbuf_free() - */ -static err_t -etharp_update_arp_entry(struct netif *netif, ip_addr_t *ipaddr, struct eth_addr *ethaddr, u8_t flags) -{ - s8_t i; - LWIP_ASSERT("netif->hwaddr_len == ETHARP_HWADDR_LEN", netif->hwaddr_len == ETHARP_HWADDR_LEN); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n", - ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr), - ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2], - ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5])); - /* non-unicast address? */ - if (ip_addr_isany(ipaddr) || - ip_addr_isbroadcast(ipaddr, netif) || - ip_addr_ismulticast(ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - } - /* find or create ARP entry */ - i = etharp_find_entry(ipaddr, flags); - /* bail out if no entry could be found */ - if (i < 0) { - return (err_t)i; - } - -#if ETHARP_SUPPORT_STATIC_ENTRIES - if (flags & ETHARP_FLAG_STATIC_ENTRY) { - /* record static type */ - arp_table[i].state = ETHARP_STATE_STATIC; - } else -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - { - /* mark it stable */ - arp_table[i].state = ETHARP_STATE_STABLE; - } - - /* record network interface */ -#if LWIP_SNMP - arp_table[i].netif = netif; -#endif /* LWIP_SNMP */ - /* insert in SNMP ARP index tree */ - snmp_insert_arpidx_tree(netif, &arp_table[i].ipaddr); - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_update_arp_entry: updating stable entry %"S16_F"\n", (s16_t)i)); - /* update address */ - ETHADDR32_COPY(&arp_table[i].ethaddr, ethaddr); - /* reset time stamp */ - arp_table[i].ctime = 0; - /* this is where we will send out queued packets! */ -#if ARP_QUEUEING - while (arp_table[i].q != NULL) { - struct pbuf *p; - /* remember remainder of queue */ - struct etharp_q_entry *q = arp_table[i].q; - /* pop first item off the queue */ - arp_table[i].q = q->next; - /* get the packet pointer */ - p = q->p; - /* now queue entry can be freed */ - memp_free(MEMP_ARP_QUEUE, q); -#else /* ARP_QUEUEING */ - if (arp_table[i].q != NULL) { - struct pbuf *p = arp_table[i].q; - arp_table[i].q = NULL; -#endif /* ARP_QUEUEING */ - /* send the queued IP packet */ - etharp_send_ip(netif, p, (struct eth_addr*)(netif->hwaddr), ethaddr); - /* free the queued IP packet */ - pbuf_free(p); - } - return ERR_OK; -} - -#if ETHARP_SUPPORT_STATIC_ENTRIES -/** Add a new static entry to the ARP table. If an entry exists for the - * specified IP address, this entry is overwritten. - * If packets are queued for the specified IP address, they are sent out. - * - * @param ipaddr IP address for the new static entry - * @param ethaddr ethernet address for the new static entry - * @return @see return values of etharp_add_static_entry - */ -err_t -etharp_add_static_entry(ip_addr_t *ipaddr, struct eth_addr *ethaddr) -{ - struct netif *netif; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_add_static_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n", - ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr), - ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2], - ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5])); - - netif = ip_route(ipaddr); - if (netif == NULL) { - return ERR_RTE; - } - - return etharp_update_arp_entry(netif, ipaddr, ethaddr, ETHARP_FLAG_TRY_HARD | ETHARP_FLAG_STATIC_ENTRY); -} - -/** Remove a static entry from the ARP table previously added with a call to - * etharp_add_static_entry. - * - * @param ipaddr IP address of the static entry to remove - * @return ERR_OK: entry removed - * ERR_MEM: entry wasn't found - * ERR_ARG: entry wasn't a static entry but a dynamic one - */ -err_t -etharp_remove_static_entry(ip_addr_t *ipaddr) -{ - s8_t i; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_remove_static_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1_16(ipaddr), ip4_addr2_16(ipaddr), ip4_addr3_16(ipaddr), ip4_addr4_16(ipaddr))); - - /* find or create ARP entry */ - i = etharp_find_entry(ipaddr, ETHARP_FLAG_FIND_ONLY); - /* bail out if no entry could be found */ - if (i < 0) { - return (err_t)i; - } - - if (arp_table[i].state != ETHARP_STATE_STATIC) { - /* entry wasn't a static entry, cannot remove it */ - return ERR_ARG; - } - /* entry found, free it */ - etharp_free_entry(i); - return ERR_OK; -} -#endif /* ETHARP_SUPPORT_STATIC_ENTRIES */ - -/** - * Finds (stable) ethernet/IP address pair from ARP table - * using interface and IP address index. - * @note the addresses in the ARP table are in network order! - * - * @param netif points to interface index - * @param ipaddr points to the (network order) IP address index - * @param eth_ret points to return pointer - * @param ip_ret points to return pointer - * @return table index if found, -1 otherwise - */ -s8_t -etharp_find_addr(struct netif *netif, ip_addr_t *ipaddr, - struct eth_addr **eth_ret, ip_addr_t **ip_ret) -{ - s8_t i; - - LWIP_ASSERT("eth_ret != NULL && ip_ret != NULL", - eth_ret != NULL && ip_ret != NULL); - - LWIP_UNUSED_ARG(netif); - - i = etharp_find_entry(ipaddr, ETHARP_FLAG_FIND_ONLY); - if((i >= 0) && (arp_table[i].state >= ETHARP_STATE_STABLE)) { - *eth_ret = &arp_table[i].ethaddr; - *ip_ret = &arp_table[i].ipaddr; - return i; - } - return -1; -} - -#if ETHARP_TRUST_IP_MAC -/** - * Updates the ARP table using the given IP packet. - * - * Uses the incoming IP packet's source address to update the - * ARP cache for the local network. The function does not alter - * or free the packet. This function must be called before the - * packet p is passed to the IP layer. - * - * @param netif The lwIP network interface on which the IP packet pbuf arrived. - * @param p The IP packet that arrived on netif. - * - * @return NULL - * - * @see pbuf_free() - */ -static void -etharp_ip_input(struct netif *netif, struct pbuf *p) -{ - struct eth_hdr *ethhdr; - struct ip_hdr *iphdr; - ip_addr_t iphdr_src; - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - - /* Only insert an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - ethhdr = (struct eth_hdr *)p->payload; - iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); -#if ETHARP_SUPPORT_VLAN - if (ethhdr->type == PP_HTONS(ETHTYPE_VLAN)) { - iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - ip_addr_copy(iphdr_src, iphdr->src); - - /* source is not on the local network? */ - if (!ip_addr_netcmp(&iphdr_src, &(netif->ip_addr), &(netif->netmask))) { - /* do nothing */ - return; - } - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_ip_input: updating ETHARP table.\n")); - /* update the source IP address in the cache, if present */ - /* @todo We could use ETHARP_FLAG_TRY_HARD if we think we are going to talk - * back soon (for example, if the destination IP address is ours. */ - etharp_update_arp_entry(netif, &iphdr_src, &(ethhdr->src), ETHARP_FLAG_FIND_ONLY); -} -#endif /* ETHARP_TRUST_IP_MAC */ - -/** - * Responds to ARP requests to us. Upon ARP replies to us, add entry to cache - * send out queued IP packets. Updates cache with snooped address pairs. - * - * Should be called for incoming ARP packets. The pbuf in the argument - * is freed by this function. - * - * @param netif The lwIP network interface on which the ARP packet pbuf arrived. - * @param ethaddr Ethernet address of netif. - * @param p The ARP packet that arrived on netif. Is freed by this function. - * - * @return NULL - * - * @see pbuf_free() - */ -static void -etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p) -{ - struct etharp_hdr *hdr; - struct eth_hdr *ethhdr; - /* these are aligned properly, whereas the ARP header fields might not be */ - ip_addr_t sipaddr, dipaddr; - u8_t for_us; -#if LWIP_AUTOIP - const u8_t * ethdst_hwaddr; -#endif /* LWIP_AUTOIP */ - - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - - /* drop short ARP packets: we have to check for p->len instead of p->tot_len here - since a struct etharp_hdr is pointed to p->payload, so it musn't be chained! */ - if (p->len < SIZEOF_ETHARP_PACKET) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("etharp_arp_input: packet dropped, too short (%"S16_F"/%"S16_F")\n", p->tot_len, - (s16_t)SIZEOF_ETHARP_PACKET)); - ETHARP_STATS_INC(etharp.lenerr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - return; - } - - ethhdr = (struct eth_hdr *)p->payload; - hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); -#if ETHARP_SUPPORT_VLAN - if (ethhdr->type == PP_HTONS(ETHTYPE_VLAN)) { - hdr = (struct etharp_hdr *)(((u8_t*)ethhdr) + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - /* RFC 826 "Packet Reception": */ - if ((hdr->hwtype != PP_HTONS(HWTYPE_ETHERNET)) || - (hdr->hwlen != ETHARP_HWADDR_LEN) || - (hdr->protolen != sizeof(ip_addr_t)) || - (hdr->proto != PP_HTONS(ETHTYPE_IP))) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("etharp_arp_input: packet dropped, wrong hw type, hwlen, proto, protolen or ethernet type (%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F")\n", - hdr->hwtype, hdr->hwlen, hdr->proto, hdr->protolen)); - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - return; - } - ETHARP_STATS_INC(etharp.recv); - -#if LWIP_AUTOIP - /* We have to check if a host already has configured our random - * created link local address and continously check if there is - * a host with this IP-address so we can detect collisions */ - autoip_arp_reply(netif, hdr); -#endif /* LWIP_AUTOIP */ - - /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without - * structure packing (not using structure copy which breaks strict-aliasing rules). */ - IPADDR2_COPY(&sipaddr, &hdr->sipaddr); - IPADDR2_COPY(&dipaddr, &hdr->dipaddr); - - /* this interface is not configured? */ - if (ip_addr_isany(&netif->ip_addr)) { - for_us = 0; - } else { - /* ARP packet directed to us? */ - for_us = (u8_t)ip_addr_cmp(&dipaddr, &(netif->ip_addr)); - } - - /* ARP message directed to us? - -> add IP address in ARP cache; assume requester wants to talk to us, - can result in directly sending the queued packets for this host. - ARP message not directed to us? - -> update the source IP address in the cache, if present */ - etharp_update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), - for_us ? ETHARP_FLAG_TRY_HARD : ETHARP_FLAG_FIND_ONLY); - - /* now act on the message itself */ - switch (hdr->opcode) { - /* ARP request? */ - case PP_HTONS(ARP_REQUEST): - /* ARP request. If it asked for our address, we send out a - * reply. In any case, we time-stamp any existing ARP entry, - * and possiby send out an IP packet that was queued on it. */ - - LWIP_DEBUGF (ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP request\n")); - /* ARP request for our address? */ - if (for_us) { - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: replying to ARP request for our IP address\n")); - /* Re-use pbuf to send ARP reply. - Since we are re-using an existing pbuf, we can't call etharp_raw since - that would allocate a new pbuf. */ - hdr->opcode = htons(ARP_REPLY); - - IPADDR2_COPY(&hdr->dipaddr, &hdr->sipaddr); - IPADDR2_COPY(&hdr->sipaddr, &netif->ip_addr); - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); -#if LWIP_AUTOIP - /* If we are using Link-Local, all ARP packets that contain a Link-Local - * 'sender IP address' MUST be sent using link-layer broadcast instead of - * link-layer unicast. (See RFC3927 Section 2.5, last paragraph) */ - ethdst_hwaddr = ip_addr_islinklocal(&netif->ip_addr) ? (u8_t*)(ethbroadcast.addr) : hdr->shwaddr.addr; -#endif /* LWIP_AUTOIP */ - - ETHADDR16_COPY(&hdr->dhwaddr, &hdr->shwaddr); -#if LWIP_AUTOIP - ETHADDR16_COPY(ðhdr->dest, ethdst_hwaddr); -#else /* LWIP_AUTOIP */ - ETHADDR16_COPY(ðhdr->dest, &hdr->shwaddr); -#endif /* LWIP_AUTOIP */ - ETHADDR16_COPY(&hdr->shwaddr, ethaddr); - ETHADDR16_COPY(ðhdr->src, ethaddr); - - /* hwtype, hwaddr_len, proto, protolen and the type in the ethernet header - are already correct, we tested that before */ - - /* return ARP reply */ - netif->linkoutput(netif, p); - /* we are not configured? */ - } else if (ip_addr_isany(&netif->ip_addr)) { - /* { for_us == 0 and netif->ip_addr.addr == 0 } */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: we are unconfigured, ARP request ignored.\n")); - /* request was not directed to us */ - } else { - /* { for_us == 0 and netif->ip_addr.addr != 0 } */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP request was not for us.\n")); - } - break; - case PP_HTONS(ARP_REPLY): - /* ARP reply. We already updated the ARP cache earlier. */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP reply\n")); -#if (LWIP_DHCP && DHCP_DOES_ARP_CHECK) - /* DHCP wants to know about ARP replies from any host with an - * IP address also offered to us by the DHCP server. We do not - * want to take a duplicate IP address on a single network. - * @todo How should we handle redundant (fail-over) interfaces? */ - dhcp_arp_reply(netif, &sipaddr); -#endif /* (LWIP_DHCP && DHCP_DOES_ARP_CHECK) */ - break; - default: - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP unknown opcode type %"S16_F"\n", htons(hdr->opcode))); - ETHARP_STATS_INC(etharp.err); - break; - } - /* free ARP packet */ - pbuf_free(p); -} - -/** Just a small helper function that sends a pbuf to an ethernet address - * in the arp_table specified by the index 'arp_idx'. - */ -static err_t -etharp_output_to_arp_index(struct netif *netif, struct pbuf *q, u8_t arp_idx) -{ - LWIP_ASSERT("arp_table[arp_idx].state >= ETHARP_STATE_STABLE", - arp_table[arp_idx].state >= ETHARP_STATE_STABLE); - /* if arp table entry is about to expire: re-request it, - but only if its state is ETHARP_STATE_STABLE to prevent flooding the - network with ARP requests if this address is used frequently. */ - if ((arp_table[arp_idx].state == ETHARP_STATE_STABLE) && - (arp_table[arp_idx].ctime >= ARP_AGE_REREQUEST_USED)) { - if (etharp_request(netif, &arp_table[arp_idx].ipaddr) == ERR_OK) { - arp_table[arp_idx].state = ETHARP_STATE_STABLE_REREQUESTING; - } - } - - return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), - &arp_table[arp_idx].ethaddr); -} - -/** - * Resolve and fill-in Ethernet address header for outgoing IP packet. - * - * For IP multicast and broadcast, corresponding Ethernet addresses - * are selected and the packet is transmitted on the link. - * - * For unicast addresses, the packet is submitted to etharp_query(). In - * case the IP address is outside the local network, the IP address of - * the gateway is used. - * - * @param netif The lwIP network interface which the IP packet will be sent on. - * @param q The pbuf(s) containing the IP packet to be sent. - * @param ipaddr The IP address of the packet destination. - * - * @return - * - ERR_RTE No route to destination (no gateway to external networks), - * or the return type of either etharp_query() or etharp_send_ip(). - */ -err_t -etharp_output(struct netif *netif, struct pbuf *q, ip_addr_t *ipaddr) -{ - struct eth_addr *dest; - struct eth_addr mcastaddr; - ip_addr_t *dst_addr = ipaddr; - - LWIP_ASSERT("netif != NULL", netif != NULL); - LWIP_ASSERT("q != NULL", q != NULL); - LWIP_ASSERT("ipaddr != NULL", ipaddr != NULL); - - /* make room for Ethernet header - should not fail */ - if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) { - /* bail out */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_output: could not allocate room for header.\n")); - LINK_STATS_INC(link.lenerr); - return ERR_BUF; - } - - /* outside local network? if so, this can neither be a global broadcast nor - a subnet broadcast. */ - if (!ip_addr_netcmp(ipaddr, &(netif->ip_addr), &(netif->netmask)) && - !ip_addr_islinklocal(ipaddr)) { -#if LWIP_AUTOIP - struct ip_hdr *iphdr = (struct ip_hdr*)((u8_t*)q->payload + - sizeof(struct eth_hdr)); - /* According to RFC 3297, chapter 2.6.2 (Forwarding Rules), a packet with - a link-local source address must always be "directly to its destination - on the same physical link. The host MUST NOT send the packet to any - router for forwarding". */ - if (!ip_addr_islinklocal(&iphdr->src)) -#endif /* LWIP_AUTOIP */ - { - /* interface has default gateway? */ - if (!ip_addr_isany(&netif->gw)) { - /* send to hardware address of default gateway IP address */ - dst_addr = &(netif->gw); - /* no default gateway available */ - } else { - /* no route to destination error (default gateway missing) */ - return ERR_RTE; - } - } - } -#if LWIP_NETIF_HWADDRHINT - if (netif->addr_hint != NULL) { - /* per-pcb cached entry was given */ - u8_t etharp_cached_entry = *(netif->addr_hint); - if (etharp_cached_entry < ARP_TABLE_SIZE) { -#endif /* LWIP_NETIF_HWADDRHINT */ - if ((arp_table[etharp_cached_entry].state >= ETHARP_STATE_STABLE) && - (ip_addr_cmp(dst_addr, &arp_table[etharp_cached_entry].ipaddr))) { - /* the per-pcb-cached entry is stable and the right one! */ - ETHARP_STATS_INC(etharp.cachehit); - return etharp_output_to_arp_index(netif, q, etharp_cached_entry); - } -#if LWIP_NETIF_HWADDRHINT - } - } -#endif /* LWIP_NETIF_HWADDRHINT */ - - /* Determine on destination hardware address. Broadcasts and multicasts - * are special, other IP addresses are looked up in the ARP table. */ - - /* broadcast destination IP address? */ - if (ip_addr_isbroadcast(ipaddr, netif)) { - /* broadcast on Ethernet also */ - dest = (struct eth_addr *)ðbroadcast; - /* multicast destination IP address? */ - } else if (ip_addr_ismulticast(ipaddr)) { - /* Hash IP multicast address to MAC address.*/ - mcastaddr.addr[0] = LL_MULTICAST_ADDR_0; - mcastaddr.addr[1] = LL_MULTICAST_ADDR_1; - mcastaddr.addr[2] = LL_MULTICAST_ADDR_2; - mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f; - mcastaddr.addr[4] = ip4_addr3(ipaddr); - mcastaddr.addr[5] = ip4_addr4(ipaddr); - /* destination Ethernet address is multicast */ - dest = &mcastaddr; - /* unicast destination IP address? */ - } else { - s8_t i; - /* find stable entry: do this here since this is a critical path for - throughput and etharp_find_entry() is kind of slow */ - for (i = 0; i < ARP_TABLE_SIZE; i++) { - if ((arp_table[i].state >= ETHARP_STATE_STABLE) && - (ip_addr_cmp(dst_addr, &arp_table[i].ipaddr))) { - /* found an existing, stable entry */ - ETHARP_SET_HINT(netif, i); - return etharp_output_to_arp_index(netif, q, i); - } - } - /* no stable entry found, use the (slower) query function: - queue on destination Ethernet address belonging to ipaddr */ - return etharp_query(netif, dst_addr, q); - } - - /* continuation for multicast/broadcast destinations */ - /* obtain source Ethernet address of the given interface */ - /* send packet directly on the link */ - return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), dest); -} - -/** - * Send an ARP request for the given IP address and/or queue a packet. - * - * If the IP address was not yet in the cache, a pending ARP cache entry - * is added and an ARP request is sent for the given address. The packet - * is queued on this entry. - * - * If the IP address was already pending in the cache, a new ARP request - * is sent for the given address. The packet is queued on this entry. - * - * If the IP address was already stable in the cache, and a packet is - * given, it is directly sent and no ARP request is sent out. - * - * If the IP address was already stable in the cache, and no packet is - * given, an ARP request is sent out. - * - * @param netif The lwIP network interface on which ipaddr - * must be queried for. - * @param ipaddr The IP address to be resolved. - * @param q If non-NULL, a pbuf that must be delivered to the IP address. - * q is not freed by this function. - * - * @note q must only be ONE packet, not a packet queue! - * - * @return - * - ERR_BUF Could not make room for Ethernet header. - * - ERR_MEM Hardware address unknown, and no more ARP entries available - * to query for address or queue the packet. - * - ERR_MEM Could not queue packet due to memory shortage. - * - ERR_RTE No route to destination (no gateway to external networks). - * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. - * - */ -err_t -etharp_query(struct netif *netif, ip_addr_t *ipaddr, struct pbuf *q) -{ - struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr; - err_t result = ERR_MEM; - s8_t i; /* ARP entry index */ - - /* non-unicast address? */ - if (ip_addr_isbroadcast(ipaddr, netif) || - ip_addr_ismulticast(ipaddr) || - ip_addr_isany(ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - } - - /* find entry in ARP cache, ask to create entry if queueing packet */ - i = etharp_find_entry(ipaddr, ETHARP_FLAG_TRY_HARD); - - /* could not find or create entry? */ - if (i < 0) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not create ARP entry\n")); - if (q) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: packet dropped\n")); - ETHARP_STATS_INC(etharp.memerr); - } - return (err_t)i; - } - - /* mark a fresh entry as pending (we just sent a request) */ - if (arp_table[i].state == ETHARP_STATE_EMPTY) { - arp_table[i].state = ETHARP_STATE_PENDING; - } - - /* { i is either a STABLE or (new or existing) PENDING entry } */ - LWIP_ASSERT("arp_table[i].state == PENDING or STABLE", - ((arp_table[i].state == ETHARP_STATE_PENDING) || - (arp_table[i].state >= ETHARP_STATE_STABLE))); - - /* do we have a pending entry? or an implicit query request? */ - if ((arp_table[i].state == ETHARP_STATE_PENDING) || (q == NULL)) { - /* try to resolve it; send out ARP request */ - result = etharp_request(netif, ipaddr); - if (result != ERR_OK) { - /* ARP request couldn't be sent */ - /* We don't re-send arp request in etharp_tmr, but we still queue packets, - since this failure could be temporary, and the next packet calling - etharp_query again could lead to sending the queued packets. */ - } - if (q == NULL) { - return result; - } - } - - /* packet given? */ - LWIP_ASSERT("q != NULL", q != NULL); - /* stable entry? */ - if (arp_table[i].state >= ETHARP_STATE_STABLE) { - /* we have a valid IP->Ethernet address mapping */ - ETHARP_SET_HINT(netif, i); - /* send the packet */ - result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr)); - /* pending entry? (either just created or already pending */ - } else if (arp_table[i].state == ETHARP_STATE_PENDING) { - /* entry is still pending, queue the given packet 'q' */ - struct pbuf *p; - int copy_needed = 0; - /* IF q includes a PBUF_REF, PBUF_POOL or PBUF_RAM, we have no choice but - * to copy the whole queue into a new PBUF_RAM (see bug #11400) - * PBUF_ROMs can be left as they are, since ROM must not get changed. */ - p = q; - while (p) { - LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0)); - if(p->type != PBUF_ROM) { - copy_needed = 1; - break; - } - p = p->next; - } - if(copy_needed) { - /* copy the whole packet into new pbufs */ - p = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); - if(p != NULL) { - if (pbuf_copy(p, q) != ERR_OK) { - pbuf_free(p); - p = NULL; - } - } - } else { - /* referencing the old pbuf is enough */ - p = q; - pbuf_ref(p); - } - /* packet could be taken over? */ - if (p != NULL) { - /* queue packet ... */ -#if ARP_QUEUEING - struct etharp_q_entry *new_entry; - /* allocate a new arp queue entry */ - new_entry = (struct etharp_q_entry *)memp_malloc(MEMP_ARP_QUEUE); - if (new_entry != NULL) { - new_entry->next = 0; - new_entry->p = p; - if(arp_table[i].q != NULL) { - /* queue was already existent, append the new entry to the end */ - struct etharp_q_entry *r; - r = arp_table[i].q; - while (r->next != NULL) { - r = r->next; - } - r->next = new_entry; - } else { - /* queue did not exist, first item in queue */ - arp_table[i].q = new_entry; - } - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"S16_F"\n", (void *)q, (s16_t)i)); - result = ERR_OK; - } else { - /* the pool MEMP_ARP_QUEUE is empty */ - pbuf_free(p); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - result = ERR_MEM; - } -#else /* ARP_QUEUEING */ - /* always queue one packet per ARP request only, freeing a previously queued packet */ - if (arp_table[i].q != NULL) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: dropped previously queued packet %p for ARP entry %"S16_F"\n", (void *)q, (s16_t)i)); - pbuf_free(arp_table[i].q); - } - arp_table[i].q = p; - result = ERR_OK; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"S16_F"\n", (void *)q, (s16_t)i)); -#endif /* ARP_QUEUEING */ - } else { - ETHARP_STATS_INC(etharp.memerr); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - result = ERR_MEM; - } - } - return result; -} - -/** - * Send a raw ARP packet (opcode and all addresses can be modified) - * - * @param netif the lwip network interface on which to send the ARP packet - * @param ethsrc_addr the source MAC address for the ethernet header - * @param ethdst_addr the destination MAC address for the ethernet header - * @param hwsrc_addr the source MAC address for the ARP protocol header - * @param ipsrc_addr the source IP address for the ARP protocol header - * @param hwdst_addr the destination MAC address for the ARP protocol header - * @param ipdst_addr the destination IP address for the ARP protocol header - * @param opcode the type of the ARP packet - * @return ERR_OK if the ARP packet has been sent - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -#if !LWIP_AUTOIP -static -#endif /* LWIP_AUTOIP */ -err_t -etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, - const struct eth_addr *ethdst_addr, - const struct eth_addr *hwsrc_addr, const ip_addr_t *ipsrc_addr, - const struct eth_addr *hwdst_addr, const ip_addr_t *ipdst_addr, - const u16_t opcode) -{ - struct pbuf *p; - err_t result = ERR_OK; - struct eth_hdr *ethhdr; - struct etharp_hdr *hdr; -#if LWIP_AUTOIP - const u8_t * ethdst_hwaddr; -#endif /* LWIP_AUTOIP */ - - LWIP_ASSERT("netif != NULL", netif != NULL); - - /* allocate a pbuf for the outgoing ARP request packet */ - p = pbuf_alloc(PBUF_RAW, SIZEOF_ETHARP_PACKET, PBUF_RAM); - /* could allocate a pbuf for an ARP request? */ - if (p == NULL) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_raw: could not allocate pbuf for ARP request.\n")); - ETHARP_STATS_INC(etharp.memerr); - return ERR_MEM; - } - LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr", - (p->len >= SIZEOF_ETHARP_PACKET)); - - ethhdr = (struct eth_hdr *)p->payload; - hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n")); - hdr->opcode = htons(opcode); - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); -#if LWIP_AUTOIP - /* If we are using Link-Local, all ARP packets that contain a Link-Local - * 'sender IP address' MUST be sent using link-layer broadcast instead of - * link-layer unicast. (See RFC3927 Section 2.5, last paragraph) */ - ethdst_hwaddr = ip_addr_islinklocal(ipsrc_addr) ? (u8_t*)(ethbroadcast.addr) : ethdst_addr->addr; -#endif /* LWIP_AUTOIP */ - /* Write the ARP MAC-Addresses */ - ETHADDR16_COPY(&hdr->shwaddr, hwsrc_addr); - ETHADDR16_COPY(&hdr->dhwaddr, hwdst_addr); - /* Write the Ethernet MAC-Addresses */ -#if LWIP_AUTOIP - ETHADDR16_COPY(ðhdr->dest, ethdst_hwaddr); -#else /* LWIP_AUTOIP */ - ETHADDR16_COPY(ðhdr->dest, ethdst_addr); -#endif /* LWIP_AUTOIP */ - ETHADDR16_COPY(ðhdr->src, ethsrc_addr); - /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without - * structure packing. */ - IPADDR2_COPY(&hdr->sipaddr, ipsrc_addr); - IPADDR2_COPY(&hdr->dipaddr, ipdst_addr); - - hdr->hwtype = PP_HTONS(HWTYPE_ETHERNET); - hdr->proto = PP_HTONS(ETHTYPE_IP); - /* set hwlen and protolen */ - hdr->hwlen = ETHARP_HWADDR_LEN; - hdr->protolen = sizeof(ip_addr_t); - - ethhdr->type = PP_HTONS(ETHTYPE_ARP); - /* send ARP query */ - result = netif->linkoutput(netif, p); - ETHARP_STATS_INC(etharp.xmit); - /* free ARP query packet */ - pbuf_free(p); - p = NULL; - /* could not allocate pbuf for ARP request */ - - return result; -} - -/** - * Send an ARP request packet asking for ipaddr. - * - * @param netif the lwip network interface on which to send the request - * @param ipaddr the IP address for which to ask - * @return ERR_OK if the request has been sent - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -err_t -etharp_request(struct netif *netif, ip_addr_t *ipaddr) -{ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n")); - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, &netif->ip_addr, ðzero, - ipaddr, ARP_REQUEST); -} -#endif /* LWIP_ARP */ - -/** - * Process received ethernet frames. Using this function instead of directly - * calling ip_input and passing ARP frames through etharp in ethernetif_input, - * the ARP cache is protected from concurrent access. - * - * @param p the recevied packet, p->payload pointing to the ethernet header - * @param netif the network interface on which the packet was received - */ -err_t -ethernet_input(struct pbuf *p, struct netif *netif) -{ - struct eth_hdr* ethhdr; - u16_t type; - s16_t ip_hdr_offset = SIZEOF_ETH_HDR; - - if (p->len <= SIZEOF_ETH_HDR) { - /* a packet with only an ethernet header (or less) is not valid for us */ - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - goto free_and_return; - } - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = (struct eth_hdr *)p->payload; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, - ("ethernet_input: dest:%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F", src:%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F":%"X8_F", type:%"X16_F"\n", - (unsigned)ethhdr->dest.addr[0], (unsigned)ethhdr->dest.addr[1], (unsigned)ethhdr->dest.addr[2], - (unsigned)ethhdr->dest.addr[3], (unsigned)ethhdr->dest.addr[4], (unsigned)ethhdr->dest.addr[5], - (unsigned)ethhdr->src.addr[0], (unsigned)ethhdr->src.addr[1], (unsigned)ethhdr->src.addr[2], - (unsigned)ethhdr->src.addr[3], (unsigned)ethhdr->src.addr[4], (unsigned)ethhdr->src.addr[5], - (unsigned)htons(ethhdr->type))); - - type = ethhdr->type; -#if ETHARP_SUPPORT_VLAN - if (type == PP_HTONS(ETHTYPE_VLAN)) { - struct eth_vlan_hdr *vlan = (struct eth_vlan_hdr*)(((char*)ethhdr) + SIZEOF_ETH_HDR); - if (p->len <= SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR) { - /* a packet with only an ethernet/vlan header (or less) is not valid for us */ - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - goto free_and_return; - } -#if defined(ETHARP_VLAN_CHECK) || defined(ETHARP_VLAN_CHECK_FN) /* if not, allow all VLANs */ -#ifdef ETHARP_VLAN_CHECK_FN - if (!ETHARP_VLAN_CHECK_FN(ethhdr, vlan)) { -#elif defined(ETHARP_VLAN_CHECK) - if (VLAN_ID(vlan) != ETHARP_VLAN_CHECK) { -#endif - /* silently ignore this packet: not for our VLAN */ - pbuf_free(p); - return ERR_OK; - } -#endif /* defined(ETHARP_VLAN_CHECK) || defined(ETHARP_VLAN_CHECK_FN) */ - type = vlan->tpid; - ip_hdr_offset = SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR; - } -#endif /* ETHARP_SUPPORT_VLAN */ - -#if LWIP_ARP_FILTER_NETIF - netif = LWIP_ARP_FILTER_NETIF_FN(p, netif, htons(type)); -#endif /* LWIP_ARP_FILTER_NETIF*/ - - if (ethhdr->dest.addr[0] & 1) { - /* this might be a multicast or broadcast packet */ - if (ethhdr->dest.addr[0] == LL_MULTICAST_ADDR_0) { - if ((ethhdr->dest.addr[1] == LL_MULTICAST_ADDR_1) && - (ethhdr->dest.addr[2] == LL_MULTICAST_ADDR_2)) { - /* mark the pbuf as link-layer multicast */ - p->flags |= PBUF_FLAG_LLMCAST; - } - } else if (eth_addr_cmp(ðhdr->dest, ðbroadcast)) { - /* mark the pbuf as link-layer broadcast */ - p->flags |= PBUF_FLAG_LLBCAST; - } - } - - switch (type) { -#if LWIP_ARP - /* IP packet? */ - case PP_HTONS(ETHTYPE_IP): - if (!(netif->flags & NETIF_FLAG_ETHARP)) { - goto free_and_return; - } -#if ETHARP_TRUST_IP_MAC - /* update ARP table */ - etharp_ip_input(netif, p); -#endif /* ETHARP_TRUST_IP_MAC */ - /* skip Ethernet header */ - if(pbuf_header(p, -ip_hdr_offset)) { - LWIP_ASSERT("Can't move over header in packet", 0); - goto free_and_return; - } else { - /* pass to IP layer */ - ip_input(p, netif); - } - break; - - case PP_HTONS(ETHTYPE_ARP): - if (!(netif->flags & NETIF_FLAG_ETHARP)) { - goto free_and_return; - } - /* pass p to ARP module */ - etharp_arp_input(netif, (struct eth_addr*)(netif->hwaddr), p); - break; -#endif /* LWIP_ARP */ -#if PPPOE_SUPPORT - case PP_HTONS(ETHTYPE_PPPOEDISC): /* PPP Over Ethernet Discovery Stage */ - pppoe_disc_input(netif, p); - break; - - case PP_HTONS(ETHTYPE_PPPOE): /* PPP Over Ethernet Session Stage */ - pppoe_data_input(netif, p); - break; -#endif /* PPPOE_SUPPORT */ - -#if LWIP_IPV6 - case PP_HTONS(ETHTYPE_IPV6): /* IPv6 */ - /* skip Ethernet header */ - if(pbuf_header(p, -(s16_t)SIZEOF_ETH_HDR)) { - LWIP_ASSERT("Can't move over header in packet", 0); - goto free_and_return; - } else { - /* pass to IPv6 layer */ - ip6_input(p, netif); - } - break; -#endif /* LWIP_IPV6 */ - - default: - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - goto free_and_return; - } - - /* This means the pbuf is freed or consumed, - so the caller doesn't have to free it again */ - return ERR_OK; - -free_and_return: - pbuf_free(p); - return ERR_OK; -} -#endif /* LWIP_ARP || LWIP_ETHERNET */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ethernetif.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ethernetif.c deleted file mode 100644 index 46900bdbf..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ethernetif.c +++ /dev/null @@ -1,322 +0,0 @@ -/** - * @file - * Ethernet Interface Skeleton - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. 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. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* - * This file is a skeleton for developing Ethernet network interface - * drivers for lwIP. Add code to the low_level functions and do a - * search-and-replace for the word "ethernetif" to replace it with - * something that better describes your network interface. - */ - -#include "lwip/opt.h" - -#if 0 /* don't build, this is only a skeleton, see previous comment */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "lwip/ethip6.h" -#include "netif/etharp.h" -#include "netif/ppp_oe.h" - -/* Define those to better describe your network interface. */ -#define IFNAME0 'e' -#define IFNAME1 'n' - -/** - * Helper struct to hold private data used to operate your ethernet interface. - * Keeping the ethernet address of the MAC in this struct is not necessary - * as it is already kept in the struct netif. - * But this is only an example, anyway... - */ -struct ethernetif { - struct eth_addr *ethaddr; - /* Add whatever per-interface state that is needed here. */ -}; - -/* Forward declarations. */ -static void ethernetif_input(struct netif *netif); - -/** - * In this function, the hardware should be initialized. - * Called from ethernetif_init(). - * - * @param netif the already initialized lwip network interface structure - * for this ethernetif - */ -static void -low_level_init(struct netif *netif) -{ - struct ethernetif *ethernetif = netif->state; - - /* set MAC hardware address length */ - netif->hwaddr_len = ETHARP_HWADDR_LEN; - - /* set MAC hardware address */ - netif->hwaddr[0] = ; - ... - netif->hwaddr[5] = ; - - /* maximum transfer unit */ - netif->mtu = 1500; - - /* device capabilities */ - /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */ - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP; - - /* Do whatever else is needed to initialize interface. */ -} - -/** - * This function should do the actual transmission of the packet. The packet is - * contained in the pbuf that is passed to the function. This pbuf - * might be chained. - * - * @param netif the lwip network interface structure for this ethernetif - * @param p the MAC packet to send (e.g. IP packet including MAC addresses and type) - * @return ERR_OK if the packet could be sent - * an err_t value if the packet couldn't be sent - * - * @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to - * strange results. You might consider waiting for space in the DMA queue - * to become availale since the stack doesn't retry to send a packet - * dropped because of memory failure (except for the TCP timers). - */ - -static err_t -low_level_output(struct netif *netif, struct pbuf *p) -{ - struct ethernetif *ethernetif = netif->state; - struct pbuf *q; - - initiate transfer(); - -#if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ -#endif - - for(q = p; q != NULL; q = q->next) { - /* Send the data from the pbuf to the interface, one pbuf at a - time. The size of the data in each pbuf is kept in the ->len - variable. */ - send data from(q->payload, q->len); - } - - signal that packet should be sent(); - -#if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ -#endif - - LINK_STATS_INC(link.xmit); - - return ERR_OK; -} - -/** - * Should allocate a pbuf and transfer the bytes of the incoming - * packet from the interface into the pbuf. - * - * @param netif the lwip network interface structure for this ethernetif - * @return a pbuf filled with the received packet (including MAC header) - * NULL on memory error - */ -static struct pbuf * -low_level_input(struct netif *netif) -{ - struct ethernetif *ethernetif = netif->state; - struct pbuf *p, *q; - u16_t len; - - /* Obtain the size of the packet and put it into the "len" - variable. */ - len = ; - -#if ETH_PAD_SIZE - len += ETH_PAD_SIZE; /* allow room for Ethernet padding */ -#endif - - /* We allocate a pbuf chain of pbufs from the pool. */ - p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL); - - if (p != NULL) { - -#if ETH_PAD_SIZE - pbuf_header(p, -ETH_PAD_SIZE); /* drop the padding word */ -#endif - - /* We iterate over the pbuf chain until we have read the entire - * packet into the pbuf. */ - for(q = p; q != NULL; q = q->next) { - /* Read enough bytes to fill this pbuf in the chain. The - * available data in the pbuf is given by the q->len - * variable. - * This does not necessarily have to be a memcpy, you can also preallocate - * pbufs for a DMA-enabled MAC and after receiving truncate it to the - * actually received size. In this case, ensure the tot_len member of the - * pbuf is the sum of the chained pbuf len members. - */ - read data into(q->payload, q->len); - } - acknowledge that packet has been read(); - -#if ETH_PAD_SIZE - pbuf_header(p, ETH_PAD_SIZE); /* reclaim the padding word */ -#endif - - LINK_STATS_INC(link.recv); - } else { - drop packet(); - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.drop); - } - - return p; -} - -/** - * This function should be called when a packet is ready to be read - * from the interface. It uses the function low_level_input() that - * should handle the actual reception of bytes from the network - * interface. Then the type of the received packet is determined and - * the appropriate input function is called. - * - * @param netif the lwip network interface structure for this ethernetif - */ -static void -ethernetif_input(struct netif *netif) -{ - struct ethernetif *ethernetif; - struct eth_hdr *ethhdr; - struct pbuf *p; - - ethernetif = netif->state; - - /* move received packet into a new pbuf */ - p = low_level_input(netif); - /* no packet could be read, silently ignore this */ - if (p == NULL) return; - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - - switch (htons(ethhdr->type)) { - /* IP or ARP packet? */ - case ETHTYPE_IP: - case ETHTYPE_IPV6: - case ETHTYPE_ARP: -#if PPPOE_SUPPORT - /* PPPoE packet? */ - case ETHTYPE_PPPOEDISC: - case ETHTYPE_PPPOE: -#endif /* PPPOE_SUPPORT */ - /* full packet send to tcpip_thread to process */ - if (netif->input(p, netif)!=ERR_OK) - { LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_input: IP input error\n")); - pbuf_free(p); - p = NULL; - } - break; - - default: - pbuf_free(p); - p = NULL; - break; - } -} - -/** - * Should be called at the beginning of the program to set up the - * network interface. It calls the function low_level_init() to do the - * actual setup of the hardware. - * - * This function should be passed as a parameter to netif_add(). - * - * @param netif the lwip network interface structure for this ethernetif - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - * any other err_t on error - */ -err_t -ethernetif_init(struct netif *netif) -{ - struct ethernetif *ethernetif; - - LWIP_ASSERT("netif != NULL", (netif != NULL)); - - ethernetif = mem_malloc(sizeof(struct ethernetif)); - if (ethernetif == NULL) { - LWIP_DEBUGF(NETIF_DEBUG, ("ethernetif_init: out of memory\n")); - return ERR_MEM; - } - -#if LWIP_NETIF_HOSTNAME - /* Initialize interface hostname */ - netif->hostname = "lwip"; -#endif /* LWIP_NETIF_HOSTNAME */ - - /* - * Initialize the snmp variables and counters inside the struct netif. - * The last argument should be replaced with your link speed, in units - * of bits per second. - */ - NETIF_INIT_SNMP(netif, snmp_ifType_ethernet_csmacd, LINK_SPEED_OF_YOUR_NETIF_IN_BPS); - - netif->state = ethernetif; - netif->name[0] = IFNAME0; - netif->name[1] = IFNAME1; - /* We directly use etharp_output() here to save a function call. - * You can instead declare your own function an call etharp_output() - * from it if you have to do some checks before sending (e.g. if link - * is available...) */ - netif->output = etharp_output; -#if LWIP_IPV6 - netif->output_ip6 = ethip6_output; -#endif /* LWIP_IPV6 */ - netif->linkoutput = low_level_output; - - ethernetif->ethaddr = (struct eth_addr *)&(netif->hwaddr[0]); - - /* initialize the hardware */ - low_level_init(netif); - - return ERR_OK; -} - -#endif /* 0 */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.c deleted file mode 100644 index c3c49d22a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.c +++ /dev/null @@ -1,1334 +0,0 @@ -/***************************************************************************** -* auth.c - Network Authentication and Phase Control program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* Copyright (c) 1997 by Global Election Systems Inc. All rights reserved. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-08 Guy Lancaster , Global Election Systems Inc. -* Ported from public pppd code. -*****************************************************************************/ -/* - * auth.c - PPP authentication and phase control. - * - * Copyright (c) 1993 The Australian National University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the Australian National University. The name of the University - * may not be used to endorse or promote products derived from this - * software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "fsm.h" -#include "lcp.h" -#include "pap.h" -#include "chap.h" -#include "auth.h" -#include "ipcp.h" - -#if CBCP_SUPPORT -#include "cbcp.h" -#endif /* CBCP_SUPPORT */ - -#include "lwip/inet.h" - -#include - -#if 0 /* UNUSED */ -/* Bits in scan_authfile return value */ -#define NONWILD_SERVER 1 -#define NONWILD_CLIENT 2 - -#define ISWILD(word) (word[0] == '*' && word[1] == 0) -#endif /* UNUSED */ - -#if PAP_SUPPORT || CHAP_SUPPORT -/* The name by which the peer authenticated itself to us. */ -static char peer_authname[MAXNAMELEN]; -#endif /* PAP_SUPPORT || CHAP_SUPPORT */ - -/* Records which authentication operations haven't completed yet. */ -static int auth_pending[NUM_PPP]; - -/* Set if we have successfully called plogin() */ -static int logged_in; - -/* Set if we have run the /etc/ppp/auth-up script. */ -static int did_authup; /* @todo, we don't need this in lwip*/ - -/* List of addresses which the peer may use. */ -static struct wordlist *addresses[NUM_PPP]; - -#if 0 /* UNUSED */ -/* Wordlist giving addresses which the peer may use - without authenticating itself. */ -static struct wordlist *noauth_addrs; - -/* Extra options to apply, from the secrets file entry for the peer. */ -static struct wordlist *extra_options; -#endif /* UNUSED */ - -/* Number of network protocols which we have opened. */ -static int num_np_open; - -/* Number of network protocols which have come up. */ -static int num_np_up; - -#if PAP_SUPPORT || CHAP_SUPPORT -/* Set if we got the contents of passwd[] from the pap-secrets file. */ -static int passwd_from_file; -#endif /* PAP_SUPPORT || CHAP_SUPPORT */ - -#if 0 /* UNUSED */ -/* Set if we require authentication only because we have a default route. */ -static bool default_auth; - -/* Hook to enable a plugin to control the idle time limit */ -int (*idle_time_hook) __P((struct ppp_idle *)) = NULL; - -/* Hook for a plugin to say whether we can possibly authenticate any peer */ -int (*pap_check_hook) __P((void)) = NULL; - -/* Hook for a plugin to check the PAP user and password */ -int (*pap_auth_hook) __P((char *user, char *passwd, char **msgp, - struct wordlist **paddrs, - struct wordlist **popts)) = NULL; - -/* Hook for a plugin to know about the PAP user logout */ -void (*pap_logout_hook) __P((void)) = NULL; - -/* Hook for a plugin to get the PAP password for authenticating us */ -int (*pap_passwd_hook) __P((char *user, char *passwd)) = NULL; - -/* - * This is used to ensure that we don't start an auth-up/down - * script while one is already running. - */ -enum script_state { - s_down, - s_up -}; - -static enum script_state auth_state = s_down; -static enum script_state auth_script_state = s_down; -static pid_t auth_script_pid = 0; - -/* - * Option variables. - * lwip: some of these are present in the ppp_settings structure - */ -bool uselogin = 0; /* Use /etc/passwd for checking PAP */ -bool cryptpap = 0; /* Passwords in pap-secrets are encrypted */ -bool refuse_pap = 0; /* Don't wanna auth. ourselves with PAP */ -bool refuse_chap = 0; /* Don't wanna auth. ourselves with CHAP */ -bool usehostname = 0; /* Use hostname for our_name */ -bool auth_required = 0; /* Always require authentication from peer */ -bool allow_any_ip = 0; /* Allow peer to use any IP address */ -bool explicit_remote = 0; /* User specified explicit remote name */ -char remote_name[MAXNAMELEN]; /* Peer's name for authentication */ - -#endif /* UNUSED */ - -/* Bits in auth_pending[] */ -#define PAP_WITHPEER 1 -#define PAP_PEER 2 -#define CHAP_WITHPEER 4 -#define CHAP_PEER 8 - -/* @todo, move this somewhere */ -/* Used for storing a sequence of words. Usually malloced. */ -struct wordlist { - struct wordlist *next; - char word[1]; -}; - - -extern char *crypt (const char *, const char *); - -/* Prototypes for procedures local to this file. */ - -static void network_phase (int); -static void check_idle (void *); -static void connect_time_expired (void *); -#if 0 -static int plogin (char *, char *, char **, int *); -#endif -static void plogout (void); -static int null_login (int); -static int get_pap_passwd (int, char *, char *); -static int have_pap_secret (void); -static int have_chap_secret (char *, char *, u32_t); -static int ip_addr_check (u32_t, struct wordlist *); - -#if 0 /* PAP_SUPPORT || CHAP_SUPPORT */ -static int scan_authfile (FILE *, char *, char *, char *, - struct wordlist **, struct wordlist **, - char *); -static void free_wordlist (struct wordlist *); -static void auth_script (char *); -static void auth_script_done (void *); -static void set_allowed_addrs (int unit, struct wordlist *addrs); -static int some_ip_ok (struct wordlist *); -static int setupapfile (char **); -static int privgroup (char **); -static int set_noauth_addr (char **); -static void check_access (FILE *, char *); -#endif /* 0 */ /* PAP_SUPPORT || CHAP_SUPPORT */ - -#if 0 /* UNUSED */ -/* - * Authentication-related options. - */ -option_t auth_options[] = { - { "require-pap", o_bool, &lcp_wantoptions[0].neg_upap, - "Require PAP authentication from peer", 1, &auth_required }, - { "+pap", o_bool, &lcp_wantoptions[0].neg_upap, - "Require PAP authentication from peer", 1, &auth_required }, - { "refuse-pap", o_bool, &refuse_pap, - "Don't agree to auth to peer with PAP", 1 }, - { "-pap", o_bool, &refuse_pap, - "Don't allow PAP authentication with peer", 1 }, - { "require-chap", o_bool, &lcp_wantoptions[0].neg_chap, - "Require CHAP authentication from peer", 1, &auth_required }, - { "+chap", o_bool, &lcp_wantoptions[0].neg_chap, - "Require CHAP authentication from peer", 1, &auth_required }, - { "refuse-chap", o_bool, &refuse_chap, - "Don't agree to auth to peer with CHAP", 1 }, - { "-chap", o_bool, &refuse_chap, - "Don't allow CHAP authentication with peer", 1 }, - { "name", o_string, our_name, - "Set local name for authentication", - OPT_PRIV|OPT_STATIC, NULL, MAXNAMELEN }, - { "user", o_string, user, - "Set name for auth with peer", OPT_STATIC, NULL, MAXNAMELEN }, - { "usehostname", o_bool, &usehostname, - "Must use hostname for authentication", 1 }, - { "remotename", o_string, remote_name, - "Set remote name for authentication", OPT_STATIC, - &explicit_remote, MAXNAMELEN }, - { "auth", o_bool, &auth_required, - "Require authentication from peer", 1 }, - { "noauth", o_bool, &auth_required, - "Don't require peer to authenticate", OPT_PRIV, &allow_any_ip }, - { "login", o_bool, &uselogin, - "Use system password database for PAP", 1 }, - { "papcrypt", o_bool, &cryptpap, - "PAP passwords are encrypted", 1 }, - { "+ua", o_special, (void *)setupapfile, - "Get PAP user and password from file" }, - { "password", o_string, passwd, - "Password for authenticating us to the peer", OPT_STATIC, - NULL, MAXSECRETLEN }, - { "privgroup", o_special, (void *)privgroup, - "Allow group members to use privileged options", OPT_PRIV }, - { "allow-ip", o_special, (void *)set_noauth_addr, - "Set IP address(es) which can be used without authentication", - OPT_PRIV }, - { NULL } -}; -#endif /* UNUSED */ -#if 0 /* UNUSED */ -/* - * setupapfile - specifies UPAP info for authenticating with peer. - */ -static int -setupapfile(char **argv) -{ - FILE * ufile; - int l; - - lcp_allowoptions[0].neg_upap = 1; - - /* open user info file */ - seteuid(getuid()); - ufile = fopen(*argv, "r"); - seteuid(0); - if (ufile == NULL) { - option_error("unable to open user login data file %s", *argv); - return 0; - } - check_access(ufile, *argv); - - /* get username */ - if (fgets(user, MAXNAMELEN - 1, ufile) == NULL - || fgets(passwd, MAXSECRETLEN - 1, ufile) == NULL){ - option_error("unable to read user login data file %s", *argv); - return 0; - } - fclose(ufile); - - /* get rid of newlines */ - l = strlen(user); - if (l > 0 && user[l-1] == '\n') - user[l-1] = 0; - l = strlen(passwd); - if (l > 0 && passwd[l-1] == '\n') - passwd[l-1] = 0; - - return (1); -} -#endif /* UNUSED */ - -#if 0 /* UNUSED */ -/* - * privgroup - allow members of the group to have privileged access. - */ -static int -privgroup(char **argv) -{ - struct group *g; - int i; - - g = getgrnam(*argv); - if (g == 0) { - option_error("group %s is unknown", *argv); - return 0; - } - for (i = 0; i < ngroups; ++i) { - if (groups[i] == g->gr_gid) { - privileged = 1; - break; - } - } - return 1; -} -#endif - -#if 0 /* UNUSED */ -/* - * set_noauth_addr - set address(es) that can be used without authentication. - * Equivalent to specifying an entry like `"" * "" addr' in pap-secrets. - */ -static int -set_noauth_addr(char **argv) -{ - char *addr = *argv; - int l = strlen(addr); - struct wordlist *wp; - - wp = (struct wordlist *) malloc(sizeof(struct wordlist) + l + 1); - if (wp == NULL) - novm("allow-ip argument"); - wp->word = (char *) (wp + 1); - wp->next = noauth_addrs; - BCOPY(addr, wp->word, l); - noauth_addrs = wp; - return 1; -} -#endif /* UNUSED */ - -/* - * An Open on LCP has requested a change from Dead to Establish phase. - * Do what's necessary to bring the physical layer up. - */ -void -link_required(int unit) -{ - LWIP_UNUSED_ARG(unit); - - AUTHDEBUG(LOG_INFO, ("link_required: %d\n", unit)); -} - -/* - * LCP has terminated the link; go to the Dead phase and take the - * physical layer down. - */ -void -link_terminated(int unit) -{ - AUTHDEBUG(LOG_INFO, ("link_terminated: %d\n", unit)); - if (lcp_phase[unit] == PHASE_DEAD) { - return; - } - if (logged_in) { - plogout(); - } - lcp_phase[unit] = PHASE_DEAD; - AUTHDEBUG(LOG_NOTICE, ("Connection terminated.\n")); - pppLinkTerminated(unit); -} - -/* - * LCP has gone down; it will either die or try to re-establish. - */ -void -link_down(int unit) -{ - int i; - struct protent *protp; - - AUTHDEBUG(LOG_INFO, ("link_down: %d\n", unit)); - - if (did_authup) { - /* XXX Do link down processing. */ - did_authup = 0; - } - for (i = 0; (protp = ppp_protocols[i]) != NULL; ++i) { - if (!protp->enabled_flag) { - continue; - } - if (protp->protocol != PPP_LCP && protp->lowerdown != NULL) { - (*protp->lowerdown)(unit); - } - if (protp->protocol < 0xC000 && protp->close != NULL) { - (*protp->close)(unit, "LCP down"); - } - } - num_np_open = 0; /* number of network protocols we have opened */ - num_np_up = 0; /* Number of network protocols which have come up */ - - if (lcp_phase[unit] != PHASE_DEAD) { - lcp_phase[unit] = PHASE_TERMINATE; - } - pppLinkDown(unit); -} - -/* - * The link is established. - * Proceed to the Dead, Authenticate or Network phase as appropriate. - */ -void -link_established(int unit) -{ - int auth; - int i; - struct protent *protp; - lcp_options *wo = &lcp_wantoptions[unit]; - lcp_options *go = &lcp_gotoptions[unit]; -#if PAP_SUPPORT || CHAP_SUPPORT - lcp_options *ho = &lcp_hisoptions[unit]; -#endif /* PAP_SUPPORT || CHAP_SUPPORT */ - - AUTHDEBUG(LOG_INFO, ("link_established: unit %d; Lowering up all protocols...\n", unit)); - /* - * Tell higher-level protocols that LCP is up. - */ - for (i = 0; (protp = ppp_protocols[i]) != NULL; ++i) { - if (protp->protocol != PPP_LCP && protp->enabled_flag && protp->lowerup != NULL) { - (*protp->lowerup)(unit); - } - } - if (ppp_settings.auth_required && !(go->neg_chap || go->neg_upap)) { - /* - * We wanted the peer to authenticate itself, and it refused: - * treat it as though it authenticated with PAP using a username - * of "" and a password of "". If that's not OK, boot it out. - */ - if (!wo->neg_upap || !null_login(unit)) { - AUTHDEBUG(LOG_WARNING, ("peer refused to authenticate\n")); - lcp_close(unit, "peer refused to authenticate"); - return; - } - } - - lcp_phase[unit] = PHASE_AUTHENTICATE; - auth = 0; -#if CHAP_SUPPORT - if (go->neg_chap) { - ChapAuthPeer(unit, ppp_settings.our_name, go->chap_mdtype); - auth |= CHAP_PEER; - } -#endif /* CHAP_SUPPORT */ -#if PAP_SUPPORT && CHAP_SUPPORT - else -#endif /* PAP_SUPPORT && CHAP_SUPPORT */ -#if PAP_SUPPORT - if (go->neg_upap) { - upap_authpeer(unit); - auth |= PAP_PEER; - } -#endif /* PAP_SUPPORT */ -#if CHAP_SUPPORT - if (ho->neg_chap) { - ChapAuthWithPeer(unit, ppp_settings.user, ho->chap_mdtype); - auth |= CHAP_WITHPEER; - } -#endif /* CHAP_SUPPORT */ -#if PAP_SUPPORT && CHAP_SUPPORT - else -#endif /* PAP_SUPPORT && CHAP_SUPPORT */ -#if PAP_SUPPORT - if (ho->neg_upap) { - if (ppp_settings.passwd[0] == 0) { - passwd_from_file = 1; - if (!get_pap_passwd(unit, ppp_settings.user, ppp_settings.passwd)) { - AUTHDEBUG(LOG_ERR, ("No secret found for PAP login\n")); - } - } - upap_authwithpeer(unit, ppp_settings.user, ppp_settings.passwd); - auth |= PAP_WITHPEER; - } -#endif /* PAP_SUPPORT */ - auth_pending[unit] = auth; - - if (!auth) { - network_phase(unit); - } -} - -/* - * Proceed to the network phase. - */ -static void -network_phase(int unit) -{ - int i; - struct protent *protp; - lcp_options *go = &lcp_gotoptions[unit]; - - /* - * If the peer had to authenticate, run the auth-up script now. - */ - if ((go->neg_chap || go->neg_upap) && !did_authup) { - /* XXX Do setup for peer authentication. */ - did_authup = 1; - } - -#if CBCP_SUPPORT - /* - * If we negotiated callback, do it now. - */ - if (go->neg_cbcp) { - lcp_phase[unit] = PHASE_CALLBACK; - (*cbcp_protent.open)(unit); - return; - } -#endif /* CBCP_SUPPORT */ - - lcp_phase[unit] = PHASE_NETWORK; - for (i = 0; (protp = ppp_protocols[i]) != NULL; ++i) { - if (protp->protocol < 0xC000 && protp->enabled_flag && protp->open != NULL) { - (*protp->open)(unit); - if (protp->protocol != PPP_CCP) { - ++num_np_open; - } - } - } - - if (num_np_open == 0) { - /* nothing to do */ - lcp_close(0, "No network protocols running"); - } -} -/* @todo: add void start_networks(void) here (pppd 2.3.11) */ - -/* - * The peer has failed to authenticate himself using `protocol'. - */ -void -auth_peer_fail(int unit, u16_t protocol) -{ - LWIP_UNUSED_ARG(protocol); - - AUTHDEBUG(LOG_INFO, ("auth_peer_fail: %d proto=%X\n", unit, protocol)); - /* - * Authentication failure: take the link down - */ - lcp_close(unit, "Authentication failed"); -} - - -#if PAP_SUPPORT || CHAP_SUPPORT -/* - * The peer has been successfully authenticated using `protocol'. - */ -void -auth_peer_success(int unit, u16_t protocol, char *name, int namelen) -{ - int pbit; - - AUTHDEBUG(LOG_INFO, ("auth_peer_success: %d proto=%X\n", unit, protocol)); - switch (protocol) { - case PPP_CHAP: - pbit = CHAP_PEER; - break; - case PPP_PAP: - pbit = PAP_PEER; - break; - default: - AUTHDEBUG(LOG_WARNING, ("auth_peer_success: unknown protocol %x\n", protocol)); - return; - } - - /* - * Save the authenticated name of the peer for later. - */ - if (namelen > (int)sizeof(peer_authname) - 1) { - namelen = sizeof(peer_authname) - 1; - } - BCOPY(name, peer_authname, namelen); - peer_authname[namelen] = 0; - - /* - * If there is no more authentication still to be done, - * proceed to the network (or callback) phase. - */ - if ((auth_pending[unit] &= ~pbit) == 0) { - network_phase(unit); - } -} - -/* - * We have failed to authenticate ourselves to the peer using `protocol'. - */ -void -auth_withpeer_fail(int unit, u16_t protocol) -{ - int errCode = PPPERR_AUTHFAIL; - - LWIP_UNUSED_ARG(protocol); - - AUTHDEBUG(LOG_INFO, ("auth_withpeer_fail: %d proto=%X\n", unit, protocol)); - if (passwd_from_file) { - BZERO(ppp_settings.passwd, MAXSECRETLEN); - } - - /* - * We've failed to authenticate ourselves to our peer. - * He'll probably take the link down, and there's not much - * we can do except wait for that. - */ - pppIOCtl(unit, PPPCTLS_ERRCODE, &errCode); - lcp_close(unit, "Failed to authenticate ourselves to peer"); -} - -/* - * We have successfully authenticated ourselves with the peer using `protocol'. - */ -void -auth_withpeer_success(int unit, u16_t protocol) -{ - int pbit; - - AUTHDEBUG(LOG_INFO, ("auth_withpeer_success: %d proto=%X\n", unit, protocol)); - switch (protocol) { - case PPP_CHAP: - pbit = CHAP_WITHPEER; - break; - case PPP_PAP: - if (passwd_from_file) { - BZERO(ppp_settings.passwd, MAXSECRETLEN); - } - pbit = PAP_WITHPEER; - break; - default: - AUTHDEBUG(LOG_WARNING, ("auth_peer_success: unknown protocol %x\n", protocol)); - pbit = 0; - } - - /* - * If there is no more authentication still being done, - * proceed to the network (or callback) phase. - */ - if ((auth_pending[unit] &= ~pbit) == 0) { - network_phase(unit); - } -} -#endif /* PAP_SUPPORT || CHAP_SUPPORT */ - - -/* - * np_up - a network protocol has come up. - */ -void -np_up(int unit, u16_t proto) -{ - LWIP_UNUSED_ARG(unit); - LWIP_UNUSED_ARG(proto); - - AUTHDEBUG(LOG_INFO, ("np_up: %d proto=%X\n", unit, proto)); - if (num_np_up == 0) { - AUTHDEBUG(LOG_INFO, ("np_up: maxconnect=%d idle_time_limit=%d\n",ppp_settings.maxconnect,ppp_settings.idle_time_limit)); - /* - * At this point we consider that the link has come up successfully. - */ - if (ppp_settings.idle_time_limit > 0) { - TIMEOUT(check_idle, NULL, ppp_settings.idle_time_limit); - } - - /* - * Set a timeout to close the connection once the maximum - * connect time has expired. - */ - if (ppp_settings.maxconnect > 0) { - TIMEOUT(connect_time_expired, 0, ppp_settings.maxconnect); - } - } - ++num_np_up; -} - -/* - * np_down - a network protocol has gone down. - */ -void -np_down(int unit, u16_t proto) -{ - LWIP_UNUSED_ARG(unit); - LWIP_UNUSED_ARG(proto); - - AUTHDEBUG(LOG_INFO, ("np_down: %d proto=%X\n", unit, proto)); - if (--num_np_up == 0 && ppp_settings.idle_time_limit > 0) { - UNTIMEOUT(check_idle, NULL); - } -} - -/* - * np_finished - a network protocol has finished using the link. - */ -void -np_finished(int unit, u16_t proto) -{ - LWIP_UNUSED_ARG(unit); - LWIP_UNUSED_ARG(proto); - - AUTHDEBUG(LOG_INFO, ("np_finished: %d proto=%X\n", unit, proto)); - if (--num_np_open <= 0) { - /* no further use for the link: shut up shop. */ - lcp_close(0, "No network protocols running"); - } -} - -/* - * check_idle - check whether the link has been idle for long - * enough that we can shut it down. - */ -static void -check_idle(void *arg) -{ - struct ppp_idle idle; - u_short itime; - - LWIP_UNUSED_ARG(arg); - if (!get_idle_time(0, &idle)) { - return; - } - itime = LWIP_MIN(idle.xmit_idle, idle.recv_idle); - if (itime >= ppp_settings.idle_time_limit) { - /* link is idle: shut it down. */ - AUTHDEBUG(LOG_INFO, ("Terminating connection due to lack of activity.\n")); - lcp_close(0, "Link inactive"); - } else { - TIMEOUT(check_idle, NULL, ppp_settings.idle_time_limit - itime); - } -} - -/* - * connect_time_expired - log a message and close the connection. - */ -static void -connect_time_expired(void *arg) -{ - LWIP_UNUSED_ARG(arg); - - AUTHDEBUG(LOG_INFO, ("Connect time expired\n")); - lcp_close(0, "Connect time expired"); /* Close connection */ -} - -#if 0 /* UNUSED */ -/* - * auth_check_options - called to check authentication options. - */ -void -auth_check_options(void) -{ - lcp_options *wo = &lcp_wantoptions[0]; - int can_auth; - ipcp_options *ipwo = &ipcp_wantoptions[0]; - u32_t remote; - - /* Default our_name to hostname, and user to our_name */ - if (ppp_settings.our_name[0] == 0 || ppp_settings.usehostname) { - strcpy(ppp_settings.our_name, ppp_settings.hostname); - } - - if (ppp_settings.user[0] == 0) { - strcpy(ppp_settings.user, ppp_settings.our_name); - } - - /* If authentication is required, ask peer for CHAP or PAP. */ - if (ppp_settings.auth_required && !wo->neg_chap && !wo->neg_upap) { - wo->neg_chap = 1; - wo->neg_upap = 1; - } - - /* - * Check whether we have appropriate secrets to use - * to authenticate the peer. - */ - can_auth = wo->neg_upap && have_pap_secret(); - if (!can_auth && wo->neg_chap) { - remote = ipwo->accept_remote? 0: ipwo->hisaddr; - can_auth = have_chap_secret(ppp_settings.remote_name, ppp_settings.our_name, remote); - } - - if (ppp_settings.auth_required && !can_auth) { - ppp_panic("No auth secret"); - } -} -#endif /* UNUSED */ - -/* - * auth_reset - called when LCP is starting negotiations to recheck - * authentication options, i.e. whether we have appropriate secrets - * to use for authenticating ourselves and/or the peer. - */ -void -auth_reset(int unit) -{ - lcp_options *go = &lcp_gotoptions[unit]; - lcp_options *ao = &lcp_allowoptions[0]; - ipcp_options *ipwo = &ipcp_wantoptions[0]; - u32_t remote; - - AUTHDEBUG(LOG_INFO, ("auth_reset: %d\n", unit)); - ao->neg_upap = !ppp_settings.refuse_pap && (ppp_settings.passwd[0] != 0 || get_pap_passwd(unit, NULL, NULL)); - ao->neg_chap = !ppp_settings.refuse_chap && ppp_settings.passwd[0] != 0 /*have_chap_secret(ppp_settings.user, ppp_settings.remote_name, (u32_t)0)*/; - - if (go->neg_upap && !have_pap_secret()) { - go->neg_upap = 0; - } - if (go->neg_chap) { - remote = ipwo->accept_remote? 0: ipwo->hisaddr; - if (!have_chap_secret(ppp_settings.remote_name, ppp_settings.our_name, remote)) { - go->neg_chap = 0; - } - } -} - -#if PAP_SUPPORT -/* - * check_passwd - Check the user name and passwd against the PAP secrets - * file. If requested, also check against the system password database, - * and login the user if OK. - * - * returns: - * UPAP_AUTHNAK: Authentication failed. - * UPAP_AUTHACK: Authentication succeeded. - * In either case, msg points to an appropriate message. - */ -u_char -check_passwd( int unit, char *auser, int userlen, char *apasswd, int passwdlen, char **msg, int *msglen) -{ -#if 1 /* XXX Assume all entries OK. */ - LWIP_UNUSED_ARG(unit); - LWIP_UNUSED_ARG(auser); - LWIP_UNUSED_ARG(userlen); - LWIP_UNUSED_ARG(apasswd); - LWIP_UNUSED_ARG(passwdlen); - LWIP_UNUSED_ARG(msglen); - *msg = (char *) 0; - return UPAP_AUTHACK; /* XXX Assume all entries OK. */ -#else - u_char ret = 0; - struct wordlist *addrs = NULL; - char passwd[256], user[256]; - char secret[MAXWORDLEN]; - static u_short attempts = 0; - - /* - * Make copies of apasswd and auser, then null-terminate them. - */ - BCOPY(apasswd, passwd, passwdlen); - passwd[passwdlen] = '\0'; - BCOPY(auser, user, userlen); - user[userlen] = '\0'; - *msg = (char *) 0; - - /* XXX Validate user name and password. */ - ret = UPAP_AUTHACK; /* XXX Assume all entries OK. */ - - if (ret == UPAP_AUTHNAK) { - if (*msg == (char *) 0) { - *msg = "Login incorrect"; - } - *msglen = strlen(*msg); - /* - * Frustrate passwd stealer programs. - * Allow 10 tries, but start backing off after 3 (stolen from login). - * On 10'th, drop the connection. - */ - if (attempts++ >= 10) { - AUTHDEBUG(LOG_WARNING, ("%d LOGIN FAILURES BY %s\n", attempts, user)); - /*ppp_panic("Excess Bad Logins");*/ - } - if (attempts > 3) { - /* @todo: this was sleep(), i.e. seconds, not milliseconds - * I don't think we really need this in lwIP - we would block tcpip_thread! - */ - /*sys_msleep((attempts - 3) * 5);*/ - } - if (addrs != NULL) { - free_wordlist(addrs); - } - } else { - attempts = 0; /* Reset count */ - if (*msg == (char *) 0) { - *msg = "Login ok"; - } - *msglen = strlen(*msg); - set_allowed_addrs(unit, addrs); - } - - BZERO(passwd, sizeof(passwd)); - BZERO(secret, sizeof(secret)); - - return ret; -#endif -} -#endif /* PAP_SUPPORT */ - -#if 0 /* UNUSED */ -/* - * This function is needed for PAM. - */ - -#ifdef USE_PAM - -/* lwip does not support PAM*/ - -#endif /* USE_PAM */ - -#endif /* UNUSED */ - - -#if 0 /* UNUSED */ -/* - * plogin - Check the user name and password against the system - * password database, and login the user if OK. - * - * returns: - * UPAP_AUTHNAK: Login failed. - * UPAP_AUTHACK: Login succeeded. - * In either case, msg points to an appropriate message. - */ -static int -plogin(char *user, char *passwd, char **msg, int *msglen) -{ - - LWIP_UNUSED_ARG(user); - LWIP_UNUSED_ARG(passwd); - LWIP_UNUSED_ARG(msg); - LWIP_UNUSED_ARG(msglen); - - - /* The new lines are here align the file when - * compared against the pppd 2.3.11 code */ - - - - - - - - - - - - - - - - - /* XXX Fail until we decide that we want to support logins. */ - return (UPAP_AUTHNAK); -} -#endif - - - -/* - * plogout - Logout the user. - */ -static void -plogout(void) -{ - logged_in = 0; -} - -/* - * null_login - Check if a username of "" and a password of "" are - * acceptable, and iff so, set the list of acceptable IP addresses - * and return 1. - */ -static int -null_login(int unit) -{ - LWIP_UNUSED_ARG(unit); - /* XXX Fail until we decide that we want to support logins. */ - return 0; -} - - -/* - * get_pap_passwd - get a password for authenticating ourselves with - * our peer using PAP. Returns 1 on success, 0 if no suitable password - * could be found. - */ -static int -get_pap_passwd(int unit, char *user, char *passwd) -{ - LWIP_UNUSED_ARG(unit); -/* normally we would reject PAP if no password is provided, - but this causes problems with some providers (like CHT in Taiwan) - who incorrectly request PAP and expect a bogus/empty password, so - always provide a default user/passwd of "none"/"none" - - @todo: This should be configured by the user, instead of being hardcoded here! -*/ - if(user) { - strcpy(user, "none"); - } - if(passwd) { - strcpy(passwd, "none"); - } - return 1; -} - -/* - * have_pap_secret - check whether we have a PAP file with any - * secrets that we could possibly use for authenticating the peer. - */ -static int -have_pap_secret(void) -{ - /* XXX Fail until we set up our passwords. */ - return 0; -} - -/* - * have_chap_secret - check whether we have a CHAP file with a - * secret that we could possibly use for authenticating `client' - * on `server'. Either can be the null string, meaning we don't - * know the identity yet. - */ -static int -have_chap_secret(char *client, char *server, u32_t remote) -{ - LWIP_UNUSED_ARG(client); - LWIP_UNUSED_ARG(server); - LWIP_UNUSED_ARG(remote); - - /* XXX Fail until we set up our passwords. */ - return 0; -} -#if CHAP_SUPPORT - -/* - * get_secret - open the CHAP secret file and return the secret - * for authenticating the given client on the given server. - * (We could be either client or server). - */ -int -get_secret(int unit, char *client, char *server, char *secret, int *secret_len, int save_addrs) -{ -#if 1 - int len; - struct wordlist *addrs; - - LWIP_UNUSED_ARG(unit); - LWIP_UNUSED_ARG(server); - LWIP_UNUSED_ARG(save_addrs); - - addrs = NULL; - - if(!client || !client[0] || strcmp(client, ppp_settings.user)) { - return 0; - } - - len = (int)strlen(ppp_settings.passwd); - if (len > MAXSECRETLEN) { - AUTHDEBUG(LOG_ERR, ("Secret for %s on %s is too long\n", client, server)); - len = MAXSECRETLEN; - } - - BCOPY(ppp_settings.passwd, secret, len); - *secret_len = len; - - return 1; -#else - int ret = 0, len; - struct wordlist *addrs; - char secbuf[MAXWORDLEN]; - - addrs = NULL; - secbuf[0] = 0; - - /* XXX Find secret. */ - if (ret < 0) { - return 0; - } - - if (save_addrs) { - set_allowed_addrs(unit, addrs); - } - - len = strlen(secbuf); - if (len > MAXSECRETLEN) { - AUTHDEBUG(LOG_ERR, ("Secret for %s on %s is too long\n", client, server)); - len = MAXSECRETLEN; - } - - BCOPY(secbuf, secret, len); - BZERO(secbuf, sizeof(secbuf)); - *secret_len = len; - - return 1; -#endif -} -#endif /* CHAP_SUPPORT */ - - -#if 0 /* PAP_SUPPORT || CHAP_SUPPORT */ -/* - * set_allowed_addrs() - set the list of allowed addresses. - */ -static void -set_allowed_addrs(int unit, struct wordlist *addrs) -{ - if (addresses[unit] != NULL) { - free_wordlist(addresses[unit]); - } - addresses[unit] = addrs; - -#if 0 - /* - * If there's only one authorized address we might as well - * ask our peer for that one right away - */ - if (addrs != NULL && addrs->next == NULL) { - char *p = addrs->word; - struct ipcp_options *wo = &ipcp_wantoptions[unit]; - u32_t a; - struct hostent *hp; - - if (wo->hisaddr == 0 && *p != '!' && *p != '-' && strchr(p, '/') == NULL) { - hp = gethostbyname(p); - if (hp != NULL && hp->h_addrtype == AF_INET) { - a = *(u32_t *)hp->h_addr; - } else { - a = inet_addr(p); - } - if (a != (u32_t) -1) { - wo->hisaddr = a; - } - } - } -#endif -} -#endif /* 0 */ /* PAP_SUPPORT || CHAP_SUPPORT */ - -/* - * auth_ip_addr - check whether the peer is authorized to use - * a given IP address. Returns 1 if authorized, 0 otherwise. - */ -int -auth_ip_addr(int unit, u32_t addr) -{ - return ip_addr_check(addr, addresses[unit]); -} - -static int /* @todo: integrate this funtion into auth_ip_addr()*/ -ip_addr_check(u32_t addr, struct wordlist *addrs) -{ - /* don't allow loopback or multicast address */ - if (bad_ip_adrs(addr)) { - return 0; - } - - if (addrs == NULL) { - return !ppp_settings.auth_required; /* no addresses authorized */ - } - - /* XXX All other addresses allowed. */ - return 1; -} - -/* - * bad_ip_adrs - return 1 if the IP address is one we don't want - * to use, such as an address in the loopback net or a multicast address. - * addr is in network byte order. - */ -int -bad_ip_adrs(u32_t addr) -{ - addr = ntohl(addr); - return (addr >> IN_CLASSA_NSHIFT) == IN_LOOPBACKNET - || IN_MULTICAST(addr) || IN_BADCLASS(addr); -} - -#if 0 /* UNUSED */ /* PAP_SUPPORT || CHAP_SUPPORT */ -/* - * some_ip_ok - check a wordlist to see if it authorizes any - * IP address(es). - */ -static int -some_ip_ok(struct wordlist *addrs) -{ - for (; addrs != 0; addrs = addrs->next) { - if (addrs->word[0] == '-') - break; - if (addrs->word[0] != '!') - return 1; /* some IP address is allowed */ - } - return 0; -} - -/* - * check_access - complain if a secret file has too-liberal permissions. - */ -static void -check_access(FILE *f, char *filename) -{ - struct stat sbuf; - - if (fstat(fileno(f), &sbuf) < 0) { - warn("cannot stat secret file %s: %m", filename); - } else if ((sbuf.st_mode & (S_IRWXG | S_IRWXO)) != 0) { - warn("Warning - secret file %s has world and/or group access", - filename); - } -} - - -/* - * scan_authfile - Scan an authorization file for a secret suitable - * for authenticating `client' on `server'. The return value is -1 - * if no secret is found, otherwise >= 0. The return value has - * NONWILD_CLIENT set if the secret didn't have "*" for the client, and - * NONWILD_SERVER set if the secret didn't have "*" for the server. - * Any following words on the line up to a "--" (i.e. address authorization - * info) are placed in a wordlist and returned in *addrs. Any - * following words (extra options) are placed in a wordlist and - * returned in *opts. - * We assume secret is NULL or points to MAXWORDLEN bytes of space. - */ -static int -scan_authfile(FILE *f, char *client, char *server, char *secret, struct wordlist **addrs, struct wordlist **opts, char *filename) -{ - /* We do not (currently) need this in lwip */ - return 0; /* dummy */ -} -/* - * free_wordlist - release memory allocated for a wordlist. - */ -static void -free_wordlist(struct wordlist *wp) -{ - struct wordlist *next; - - while (wp != NULL) { - next = wp->next; - free(wp); - wp = next; - } -} - -/* - * auth_script_done - called when the auth-up or auth-down script - * has finished. - */ -static void -auth_script_done(void *arg) -{ - auth_script_pid = 0; - switch (auth_script_state) { - case s_up: - if (auth_state == s_down) { - auth_script_state = s_down; - auth_script(_PATH_AUTHDOWN); - } - break; - case s_down: - if (auth_state == s_up) { - auth_script_state = s_up; - auth_script(_PATH_AUTHUP); - } - break; - } -} - -/* - * auth_script - execute a script with arguments - * interface-name peer-name real-user tty speed - */ -static void -auth_script(char *script) -{ - char strspeed[32]; - struct passwd *pw; - char struid[32]; - char *user_name; - char *argv[8]; - - if ((pw = getpwuid(getuid())) != NULL && pw->pw_name != NULL) - user_name = pw->pw_name; - else { - slprintf(struid, sizeof(struid), "%d", getuid()); - user_name = struid; - } - slprintf(strspeed, sizeof(strspeed), "%d", baud_rate); - - argv[0] = script; - argv[1] = ifname; - argv[2] = peer_authname; - argv[3] = user_name; - argv[4] = devnam; - argv[5] = strspeed; - argv[6] = NULL; - - auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL); -} -#endif /* 0 */ /* PAP_SUPPORT || CHAP_SUPPORT */ -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.h deleted file mode 100644 index a8069ec46..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/auth.h +++ /dev/null @@ -1,111 +0,0 @@ -/***************************************************************************** -* auth.h - PPP Authentication and phase control header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1998 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-04 Guy Lancaster , Global Election Systems Inc. -* Original derived from BSD pppd.h. -*****************************************************************************/ -/* - * pppd.h - PPP daemon global declarations. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - */ - -#ifndef AUTH_H -#define AUTH_H - -/*********************** -*** PUBLIC FUNCTIONS *** -***********************/ - -/* we are starting to use the link */ -void link_required (int); - -/* we are finished with the link */ -void link_terminated (int); - -/* the LCP layer has left the Opened state */ -void link_down (int); - -/* the link is up; authenticate now */ -void link_established (int); - -/* a network protocol has come up */ -void np_up (int, u16_t); - -/* a network protocol has gone down */ -void np_down (int, u16_t); - -/* a network protocol no longer needs link */ -void np_finished (int, u16_t); - -/* peer failed to authenticate itself */ -void auth_peer_fail (int, u16_t); - -/* peer successfully authenticated itself */ -void auth_peer_success (int, u16_t, char *, int); - -/* we failed to authenticate ourselves */ -void auth_withpeer_fail (int, u16_t); - -/* we successfully authenticated ourselves */ -void auth_withpeer_success (int, u16_t); - -/* check authentication options supplied */ -void auth_check_options (void); - -/* check what secrets we have */ -void auth_reset (int); - -/* Check peer-supplied username/password */ -u_char check_passwd (int, char *, int, char *, int, char **, int *); - -/* get "secret" for chap */ -int get_secret (int, char *, char *, char *, int *, int); - -/* check if IP address is authorized */ -int auth_ip_addr (int, u32_t); - -/* check if IP address is unreasonable */ -int bad_ip_adrs (u32_t); - -#endif /* AUTH_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.c deleted file mode 100644 index 3a49ff8a5..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.c +++ /dev/null @@ -1,908 +0,0 @@ -/*** WARNING - THIS HAS NEVER BEEN FINISHED ***/ -/***************************************************************************** -* chap.c - Network Challenge Handshake Authentication Protocol program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-04 Guy Lancaster , Global Election Systems Inc. -* Original based on BSD chap.c. -*****************************************************************************/ -/* - * chap.c - Challenge Handshake Authentication Protocol. - * - * Copyright (c) 1993 The Australian National University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the Australian National University. The name of the University - * may not be used to endorse or promote products derived from this - * software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Copyright (c) 1991 Gregory M. Christy. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Gregory M. Christy. 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#if CHAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "magic.h" -#include "randm.h" -#include "auth.h" -#include "md5.h" -#include "chap.h" -#include "chpms.h" - -#include - -#if 0 /* UNUSED */ -/* - * Command-line options. - */ -static option_t chap_option_list[] = { - { "chap-restart", o_int, &chap[0].timeouttime, - "Set timeout for CHAP" }, - { "chap-max-challenge", o_int, &chap[0].max_transmits, - "Set max #xmits for challenge" }, - { "chap-interval", o_int, &chap[0].chal_interval, - "Set interval for rechallenge" }, -#ifdef MSLANMAN - { "ms-lanman", o_bool, &ms_lanman, - "Use LanMan passwd when using MS-CHAP", 1 }, -#endif - { NULL } -}; -#endif /* UNUSED */ - -/* - * Protocol entry points. - */ -static void ChapInit (int); -static void ChapLowerUp (int); -static void ChapLowerDown (int); -static void ChapInput (int, u_char *, int); -static void ChapProtocolReject (int); -#if PPP_ADDITIONAL_CALLBACKS -static int ChapPrintPkt (u_char *, int, void (*) (void *, char *, ...), void *); -#endif - -struct protent chap_protent = { - PPP_CHAP, - ChapInit, - ChapInput, - ChapProtocolReject, - ChapLowerUp, - ChapLowerDown, - NULL, - NULL, -#if PPP_ADDITIONAL_CALLBACKS - ChapPrintPkt, - NULL, -#endif /* PPP_ADDITIONAL_CALLBACKS */ - 1, - "CHAP", -#if PPP_ADDITIONAL_CALLBACKS - NULL, - NULL, - NULL -#endif /* PPP_ADDITIONAL_CALLBACKS */ -}; - -chap_state chap[NUM_PPP]; /* CHAP state; one for each unit */ - -static void ChapChallengeTimeout (void *); -static void ChapResponseTimeout (void *); -static void ChapReceiveChallenge (chap_state *, u_char *, u_char, int); -static void ChapRechallenge (void *); -static void ChapReceiveResponse (chap_state *, u_char *, int, int); -static void ChapReceiveSuccess(chap_state *cstate, u_char *inp, u_char id, int len); -static void ChapReceiveFailure(chap_state *cstate, u_char *inp, u_char id, int len); -static void ChapSendStatus (chap_state *, int); -static void ChapSendChallenge (chap_state *); -static void ChapSendResponse (chap_state *); -static void ChapGenChallenge (chap_state *); - -/* - * ChapInit - Initialize a CHAP unit. - */ -static void -ChapInit(int unit) -{ - chap_state *cstate = &chap[unit]; - - BZERO(cstate, sizeof(*cstate)); - cstate->unit = unit; - cstate->clientstate = CHAPCS_INITIAL; - cstate->serverstate = CHAPSS_INITIAL; - cstate->timeouttime = CHAP_DEFTIMEOUT; - cstate->max_transmits = CHAP_DEFTRANSMITS; - /* random number generator is initialized in magic_init */ -} - - -/* - * ChapAuthWithPeer - Authenticate us with our peer (start client). - * - */ -void -ChapAuthWithPeer(int unit, char *our_name, u_char digest) -{ - chap_state *cstate = &chap[unit]; - - cstate->resp_name = our_name; - cstate->resp_type = digest; - - if (cstate->clientstate == CHAPCS_INITIAL || - cstate->clientstate == CHAPCS_PENDING) { - /* lower layer isn't up - wait until later */ - cstate->clientstate = CHAPCS_PENDING; - return; - } - - /* - * We get here as a result of LCP coming up. - * So even if CHAP was open before, we will - * have to re-authenticate ourselves. - */ - cstate->clientstate = CHAPCS_LISTEN; -} - - -/* - * ChapAuthPeer - Authenticate our peer (start server). - */ -void -ChapAuthPeer(int unit, char *our_name, u_char digest) -{ - chap_state *cstate = &chap[unit]; - - cstate->chal_name = our_name; - cstate->chal_type = digest; - - if (cstate->serverstate == CHAPSS_INITIAL || - cstate->serverstate == CHAPSS_PENDING) { - /* lower layer isn't up - wait until later */ - cstate->serverstate = CHAPSS_PENDING; - return; - } - - ChapGenChallenge(cstate); - ChapSendChallenge(cstate); /* crank it up dude! */ - cstate->serverstate = CHAPSS_INITIAL_CHAL; -} - - -/* - * ChapChallengeTimeout - Timeout expired on sending challenge. - */ -static void -ChapChallengeTimeout(void *arg) -{ - chap_state *cstate = (chap_state *) arg; - - /* if we aren't sending challenges, don't worry. then again we */ - /* probably shouldn't be here either */ - if (cstate->serverstate != CHAPSS_INITIAL_CHAL && - cstate->serverstate != CHAPSS_RECHALLENGE) { - return; - } - - if (cstate->chal_transmits >= cstate->max_transmits) { - /* give up on peer */ - CHAPDEBUG(LOG_ERR, ("Peer failed to respond to CHAP challenge\n")); - cstate->serverstate = CHAPSS_BADAUTH; - auth_peer_fail(cstate->unit, PPP_CHAP); - return; - } - - ChapSendChallenge(cstate); /* Re-send challenge */ -} - - -/* - * ChapResponseTimeout - Timeout expired on sending response. - */ -static void -ChapResponseTimeout(void *arg) -{ - chap_state *cstate = (chap_state *) arg; - - /* if we aren't sending a response, don't worry. */ - if (cstate->clientstate != CHAPCS_RESPONSE) { - return; - } - - ChapSendResponse(cstate); /* re-send response */ -} - - -/* - * ChapRechallenge - Time to challenge the peer again. - */ -static void -ChapRechallenge(void *arg) -{ - chap_state *cstate = (chap_state *) arg; - - /* if we aren't sending a response, don't worry. */ - if (cstate->serverstate != CHAPSS_OPEN) { - return; - } - - ChapGenChallenge(cstate); - ChapSendChallenge(cstate); - cstate->serverstate = CHAPSS_RECHALLENGE; -} - - -/* - * ChapLowerUp - The lower layer is up. - * - * Start up if we have pending requests. - */ -static void -ChapLowerUp(int unit) -{ - chap_state *cstate = &chap[unit]; - - if (cstate->clientstate == CHAPCS_INITIAL) { - cstate->clientstate = CHAPCS_CLOSED; - } else if (cstate->clientstate == CHAPCS_PENDING) { - cstate->clientstate = CHAPCS_LISTEN; - } - - if (cstate->serverstate == CHAPSS_INITIAL) { - cstate->serverstate = CHAPSS_CLOSED; - } else if (cstate->serverstate == CHAPSS_PENDING) { - ChapGenChallenge(cstate); - ChapSendChallenge(cstate); - cstate->serverstate = CHAPSS_INITIAL_CHAL; - } -} - - -/* - * ChapLowerDown - The lower layer is down. - * - * Cancel all timeouts. - */ -static void -ChapLowerDown(int unit) -{ - chap_state *cstate = &chap[unit]; - - /* Timeout(s) pending? Cancel if so. */ - if (cstate->serverstate == CHAPSS_INITIAL_CHAL || - cstate->serverstate == CHAPSS_RECHALLENGE) { - UNTIMEOUT(ChapChallengeTimeout, cstate); - } else if (cstate->serverstate == CHAPSS_OPEN - && cstate->chal_interval != 0) { - UNTIMEOUT(ChapRechallenge, cstate); - } - if (cstate->clientstate == CHAPCS_RESPONSE) { - UNTIMEOUT(ChapResponseTimeout, cstate); - } - cstate->clientstate = CHAPCS_INITIAL; - cstate->serverstate = CHAPSS_INITIAL; -} - - -/* - * ChapProtocolReject - Peer doesn't grok CHAP. - */ -static void -ChapProtocolReject(int unit) -{ - chap_state *cstate = &chap[unit]; - - if (cstate->serverstate != CHAPSS_INITIAL && - cstate->serverstate != CHAPSS_CLOSED) { - auth_peer_fail(unit, PPP_CHAP); - } - if (cstate->clientstate != CHAPCS_INITIAL && - cstate->clientstate != CHAPCS_CLOSED) { - auth_withpeer_fail(unit, PPP_CHAP); /* lwip: just sets the PPP error code on this unit to PPPERR_AUTHFAIL */ - } - ChapLowerDown(unit); /* shutdown chap */ -} - - -/* - * ChapInput - Input CHAP packet. - */ -static void -ChapInput(int unit, u_char *inpacket, int packet_len) -{ - chap_state *cstate = &chap[unit]; - u_char *inp; - u_char code, id; - int len; - - /* - * Parse header (code, id and length). - * If packet too short, drop it. - */ - inp = inpacket; - if (packet_len < CHAP_HEADERLEN) { - CHAPDEBUG(LOG_INFO, ("ChapInput: rcvd short header.\n")); - return; - } - GETCHAR(code, inp); - GETCHAR(id, inp); - GETSHORT(len, inp); - if (len < CHAP_HEADERLEN) { - CHAPDEBUG(LOG_INFO, ("ChapInput: rcvd illegal length.\n")); - return; - } - if (len > packet_len) { - CHAPDEBUG(LOG_INFO, ("ChapInput: rcvd short packet.\n")); - return; - } - len -= CHAP_HEADERLEN; - - /* - * Action depends on code (as in fact it usually does :-). - */ - switch (code) { - case CHAP_CHALLENGE: - ChapReceiveChallenge(cstate, inp, id, len); - break; - - case CHAP_RESPONSE: - ChapReceiveResponse(cstate, inp, id, len); - break; - - case CHAP_FAILURE: - ChapReceiveFailure(cstate, inp, id, len); - break; - - case CHAP_SUCCESS: - ChapReceiveSuccess(cstate, inp, id, len); - break; - - default: /* Need code reject? */ - CHAPDEBUG(LOG_WARNING, ("Unknown CHAP code (%d) received.\n", code)); - break; - } -} - - -/* - * ChapReceiveChallenge - Receive Challenge and send Response. - */ -static void -ChapReceiveChallenge(chap_state *cstate, u_char *inp, u_char id, int len) -{ - int rchallenge_len; - u_char *rchallenge; - int secret_len; - char secret[MAXSECRETLEN]; - char rhostname[256]; - MD5_CTX mdContext; - u_char hash[MD5_SIGNATURE_SIZE]; - - CHAPDEBUG(LOG_INFO, ("ChapReceiveChallenge: Rcvd id %d.\n", id)); - if (cstate->clientstate == CHAPCS_CLOSED || - cstate->clientstate == CHAPCS_PENDING) { - CHAPDEBUG(LOG_INFO, ("ChapReceiveChallenge: in state %d\n", - cstate->clientstate)); - return; - } - - if (len < 2) { - CHAPDEBUG(LOG_INFO, ("ChapReceiveChallenge: rcvd short packet.\n")); - return; - } - - GETCHAR(rchallenge_len, inp); - len -= sizeof (u_char) + rchallenge_len; /* now name field length */ - if (len < 0) { - CHAPDEBUG(LOG_INFO, ("ChapReceiveChallenge: rcvd short packet.\n")); - return; - } - rchallenge = inp; - INCPTR(rchallenge_len, inp); - - if (len >= (int)sizeof(rhostname)) { - len = sizeof(rhostname) - 1; - } - BCOPY(inp, rhostname, len); - rhostname[len] = '\000'; - - CHAPDEBUG(LOG_INFO, ("ChapReceiveChallenge: received name field '%s'\n", - rhostname)); - - /* Microsoft doesn't send their name back in the PPP packet */ - if (ppp_settings.remote_name[0] != 0 && (ppp_settings.explicit_remote || rhostname[0] == 0)) { - strncpy(rhostname, ppp_settings.remote_name, sizeof(rhostname)); - rhostname[sizeof(rhostname) - 1] = 0; - CHAPDEBUG(LOG_INFO, ("ChapReceiveChallenge: using '%s' as remote name\n", - rhostname)); - } - - /* get secret for authenticating ourselves with the specified host */ - if (!get_secret(cstate->unit, cstate->resp_name, rhostname, - secret, &secret_len, 0)) { - secret_len = 0; /* assume null secret if can't find one */ - CHAPDEBUG(LOG_WARNING, ("No CHAP secret found for authenticating us to %s\n", - rhostname)); - } - - /* cancel response send timeout if necessary */ - if (cstate->clientstate == CHAPCS_RESPONSE) { - UNTIMEOUT(ChapResponseTimeout, cstate); - } - - cstate->resp_id = id; - cstate->resp_transmits = 0; - - /* generate MD based on negotiated type */ - switch (cstate->resp_type) { - - case CHAP_DIGEST_MD5: - MD5Init(&mdContext); - MD5Update(&mdContext, &cstate->resp_id, 1); - MD5Update(&mdContext, (u_char*)secret, secret_len); - MD5Update(&mdContext, rchallenge, rchallenge_len); - MD5Final(hash, &mdContext); - BCOPY(hash, cstate->response, MD5_SIGNATURE_SIZE); - cstate->resp_length = MD5_SIGNATURE_SIZE; - break; - -#if MSCHAP_SUPPORT - case CHAP_MICROSOFT: - ChapMS(cstate, rchallenge, rchallenge_len, secret, secret_len); - break; -#endif - - default: - CHAPDEBUG(LOG_INFO, ("unknown digest type %d\n", cstate->resp_type)); - return; - } - - BZERO(secret, sizeof(secret)); - ChapSendResponse(cstate); -} - - -/* - * ChapReceiveResponse - Receive and process response. - */ -static void -ChapReceiveResponse(chap_state *cstate, u_char *inp, int id, int len) -{ - u_char *remmd, remmd_len; - int secret_len, old_state; - int code; - char rhostname[256]; - MD5_CTX mdContext; - char secret[MAXSECRETLEN]; - u_char hash[MD5_SIGNATURE_SIZE]; - - CHAPDEBUG(LOG_INFO, ("ChapReceiveResponse: Rcvd id %d.\n", id)); - - if (cstate->serverstate == CHAPSS_CLOSED || - cstate->serverstate == CHAPSS_PENDING) { - CHAPDEBUG(LOG_INFO, ("ChapReceiveResponse: in state %d\n", - cstate->serverstate)); - return; - } - - if (id != cstate->chal_id) { - return; /* doesn't match ID of last challenge */ - } - - /* - * If we have received a duplicate or bogus Response, - * we have to send the same answer (Success/Failure) - * as we did for the first Response we saw. - */ - if (cstate->serverstate == CHAPSS_OPEN) { - ChapSendStatus(cstate, CHAP_SUCCESS); - return; - } - if (cstate->serverstate == CHAPSS_BADAUTH) { - ChapSendStatus(cstate, CHAP_FAILURE); - return; - } - - if (len < 2) { - CHAPDEBUG(LOG_INFO, ("ChapReceiveResponse: rcvd short packet.\n")); - return; - } - GETCHAR(remmd_len, inp); /* get length of MD */ - remmd = inp; /* get pointer to MD */ - INCPTR(remmd_len, inp); - - len -= sizeof (u_char) + remmd_len; - if (len < 0) { - CHAPDEBUG(LOG_INFO, ("ChapReceiveResponse: rcvd short packet.\n")); - return; - } - - UNTIMEOUT(ChapChallengeTimeout, cstate); - - if (len >= (int)sizeof(rhostname)) { - len = sizeof(rhostname) - 1; - } - BCOPY(inp, rhostname, len); - rhostname[len] = '\000'; - - CHAPDEBUG(LOG_INFO, ("ChapReceiveResponse: received name field: %s\n", - rhostname)); - - /* - * Get secret for authenticating them with us, - * do the hash ourselves, and compare the result. - */ - code = CHAP_FAILURE; - if (!get_secret(cstate->unit, rhostname, cstate->chal_name, - secret, &secret_len, 1)) { - CHAPDEBUG(LOG_WARNING, ("No CHAP secret found for authenticating %s\n", - rhostname)); - } else { - /* generate MD based on negotiated type */ - switch (cstate->chal_type) { - - case CHAP_DIGEST_MD5: /* only MD5 is defined for now */ - if (remmd_len != MD5_SIGNATURE_SIZE) { - break; /* it's not even the right length */ - } - MD5Init(&mdContext); - MD5Update(&mdContext, &cstate->chal_id, 1); - MD5Update(&mdContext, (u_char*)secret, secret_len); - MD5Update(&mdContext, cstate->challenge, cstate->chal_len); - MD5Final(hash, &mdContext); - - /* compare local and remote MDs and send the appropriate status */ - if (memcmp (hash, remmd, MD5_SIGNATURE_SIZE) == 0) { - code = CHAP_SUCCESS; /* they are the same! */ - } - break; - - default: - CHAPDEBUG(LOG_INFO, ("unknown digest type %d\n", cstate->chal_type)); - } - } - - BZERO(secret, sizeof(secret)); - ChapSendStatus(cstate, code); - - if (code == CHAP_SUCCESS) { - old_state = cstate->serverstate; - cstate->serverstate = CHAPSS_OPEN; - if (old_state == CHAPSS_INITIAL_CHAL) { - auth_peer_success(cstate->unit, PPP_CHAP, rhostname, len); - } - if (cstate->chal_interval != 0) { - TIMEOUT(ChapRechallenge, cstate, cstate->chal_interval); - } - } else { - CHAPDEBUG(LOG_ERR, ("CHAP peer authentication failed\n")); - cstate->serverstate = CHAPSS_BADAUTH; - auth_peer_fail(cstate->unit, PPP_CHAP); - } -} - -/* - * ChapReceiveSuccess - Receive Success - */ -static void -ChapReceiveSuccess(chap_state *cstate, u_char *inp, u_char id, int len) -{ - LWIP_UNUSED_ARG(id); - LWIP_UNUSED_ARG(inp); - - CHAPDEBUG(LOG_INFO, ("ChapReceiveSuccess: Rcvd id %d.\n", id)); - - if (cstate->clientstate == CHAPCS_OPEN) { - /* presumably an answer to a duplicate response */ - return; - } - - if (cstate->clientstate != CHAPCS_RESPONSE) { - /* don't know what this is */ - CHAPDEBUG(LOG_INFO, ("ChapReceiveSuccess: in state %d\n", - cstate->clientstate)); - return; - } - - UNTIMEOUT(ChapResponseTimeout, cstate); - - /* - * Print message. - */ - if (len > 0) { - PRINTMSG(inp, len); - } - - cstate->clientstate = CHAPCS_OPEN; - - auth_withpeer_success(cstate->unit, PPP_CHAP); -} - - -/* - * ChapReceiveFailure - Receive failure. - */ -static void -ChapReceiveFailure(chap_state *cstate, u_char *inp, u_char id, int len) -{ - LWIP_UNUSED_ARG(id); - LWIP_UNUSED_ARG(inp); - - CHAPDEBUG(LOG_INFO, ("ChapReceiveFailure: Rcvd id %d.\n", id)); - - if (cstate->clientstate != CHAPCS_RESPONSE) { - /* don't know what this is */ - CHAPDEBUG(LOG_INFO, ("ChapReceiveFailure: in state %d\n", - cstate->clientstate)); - return; - } - - UNTIMEOUT(ChapResponseTimeout, cstate); - - /* - * Print message. - */ - if (len > 0) { - PRINTMSG(inp, len); - } - - CHAPDEBUG(LOG_ERR, ("CHAP authentication failed\n")); - auth_withpeer_fail(cstate->unit, PPP_CHAP); /* lwip: just sets the PPP error code on this unit to PPPERR_AUTHFAIL */ -} - - -/* - * ChapSendChallenge - Send an Authenticate challenge. - */ -static void -ChapSendChallenge(chap_state *cstate) -{ - u_char *outp; - int chal_len, name_len; - int outlen; - - chal_len = cstate->chal_len; - name_len = (int)strlen(cstate->chal_name); - outlen = CHAP_HEADERLEN + sizeof (u_char) + chal_len + name_len; - outp = outpacket_buf[cstate->unit]; - - MAKEHEADER(outp, PPP_CHAP); /* paste in a CHAP header */ - - PUTCHAR(CHAP_CHALLENGE, outp); - PUTCHAR(cstate->chal_id, outp); - PUTSHORT(outlen, outp); - - PUTCHAR(chal_len, outp); /* put length of challenge */ - BCOPY(cstate->challenge, outp, chal_len); - INCPTR(chal_len, outp); - - BCOPY(cstate->chal_name, outp, name_len); /* append hostname */ - - pppWrite(cstate->unit, outpacket_buf[cstate->unit], outlen + PPP_HDRLEN); - - CHAPDEBUG(LOG_INFO, ("ChapSendChallenge: Sent id %d.\n", cstate->chal_id)); - - TIMEOUT(ChapChallengeTimeout, cstate, cstate->timeouttime); - ++cstate->chal_transmits; -} - - -/* - * ChapSendStatus - Send a status response (ack or nak). - */ -static void -ChapSendStatus(chap_state *cstate, int code) -{ - u_char *outp; - int outlen, msglen; - char msg[256]; /* @todo: this can be a char*, no strcpy needed */ - - if (code == CHAP_SUCCESS) { - strcpy(msg, "Welcome!"); - } else { - strcpy(msg, "I don't like you. Go 'way."); - } - msglen = (int)strlen(msg); - - outlen = CHAP_HEADERLEN + msglen; - outp = outpacket_buf[cstate->unit]; - - MAKEHEADER(outp, PPP_CHAP); /* paste in a header */ - - PUTCHAR(code, outp); - PUTCHAR(cstate->chal_id, outp); - PUTSHORT(outlen, outp); - BCOPY(msg, outp, msglen); - pppWrite(cstate->unit, outpacket_buf[cstate->unit], outlen + PPP_HDRLEN); - - CHAPDEBUG(LOG_INFO, ("ChapSendStatus: Sent code %d, id %d.\n", code, - cstate->chal_id)); -} - -/* - * ChapGenChallenge is used to generate a pseudo-random challenge string of - * a pseudo-random length between min_len and max_len. The challenge - * string and its length are stored in *cstate, and various other fields of - * *cstate are initialized. - */ - -static void -ChapGenChallenge(chap_state *cstate) -{ - int chal_len; - u_char *ptr = cstate->challenge; - int i; - - /* pick a random challenge length between MIN_CHALLENGE_LENGTH and - MAX_CHALLENGE_LENGTH */ - chal_len = (unsigned) - ((((magic() >> 16) * - (MAX_CHALLENGE_LENGTH - MIN_CHALLENGE_LENGTH)) >> 16) - + MIN_CHALLENGE_LENGTH); - LWIP_ASSERT("chal_len <= 0xff", chal_len <= 0xffff); - cstate->chal_len = (u_char)chal_len; - cstate->chal_id = ++cstate->id; - cstate->chal_transmits = 0; - - /* generate a random string */ - for (i = 0; i < chal_len; i++ ) { - *ptr++ = (char) (magic() & 0xff); - } -} - -/* - * ChapSendResponse - send a response packet with values as specified - * in *cstate. - */ -/* ARGSUSED */ -static void -ChapSendResponse(chap_state *cstate) -{ - u_char *outp; - int outlen, md_len, name_len; - - md_len = cstate->resp_length; - name_len = (int)strlen(cstate->resp_name); - outlen = CHAP_HEADERLEN + sizeof (u_char) + md_len + name_len; - outp = outpacket_buf[cstate->unit]; - - MAKEHEADER(outp, PPP_CHAP); - - PUTCHAR(CHAP_RESPONSE, outp); /* we are a response */ - PUTCHAR(cstate->resp_id, outp); /* copy id from challenge packet */ - PUTSHORT(outlen, outp); /* packet length */ - - PUTCHAR(md_len, outp); /* length of MD */ - BCOPY(cstate->response, outp, md_len); /* copy MD to buffer */ - INCPTR(md_len, outp); - - BCOPY(cstate->resp_name, outp, name_len); /* append our name */ - - /* send the packet */ - pppWrite(cstate->unit, outpacket_buf[cstate->unit], outlen + PPP_HDRLEN); - - cstate->clientstate = CHAPCS_RESPONSE; - TIMEOUT(ChapResponseTimeout, cstate, cstate->timeouttime); - ++cstate->resp_transmits; -} - -#if PPP_ADDITIONAL_CALLBACKS -static char *ChapCodenames[] = { - "Challenge", "Response", "Success", "Failure" -}; -/* - * ChapPrintPkt - print the contents of a CHAP packet. - */ -static int -ChapPrintPkt( u_char *p, int plen, void (*printer) (void *, char *, ...), void *arg) -{ - int code, id, len; - int clen, nlen; - u_char x; - - if (plen < CHAP_HEADERLEN) { - return 0; - } - GETCHAR(code, p); - GETCHAR(id, p); - GETSHORT(len, p); - if (len < CHAP_HEADERLEN || len > plen) { - return 0; - } - - if (code >= 1 && code <= sizeof(ChapCodenames) / sizeof(char *)) { - printer(arg, " %s", ChapCodenames[code-1]); - } else { - printer(arg, " code=0x%x", code); - } - printer(arg, " id=0x%x", id); - len -= CHAP_HEADERLEN; - switch (code) { - case CHAP_CHALLENGE: - case CHAP_RESPONSE: - if (len < 1) { - break; - } - clen = p[0]; - if (len < clen + 1) { - break; - } - ++p; - nlen = len - clen - 1; - printer(arg, " <"); - for (; clen > 0; --clen) { - GETCHAR(x, p); - printer(arg, "%.2x", x); - } - printer(arg, ">, name = %.*Z", nlen, p); - break; - case CHAP_FAILURE: - case CHAP_SUCCESS: - printer(arg, " %.*Z", len, p); - break; - default: - for (clen = len; clen > 0; --clen) { - GETCHAR(x, p); - printer(arg, " %.2x", x); - } - } - - return len + CHAP_HEADERLEN; -} -#endif /* PPP_ADDITIONAL_CALLBACKS */ - -#endif /* CHAP_SUPPORT */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.h deleted file mode 100644 index fedcab8da..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chap.h +++ /dev/null @@ -1,150 +0,0 @@ -/***************************************************************************** -* chap.h - Network Challenge Handshake Authentication Protocol header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1998 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-03 Guy Lancaster , Global Election Systems Inc. -* Original built from BSD network code. -******************************************************************************/ -/* - * chap.h - Challenge Handshake Authentication Protocol definitions. - * - * Copyright (c) 1993 The Australian National University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the Australian National University. The name of the University - * may not be used to endorse or promote products derived from this - * software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Copyright (c) 1991 Gregory M. Christy - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the author. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: chap.h,v 1.6 2010/01/24 13:19:34 goldsimon Exp $ - */ - -#ifndef CHAP_H -#define CHAP_H - -/* Code + ID + length */ -#define CHAP_HEADERLEN 4 - -/* - * CHAP codes. - */ - -#define CHAP_DIGEST_MD5 5 /* use MD5 algorithm */ -#define MD5_SIGNATURE_SIZE 16 /* 16 bytes in a MD5 message digest */ -#define CHAP_MICROSOFT 0x80 /* use Microsoft-compatible alg. */ -#define MS_CHAP_RESPONSE_LEN 49 /* Response length for MS-CHAP */ - -#define CHAP_CHALLENGE 1 -#define CHAP_RESPONSE 2 -#define CHAP_SUCCESS 3 -#define CHAP_FAILURE 4 - -/* - * Challenge lengths (for challenges we send) and other limits. - */ -#define MIN_CHALLENGE_LENGTH 32 -#define MAX_CHALLENGE_LENGTH 64 -#define MAX_RESPONSE_LENGTH 64 /* sufficient for MD5 or MS-CHAP */ - -/* - * Each interface is described by a chap structure. - */ - -typedef struct chap_state { - int unit; /* Interface unit number */ - int clientstate; /* Client state */ - int serverstate; /* Server state */ - u_char challenge[MAX_CHALLENGE_LENGTH]; /* last challenge string sent */ - u_char chal_len; /* challenge length */ - u_char chal_id; /* ID of last challenge */ - u_char chal_type; /* hash algorithm for challenges */ - u_char id; /* Current id */ - char *chal_name; /* Our name to use with challenge */ - int chal_interval; /* Time until we challenge peer again */ - int timeouttime; /* Timeout time in seconds */ - int max_transmits; /* Maximum # of challenge transmissions */ - int chal_transmits; /* Number of transmissions of challenge */ - int resp_transmits; /* Number of transmissions of response */ - u_char response[MAX_RESPONSE_LENGTH]; /* Response to send */ - u_char resp_length; /* length of response */ - u_char resp_id; /* ID for response messages */ - u_char resp_type; /* hash algorithm for responses */ - char *resp_name; /* Our name to send with response */ -} chap_state; - - -/* - * Client (peer) states. - */ -#define CHAPCS_INITIAL 0 /* Lower layer down, not opened */ -#define CHAPCS_CLOSED 1 /* Lower layer up, not opened */ -#define CHAPCS_PENDING 2 /* Auth us to peer when lower up */ -#define CHAPCS_LISTEN 3 /* Listening for a challenge */ -#define CHAPCS_RESPONSE 4 /* Sent response, waiting for status */ -#define CHAPCS_OPEN 5 /* We've received Success */ - -/* - * Server (authenticator) states. - */ -#define CHAPSS_INITIAL 0 /* Lower layer down, not opened */ -#define CHAPSS_CLOSED 1 /* Lower layer up, not opened */ -#define CHAPSS_PENDING 2 /* Auth peer when lower up */ -#define CHAPSS_INITIAL_CHAL 3 /* We've sent the first challenge */ -#define CHAPSS_OPEN 4 /* We've sent a Success msg */ -#define CHAPSS_RECHALLENGE 5 /* We've sent another challenge */ -#define CHAPSS_BADAUTH 6 /* We've sent a Failure msg */ - -extern chap_state chap[]; - -void ChapAuthWithPeer (int, char *, u_char); -void ChapAuthPeer (int, char *, u_char); - -extern struct protent chap_protent; - -#endif /* CHAP_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.c deleted file mode 100644 index 83acefcec..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.c +++ /dev/null @@ -1,396 +0,0 @@ -/*** WARNING - THIS CODE HAS NOT BEEN FINISHED! ***/ -/*** The original PPPD code is written in a way to require either the UNIX DES - encryption functions encrypt(3) and setkey(3) or the DES library libdes. - Since both is not included in lwIP, MSCHAP currently does not work! */ -/***************************************************************************** -* chpms.c - Network MicroSoft Challenge Handshake Authentication Protocol program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* Copyright (c) 1997 by Global Election Systems Inc. All rights reserved. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-08 Guy Lancaster , Global Election Systems Inc. -* Original based on BSD chap_ms.c. -*****************************************************************************/ -/* - * chap_ms.c - Microsoft MS-CHAP compatible implementation. - * - * Copyright (c) 1995 Eric Rosenquist, Strata Software Limited. - * http://www.strataware.com/ - * - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Eric Rosenquist. 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* - * Modifications by Lauri Pesonen / lpesonen@clinet.fi, april 1997 - * - * Implemented LANManager type password response to MS-CHAP challenges. - * Now pppd provides both NT style and LANMan style blocks, and the - * prefered is set by option "ms-lanman". Default is to use NT. - * The hash text (StdText) was taken from Win95 RASAPI32.DLL. - * - * You should also use DOMAIN\\USERNAME as described in README.MSCHAP80 - */ - -#define USE_CRYPT - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#if MSCHAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "md4.h" -#ifndef USE_CRYPT -#include "des.h" -#endif -#include "chap.h" -#include "chpms.h" - -#include - - -/*************************/ -/*** LOCAL DEFINITIONS ***/ -/*************************/ - - -/************************/ -/*** LOCAL DATA TYPES ***/ -/************************/ -typedef struct { - u_char LANManResp[24]; - u_char NTResp[24]; - u_char UseNT; /* If 1, ignore the LANMan response field */ -} MS_ChapResponse; -/* We use MS_CHAP_RESPONSE_LEN, rather than sizeof(MS_ChapResponse), - in case this struct gets padded. */ - - - -/***********************************/ -/*** LOCAL FUNCTION DECLARATIONS ***/ -/***********************************/ - -/* XXX Don't know what to do with these. */ -extern void setkey(const char *); -extern void encrypt(char *, int); - -static void DesEncrypt (u_char *, u_char *, u_char *); -static void MakeKey (u_char *, u_char *); - -#ifdef USE_CRYPT -static void Expand (u_char *, u_char *); -static void Collapse (u_char *, u_char *); -#endif - -static void ChallengeResponse( - u_char *challenge, /* IN 8 octets */ - u_char *pwHash, /* IN 16 octets */ - u_char *response /* OUT 24 octets */ -); -static void ChapMS_NT( - char *rchallenge, - int rchallenge_len, - char *secret, - int secret_len, - MS_ChapResponse *response -); -static u_char Get7Bits( - u_char *input, - int startBit -); - -static void -ChallengeResponse( u_char *challenge, /* IN 8 octets */ - u_char *pwHash, /* IN 16 octets */ - u_char *response /* OUT 24 octets */) -{ - u_char ZPasswordHash[21]; - - BZERO(ZPasswordHash, sizeof(ZPasswordHash)); - BCOPY(pwHash, ZPasswordHash, 16); - -#if 0 - log_packet(ZPasswordHash, sizeof(ZPasswordHash), "ChallengeResponse - ZPasswordHash", LOG_DEBUG); -#endif - - DesEncrypt(challenge, ZPasswordHash + 0, response + 0); - DesEncrypt(challenge, ZPasswordHash + 7, response + 8); - DesEncrypt(challenge, ZPasswordHash + 14, response + 16); - -#if 0 - log_packet(response, 24, "ChallengeResponse - response", LOG_DEBUG); -#endif -} - - -#ifdef USE_CRYPT -static void -DesEncrypt( u_char *clear, /* IN 8 octets */ - u_char *key, /* IN 7 octets */ - u_char *cipher /* OUT 8 octets */) -{ - u_char des_key[8]; - u_char crypt_key[66]; - u_char des_input[66]; - - MakeKey(key, des_key); - - Expand(des_key, crypt_key); - setkey((char*)crypt_key); - -#if 0 - CHAPDEBUG(LOG_INFO, ("DesEncrypt: 8 octet input : %02X%02X%02X%02X%02X%02X%02X%02X\n", - clear[0], clear[1], clear[2], clear[3], clear[4], clear[5], clear[6], clear[7])); -#endif - - Expand(clear, des_input); - encrypt((char*)des_input, 0); - Collapse(des_input, cipher); - -#if 0 - CHAPDEBUG(LOG_INFO, ("DesEncrypt: 8 octet output: %02X%02X%02X%02X%02X%02X%02X%02X\n", - cipher[0], cipher[1], cipher[2], cipher[3], cipher[4], cipher[5], cipher[6], cipher[7])); -#endif -} - -#else /* USE_CRYPT */ - -static void -DesEncrypt( u_char *clear, /* IN 8 octets */ - u_char *key, /* IN 7 octets */ - u_char *cipher /* OUT 8 octets */) -{ - des_cblock des_key; - des_key_schedule key_schedule; - - MakeKey(key, des_key); - - des_set_key(&des_key, key_schedule); - -#if 0 - CHAPDEBUG(LOG_INFO, ("DesEncrypt: 8 octet input : %02X%02X%02X%02X%02X%02X%02X%02X\n", - clear[0], clear[1], clear[2], clear[3], clear[4], clear[5], clear[6], clear[7])); -#endif - - des_ecb_encrypt((des_cblock *)clear, (des_cblock *)cipher, key_schedule, 1); - -#if 0 - CHAPDEBUG(LOG_INFO, ("DesEncrypt: 8 octet output: %02X%02X%02X%02X%02X%02X%02X%02X\n", - cipher[0], cipher[1], cipher[2], cipher[3], cipher[4], cipher[5], cipher[6], cipher[7])); -#endif -} - -#endif /* USE_CRYPT */ - - -static u_char -Get7Bits( u_char *input, int startBit) -{ - register unsigned int word; - - word = (unsigned)input[startBit / 8] << 8; - word |= (unsigned)input[startBit / 8 + 1]; - - word >>= 15 - (startBit % 8 + 7); - - return word & 0xFE; -} - -#ifdef USE_CRYPT - -/* in == 8-byte string (expanded version of the 56-bit key) - * out == 64-byte string where each byte is either 1 or 0 - * Note that the low-order "bit" is always ignored by by setkey() - */ -static void -Expand(u_char *in, u_char *out) -{ - int j, c; - int i; - - for(i = 0; i < 64; in++){ - c = *in; - for(j = 7; j >= 0; j--) { - *out++ = (c >> j) & 01; - } - i += 8; - } -} - -/* The inverse of Expand - */ -static void -Collapse(u_char *in, u_char *out) -{ - int j; - int i; - unsigned int c; - - for (i = 0; i < 64; i += 8, out++) { - c = 0; - for (j = 7; j >= 0; j--, in++) { - c |= *in << j; - } - *out = c & 0xff; - } -} -#endif - -static void -MakeKey( u_char *key, /* IN 56 bit DES key missing parity bits */ - u_char *des_key /* OUT 64 bit DES key with parity bits added */) -{ - des_key[0] = Get7Bits(key, 0); - des_key[1] = Get7Bits(key, 7); - des_key[2] = Get7Bits(key, 14); - des_key[3] = Get7Bits(key, 21); - des_key[4] = Get7Bits(key, 28); - des_key[5] = Get7Bits(key, 35); - des_key[6] = Get7Bits(key, 42); - des_key[7] = Get7Bits(key, 49); - -#ifndef USE_CRYPT - des_set_odd_parity((des_cblock *)des_key); -#endif - -#if 0 - CHAPDEBUG(LOG_INFO, ("MakeKey: 56-bit input : %02X%02X%02X%02X%02X%02X%02X\n", - key[0], key[1], key[2], key[3], key[4], key[5], key[6])); - CHAPDEBUG(LOG_INFO, ("MakeKey: 64-bit output: %02X%02X%02X%02X%02X%02X%02X%02X\n", - des_key[0], des_key[1], des_key[2], des_key[3], des_key[4], des_key[5], des_key[6], des_key[7])); -#endif -} - -static void -ChapMS_NT( char *rchallenge, - int rchallenge_len, - char *secret, - int secret_len, - MS_ChapResponse *response) -{ - int i; - MDstruct md4Context; - u_char unicodePassword[MAX_NT_PASSWORD * 2]; - static int low_byte_first = -1; - - LWIP_UNUSED_ARG(rchallenge_len); - - /* Initialize the Unicode version of the secret (== password). */ - /* This implicitly supports 8-bit ISO8859/1 characters. */ - BZERO(unicodePassword, sizeof(unicodePassword)); - for (i = 0; i < secret_len; i++) { - unicodePassword[i * 2] = (u_char)secret[i]; - } - MDbegin(&md4Context); - MDupdate(&md4Context, unicodePassword, secret_len * 2 * 8); /* Unicode is 2 bytes/char, *8 for bit count */ - - if (low_byte_first == -1) { - low_byte_first = (PP_HTONS((unsigned short int)1) != 1); - } - if (low_byte_first == 0) { - /* @todo: arg type - u_long* or u_int* ? */ - MDreverse((unsigned int*)&md4Context); /* sfb 961105 */ - } - - MDupdate(&md4Context, NULL, 0); /* Tell MD4 we're done */ - - ChallengeResponse((u_char*)rchallenge, (u_char*)md4Context.buffer, response->NTResp); -} - -#ifdef MSLANMAN -static u_char *StdText = (u_char *)"KGS!@#$%"; /* key from rasapi32.dll */ - -static void -ChapMS_LANMan( char *rchallenge, - int rchallenge_len, - char *secret, - int secret_len, - MS_ChapResponse *response) -{ - int i; - u_char UcasePassword[MAX_NT_PASSWORD]; /* max is actually 14 */ - u_char PasswordHash[16]; - - /* LANMan password is case insensitive */ - BZERO(UcasePassword, sizeof(UcasePassword)); - for (i = 0; i < secret_len; i++) { - UcasePassword[i] = (u_char)toupper(secret[i]); - } - DesEncrypt( StdText, UcasePassword + 0, PasswordHash + 0 ); - DesEncrypt( StdText, UcasePassword + 7, PasswordHash + 8 ); - ChallengeResponse(rchallenge, PasswordHash, response->LANManResp); -} -#endif - -void -ChapMS( chap_state *cstate, char *rchallenge, int rchallenge_len, char *secret, int secret_len) -{ - MS_ChapResponse response; -#ifdef MSLANMAN - extern int ms_lanman; -#endif - -#if 0 - CHAPDEBUG(LOG_INFO, ("ChapMS: secret is '%.*s'\n", secret_len, secret)); -#endif - BZERO(&response, sizeof(response)); - - /* Calculate both always */ - ChapMS_NT(rchallenge, rchallenge_len, secret, secret_len, &response); - -#ifdef MSLANMAN - ChapMS_LANMan(rchallenge, rchallenge_len, secret, secret_len, &response); - - /* prefered method is set by option */ - response.UseNT = !ms_lanman; -#else - response.UseNT = 1; -#endif - - BCOPY(&response, cstate->response, MS_CHAP_RESPONSE_LEN); - cstate->resp_length = MS_CHAP_RESPONSE_LEN; -} - -#endif /* MSCHAP_SUPPORT */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.h deleted file mode 100644 index df070fb35..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/chpms.h +++ /dev/null @@ -1,64 +0,0 @@ -/***************************************************************************** -* chpms.h - Network Microsoft Challenge Handshake Protocol header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1998 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 98-01-30 Guy Lancaster , Global Election Systems Inc. -* Original built from BSD network code. -******************************************************************************/ -/* - * chap.h - Challenge Handshake Authentication Protocol definitions. - * - * Copyright (c) 1995 Eric Rosenquist, Strata Software Limited. - * http://www.strataware.com/ - * - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Eric Rosenquist. 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: chpms.h,v 1.5 2007/12/19 20:47:23 fbernon Exp $ - */ - -#ifndef CHPMS_H -#define CHPMS_H - -#define MAX_NT_PASSWORD 256 /* Maximum number of (Unicode) chars in an NT password */ - -void ChapMS (chap_state *, char *, int, char *, int); - -#endif /* CHPMS_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.c deleted file mode 100644 index 2e73c5af8..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.c +++ /dev/null @@ -1,890 +0,0 @@ -/***************************************************************************** -* fsm.c - Network Control Protocol Finite State Machine program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-01 Guy Lancaster , Global Election Systems Inc. -* Original based on BSD fsm.c. -*****************************************************************************/ -/* - * fsm.c - {Link, IP} Control Protocol Finite State Machine. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* - * TODO: - * Randomize fsm id on link/init. - * Deal with variable outgoing MTU. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "fsm.h" - -#include - -#if PPP_DEBUG -static const char *ppperr_strerr[] = { - "LS_INITIAL", /* LS_INITIAL 0 */ - "LS_STARTING", /* LS_STARTING 1 */ - "LS_CLOSED", /* LS_CLOSED 2 */ - "LS_STOPPED", /* LS_STOPPED 3 */ - "LS_CLOSING", /* LS_CLOSING 4 */ - "LS_STOPPING", /* LS_STOPPING 5 */ - "LS_REQSENT", /* LS_REQSENT 6 */ - "LS_ACKRCVD", /* LS_ACKRCVD 7 */ - "LS_ACKSENT", /* LS_ACKSENT 8 */ - "LS_OPENED" /* LS_OPENED 9 */ -}; -#endif /* PPP_DEBUG */ - -static void fsm_timeout (void *); -static void fsm_rconfreq (fsm *, u_char, u_char *, int); -static void fsm_rconfack (fsm *, int, u_char *, int); -static void fsm_rconfnakrej (fsm *, int, int, u_char *, int); -static void fsm_rtermreq (fsm *, int, u_char *, int); -static void fsm_rtermack (fsm *); -static void fsm_rcoderej (fsm *, u_char *, int); -static void fsm_sconfreq (fsm *, int); - -#define PROTO_NAME(f) ((f)->callbacks->proto_name) - -int peer_mru[NUM_PPP]; - - -/* - * fsm_init - Initialize fsm. - * - * Initialize fsm state. - */ -void -fsm_init(fsm *f) -{ - f->state = LS_INITIAL; - f->flags = 0; - f->id = 0; /* XXX Start with random id? */ - f->timeouttime = FSM_DEFTIMEOUT; - f->maxconfreqtransmits = FSM_DEFMAXCONFREQS; - f->maxtermtransmits = FSM_DEFMAXTERMREQS; - f->maxnakloops = FSM_DEFMAXNAKLOOPS; - f->term_reason_len = 0; -} - - -/* - * fsm_lowerup - The lower layer is up. - */ -void -fsm_lowerup(fsm *f) -{ - int oldState = f->state; - - LWIP_UNUSED_ARG(oldState); - - switch( f->state ) { - case LS_INITIAL: - f->state = LS_CLOSED; - break; - - case LS_STARTING: - if( f->flags & OPT_SILENT ) { - f->state = LS_STOPPED; - } else { - /* Send an initial configure-request */ - fsm_sconfreq(f, 0); - f->state = LS_REQSENT; - } - break; - - default: - FSMDEBUG(LOG_INFO, ("%s: Up event in state %d (%s)!\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - } - - FSMDEBUG(LOG_INFO, ("%s: lowerup state %d (%s) -> %d (%s)\n", - PROTO_NAME(f), oldState, ppperr_strerr[oldState], f->state, ppperr_strerr[f->state])); -} - - -/* - * fsm_lowerdown - The lower layer is down. - * - * Cancel all timeouts and inform upper layers. - */ -void -fsm_lowerdown(fsm *f) -{ - int oldState = f->state; - - LWIP_UNUSED_ARG(oldState); - - switch( f->state ) { - case LS_CLOSED: - f->state = LS_INITIAL; - break; - - case LS_STOPPED: - f->state = LS_STARTING; - if( f->callbacks->starting ) { - (*f->callbacks->starting)(f); - } - break; - - case LS_CLOSING: - f->state = LS_INITIAL; - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - break; - - case LS_STOPPING: - case LS_REQSENT: - case LS_ACKRCVD: - case LS_ACKSENT: - f->state = LS_STARTING; - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - break; - - case LS_OPENED: - if( f->callbacks->down ) { - (*f->callbacks->down)(f); - } - f->state = LS_STARTING; - break; - - default: - FSMDEBUG(LOG_INFO, ("%s: Down event in state %d (%s)!\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - } - - FSMDEBUG(LOG_INFO, ("%s: lowerdown state %d (%s) -> %d (%s)\n", - PROTO_NAME(f), oldState, ppperr_strerr[oldState], f->state, ppperr_strerr[f->state])); -} - - -/* - * fsm_open - Link is allowed to come up. - */ -void -fsm_open(fsm *f) -{ - int oldState = f->state; - - LWIP_UNUSED_ARG(oldState); - - switch( f->state ) { - case LS_INITIAL: - f->state = LS_STARTING; - if( f->callbacks->starting ) { - (*f->callbacks->starting)(f); - } - break; - - case LS_CLOSED: - if( f->flags & OPT_SILENT ) { - f->state = LS_STOPPED; - } else { - /* Send an initial configure-request */ - fsm_sconfreq(f, 0); - f->state = LS_REQSENT; - } - break; - - case LS_CLOSING: - f->state = LS_STOPPING; - /* fall through */ - case LS_STOPPED: - case LS_OPENED: - if( f->flags & OPT_RESTART ) { - fsm_lowerdown(f); - fsm_lowerup(f); - } - break; - } - - FSMDEBUG(LOG_INFO, ("%s: open state %d (%s) -> %d (%s)\n", - PROTO_NAME(f), oldState, ppperr_strerr[oldState], f->state, ppperr_strerr[f->state])); -} - -#if 0 /* backport pppd 2.4.4b1; */ -/* - * terminate_layer - Start process of shutting down the FSM - * - * Cancel any timeout running, notify upper layers we're done, and - * send a terminate-request message as configured. - */ -static void -terminate_layer(fsm *f, int nextstate) -{ - /* @todo */ -} -#endif - -/* - * fsm_close - Start closing connection. - * - * Cancel timeouts and either initiate close or possibly go directly to - * the LS_CLOSED state. - */ -void -fsm_close(fsm *f, char *reason) -{ - int oldState = f->state; - - LWIP_UNUSED_ARG(oldState); - - f->term_reason = reason; - f->term_reason_len = (reason == NULL ? 0 : (int)strlen(reason)); - switch( f->state ) { - case LS_STARTING: - f->state = LS_INITIAL; - break; - case LS_STOPPED: - f->state = LS_CLOSED; - break; - case LS_STOPPING: - f->state = LS_CLOSING; - break; - - case LS_REQSENT: - case LS_ACKRCVD: - case LS_ACKSENT: - case LS_OPENED: - if( f->state != LS_OPENED ) { - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - } else if( f->callbacks->down ) { - (*f->callbacks->down)(f); /* Inform upper layers we're down */ - } - /* Init restart counter, send Terminate-Request */ - f->retransmits = f->maxtermtransmits; - fsm_sdata(f, TERMREQ, f->reqid = ++f->id, - (u_char *) f->term_reason, f->term_reason_len); - TIMEOUT(fsm_timeout, f, f->timeouttime); - --f->retransmits; - - f->state = LS_CLOSING; - break; - } - - FSMDEBUG(LOG_INFO, ("%s: close reason=%s state %d (%s) -> %d (%s)\n", - PROTO_NAME(f), reason, oldState, ppperr_strerr[oldState], f->state, ppperr_strerr[f->state])); -} - - -/* - * fsm_timeout - Timeout expired. - */ -static void -fsm_timeout(void *arg) -{ - fsm *f = (fsm *) arg; - - switch (f->state) { - case LS_CLOSING: - case LS_STOPPING: - if( f->retransmits <= 0 ) { - FSMDEBUG(LOG_WARNING, ("%s: timeout sending Terminate-Request state=%d (%s)\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - /* - * We've waited for an ack long enough. Peer probably heard us. - */ - f->state = (f->state == LS_CLOSING)? LS_CLOSED: LS_STOPPED; - if( f->callbacks->finished ) { - (*f->callbacks->finished)(f); - } - } else { - FSMDEBUG(LOG_WARNING, ("%s: timeout resending Terminate-Requests state=%d (%s)\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - /* Send Terminate-Request */ - fsm_sdata(f, TERMREQ, f->reqid = ++f->id, - (u_char *) f->term_reason, f->term_reason_len); - TIMEOUT(fsm_timeout, f, f->timeouttime); - --f->retransmits; - } - break; - - case LS_REQSENT: - case LS_ACKRCVD: - case LS_ACKSENT: - if (f->retransmits <= 0) { - FSMDEBUG(LOG_WARNING, ("%s: timeout sending Config-Requests state=%d (%s)\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - f->state = LS_STOPPED; - if( (f->flags & OPT_PASSIVE) == 0 && f->callbacks->finished ) { - (*f->callbacks->finished)(f); - } - } else { - FSMDEBUG(LOG_WARNING, ("%s: timeout resending Config-Request state=%d (%s)\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - /* Retransmit the configure-request */ - if (f->callbacks->retransmit) { - (*f->callbacks->retransmit)(f); - } - fsm_sconfreq(f, 1); /* Re-send Configure-Request */ - if( f->state == LS_ACKRCVD ) { - f->state = LS_REQSENT; - } - } - break; - - default: - FSMDEBUG(LOG_INFO, ("%s: UNHANDLED timeout event in state %d (%s)!\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - } -} - - -/* - * fsm_input - Input packet. - */ -void -fsm_input(fsm *f, u_char *inpacket, int l) -{ - u_char *inp = inpacket; - u_char code, id; - int len; - - /* - * Parse header (code, id and length). - * If packet too short, drop it. - */ - if (l < HEADERLEN) { - FSMDEBUG(LOG_WARNING, ("fsm_input(%x): Rcvd short header.\n", - f->protocol)); - return; - } - GETCHAR(code, inp); - GETCHAR(id, inp); - GETSHORT(len, inp); - if (len < HEADERLEN) { - FSMDEBUG(LOG_INFO, ("fsm_input(%x): Rcvd illegal length.\n", - f->protocol)); - return; - } - if (len > l) { - FSMDEBUG(LOG_INFO, ("fsm_input(%x): Rcvd short packet.\n", - f->protocol)); - return; - } - len -= HEADERLEN; /* subtract header length */ - - if( f->state == LS_INITIAL || f->state == LS_STARTING ) { - FSMDEBUG(LOG_INFO, ("fsm_input(%x): Rcvd packet in state %d (%s).\n", - f->protocol, f->state, ppperr_strerr[f->state])); - return; - } - FSMDEBUG(LOG_INFO, ("fsm_input(%s):%d,%d,%d\n", PROTO_NAME(f), code, id, l)); - /* - * Action depends on code. - */ - switch (code) { - case CONFREQ: - fsm_rconfreq(f, id, inp, len); - break; - - case CONFACK: - fsm_rconfack(f, id, inp, len); - break; - - case CONFNAK: - case CONFREJ: - fsm_rconfnakrej(f, code, id, inp, len); - break; - - case TERMREQ: - fsm_rtermreq(f, id, inp, len); - break; - - case TERMACK: - fsm_rtermack(f); - break; - - case CODEREJ: - fsm_rcoderej(f, inp, len); - break; - - default: - FSMDEBUG(LOG_INFO, ("fsm_input(%s): default: \n", PROTO_NAME(f))); - if( !f->callbacks->extcode || - !(*f->callbacks->extcode)(f, code, id, inp, len) ) { - fsm_sdata(f, CODEREJ, ++f->id, inpacket, len + HEADERLEN); - } - break; - } -} - - -/* - * fsm_rconfreq - Receive Configure-Request. - */ -static void -fsm_rconfreq(fsm *f, u_char id, u_char *inp, int len) -{ - int code, reject_if_disagree; - - FSMDEBUG(LOG_INFO, ("fsm_rconfreq(%s): Rcvd id %d state=%d (%s)\n", - PROTO_NAME(f), id, f->state, ppperr_strerr[f->state])); - switch( f->state ) { - case LS_CLOSED: - /* Go away, we're closed */ - fsm_sdata(f, TERMACK, id, NULL, 0); - return; - case LS_CLOSING: - case LS_STOPPING: - return; - - case LS_OPENED: - /* Go down and restart negotiation */ - if( f->callbacks->down ) { - (*f->callbacks->down)(f); /* Inform upper layers */ - } - fsm_sconfreq(f, 0); /* Send initial Configure-Request */ - break; - - case LS_STOPPED: - /* Negotiation started by our peer */ - fsm_sconfreq(f, 0); /* Send initial Configure-Request */ - f->state = LS_REQSENT; - break; - } - - /* - * Pass the requested configuration options - * to protocol-specific code for checking. - */ - if (f->callbacks->reqci) { /* Check CI */ - reject_if_disagree = (f->nakloops >= f->maxnakloops); - code = (*f->callbacks->reqci)(f, inp, &len, reject_if_disagree); - } else if (len) { - code = CONFREJ; /* Reject all CI */ - } else { - code = CONFACK; - } - - /* send the Ack, Nak or Rej to the peer */ - fsm_sdata(f, (u_char)code, id, inp, len); - - if (code == CONFACK) { - if (f->state == LS_ACKRCVD) { - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - f->state = LS_OPENED; - if (f->callbacks->up) { - (*f->callbacks->up)(f); /* Inform upper layers */ - } - } else { - f->state = LS_ACKSENT; - } - f->nakloops = 0; - } else { - /* we sent CONFACK or CONFREJ */ - if (f->state != LS_ACKRCVD) { - f->state = LS_REQSENT; - } - if( code == CONFNAK ) { - ++f->nakloops; - } - } -} - - -/* - * fsm_rconfack - Receive Configure-Ack. - */ -static void -fsm_rconfack(fsm *f, int id, u_char *inp, int len) -{ - FSMDEBUG(LOG_INFO, ("fsm_rconfack(%s): Rcvd id %d state=%d (%s)\n", - PROTO_NAME(f), id, f->state, ppperr_strerr[f->state])); - - if (id != f->reqid || f->seen_ack) { /* Expected id? */ - return; /* Nope, toss... */ - } - if( !(f->callbacks->ackci? (*f->callbacks->ackci)(f, inp, len): (len == 0)) ) { - /* Ack is bad - ignore it */ - FSMDEBUG(LOG_INFO, ("%s: received bad Ack (length %d)\n", - PROTO_NAME(f), len)); - return; - } - f->seen_ack = 1; - - switch (f->state) { - case LS_CLOSED: - case LS_STOPPED: - fsm_sdata(f, TERMACK, (u_char)id, NULL, 0); - break; - - case LS_REQSENT: - f->state = LS_ACKRCVD; - f->retransmits = f->maxconfreqtransmits; - break; - - case LS_ACKRCVD: - /* Huh? an extra valid Ack? oh well... */ - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - fsm_sconfreq(f, 0); - f->state = LS_REQSENT; - break; - - case LS_ACKSENT: - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - f->state = LS_OPENED; - f->retransmits = f->maxconfreqtransmits; - if (f->callbacks->up) { - (*f->callbacks->up)(f); /* Inform upper layers */ - } - break; - - case LS_OPENED: - /* Go down and restart negotiation */ - if (f->callbacks->down) { - (*f->callbacks->down)(f); /* Inform upper layers */ - } - fsm_sconfreq(f, 0); /* Send initial Configure-Request */ - f->state = LS_REQSENT; - break; - } -} - - -/* - * fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject. - */ -static void -fsm_rconfnakrej(fsm *f, int code, int id, u_char *inp, int len) -{ - int (*proc) (fsm *, u_char *, int); - int ret; - - FSMDEBUG(LOG_INFO, ("fsm_rconfnakrej(%s): Rcvd id %d state=%d (%s)\n", - PROTO_NAME(f), id, f->state, ppperr_strerr[f->state])); - - if (id != f->reqid || f->seen_ack) { /* Expected id? */ - return; /* Nope, toss... */ - } - proc = (code == CONFNAK)? f->callbacks->nakci: f->callbacks->rejci; - if (!proc || !((ret = proc(f, inp, len)))) { - /* Nak/reject is bad - ignore it */ - FSMDEBUG(LOG_INFO, ("%s: received bad %s (length %d)\n", - PROTO_NAME(f), (code==CONFNAK? "Nak": "reject"), len)); - return; - } - f->seen_ack = 1; - - switch (f->state) { - case LS_CLOSED: - case LS_STOPPED: - fsm_sdata(f, TERMACK, (u_char)id, NULL, 0); - break; - - case LS_REQSENT: - case LS_ACKSENT: - /* They didn't agree to what we wanted - try another request */ - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - if (ret < 0) { - f->state = LS_STOPPED; /* kludge for stopping CCP */ - } else { - fsm_sconfreq(f, 0); /* Send Configure-Request */ - } - break; - - case LS_ACKRCVD: - /* Got a Nak/reject when we had already had an Ack?? oh well... */ - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - fsm_sconfreq(f, 0); - f->state = LS_REQSENT; - break; - - case LS_OPENED: - /* Go down and restart negotiation */ - if (f->callbacks->down) { - (*f->callbacks->down)(f); /* Inform upper layers */ - } - fsm_sconfreq(f, 0); /* Send initial Configure-Request */ - f->state = LS_REQSENT; - break; - } -} - - -/* - * fsm_rtermreq - Receive Terminate-Req. - */ -static void -fsm_rtermreq(fsm *f, int id, u_char *p, int len) -{ - LWIP_UNUSED_ARG(p); - - FSMDEBUG(LOG_INFO, ("fsm_rtermreq(%s): Rcvd id %d state=%d (%s)\n", - PROTO_NAME(f), id, f->state, ppperr_strerr[f->state])); - - switch (f->state) { - case LS_ACKRCVD: - case LS_ACKSENT: - f->state = LS_REQSENT; /* Start over but keep trying */ - break; - - case LS_OPENED: - if (len > 0) { - FSMDEBUG(LOG_INFO, ("%s terminated by peer (%p)\n", PROTO_NAME(f), p)); - } else { - FSMDEBUG(LOG_INFO, ("%s terminated by peer\n", PROTO_NAME(f))); - } - if (f->callbacks->down) { - (*f->callbacks->down)(f); /* Inform upper layers */ - } - f->retransmits = 0; - f->state = LS_STOPPING; - TIMEOUT(fsm_timeout, f, f->timeouttime); - break; - } - - fsm_sdata(f, TERMACK, (u_char)id, NULL, 0); -} - - -/* - * fsm_rtermack - Receive Terminate-Ack. - */ -static void -fsm_rtermack(fsm *f) -{ - FSMDEBUG(LOG_INFO, ("fsm_rtermack(%s): state=%d (%s)\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - - switch (f->state) { - case LS_CLOSING: - UNTIMEOUT(fsm_timeout, f); - f->state = LS_CLOSED; - if( f->callbacks->finished ) { - (*f->callbacks->finished)(f); - } - break; - - case LS_STOPPING: - UNTIMEOUT(fsm_timeout, f); - f->state = LS_STOPPED; - if( f->callbacks->finished ) { - (*f->callbacks->finished)(f); - } - break; - - case LS_ACKRCVD: - f->state = LS_REQSENT; - break; - - case LS_OPENED: - if (f->callbacks->down) { - (*f->callbacks->down)(f); /* Inform upper layers */ - } - fsm_sconfreq(f, 0); - break; - default: - FSMDEBUG(LOG_INFO, ("fsm_rtermack(%s): UNHANDLED state=%d (%s)!!!\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - } -} - - -/* - * fsm_rcoderej - Receive an Code-Reject. - */ -static void -fsm_rcoderej(fsm *f, u_char *inp, int len) -{ - u_char code, id; - - FSMDEBUG(LOG_INFO, ("fsm_rcoderej(%s): state=%d (%s)\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - - if (len < HEADERLEN) { - FSMDEBUG(LOG_INFO, ("fsm_rcoderej: Rcvd short Code-Reject packet!\n")); - return; - } - GETCHAR(code, inp); - GETCHAR(id, inp); - FSMDEBUG(LOG_WARNING, ("%s: Rcvd Code-Reject for code %d, id %d\n", - PROTO_NAME(f), code, id)); - - if( f->state == LS_ACKRCVD ) { - f->state = LS_REQSENT; - } -} - - -/* - * fsm_protreject - Peer doesn't speak this protocol. - * - * Treat this as a catastrophic error (RXJ-). - */ -void -fsm_protreject(fsm *f) -{ - switch( f->state ) { - case LS_CLOSING: - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - /* fall through */ - case LS_CLOSED: - f->state = LS_CLOSED; - if( f->callbacks->finished ) { - (*f->callbacks->finished)(f); - } - break; - - case LS_STOPPING: - case LS_REQSENT: - case LS_ACKRCVD: - case LS_ACKSENT: - UNTIMEOUT(fsm_timeout, f); /* Cancel timeout */ - /* fall through */ - case LS_STOPPED: - f->state = LS_STOPPED; - if( f->callbacks->finished ) { - (*f->callbacks->finished)(f); - } - break; - - case LS_OPENED: - if( f->callbacks->down ) { - (*f->callbacks->down)(f); - } - /* Init restart counter, send Terminate-Request */ - f->retransmits = f->maxtermtransmits; - fsm_sdata(f, TERMREQ, f->reqid = ++f->id, - (u_char *) f->term_reason, f->term_reason_len); - TIMEOUT(fsm_timeout, f, f->timeouttime); - --f->retransmits; - - f->state = LS_STOPPING; - break; - - default: - FSMDEBUG(LOG_INFO, ("%s: Protocol-reject event in state %d (%s)!\n", - PROTO_NAME(f), f->state, ppperr_strerr[f->state])); - } -} - - -/* - * fsm_sconfreq - Send a Configure-Request. - */ -static void -fsm_sconfreq(fsm *f, int retransmit) -{ - u_char *outp; - int cilen; - - if( f->state != LS_REQSENT && f->state != LS_ACKRCVD && f->state != LS_ACKSENT ) { - /* Not currently negotiating - reset options */ - if( f->callbacks->resetci ) { - (*f->callbacks->resetci)(f); - } - f->nakloops = 0; - } - - if( !retransmit ) { - /* New request - reset retransmission counter, use new ID */ - f->retransmits = f->maxconfreqtransmits; - f->reqid = ++f->id; - } - - f->seen_ack = 0; - - /* - * Make up the request packet - */ - outp = outpacket_buf[f->unit] + PPP_HDRLEN + HEADERLEN; - if( f->callbacks->cilen && f->callbacks->addci ) { - cilen = (*f->callbacks->cilen)(f); - if( cilen > peer_mru[f->unit] - (int)HEADERLEN ) { - cilen = peer_mru[f->unit] - HEADERLEN; - } - if (f->callbacks->addci) { - (*f->callbacks->addci)(f, outp, &cilen); - } - } else { - cilen = 0; - } - - /* send the request to our peer */ - fsm_sdata(f, CONFREQ, f->reqid, outp, cilen); - - /* start the retransmit timer */ - --f->retransmits; - TIMEOUT(fsm_timeout, f, f->timeouttime); - - FSMDEBUG(LOG_INFO, ("%s: sending Configure-Request, id %d\n", - PROTO_NAME(f), f->reqid)); -} - - -/* - * fsm_sdata - Send some data. - * - * Used for all packets sent to our peer by this module. - */ -void -fsm_sdata( fsm *f, u_char code, u_char id, u_char *data, int datalen) -{ - u_char *outp; - int outlen; - - /* Adjust length to be smaller than MTU */ - outp = outpacket_buf[f->unit]; - if (datalen > peer_mru[f->unit] - (int)HEADERLEN) { - datalen = peer_mru[f->unit] - HEADERLEN; - } - if (datalen && data != outp + PPP_HDRLEN + HEADERLEN) { - BCOPY(data, outp + PPP_HDRLEN + HEADERLEN, datalen); - } - outlen = datalen + HEADERLEN; - MAKEHEADER(outp, f->protocol); - PUTCHAR(code, outp); - PUTCHAR(id, outp); - PUTSHORT(outlen, outp); - pppWrite(f->unit, outpacket_buf[f->unit], outlen + PPP_HDRLEN); - FSMDEBUG(LOG_INFO, ("fsm_sdata(%s): Sent code %d,%d,%d.\n", - PROTO_NAME(f), code, id, outlen)); -} - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.h deleted file mode 100644 index 8d41b5f51..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/fsm.h +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************** -* fsm.h - Network Control Protocol Finite State Machine header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* Copyright (c) 1997 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-11-05 Guy Lancaster , Global Election Systems Inc. -* Original based on BSD code. -*****************************************************************************/ -/* - * fsm.h - {Link, IP} Control Protocol Finite State Machine definitions. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: fsm.h,v 1.5 2009/12/31 17:08:08 goldsimon Exp $ - */ - -#ifndef FSM_H -#define FSM_H - -/* - * LCP Packet header = Code, id, length. - */ -#define HEADERLEN (sizeof (u_char) + sizeof (u_char) + sizeof (u_short)) - - -/* - * CP (LCP, IPCP, etc.) codes. - */ -#define CONFREQ 1 /* Configuration Request */ -#define CONFACK 2 /* Configuration Ack */ -#define CONFNAK 3 /* Configuration Nak */ -#define CONFREJ 4 /* Configuration Reject */ -#define TERMREQ 5 /* Termination Request */ -#define TERMACK 6 /* Termination Ack */ -#define CODEREJ 7 /* Code Reject */ - - -/* - * Each FSM is described by an fsm structure and fsm callbacks. - */ -typedef struct fsm { - int unit; /* Interface unit number */ - u_short protocol; /* Data Link Layer Protocol field value */ - int state; /* State */ - int flags; /* Contains option bits */ - u_char id; /* Current id */ - u_char reqid; /* Current request id */ - u_char seen_ack; /* Have received valid Ack/Nak/Rej to Req */ - int timeouttime; /* Timeout time in milliseconds */ - int maxconfreqtransmits; /* Maximum Configure-Request transmissions */ - int retransmits; /* Number of retransmissions left */ - int maxtermtransmits; /* Maximum Terminate-Request transmissions */ - int nakloops; /* Number of nak loops since last ack */ - int maxnakloops; /* Maximum number of nak loops tolerated */ - struct fsm_callbacks* callbacks; /* Callback routines */ - char* term_reason; /* Reason for closing protocol */ - int term_reason_len; /* Length of term_reason */ -} fsm; - - -typedef struct fsm_callbacks { - void (*resetci)(fsm*); /* Reset our Configuration Information */ - int (*cilen)(fsm*); /* Length of our Configuration Information */ - void (*addci)(fsm*, u_char*, int*); /* Add our Configuration Information */ - int (*ackci)(fsm*, u_char*, int); /* ACK our Configuration Information */ - int (*nakci)(fsm*, u_char*, int); /* NAK our Configuration Information */ - int (*rejci)(fsm*, u_char*, int); /* Reject our Configuration Information */ - int (*reqci)(fsm*, u_char*, int*, int); /* Request peer's Configuration Information */ - void (*up)(fsm*); /* Called when fsm reaches LS_OPENED state */ - void (*down)(fsm*); /* Called when fsm leaves LS_OPENED state */ - void (*starting)(fsm*); /* Called when we want the lower layer */ - void (*finished)(fsm*); /* Called when we don't want the lower layer */ - void (*protreject)(int); /* Called when Protocol-Reject received */ - void (*retransmit)(fsm*); /* Retransmission is necessary */ - int (*extcode)(fsm*, int, u_char, u_char*, int); /* Called when unknown code received */ - char *proto_name; /* String name for protocol (for messages) */ -} fsm_callbacks; - - -/* - * Link states. - */ -#define LS_INITIAL 0 /* Down, hasn't been opened */ -#define LS_STARTING 1 /* Down, been opened */ -#define LS_CLOSED 2 /* Up, hasn't been opened */ -#define LS_STOPPED 3 /* Open, waiting for down event */ -#define LS_CLOSING 4 /* Terminating the connection, not open */ -#define LS_STOPPING 5 /* Terminating, but open */ -#define LS_REQSENT 6 /* We've sent a Config Request */ -#define LS_ACKRCVD 7 /* We've received a Config Ack */ -#define LS_ACKSENT 8 /* We've sent a Config Ack */ -#define LS_OPENED 9 /* Connection available */ - -/* - * Flags - indicate options controlling FSM operation - */ -#define OPT_PASSIVE 1 /* Don't die if we don't get a response */ -#define OPT_RESTART 2 /* Treat 2nd OPEN as DOWN, UP */ -#define OPT_SILENT 4 /* Wait for peer to speak first */ - - -/* - * Prototypes - */ -void fsm_init (fsm*); -void fsm_lowerup (fsm*); -void fsm_lowerdown (fsm*); -void fsm_open (fsm*); -void fsm_close (fsm*, char*); -void fsm_input (fsm*, u_char*, int); -void fsm_protreject (fsm*); -void fsm_sdata (fsm*, u_char, u_char, u_char*, int); - - -/* - * Variables - */ -extern int peer_mru[]; /* currently negotiated peer MRU (per unit) */ - -#endif /* FSM_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.c deleted file mode 100644 index 461a600f8..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.c +++ /dev/null @@ -1,1411 +0,0 @@ -/** In contrast to pppd 2.3.1, DNS support has been added, proxy-ARP and - dial-on-demand has been stripped. */ -/***************************************************************************** -* ipcp.c - Network PPP IP Control Protocol program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-08 Guy Lancaster , Global Election Systems Inc. -* Original. -*****************************************************************************/ -/* - * ipcp.c - PPP IP Control Protocol. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "auth.h" -#include "fsm.h" -#include "vj.h" -#include "ipcp.h" - -#include "lwip/inet.h" - -#include - -/* #define OLD_CI_ADDRS 1 */ /* Support deprecated address negotiation. */ - -/* global vars */ -ipcp_options ipcp_wantoptions[NUM_PPP]; /* Options that we want to request */ -ipcp_options ipcp_gotoptions[NUM_PPP]; /* Options that peer ack'd */ -ipcp_options ipcp_allowoptions[NUM_PPP]; /* Options we allow peer to request */ -ipcp_options ipcp_hisoptions[NUM_PPP]; /* Options that we ack'd */ - -/* local vars */ -static int default_route_set[NUM_PPP]; /* Have set up a default route */ -static int cis_received[NUM_PPP]; /* # Conf-Reqs received */ - - -/* - * Callbacks for fsm code. (CI = Configuration Information) - */ -static void ipcp_resetci (fsm *); /* Reset our CI */ -static int ipcp_cilen (fsm *); /* Return length of our CI */ -static void ipcp_addci (fsm *, u_char *, int *); /* Add our CI */ -static int ipcp_ackci (fsm *, u_char *, int); /* Peer ack'd our CI */ -static int ipcp_nakci (fsm *, u_char *, int); /* Peer nak'd our CI */ -static int ipcp_rejci (fsm *, u_char *, int); /* Peer rej'd our CI */ -static int ipcp_reqci (fsm *, u_char *, int *, int); /* Rcv CI */ -static void ipcp_up (fsm *); /* We're UP */ -static void ipcp_down (fsm *); /* We're DOWN */ -#if PPP_ADDITIONAL_CALLBACKS -static void ipcp_script (fsm *, char *); /* Run an up/down script */ -#endif -static void ipcp_finished (fsm *); /* Don't need lower layer */ - - -fsm ipcp_fsm[NUM_PPP]; /* IPCP fsm structure */ - - -static fsm_callbacks ipcp_callbacks = { /* IPCP callback routines */ - ipcp_resetci, /* Reset our Configuration Information */ - ipcp_cilen, /* Length of our Configuration Information */ - ipcp_addci, /* Add our Configuration Information */ - ipcp_ackci, /* ACK our Configuration Information */ - ipcp_nakci, /* NAK our Configuration Information */ - ipcp_rejci, /* Reject our Configuration Information */ - ipcp_reqci, /* Request peer's Configuration Information */ - ipcp_up, /* Called when fsm reaches LS_OPENED state */ - ipcp_down, /* Called when fsm leaves LS_OPENED state */ - NULL, /* Called when we want the lower layer up */ - ipcp_finished, /* Called when we want the lower layer down */ - NULL, /* Called when Protocol-Reject received */ - NULL, /* Retransmission is necessary */ - NULL, /* Called to handle protocol-specific codes */ - "IPCP" /* String name of protocol */ -}; - -/* - * Protocol entry points from main code. - */ -static void ipcp_init (int); -static void ipcp_open (int); -static void ipcp_close (int, char *); -static void ipcp_lowerup (int); -static void ipcp_lowerdown (int); -static void ipcp_input (int, u_char *, int); -static void ipcp_protrej (int); - - -struct protent ipcp_protent = { - PPP_IPCP, - ipcp_init, - ipcp_input, - ipcp_protrej, - ipcp_lowerup, - ipcp_lowerdown, - ipcp_open, - ipcp_close, -#if PPP_ADDITIONAL_CALLBACKS - ipcp_printpkt, - NULL, -#endif /* PPP_ADDITIONAL_CALLBACKS */ - 1, - "IPCP", -#if PPP_ADDITIONAL_CALLBACKS - ip_check_options, - NULL, - ip_active_pkt -#endif /* PPP_ADDITIONAL_CALLBACKS */ -}; - -static void ipcp_clear_addrs (int); - -/* - * Lengths of configuration options. - */ -#define CILEN_VOID 2 -#define CILEN_COMPRESS 4 /* min length for compression protocol opt. */ -#define CILEN_VJ 6 /* length for RFC1332 Van-Jacobson opt. */ -#define CILEN_ADDR 6 /* new-style single address option */ -#define CILEN_ADDRS 10 /* old-style dual address option */ - - -#define CODENAME(x) ((x) == CONFACK ? "ACK" : \ - (x) == CONFNAK ? "NAK" : "REJ") - - -/* - * ipcp_init - Initialize IPCP. - */ -static void -ipcp_init(int unit) -{ - fsm *f = &ipcp_fsm[unit]; - ipcp_options *wo = &ipcp_wantoptions[unit]; - ipcp_options *ao = &ipcp_allowoptions[unit]; - - f->unit = unit; - f->protocol = PPP_IPCP; - f->callbacks = &ipcp_callbacks; - fsm_init(&ipcp_fsm[unit]); - - memset(wo, 0, sizeof(*wo)); - memset(ao, 0, sizeof(*ao)); - - wo->neg_addr = 1; - wo->ouraddr = 0; -#if VJ_SUPPORT - wo->neg_vj = 1; -#else /* VJ_SUPPORT */ - wo->neg_vj = 0; -#endif /* VJ_SUPPORT */ - wo->vj_protocol = IPCP_VJ_COMP; - wo->maxslotindex = MAX_SLOTS - 1; - wo->cflag = 0; - wo->default_route = 1; - - ao->neg_addr = 1; -#if VJ_SUPPORT - ao->neg_vj = 1; -#else /* VJ_SUPPORT */ - ao->neg_vj = 0; -#endif /* VJ_SUPPORT */ - ao->maxslotindex = MAX_SLOTS - 1; - ao->cflag = 1; - ao->default_route = 1; -} - - -/* - * ipcp_open - IPCP is allowed to come up. - */ -static void -ipcp_open(int unit) -{ - fsm_open(&ipcp_fsm[unit]); -} - - -/* - * ipcp_close - Take IPCP down. - */ -static void -ipcp_close(int unit, char *reason) -{ - fsm_close(&ipcp_fsm[unit], reason); -} - - -/* - * ipcp_lowerup - The lower layer is up. - */ -static void -ipcp_lowerup(int unit) -{ - fsm_lowerup(&ipcp_fsm[unit]); -} - - -/* - * ipcp_lowerdown - The lower layer is down. - */ -static void -ipcp_lowerdown(int unit) -{ - fsm_lowerdown(&ipcp_fsm[unit]); -} - - -/* - * ipcp_input - Input IPCP packet. - */ -static void -ipcp_input(int unit, u_char *p, int len) -{ - fsm_input(&ipcp_fsm[unit], p, len); -} - - -/* - * ipcp_protrej - A Protocol-Reject was received for IPCP. - * - * Pretend the lower layer went down, so we shut up. - */ -static void -ipcp_protrej(int unit) -{ - fsm_lowerdown(&ipcp_fsm[unit]); -} - - -/* - * ipcp_resetci - Reset our CI. - */ -static void -ipcp_resetci(fsm *f) -{ - ipcp_options *wo = &ipcp_wantoptions[f->unit]; - - wo->req_addr = wo->neg_addr && ipcp_allowoptions[f->unit].neg_addr; - if (wo->ouraddr == 0) { - wo->accept_local = 1; - } - if (wo->hisaddr == 0) { - wo->accept_remote = 1; - } - /* Request DNS addresses from the peer */ - wo->req_dns1 = ppp_settings.usepeerdns; - wo->req_dns2 = ppp_settings.usepeerdns; - ipcp_gotoptions[f->unit] = *wo; - cis_received[f->unit] = 0; -} - - -/* - * ipcp_cilen - Return length of our CI. - */ -static int -ipcp_cilen(fsm *f) -{ - ipcp_options *go = &ipcp_gotoptions[f->unit]; - ipcp_options *wo = &ipcp_wantoptions[f->unit]; - ipcp_options *ho = &ipcp_hisoptions[f->unit]; - -#define LENCIVJ(neg, old) (neg ? (old? CILEN_COMPRESS : CILEN_VJ) : 0) -#define LENCIADDR(neg, old) (neg ? (old? CILEN_ADDRS : CILEN_ADDR) : 0) -#define LENCIDNS(neg) (neg ? (CILEN_ADDR) : 0) - - /* - * First see if we want to change our options to the old - * forms because we have received old forms from the peer. - */ - if (wo->neg_addr && !go->neg_addr && !go->old_addrs) { - /* use the old style of address negotiation */ - go->neg_addr = 1; - go->old_addrs = 1; - } - if (wo->neg_vj && !go->neg_vj && !go->old_vj) { - /* try an older style of VJ negotiation */ - if (cis_received[f->unit] == 0) { - /* keep trying the new style until we see some CI from the peer */ - go->neg_vj = 1; - } else { - /* use the old style only if the peer did */ - if (ho->neg_vj && ho->old_vj) { - go->neg_vj = 1; - go->old_vj = 1; - go->vj_protocol = ho->vj_protocol; - } - } - } - - return (LENCIADDR(go->neg_addr, go->old_addrs) + - LENCIVJ(go->neg_vj, go->old_vj) + - LENCIDNS(go->req_dns1) + - LENCIDNS(go->req_dns2)); -} - - -/* - * ipcp_addci - Add our desired CIs to a packet. - */ -static void -ipcp_addci(fsm *f, u_char *ucp, int *lenp) -{ - ipcp_options *go = &ipcp_gotoptions[f->unit]; - int len = *lenp; - -#define ADDCIVJ(opt, neg, val, old, maxslotindex, cflag) \ - if (neg) { \ - int vjlen = old? CILEN_COMPRESS : CILEN_VJ; \ - if (len >= vjlen) { \ - PUTCHAR(opt, ucp); \ - PUTCHAR(vjlen, ucp); \ - PUTSHORT(val, ucp); \ - if (!old) { \ - PUTCHAR(maxslotindex, ucp); \ - PUTCHAR(cflag, ucp); \ - } \ - len -= vjlen; \ - } else { \ - neg = 0; \ - } \ - } - -#define ADDCIADDR(opt, neg, old, val1, val2) \ - if (neg) { \ - int addrlen = (old? CILEN_ADDRS: CILEN_ADDR); \ - if (len >= addrlen) { \ - u32_t l; \ - PUTCHAR(opt, ucp); \ - PUTCHAR(addrlen, ucp); \ - l = ntohl(val1); \ - PUTLONG(l, ucp); \ - if (old) { \ - l = ntohl(val2); \ - PUTLONG(l, ucp); \ - } \ - len -= addrlen; \ - } else { \ - neg = 0; \ - } \ - } - -#define ADDCIDNS(opt, neg, addr) \ - if (neg) { \ - if (len >= CILEN_ADDR) { \ - u32_t l; \ - PUTCHAR(opt, ucp); \ - PUTCHAR(CILEN_ADDR, ucp); \ - l = ntohl(addr); \ - PUTLONG(l, ucp); \ - len -= CILEN_ADDR; \ - } else { \ - neg = 0; \ - } \ - } - - ADDCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), go->neg_addr, - go->old_addrs, go->ouraddr, go->hisaddr); - - ADDCIVJ(CI_COMPRESSTYPE, go->neg_vj, go->vj_protocol, go->old_vj, - go->maxslotindex, go->cflag); - - ADDCIDNS(CI_MS_DNS1, go->req_dns1, go->dnsaddr[0]); - - ADDCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]); - - *lenp -= len; -} - - -/* - * ipcp_ackci - Ack our CIs. - * - * Returns: - * 0 - Ack was bad. - * 1 - Ack was good. - */ -static int -ipcp_ackci(fsm *f, u_char *p, int len) -{ - ipcp_options *go = &ipcp_gotoptions[f->unit]; - u_short cilen, citype, cishort; - u32_t cilong; - u_char cimaxslotindex, cicflag; - - /* - * CIs must be in exactly the same order that we sent... - * Check packet length and CI length at each step. - * If we find any deviations, then this packet is bad. - */ - -#define ACKCIVJ(opt, neg, val, old, maxslotindex, cflag) \ - if (neg) { \ - int vjlen = old? CILEN_COMPRESS : CILEN_VJ; \ - if ((len -= vjlen) < 0) { \ - goto bad; \ - } \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != vjlen || \ - citype != opt) { \ - goto bad; \ - } \ - GETSHORT(cishort, p); \ - if (cishort != val) { \ - goto bad; \ - } \ - if (!old) { \ - GETCHAR(cimaxslotindex, p); \ - if (cimaxslotindex != maxslotindex) { \ - goto bad; \ - } \ - GETCHAR(cicflag, p); \ - if (cicflag != cflag) { \ - goto bad; \ - } \ - } \ - } - -#define ACKCIADDR(opt, neg, old, val1, val2) \ - if (neg) { \ - int addrlen = (old? CILEN_ADDRS: CILEN_ADDR); \ - u32_t l; \ - if ((len -= addrlen) < 0) { \ - goto bad; \ - } \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != addrlen || \ - citype != opt) { \ - goto bad; \ - } \ - GETLONG(l, p); \ - cilong = htonl(l); \ - if (val1 != cilong) { \ - goto bad; \ - } \ - if (old) { \ - GETLONG(l, p); \ - cilong = htonl(l); \ - if (val2 != cilong) { \ - goto bad; \ - } \ - } \ - } - -#define ACKCIDNS(opt, neg, addr) \ - if (neg) { \ - u32_t l; \ - if ((len -= CILEN_ADDR) < 0) { \ - goto bad; \ - } \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != CILEN_ADDR || \ - citype != opt) { \ - goto bad; \ - } \ - GETLONG(l, p); \ - cilong = htonl(l); \ - if (addr != cilong) { \ - goto bad; \ - } \ - } - - ACKCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), go->neg_addr, - go->old_addrs, go->ouraddr, go->hisaddr); - - ACKCIVJ(CI_COMPRESSTYPE, go->neg_vj, go->vj_protocol, go->old_vj, - go->maxslotindex, go->cflag); - - ACKCIDNS(CI_MS_DNS1, go->req_dns1, go->dnsaddr[0]); - - ACKCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]); - - /* - * If there are any remaining CIs, then this packet is bad. - */ - if (len != 0) { - goto bad; - } - return (1); - -bad: - IPCPDEBUG(LOG_INFO, ("ipcp_ackci: received bad Ack!\n")); - return (0); -} - -/* - * ipcp_nakci - Peer has sent a NAK for some of our CIs. - * This should not modify any state if the Nak is bad - * or if IPCP is in the LS_OPENED state. - * - * Returns: - * 0 - Nak was bad. - * 1 - Nak was good. - */ -static int -ipcp_nakci(fsm *f, u_char *p, int len) -{ - ipcp_options *go = &ipcp_gotoptions[f->unit]; - u_char cimaxslotindex, cicflag; - u_char citype, cilen, *next; - u_short cishort; - u32_t ciaddr1, ciaddr2, l, cidnsaddr; - ipcp_options no; /* options we've seen Naks for */ - ipcp_options try; /* options to request next time */ - - BZERO(&no, sizeof(no)); - try = *go; - - /* - * Any Nak'd CIs must be in exactly the same order that we sent. - * Check packet length and CI length at each step. - * If we find any deviations, then this packet is bad. - */ -#define NAKCIADDR(opt, neg, old, code) \ - if (go->neg && \ - len >= (cilen = (old? CILEN_ADDRS: CILEN_ADDR)) && \ - p[1] == cilen && \ - p[0] == opt) { \ - len -= cilen; \ - INCPTR(2, p); \ - GETLONG(l, p); \ - ciaddr1 = htonl(l); \ - if (old) { \ - GETLONG(l, p); \ - ciaddr2 = htonl(l); \ - no.old_addrs = 1; \ - } else { \ - ciaddr2 = 0; \ - } \ - no.neg = 1; \ - code \ - } - -#define NAKCIVJ(opt, neg, code) \ - if (go->neg && \ - ((cilen = p[1]) == CILEN_COMPRESS || cilen == CILEN_VJ) && \ - len >= cilen && \ - p[0] == opt) { \ - len -= cilen; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - no.neg = 1; \ - code \ - } - -#define NAKCIDNS(opt, neg, code) \ - if (go->neg && \ - ((cilen = p[1]) == CILEN_ADDR) && \ - len >= cilen && \ - p[0] == opt) { \ - len -= cilen; \ - INCPTR(2, p); \ - GETLONG(l, p); \ - cidnsaddr = htonl(l); \ - no.neg = 1; \ - code \ - } - - /* - * Accept the peer's idea of {our,his} address, if different - * from our idea, only if the accept_{local,remote} flag is set. - */ - NAKCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), neg_addr, go->old_addrs, - if (go->accept_local && ciaddr1) { /* Do we know our address? */ - try.ouraddr = ciaddr1; - IPCPDEBUG(LOG_INFO, ("local IP address %s\n", - inet_ntoa(ciaddr1))); - } - if (go->accept_remote && ciaddr2) { /* Does he know his? */ - try.hisaddr = ciaddr2; - IPCPDEBUG(LOG_INFO, ("remote IP address %s\n", - inet_ntoa(ciaddr2))); - } - ); - - /* - * Accept the peer's value of maxslotindex provided that it - * is less than what we asked for. Turn off slot-ID compression - * if the peer wants. Send old-style compress-type option if - * the peer wants. - */ - NAKCIVJ(CI_COMPRESSTYPE, neg_vj, - if (cilen == CILEN_VJ) { - GETCHAR(cimaxslotindex, p); - GETCHAR(cicflag, p); - if (cishort == IPCP_VJ_COMP) { - try.old_vj = 0; - if (cimaxslotindex < go->maxslotindex) { - try.maxslotindex = cimaxslotindex; - } - if (!cicflag) { - try.cflag = 0; - } - } else { - try.neg_vj = 0; - } - } else { - if (cishort == IPCP_VJ_COMP || cishort == IPCP_VJ_COMP_OLD) { - try.old_vj = 1; - try.vj_protocol = cishort; - } else { - try.neg_vj = 0; - } - } - ); - - NAKCIDNS(CI_MS_DNS1, req_dns1, - try.dnsaddr[0] = cidnsaddr; - IPCPDEBUG(LOG_INFO, ("primary DNS address %s\n", inet_ntoa(cidnsaddr))); - ); - - NAKCIDNS(CI_MS_DNS2, req_dns2, - try.dnsaddr[1] = cidnsaddr; - IPCPDEBUG(LOG_INFO, ("secondary DNS address %s\n", inet_ntoa(cidnsaddr))); - ); - - /* - * There may be remaining CIs, if the peer is requesting negotiation - * on an option that we didn't include in our request packet. - * If they want to negotiate about IP addresses, we comply. - * If they want us to ask for compression, we refuse. - */ - while (len > CILEN_VOID) { - GETCHAR(citype, p); - GETCHAR(cilen, p); - if( (len -= cilen) < 0 ) { - goto bad; - } - next = p + cilen - 2; - - switch (citype) { - case CI_COMPRESSTYPE: - if (go->neg_vj || no.neg_vj || - (cilen != CILEN_VJ && cilen != CILEN_COMPRESS)) { - goto bad; - } - no.neg_vj = 1; - break; - case CI_ADDRS: - if ((go->neg_addr && go->old_addrs) || no.old_addrs - || cilen != CILEN_ADDRS) { - goto bad; - } - try.neg_addr = 1; - try.old_addrs = 1; - GETLONG(l, p); - ciaddr1 = htonl(l); - if (ciaddr1 && go->accept_local) { - try.ouraddr = ciaddr1; - } - GETLONG(l, p); - ciaddr2 = htonl(l); - if (ciaddr2 && go->accept_remote) { - try.hisaddr = ciaddr2; - } - no.old_addrs = 1; - break; - case CI_ADDR: - if (go->neg_addr || no.neg_addr || cilen != CILEN_ADDR) { - goto bad; - } - try.old_addrs = 0; - GETLONG(l, p); - ciaddr1 = htonl(l); - if (ciaddr1 && go->accept_local) { - try.ouraddr = ciaddr1; - } - if (try.ouraddr != 0) { - try.neg_addr = 1; - } - no.neg_addr = 1; - break; - } - p = next; - } - - /* If there is still anything left, this packet is bad. */ - if (len != 0) { - goto bad; - } - - /* - * OK, the Nak is good. Now we can update state. - */ - if (f->state != LS_OPENED) { - *go = try; - } - - return 1; - -bad: - IPCPDEBUG(LOG_INFO, ("ipcp_nakci: received bad Nak!\n")); - return 0; -} - - -/* - * ipcp_rejci - Reject some of our CIs. - */ -static int -ipcp_rejci(fsm *f, u_char *p, int len) -{ - ipcp_options *go = &ipcp_gotoptions[f->unit]; - u_char cimaxslotindex, ciflag, cilen; - u_short cishort; - u32_t cilong; - ipcp_options try; /* options to request next time */ - - try = *go; - /* - * Any Rejected CIs must be in exactly the same order that we sent. - * Check packet length and CI length at each step. - * If we find any deviations, then this packet is bad. - */ -#define REJCIADDR(opt, neg, old, val1, val2) \ - if (go->neg && \ - len >= (cilen = old? CILEN_ADDRS: CILEN_ADDR) && \ - p[1] == cilen && \ - p[0] == opt) { \ - u32_t l; \ - len -= cilen; \ - INCPTR(2, p); \ - GETLONG(l, p); \ - cilong = htonl(l); \ - /* Check rejected value. */ \ - if (cilong != val1) { \ - goto bad; \ - } \ - if (old) { \ - GETLONG(l, p); \ - cilong = htonl(l); \ - /* Check rejected value. */ \ - if (cilong != val2) { \ - goto bad; \ - } \ - } \ - try.neg = 0; \ - } - -#define REJCIVJ(opt, neg, val, old, maxslot, cflag) \ - if (go->neg && \ - p[1] == (old? CILEN_COMPRESS : CILEN_VJ) && \ - len >= p[1] && \ - p[0] == opt) { \ - len -= p[1]; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - /* Check rejected value. */ \ - if (cishort != val) { \ - goto bad; \ - } \ - if (!old) { \ - GETCHAR(cimaxslotindex, p); \ - if (cimaxslotindex != maxslot) { \ - goto bad; \ - } \ - GETCHAR(ciflag, p); \ - if (ciflag != cflag) { \ - goto bad; \ - } \ - } \ - try.neg = 0; \ - } - -#define REJCIDNS(opt, neg, dnsaddr) \ - if (go->neg && \ - ((cilen = p[1]) == CILEN_ADDR) && \ - len >= cilen && \ - p[0] == opt) { \ - u32_t l; \ - len -= cilen; \ - INCPTR(2, p); \ - GETLONG(l, p); \ - cilong = htonl(l); \ - /* Check rejected value. */ \ - if (cilong != dnsaddr) { \ - goto bad; \ - } \ - try.neg = 0; \ - } - - REJCIADDR((go->old_addrs? CI_ADDRS: CI_ADDR), neg_addr, - go->old_addrs, go->ouraddr, go->hisaddr); - - REJCIVJ(CI_COMPRESSTYPE, neg_vj, go->vj_protocol, go->old_vj, - go->maxslotindex, go->cflag); - - REJCIDNS(CI_MS_DNS1, req_dns1, go->dnsaddr[0]); - - REJCIDNS(CI_MS_DNS2, req_dns2, go->dnsaddr[1]); - - /* - * If there are any remaining CIs, then this packet is bad. - */ - if (len != 0) { - goto bad; - } - /* - * Now we can update state. - */ - if (f->state != LS_OPENED) { - *go = try; - } - return 1; - -bad: - IPCPDEBUG(LOG_INFO, ("ipcp_rejci: received bad Reject!\n")); - return 0; -} - - -/* - * ipcp_reqci - Check the peer's requested CIs and send appropriate response. - * - * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified - * appropriately. If reject_if_disagree is non-zero, doesn't return - * CONFNAK; returns CONFREJ if it can't return CONFACK. - */ -static int -ipcp_reqci(fsm *f, u_char *inp/* Requested CIs */,int *len/* Length of requested CIs */,int reject_if_disagree) -{ - ipcp_options *wo = &ipcp_wantoptions[f->unit]; - ipcp_options *ho = &ipcp_hisoptions[f->unit]; - ipcp_options *ao = &ipcp_allowoptions[f->unit]; -#ifdef OLD_CI_ADDRS - ipcp_options *go = &ipcp_gotoptions[f->unit]; -#endif - u_char *cip, *next; /* Pointer to current and next CIs */ - u_short cilen, citype; /* Parsed len, type */ - u_short cishort; /* Parsed short value */ - u32_t tl, ciaddr1; /* Parsed address values */ -#ifdef OLD_CI_ADDRS - u32_t ciaddr2; /* Parsed address values */ -#endif - int rc = CONFACK; /* Final packet return code */ - int orc; /* Individual option return code */ - u_char *p; /* Pointer to next char to parse */ - u_char *ucp = inp; /* Pointer to current output char */ - int l = *len; /* Length left */ - u_char maxslotindex, cflag; - int d; - - cis_received[f->unit] = 1; - - /* - * Reset all his options. - */ - BZERO(ho, sizeof(*ho)); - - /* - * Process all his options. - */ - next = inp; - while (l) { - orc = CONFACK; /* Assume success */ - cip = p = next; /* Remember begining of CI */ - if (l < 2 || /* Not enough data for CI header or */ - p[1] < 2 || /* CI length too small or */ - p[1] > l) { /* CI length too big? */ - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: bad CI length!\n")); - orc = CONFREJ; /* Reject bad CI */ - cilen = (u_short)l;/* Reject till end of packet */ - l = 0; /* Don't loop again */ - goto endswitch; - } - GETCHAR(citype, p); /* Parse CI type */ - GETCHAR(cilen, p); /* Parse CI length */ - l -= cilen; /* Adjust remaining length */ - next += cilen; /* Step to next CI */ - - switch (citype) { /* Check CI type */ -#ifdef OLD_CI_ADDRS /* Need to save space... */ - case CI_ADDRS: - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: received ADDRS\n")); - if (!ao->neg_addr || - cilen != CILEN_ADDRS) { /* Check CI length */ - orc = CONFREJ; /* Reject CI */ - break; - } - - /* - * If he has no address, or if we both have his address but - * disagree about it, then NAK it with our idea. - * In particular, if we don't know his address, but he does, - * then accept it. - */ - GETLONG(tl, p); /* Parse source address (his) */ - ciaddr1 = htonl(tl); - IPCPDEBUG(LOG_INFO, ("his addr %s\n", inet_ntoa(ciaddr1))); - if (ciaddr1 != wo->hisaddr - && (ciaddr1 == 0 || !wo->accept_remote)) { - orc = CONFNAK; - if (!reject_if_disagree) { - DECPTR(sizeof(u32_t), p); - tl = ntohl(wo->hisaddr); - PUTLONG(tl, p); - } - } else if (ciaddr1 == 0 && wo->hisaddr == 0) { - /* - * If neither we nor he knows his address, reject the option. - */ - orc = CONFREJ; - wo->req_addr = 0; /* don't NAK with 0.0.0.0 later */ - break; - } - - /* - * If he doesn't know our address, or if we both have our address - * but disagree about it, then NAK it with our idea. - */ - GETLONG(tl, p); /* Parse desination address (ours) */ - ciaddr2 = htonl(tl); - IPCPDEBUG(LOG_INFO, ("our addr %s\n", inet_ntoa(ciaddr2))); - if (ciaddr2 != wo->ouraddr) { - if (ciaddr2 == 0 || !wo->accept_local) { - orc = CONFNAK; - if (!reject_if_disagree) { - DECPTR(sizeof(u32_t), p); - tl = ntohl(wo->ouraddr); - PUTLONG(tl, p); - } - } else { - go->ouraddr = ciaddr2; /* accept peer's idea */ - } - } - - ho->neg_addr = 1; - ho->old_addrs = 1; - ho->hisaddr = ciaddr1; - ho->ouraddr = ciaddr2; - break; -#endif - - case CI_ADDR: - if (!ao->neg_addr) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Reject ADDR not allowed\n")); - orc = CONFREJ; /* Reject CI */ - break; - } else if (cilen != CILEN_ADDR) { /* Check CI length */ - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Reject ADDR bad len\n")); - orc = CONFREJ; /* Reject CI */ - break; - } - - /* - * If he has no address, or if we both have his address but - * disagree about it, then NAK it with our idea. - * In particular, if we don't know his address, but he does, - * then accept it. - */ - GETLONG(tl, p); /* Parse source address (his) */ - ciaddr1 = htonl(tl); - if (ciaddr1 != wo->hisaddr - && (ciaddr1 == 0 || !wo->accept_remote)) { - orc = CONFNAK; - if (!reject_if_disagree) { - DECPTR(sizeof(u32_t), p); - tl = ntohl(wo->hisaddr); - PUTLONG(tl, p); - } - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Nak ADDR %s\n", inet_ntoa(ciaddr1))); - } else if (ciaddr1 == 0 && wo->hisaddr == 0) { - /* - * Don't ACK an address of 0.0.0.0 - reject it instead. - */ - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Reject ADDR %s\n", inet_ntoa(ciaddr1))); - orc = CONFREJ; - wo->req_addr = 0; /* don't NAK with 0.0.0.0 later */ - break; - } - - ho->neg_addr = 1; - ho->hisaddr = ciaddr1; - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: ADDR %s\n", inet_ntoa(ciaddr1))); - break; - - case CI_MS_DNS1: - case CI_MS_DNS2: - /* Microsoft primary or secondary DNS request */ - d = citype == CI_MS_DNS2; - - /* If we do not have a DNS address then we cannot send it */ - if (ao->dnsaddr[d] == 0 || - cilen != CILEN_ADDR) { /* Check CI length */ - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Rejecting DNS%d Request\n", d+1)); - orc = CONFREJ; /* Reject CI */ - break; - } - GETLONG(tl, p); - if (htonl(tl) != ao->dnsaddr[d]) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Naking DNS%d Request %s\n", - d+1, inet_ntoa(tl))); - DECPTR(sizeof(u32_t), p); - tl = ntohl(ao->dnsaddr[d]); - PUTLONG(tl, p); - orc = CONFNAK; - } - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: received DNS%d Request\n", d+1)); - break; - - case CI_MS_WINS1: - case CI_MS_WINS2: - /* Microsoft primary or secondary WINS request */ - d = citype == CI_MS_WINS2; - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: received WINS%d Request\n", d+1)); - - /* If we do not have a DNS address then we cannot send it */ - if (ao->winsaddr[d] == 0 || - cilen != CILEN_ADDR) { /* Check CI length */ - orc = CONFREJ; /* Reject CI */ - break; - } - GETLONG(tl, p); - if (htonl(tl) != ao->winsaddr[d]) { - DECPTR(sizeof(u32_t), p); - tl = ntohl(ao->winsaddr[d]); - PUTLONG(tl, p); - orc = CONFNAK; - } - break; - - case CI_COMPRESSTYPE: - if (!ao->neg_vj) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Rejecting COMPRESSTYPE not allowed\n")); - orc = CONFREJ; - break; - } else if (cilen != CILEN_VJ && cilen != CILEN_COMPRESS) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Rejecting COMPRESSTYPE len=%d\n", cilen)); - orc = CONFREJ; - break; - } - GETSHORT(cishort, p); - - if (!(cishort == IPCP_VJ_COMP || - (cishort == IPCP_VJ_COMP_OLD && cilen == CILEN_COMPRESS))) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Rejecting COMPRESSTYPE %d\n", cishort)); - orc = CONFREJ; - break; - } - - ho->neg_vj = 1; - ho->vj_protocol = cishort; - if (cilen == CILEN_VJ) { - GETCHAR(maxslotindex, p); - if (maxslotindex > ao->maxslotindex) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Naking VJ max slot %d\n", maxslotindex)); - orc = CONFNAK; - if (!reject_if_disagree) { - DECPTR(1, p); - PUTCHAR(ao->maxslotindex, p); - } - } - GETCHAR(cflag, p); - if (cflag && !ao->cflag) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Naking VJ cflag %d\n", cflag)); - orc = CONFNAK; - if (!reject_if_disagree) { - DECPTR(1, p); - PUTCHAR(wo->cflag, p); - } - } - ho->maxslotindex = maxslotindex; - ho->cflag = cflag; - } else { - ho->old_vj = 1; - ho->maxslotindex = MAX_SLOTS - 1; - ho->cflag = 1; - } - IPCPDEBUG(LOG_INFO, ( - "ipcp_reqci: received COMPRESSTYPE p=%d old=%d maxslot=%d cflag=%d\n", - ho->vj_protocol, ho->old_vj, ho->maxslotindex, ho->cflag)); - break; - - default: - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Rejecting unknown CI type %d\n", citype)); - orc = CONFREJ; - break; - } - -endswitch: - if (orc == CONFACK && /* Good CI */ - rc != CONFACK) { /* but prior CI wasnt? */ - continue; /* Don't send this one */ - } - - if (orc == CONFNAK) { /* Nak this CI? */ - if (reject_if_disagree) { /* Getting fed up with sending NAKs? */ - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Rejecting too many naks\n")); - orc = CONFREJ; /* Get tough if so */ - } else { - if (rc == CONFREJ) { /* Rejecting prior CI? */ - continue; /* Don't send this one */ - } - if (rc == CONFACK) { /* Ack'd all prior CIs? */ - rc = CONFNAK; /* Not anymore... */ - ucp = inp; /* Backup */ - } - } - } - - if (orc == CONFREJ && /* Reject this CI */ - rc != CONFREJ) { /* but no prior ones? */ - rc = CONFREJ; - ucp = inp; /* Backup */ - } - - /* Need to move CI? */ - if (ucp != cip) { - BCOPY(cip, ucp, cilen); /* Move it */ - } - - /* Update output pointer */ - INCPTR(cilen, ucp); - } - - /* - * If we aren't rejecting this packet, and we want to negotiate - * their address, and they didn't send their address, then we - * send a NAK with a CI_ADDR option appended. We assume the - * input buffer is long enough that we can append the extra - * option safely. - */ - if (rc != CONFREJ && !ho->neg_addr && - wo->req_addr && !reject_if_disagree) { - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: Requesting peer address\n")); - if (rc == CONFACK) { - rc = CONFNAK; - ucp = inp; /* reset pointer */ - wo->req_addr = 0; /* don't ask again */ - } - PUTCHAR(CI_ADDR, ucp); - PUTCHAR(CILEN_ADDR, ucp); - tl = ntohl(wo->hisaddr); - PUTLONG(tl, ucp); - } - - *len = (int)(ucp - inp); /* Compute output length */ - IPCPDEBUG(LOG_INFO, ("ipcp_reqci: returning Configure-%s\n", CODENAME(rc))); - return (rc); /* Return final code */ -} - - -#if 0 -/* - * ip_check_options - check that any IP-related options are OK, - * and assign appropriate defaults. - */ -static void -ip_check_options(u_long localAddr) -{ - ipcp_options *wo = &ipcp_wantoptions[0]; - - /* - * Load our default IP address but allow the remote host to give us - * a new address. - */ - if (wo->ouraddr == 0 && !ppp_settings.disable_defaultip) { - wo->accept_local = 1; /* don't insist on this default value */ - wo->ouraddr = htonl(localAddr); - } -} -#endif - - -/* - * ipcp_up - IPCP has come UP. - * - * Configure the IP network interface appropriately and bring it up. - */ -static void -ipcp_up(fsm *f) -{ - u32_t mask; - ipcp_options *ho = &ipcp_hisoptions[f->unit]; - ipcp_options *go = &ipcp_gotoptions[f->unit]; - ipcp_options *wo = &ipcp_wantoptions[f->unit]; - - np_up(f->unit, PPP_IP); - IPCPDEBUG(LOG_INFO, ("ipcp: up\n")); - - /* - * We must have a non-zero IP address for both ends of the link. - */ - if (!ho->neg_addr) { - ho->hisaddr = wo->hisaddr; - } - - if (ho->hisaddr == 0) { - IPCPDEBUG(LOG_ERR, ("Could not determine remote IP address\n")); - ipcp_close(f->unit, "Could not determine remote IP address"); - return; - } - if (go->ouraddr == 0) { - IPCPDEBUG(LOG_ERR, ("Could not determine local IP address\n")); - ipcp_close(f->unit, "Could not determine local IP address"); - return; - } - - if (ppp_settings.usepeerdns && (go->dnsaddr[0] || go->dnsaddr[1])) { - /*pppGotDNSAddrs(go->dnsaddr[0], go->dnsaddr[1]);*/ - } - - /* - * Check that the peer is allowed to use the IP address it wants. - */ - if (!auth_ip_addr(f->unit, ho->hisaddr)) { - IPCPDEBUG(LOG_ERR, ("Peer is not authorized to use remote address %s\n", - inet_ntoa(ho->hisaddr))); - ipcp_close(f->unit, "Unauthorized remote IP address"); - return; - } - - /* set tcp compression */ - sifvjcomp(f->unit, ho->neg_vj, ho->cflag, ho->maxslotindex); - - /* - * Set IP addresses and (if specified) netmask. - */ - mask = GetMask(go->ouraddr); - - if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask, go->dnsaddr[0], go->dnsaddr[1])) { - IPCPDEBUG(LOG_WARNING, ("sifaddr failed\n")); - ipcp_close(f->unit, "Interface configuration failed"); - return; - } - - /* bring the interface up for IP */ - if (!sifup(f->unit)) { - IPCPDEBUG(LOG_WARNING, ("sifup failed\n")); - ipcp_close(f->unit, "Interface configuration failed"); - return; - } - - sifnpmode(f->unit, PPP_IP, NPMODE_PASS); - - /* assign a default route through the interface if required */ - if (ipcp_wantoptions[f->unit].default_route) { - if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr)) { - default_route_set[f->unit] = 1; - } - } - - IPCPDEBUG(LOG_NOTICE, ("local IP address %s\n", inet_ntoa(go->ouraddr))); - IPCPDEBUG(LOG_NOTICE, ("remote IP address %s\n", inet_ntoa(ho->hisaddr))); - if (go->dnsaddr[0]) { - IPCPDEBUG(LOG_NOTICE, ("primary DNS address %s\n", inet_ntoa(go->dnsaddr[0]))); - } - if (go->dnsaddr[1]) { - IPCPDEBUG(LOG_NOTICE, ("secondary DNS address %s\n", inet_ntoa(go->dnsaddr[1]))); - } -} - - -/* - * ipcp_down - IPCP has gone DOWN. - * - * Take the IP network interface down, clear its addresses - * and delete routes through it. - */ -static void -ipcp_down(fsm *f) -{ - IPCPDEBUG(LOG_INFO, ("ipcp: down\n")); - np_down(f->unit, PPP_IP); - sifvjcomp(f->unit, 0, 0, 0); - - sifdown(f->unit); - ipcp_clear_addrs(f->unit); -} - - -/* - * ipcp_clear_addrs() - clear the interface addresses, routes, etc. - */ -static void -ipcp_clear_addrs(int unit) -{ - u32_t ouraddr, hisaddr; - - ouraddr = ipcp_gotoptions[unit].ouraddr; - hisaddr = ipcp_hisoptions[unit].hisaddr; - if (default_route_set[unit]) { - cifdefaultroute(unit, ouraddr, hisaddr); - default_route_set[unit] = 0; - } - cifaddr(unit, ouraddr, hisaddr); -} - - -/* - * ipcp_finished - possibly shut down the lower layers. - */ -static void -ipcp_finished(fsm *f) -{ - np_finished(f->unit, PPP_IP); -} - -#if PPP_ADDITIONAL_CALLBACKS -static int -ipcp_printpkt(u_char *p, int plen, void (*printer) (void *, char *, ...), void *arg) -{ - LWIP_UNUSED_ARG(p); - LWIP_UNUSED_ARG(plen); - LWIP_UNUSED_ARG(printer); - LWIP_UNUSED_ARG(arg); - return 0; -} - -/* - * ip_active_pkt - see if this IP packet is worth bringing the link up for. - * We don't bring the link up for IP fragments or for TCP FIN packets - * with no data. - */ -#define IP_HDRLEN 20 /* bytes */ -#define IP_OFFMASK 0x1fff -#define IPPROTO_TCP 6 -#define TCP_HDRLEN 20 -#define TH_FIN 0x01 - -/* - * We use these macros because the IP header may be at an odd address, - * and some compilers might use word loads to get th_off or ip_hl. - */ - -#define net_short(x) (((x)[0] << 8) + (x)[1]) -#define get_iphl(x) (((unsigned char *)(x))[0] & 0xF) -#define get_ipoff(x) net_short((unsigned char *)(x) + 6) -#define get_ipproto(x) (((unsigned char *)(x))[9]) -#define get_tcpoff(x) (((unsigned char *)(x))[12] >> 4) -#define get_tcpflags(x) (((unsigned char *)(x))[13]) - -static int -ip_active_pkt(u_char *pkt, int len) -{ - u_char *tcp; - int hlen; - - len -= PPP_HDRLEN; - pkt += PPP_HDRLEN; - if (len < IP_HDRLEN) { - return 0; - } - if ((get_ipoff(pkt) & IP_OFFMASK) != 0) { - return 0; - } - if (get_ipproto(pkt) != IPPROTO_TCP) { - return 1; - } - hlen = get_iphl(pkt) * 4; - if (len < hlen + TCP_HDRLEN) { - return 0; - } - tcp = pkt + hlen; - if ((get_tcpflags(tcp) & TH_FIN) != 0 && len == hlen + get_tcpoff(tcp) * 4) { - return 0; - } - return 1; -} -#endif /* PPP_ADDITIONAL_CALLBACKS */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.h deleted file mode 100644 index de03f460e..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ipcp.h +++ /dev/null @@ -1,106 +0,0 @@ -/***************************************************************************** -* ipcp.h - PPP IP NCP: Internet Protocol Network Control Protocol header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-04 Guy Lancaster , Global Election Systems Inc. -* Original derived from BSD codes. -*****************************************************************************/ -/* - * ipcp.h - IP Control Protocol definitions. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: ipcp.h,v 1.4 2010/01/18 20:49:43 goldsimon Exp $ - */ - -#ifndef IPCP_H -#define IPCP_H - -/* - * Options. - */ -#define CI_ADDRS 1 /* IP Addresses */ -#define CI_COMPRESSTYPE 2 /* Compression Type */ -#define CI_ADDR 3 - -#define CI_MS_DNS1 129 /* Primary DNS value */ -#define CI_MS_WINS1 128 /* Primary WINS value */ -#define CI_MS_DNS2 131 /* Secondary DNS value */ -#define CI_MS_WINS2 130 /* Secondary WINS value */ - -#define IPCP_VJMODE_OLD 1 /* "old" mode (option # = 0x0037) */ -#define IPCP_VJMODE_RFC1172 2 /* "old-rfc"mode (option # = 0x002d) */ -#define IPCP_VJMODE_RFC1332 3 /* "new-rfc"mode (option # = 0x002d, */ - /* maxslot and slot number compression) */ - -#define IPCP_VJ_COMP 0x002d /* current value for VJ compression option */ -#define IPCP_VJ_COMP_OLD 0x0037 /* "old" (i.e, broken) value for VJ */ - /* compression option */ - -typedef struct ipcp_options { - u_int neg_addr : 1; /* Negotiate IP Address? */ - u_int old_addrs : 1; /* Use old (IP-Addresses) option? */ - u_int req_addr : 1; /* Ask peer to send IP address? */ - u_int default_route : 1; /* Assign default route through interface? */ - u_int proxy_arp : 1; /* Make proxy ARP entry for peer? */ - u_int neg_vj : 1; /* Van Jacobson Compression? */ - u_int old_vj : 1; /* use old (short) form of VJ option? */ - u_int accept_local : 1; /* accept peer's value for ouraddr */ - u_int accept_remote : 1; /* accept peer's value for hisaddr */ - u_int req_dns1 : 1; /* Ask peer to send primary DNS address? */ - u_int req_dns2 : 1; /* Ask peer to send secondary DNS address? */ - u_short vj_protocol; /* protocol value to use in VJ option */ - u_char maxslotindex; /* VJ slots - 1. */ - u_char cflag; /* VJ slot compression flag. */ - u32_t ouraddr, hisaddr; /* Addresses in NETWORK BYTE ORDER */ - u32_t dnsaddr[2]; /* Primary and secondary MS DNS entries */ - u32_t winsaddr[2]; /* Primary and secondary MS WINS entries */ -} ipcp_options; - -extern fsm ipcp_fsm[]; -extern ipcp_options ipcp_wantoptions[]; -extern ipcp_options ipcp_gotoptions[]; -extern ipcp_options ipcp_allowoptions[]; -extern ipcp_options ipcp_hisoptions[]; - -extern struct protent ipcp_protent; - -#endif /* IPCP_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.c deleted file mode 100644 index 21c83ac44..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.c +++ /dev/null @@ -1,2066 +0,0 @@ -/***************************************************************************** -* lcp.c - Network Link Control Protocol program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-01 Guy Lancaster , Global Election Systems Inc. -* Original. -*****************************************************************************/ - -/* - * lcp.c - PPP Link Control Protocol. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "fsm.h" -#include "chap.h" -#include "magic.h" -#include "auth.h" -#include "lcp.h" - -#include - -#if PPPOE_SUPPORT -#include "netif/ppp_oe.h" -#else -#define PPPOE_MAXMTU PPP_MAXMRU -#endif - -#if 0 /* UNUSED */ -/* - * LCP-related command-line options. - */ -int lcp_echo_interval = 0; /* Interval between LCP echo-requests */ -int lcp_echo_fails = 0; /* Tolerance to unanswered echo-requests */ -bool lax_recv = 0; /* accept control chars in asyncmap */ - -static int setescape (char **); - -static option_t lcp_option_list[] = { - /* LCP options */ - /* list stripped for simplicity */ - {NULL} -}; -#endif /* UNUSED */ - -/* options */ -LinkPhase lcp_phase[NUM_PPP]; /* Phase of link session (RFC 1661) */ -static u_int lcp_echo_interval = LCP_ECHOINTERVAL; /* Interval between LCP echo-requests */ -static u_int lcp_echo_fails = LCP_MAXECHOFAILS; /* Tolerance to unanswered echo-requests */ - -/* global vars */ -static fsm lcp_fsm[NUM_PPP]; /* LCP fsm structure (global)*/ -lcp_options lcp_wantoptions[NUM_PPP]; /* Options that we want to request */ -lcp_options lcp_gotoptions[NUM_PPP]; /* Options that peer ack'd */ -lcp_options lcp_allowoptions[NUM_PPP]; /* Options we allow peer to request */ -lcp_options lcp_hisoptions[NUM_PPP]; /* Options that we ack'd */ -ext_accm xmit_accm[NUM_PPP]; /* extended transmit ACCM */ - -static u32_t lcp_echos_pending = 0; /* Number of outstanding echo msgs */ -static u32_t lcp_echo_number = 0; /* ID number of next echo frame */ -static u32_t lcp_echo_timer_running = 0; /* TRUE if a timer is running */ - -/* @todo: do we really need such a large buffer? The typical 1500 bytes seem too much. */ -static u_char nak_buffer[PPP_MRU]; /* where we construct a nak packet */ - -/* - * Callbacks for fsm code. (CI = Configuration Information) - */ -static void lcp_resetci (fsm*); /* Reset our CI */ -static int lcp_cilen (fsm*); /* Return length of our CI */ -static void lcp_addci (fsm*, u_char*, int*); /* Add our CI to pkt */ -static int lcp_ackci (fsm*, u_char*, int); /* Peer ack'd our CI */ -static int lcp_nakci (fsm*, u_char*, int); /* Peer nak'd our CI */ -static int lcp_rejci (fsm*, u_char*, int); /* Peer rej'd our CI */ -static int lcp_reqci (fsm*, u_char*, int*, int); /* Rcv peer CI */ -static void lcp_up (fsm*); /* We're UP */ -static void lcp_down (fsm*); /* We're DOWN */ -static void lcp_starting (fsm*); /* We need lower layer up */ -static void lcp_finished (fsm*); /* We need lower layer down */ -static int lcp_extcode (fsm*, int, u_char, u_char*, int); -static void lcp_rprotrej (fsm*, u_char*, int); - -/* - * routines to send LCP echos to peer - */ - -static void lcp_echo_lowerup (int); -static void lcp_echo_lowerdown (int); -static void LcpEchoTimeout (void*); -static void lcp_received_echo_reply (fsm*, int, u_char*, int); -static void LcpSendEchoRequest (fsm*); -static void LcpLinkFailure (fsm*); -static void LcpEchoCheck (fsm*); - -static fsm_callbacks lcp_callbacks = { /* LCP callback routines */ - lcp_resetci, /* Reset our Configuration Information */ - lcp_cilen, /* Length of our Configuration Information */ - lcp_addci, /* Add our Configuration Information */ - lcp_ackci, /* ACK our Configuration Information */ - lcp_nakci, /* NAK our Configuration Information */ - lcp_rejci, /* Reject our Configuration Information */ - lcp_reqci, /* Request peer's Configuration Information */ - lcp_up, /* Called when fsm reaches LS_OPENED state */ - lcp_down, /* Called when fsm leaves LS_OPENED state */ - lcp_starting, /* Called when we want the lower layer up */ - lcp_finished, /* Called when we want the lower layer down */ - NULL, /* Called when Protocol-Reject received */ - NULL, /* Retransmission is necessary */ - lcp_extcode, /* Called to handle LCP-specific codes */ - "LCP" /* String name of protocol */ -}; - -/* - * Protocol entry points. - * Some of these are called directly. - */ - -static void lcp_input (int, u_char *, int); -static void lcp_protrej (int); - -struct protent lcp_protent = { - PPP_LCP, - lcp_init, - lcp_input, - lcp_protrej, - lcp_lowerup, - lcp_lowerdown, - lcp_open, - lcp_close, -#if PPP_ADDITIONAL_CALLBACKS - lcp_printpkt, - NULL, -#endif /* PPP_ADDITIONAL_CALLBACKS */ - 1, - "LCP", -#if PPP_ADDITIONAL_CALLBACKS - NULL, - NULL, - NULL -#endif /* PPP_ADDITIONAL_CALLBACKS */ -}; - -int lcp_loopbackfail = DEFLOOPBACKFAIL; - -/* - * Length of each type of configuration option (in octets) - */ -#define CILEN_VOID 2 -#define CILEN_CHAR 3 -#define CILEN_SHORT 4 /* CILEN_VOID + sizeof(short) */ -#define CILEN_CHAP 5 /* CILEN_VOID + sizeof(short) + 1 */ -#define CILEN_LONG 6 /* CILEN_VOID + sizeof(long) */ -#define CILEN_LQR 8 /* CILEN_VOID + sizeof(short) + sizeof(long) */ -#define CILEN_CBCP 3 - -#define CODENAME(x) ((x) == CONFACK ? "ACK" : (x) == CONFNAK ? "NAK" : "REJ") - -#if 0 /* UNUSED */ -/* - * setescape - add chars to the set we escape on transmission. - */ -static int -setescape(argv) - char **argv; -{ - int n, ret; - char *p, *endp; - - p = *argv; - ret = 1; - while (*p) { - n = strtol(p, &endp, 16); - if (p == endp) { - option_error("escape parameter contains invalid hex number '%s'", p); - return 0; - } - p = endp; - if (n < 0 || n == 0x5E || n > 0xFF) { - option_error("can't escape character 0x%x", n); - ret = 0; - } else - xmit_accm[0][n >> 5] |= 1 << (n & 0x1F); - while (*p == ',' || *p == ' ') - ++p; - } - return ret; -} -#endif /* UNUSED */ - -/* - * lcp_init - Initialize LCP. - */ -void -lcp_init(int unit) -{ - fsm *f = &lcp_fsm[unit]; - lcp_options *wo = &lcp_wantoptions[unit]; - lcp_options *ao = &lcp_allowoptions[unit]; - - f->unit = unit; - f->protocol = PPP_LCP; - f->callbacks = &lcp_callbacks; - - fsm_init(f); - - wo->passive = 0; - wo->silent = 0; - wo->restart = 0; /* Set to 1 in kernels or multi-line implementations */ - wo->neg_mru = 1; - wo->mru = PPP_DEFMRU; - wo->neg_asyncmap = 1; - wo->asyncmap = 0x00000000l; /* Assume don't need to escape any ctl chars. */ - wo->neg_chap = 0; /* Set to 1 on server */ - wo->neg_upap = 0; /* Set to 1 on server */ - wo->chap_mdtype = CHAP_DIGEST_MD5; - wo->neg_magicnumber = 1; - wo->neg_pcompression = 1; - wo->neg_accompression = 1; - wo->neg_lqr = 0; /* no LQR implementation yet */ - wo->neg_cbcp = 0; - - ao->neg_mru = 1; - ao->mru = PPP_MAXMRU; - ao->neg_asyncmap = 1; - ao->asyncmap = 0x00000000l; /* Assume don't need to escape any ctl chars. */ - ao->neg_chap = (CHAP_SUPPORT != 0); - ao->chap_mdtype = CHAP_DIGEST_MD5; - ao->neg_upap = (PAP_SUPPORT != 0); - ao->neg_magicnumber = 1; - ao->neg_pcompression = 1; - ao->neg_accompression = 1; - ao->neg_lqr = 0; /* no LQR implementation yet */ - ao->neg_cbcp = (CBCP_SUPPORT != 0); - - /* - * Set transmit escape for the flag and escape characters plus anything - * set for the allowable options. - */ - memset(xmit_accm[unit], 0, sizeof(xmit_accm[0])); - xmit_accm[unit][15] = 0x60; - xmit_accm[unit][0] = (u_char)((ao->asyncmap & 0xFF)); - xmit_accm[unit][1] = (u_char)((ao->asyncmap >> 8) & 0xFF); - xmit_accm[unit][2] = (u_char)((ao->asyncmap >> 16) & 0xFF); - xmit_accm[unit][3] = (u_char)((ao->asyncmap >> 24) & 0xFF); - LCPDEBUG(LOG_INFO, ("lcp_init: xmit_accm=%X %X %X %X\n", - xmit_accm[unit][0], - xmit_accm[unit][1], - xmit_accm[unit][2], - xmit_accm[unit][3])); - - lcp_phase[unit] = PHASE_INITIALIZE; -} - - -/* - * lcp_open - LCP is allowed to come up. - */ -void -lcp_open(int unit) -{ - fsm *f = &lcp_fsm[unit]; - lcp_options *wo = &lcp_wantoptions[unit]; - - f->flags = 0; - if (wo->passive) { - f->flags |= OPT_PASSIVE; - } - if (wo->silent) { - f->flags |= OPT_SILENT; - } - fsm_open(f); - - lcp_phase[unit] = PHASE_ESTABLISH; -} - - -/* - * lcp_close - Take LCP down. - */ -void -lcp_close(int unit, char *reason) -{ - fsm *f = &lcp_fsm[unit]; - - if (lcp_phase[unit] != PHASE_DEAD) { - lcp_phase[unit] = PHASE_TERMINATE; - } - if (f->state == LS_STOPPED && f->flags & (OPT_PASSIVE|OPT_SILENT)) { - /* - * This action is not strictly according to the FSM in RFC1548, - * but it does mean that the program terminates if you do an - * lcp_close() in passive/silent mode when a connection hasn't - * been established. - */ - f->state = LS_CLOSED; - lcp_finished(f); - } else { - fsm_close(f, reason); - } -} - - -/* - * lcp_lowerup - The lower layer is up. - */ -void -lcp_lowerup(int unit) -{ - lcp_options *wo = &lcp_wantoptions[unit]; - - /* - * Don't use A/C or protocol compression on transmission, - * but accept A/C and protocol compressed packets - * if we are going to ask for A/C and protocol compression. - */ - ppp_set_xaccm(unit, &xmit_accm[unit]); - ppp_send_config(unit, PPP_MRU, 0xffffffffl, 0, 0); - ppp_recv_config(unit, PPP_MRU, 0x00000000l, - wo->neg_pcompression, wo->neg_accompression); - peer_mru[unit] = PPP_MRU; - lcp_allowoptions[unit].asyncmap = (u_long)xmit_accm[unit][0] - | ((u_long)xmit_accm[unit][1] << 8) - | ((u_long)xmit_accm[unit][2] << 16) - | ((u_long)xmit_accm[unit][3] << 24); - LCPDEBUG(LOG_INFO, ("lcp_lowerup: asyncmap=%X %X %X %X\n", - xmit_accm[unit][3], - xmit_accm[unit][2], - xmit_accm[unit][1], - xmit_accm[unit][0])); - - fsm_lowerup(&lcp_fsm[unit]); -} - - -/* - * lcp_lowerdown - The lower layer is down. - */ -void -lcp_lowerdown(int unit) -{ - fsm_lowerdown(&lcp_fsm[unit]); -} - - -/* - * lcp_input - Input LCP packet. - */ -static void -lcp_input(int unit, u_char *p, int len) -{ - fsm *f = &lcp_fsm[unit]; - - fsm_input(f, p, len); -} - - -/* - * lcp_extcode - Handle a LCP-specific code. - */ -static int -lcp_extcode(fsm *f, int code, u_char id, u_char *inp, int len) -{ - u_char *magp; - - switch( code ){ - case PROTREJ: - lcp_rprotrej(f, inp, len); - break; - - case ECHOREQ: - if (f->state != LS_OPENED) { - break; - } - LCPDEBUG(LOG_INFO, ("lcp: Echo-Request, Rcvd id %d\n", id)); - magp = inp; - PUTLONG(lcp_gotoptions[f->unit].magicnumber, magp); - fsm_sdata(f, ECHOREP, id, inp, len); - break; - - case ECHOREP: - lcp_received_echo_reply(f, id, inp, len); - break; - - case DISCREQ: - break; - - default: - return 0; - } - return 1; -} - - -/* - * lcp_rprotrej - Receive an Protocol-Reject. - * - * Figure out which protocol is rejected and inform it. - */ -static void -lcp_rprotrej(fsm *f, u_char *inp, int len) -{ - int i; - struct protent *protp; - u_short prot; - - if (len < (int)sizeof (u_short)) { - LCPDEBUG(LOG_INFO, ("lcp_rprotrej: Rcvd short Protocol-Reject packet!\n")); - return; - } - - GETSHORT(prot, inp); - - LCPDEBUG(LOG_INFO, ("lcp_rprotrej: Rcvd Protocol-Reject packet for %x!\n", prot)); - - /* - * Protocol-Reject packets received in any state other than the LCP - * LS_OPENED state SHOULD be silently discarded. - */ - if( f->state != LS_OPENED ) { - LCPDEBUG(LOG_INFO, ("Protocol-Reject discarded: LCP in state %d\n", f->state)); - return; - } - - /* - * Upcall the proper Protocol-Reject routine. - */ - for (i = 0; (protp = ppp_protocols[i]) != NULL; ++i) { - if (protp->protocol == prot && protp->enabled_flag) { - (*protp->protrej)(f->unit); - return; - } - } - - LCPDEBUG(LOG_WARNING, ("Protocol-Reject for unsupported protocol 0x%x\n", prot)); -} - - -/* - * lcp_protrej - A Protocol-Reject was received. - */ -static void -lcp_protrej(int unit) -{ - LWIP_UNUSED_ARG(unit); - /* - * Can't reject LCP! - */ - LCPDEBUG(LOG_WARNING, ("lcp_protrej: Received Protocol-Reject for LCP!\n")); - fsm_protreject(&lcp_fsm[unit]); -} - - -/* - * lcp_sprotrej - Send a Protocol-Reject for some protocol. - */ -void -lcp_sprotrej(int unit, u_char *p, int len) -{ - /* - * Send back the protocol and the information field of the - * rejected packet. We only get here if LCP is in the LS_OPENED state. - */ - - fsm_sdata(&lcp_fsm[unit], PROTREJ, ++lcp_fsm[unit].id, p, len); -} - - -/* - * lcp_resetci - Reset our CI. - */ -static void -lcp_resetci(fsm *f) -{ - lcp_wantoptions[f->unit].magicnumber = magic(); - lcp_wantoptions[f->unit].numloops = 0; - lcp_gotoptions[f->unit] = lcp_wantoptions[f->unit]; - peer_mru[f->unit] = PPP_MRU; - auth_reset(f->unit); -} - - -/* - * lcp_cilen - Return length of our CI. - */ -static int -lcp_cilen(fsm *f) -{ - lcp_options *go = &lcp_gotoptions[f->unit]; - -#define LENCIVOID(neg) ((neg) ? CILEN_VOID : 0) -#define LENCICHAP(neg) ((neg) ? CILEN_CHAP : 0) -#define LENCISHORT(neg) ((neg) ? CILEN_SHORT : 0) -#define LENCILONG(neg) ((neg) ? CILEN_LONG : 0) -#define LENCILQR(neg) ((neg) ? CILEN_LQR: 0) -#define LENCICBCP(neg) ((neg) ? CILEN_CBCP: 0) - /* - * NB: we only ask for one of CHAP and UPAP, even if we will - * accept either. - */ - return (LENCISHORT(go->neg_mru && go->mru != PPP_DEFMRU) + - LENCILONG(go->neg_asyncmap && go->asyncmap != 0xFFFFFFFFl) + - LENCICHAP(go->neg_chap) + - LENCISHORT(!go->neg_chap && go->neg_upap) + - LENCILQR(go->neg_lqr) + - LENCICBCP(go->neg_cbcp) + - LENCILONG(go->neg_magicnumber) + - LENCIVOID(go->neg_pcompression) + - LENCIVOID(go->neg_accompression)); -} - - -/* - * lcp_addci - Add our desired CIs to a packet. - */ -static void -lcp_addci(fsm *f, u_char *ucp, int *lenp) -{ - lcp_options *go = &lcp_gotoptions[f->unit]; - u_char *start_ucp = ucp; - -#define ADDCIVOID(opt, neg) \ - if (neg) { \ - LCPDEBUG(LOG_INFO, ("lcp_addci: opt=%d\n", opt)); \ - PUTCHAR(opt, ucp); \ - PUTCHAR(CILEN_VOID, ucp); \ - } -#define ADDCISHORT(opt, neg, val) \ - if (neg) { \ - LCPDEBUG(LOG_INFO, ("lcp_addci: INT opt=%d %X\n", opt, val)); \ - PUTCHAR(opt, ucp); \ - PUTCHAR(CILEN_SHORT, ucp); \ - PUTSHORT(val, ucp); \ - } -#define ADDCICHAP(opt, neg, val, digest) \ - if (neg) { \ - LCPDEBUG(LOG_INFO, ("lcp_addci: CHAP opt=%d %X\n", opt, val)); \ - PUTCHAR(opt, ucp); \ - PUTCHAR(CILEN_CHAP, ucp); \ - PUTSHORT(val, ucp); \ - PUTCHAR(digest, ucp); \ - } -#define ADDCILONG(opt, neg, val) \ - if (neg) { \ - LCPDEBUG(LOG_INFO, ("lcp_addci: L opt=%d %lX\n", opt, val)); \ - PUTCHAR(opt, ucp); \ - PUTCHAR(CILEN_LONG, ucp); \ - PUTLONG(val, ucp); \ - } -#define ADDCILQR(opt, neg, val) \ - if (neg) { \ - LCPDEBUG(LOG_INFO, ("lcp_addci: LQR opt=%d %lX\n", opt, val)); \ - PUTCHAR(opt, ucp); \ - PUTCHAR(CILEN_LQR, ucp); \ - PUTSHORT(PPP_LQR, ucp); \ - PUTLONG(val, ucp); \ - } -#define ADDCICHAR(opt, neg, val) \ - if (neg) { \ - LCPDEBUG(LOG_INFO, ("lcp_addci: CHAR opt=%d %X '%z'\n", opt, val, val)); \ - PUTCHAR(opt, ucp); \ - PUTCHAR(CILEN_CHAR, ucp); \ - PUTCHAR(val, ucp); \ - } - - ADDCISHORT(CI_MRU, go->neg_mru && go->mru != PPP_DEFMRU, go->mru); - ADDCILONG(CI_ASYNCMAP, go->neg_asyncmap && go->asyncmap != 0xFFFFFFFFl, go->asyncmap); - ADDCICHAP(CI_AUTHTYPE, go->neg_chap, PPP_CHAP, go->chap_mdtype); - ADDCISHORT(CI_AUTHTYPE, !go->neg_chap && go->neg_upap, PPP_PAP); - ADDCILQR(CI_QUALITY, go->neg_lqr, go->lqr_period); - ADDCICHAR(CI_CALLBACK, go->neg_cbcp, CBCP_OPT); - ADDCILONG(CI_MAGICNUMBER, go->neg_magicnumber, go->magicnumber); - ADDCIVOID(CI_PCOMPRESSION, go->neg_pcompression); - ADDCIVOID(CI_ACCOMPRESSION, go->neg_accompression); - - if (ucp - start_ucp != *lenp) { - /* this should never happen, because peer_mtu should be 1500 */ - LCPDEBUG(LOG_ERR, ("Bug in lcp_addci: wrong length\n")); - } -} - - -/* - * lcp_ackci - Ack our CIs. - * This should not modify any state if the Ack is bad. - * - * Returns: - * 0 - Ack was bad. - * 1 - Ack was good. - */ -static int -lcp_ackci(fsm *f, u_char *p, int len) -{ - lcp_options *go = &lcp_gotoptions[f->unit]; - u_char cilen, citype, cichar; - u_short cishort; - u32_t cilong; - - /* - * CIs must be in exactly the same order that we sent. - * Check packet length and CI length at each step. - * If we find any deviations, then this packet is bad. - */ -#define ACKCIVOID(opt, neg) \ - if (neg) { \ - if ((len -= CILEN_VOID) < 0) \ - goto bad; \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != CILEN_VOID || citype != opt) \ - goto bad; \ - } -#define ACKCISHORT(opt, neg, val) \ - if (neg) { \ - if ((len -= CILEN_SHORT) < 0) \ - goto bad; \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != CILEN_SHORT || citype != opt) \ - goto bad; \ - GETSHORT(cishort, p); \ - if (cishort != val) \ - goto bad; \ - } -#define ACKCICHAR(opt, neg, val) \ - if (neg) { \ - if ((len -= CILEN_CHAR) < 0) \ - goto bad; \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != CILEN_CHAR || citype != opt) \ - goto bad; \ - GETCHAR(cichar, p); \ - if (cichar != val) \ - goto bad; \ - } -#define ACKCICHAP(opt, neg, val, digest) \ - if (neg) { \ - if ((len -= CILEN_CHAP) < 0) \ - goto bad; \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != CILEN_CHAP || citype != opt) \ - goto bad; \ - GETSHORT(cishort, p); \ - if (cishort != val) \ - goto bad; \ - GETCHAR(cichar, p); \ - if (cichar != digest) \ - goto bad; \ - } -#define ACKCILONG(opt, neg, val) \ - if (neg) { \ - if ((len -= CILEN_LONG) < 0) \ - goto bad; \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != CILEN_LONG || citype != opt) \ - goto bad; \ - GETLONG(cilong, p); \ - if (cilong != val) \ - goto bad; \ - } -#define ACKCILQR(opt, neg, val) \ - if (neg) { \ - if ((len -= CILEN_LQR) < 0) \ - goto bad; \ - GETCHAR(citype, p); \ - GETCHAR(cilen, p); \ - if (cilen != CILEN_LQR || citype != opt) \ - goto bad; \ - GETSHORT(cishort, p); \ - if (cishort != PPP_LQR) \ - goto bad; \ - GETLONG(cilong, p); \ - if (cilong != val) \ - goto bad; \ - } - - ACKCISHORT(CI_MRU, go->neg_mru && go->mru != PPP_DEFMRU, go->mru); - ACKCILONG(CI_ASYNCMAP, go->neg_asyncmap && go->asyncmap != 0xFFFFFFFFl, go->asyncmap); - ACKCICHAP(CI_AUTHTYPE, go->neg_chap, PPP_CHAP, go->chap_mdtype); - ACKCISHORT(CI_AUTHTYPE, !go->neg_chap && go->neg_upap, PPP_PAP); - ACKCILQR(CI_QUALITY, go->neg_lqr, go->lqr_period); - ACKCICHAR(CI_CALLBACK, go->neg_cbcp, CBCP_OPT); - ACKCILONG(CI_MAGICNUMBER, go->neg_magicnumber, go->magicnumber); - ACKCIVOID(CI_PCOMPRESSION, go->neg_pcompression); - ACKCIVOID(CI_ACCOMPRESSION, go->neg_accompression); - - /* - * If there are any remaining CIs, then this packet is bad. - */ - if (len != 0) { - goto bad; - } - LCPDEBUG(LOG_INFO, ("lcp_acki: Ack\n")); - return (1); -bad: - LCPDEBUG(LOG_WARNING, ("lcp_acki: received bad Ack!\n")); - return (0); -} - - -/* - * lcp_nakci - Peer has sent a NAK for some of our CIs. - * This should not modify any state if the Nak is bad - * or if LCP is in the LS_OPENED state. - * - * Returns: - * 0 - Nak was bad. - * 1 - Nak was good. - */ -static int -lcp_nakci(fsm *f, u_char *p, int len) -{ - lcp_options *go = &lcp_gotoptions[f->unit]; - lcp_options *wo = &lcp_wantoptions[f->unit]; - u_char citype, cichar, *next; - u_short cishort; - u32_t cilong; - lcp_options no; /* options we've seen Naks for */ - lcp_options try; /* options to request next time */ - int looped_back = 0; - int cilen; - - BZERO(&no, sizeof(no)); - try = *go; - - /* - * Any Nak'd CIs must be in exactly the same order that we sent. - * Check packet length and CI length at each step. - * If we find any deviations, then this packet is bad. - */ -#define NAKCIVOID(opt, neg, code) \ - if (go->neg && \ - len >= CILEN_VOID && \ - p[1] == CILEN_VOID && \ - p[0] == opt) { \ - len -= CILEN_VOID; \ - INCPTR(CILEN_VOID, p); \ - no.neg = 1; \ - code \ - } -#define NAKCICHAP(opt, neg, code) \ - if (go->neg && \ - len >= CILEN_CHAP && \ - p[1] == CILEN_CHAP && \ - p[0] == opt) { \ - len -= CILEN_CHAP; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - GETCHAR(cichar, p); \ - no.neg = 1; \ - code \ - } -#define NAKCICHAR(opt, neg, code) \ - if (go->neg && \ - len >= CILEN_CHAR && \ - p[1] == CILEN_CHAR && \ - p[0] == opt) { \ - len -= CILEN_CHAR; \ - INCPTR(2, p); \ - GETCHAR(cichar, p); \ - no.neg = 1; \ - code \ - } -#define NAKCISHORT(opt, neg, code) \ - if (go->neg && \ - len >= CILEN_SHORT && \ - p[1] == CILEN_SHORT && \ - p[0] == opt) { \ - len -= CILEN_SHORT; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - no.neg = 1; \ - code \ - } -#define NAKCILONG(opt, neg, code) \ - if (go->neg && \ - len >= CILEN_LONG && \ - p[1] == CILEN_LONG && \ - p[0] == opt) { \ - len -= CILEN_LONG; \ - INCPTR(2, p); \ - GETLONG(cilong, p); \ - no.neg = 1; \ - code \ - } -#define NAKCILQR(opt, neg, code) \ - if (go->neg && \ - len >= CILEN_LQR && \ - p[1] == CILEN_LQR && \ - p[0] == opt) { \ - len -= CILEN_LQR; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - GETLONG(cilong, p); \ - no.neg = 1; \ - code \ - } - - /* - * We don't care if they want to send us smaller packets than - * we want. Therefore, accept any MRU less than what we asked for, - * but then ignore the new value when setting the MRU in the kernel. - * If they send us a bigger MRU than what we asked, accept it, up to - * the limit of the default MRU we'd get if we didn't negotiate. - */ - if (go->neg_mru && go->mru != PPP_DEFMRU) { - NAKCISHORT(CI_MRU, neg_mru, - if (cishort <= wo->mru || cishort < PPP_DEFMRU) { - try.mru = cishort; - } - ); - } - - /* - * Add any characters they want to our (receive-side) asyncmap. - */ - if (go->neg_asyncmap && go->asyncmap != 0xFFFFFFFFl) { - NAKCILONG(CI_ASYNCMAP, neg_asyncmap, - try.asyncmap = go->asyncmap | cilong; - ); - } - - /* - * If they've nak'd our authentication-protocol, check whether - * they are proposing a different protocol, or a different - * hash algorithm for CHAP. - */ - if ((go->neg_chap || go->neg_upap) - && len >= CILEN_SHORT - && p[0] == CI_AUTHTYPE && p[1] >= CILEN_SHORT && p[1] <= len) { - cilen = p[1]; - len -= cilen; - no.neg_chap = go->neg_chap; - no.neg_upap = go->neg_upap; - INCPTR(2, p); - GETSHORT(cishort, p); - if (cishort == PPP_PAP && cilen == CILEN_SHORT) { - /* - * If we were asking for CHAP, they obviously don't want to do it. - * If we weren't asking for CHAP, then we were asking for PAP, - * in which case this Nak is bad. - */ - if (!go->neg_chap) { - goto bad; - } - try.neg_chap = 0; - - } else if (cishort == PPP_CHAP && cilen == CILEN_CHAP) { - GETCHAR(cichar, p); - if (go->neg_chap) { - /* - * We were asking for CHAP/MD5; they must want a different - * algorithm. If they can't do MD5, we'll have to stop - * asking for CHAP. - */ - if (cichar != go->chap_mdtype) { - try.neg_chap = 0; - } - } else { - /* - * Stop asking for PAP if we were asking for it. - */ - try.neg_upap = 0; - } - - } else { - /* - * We don't recognize what they're suggesting. - * Stop asking for what we were asking for. - */ - if (go->neg_chap) { - try.neg_chap = 0; - } else { - try.neg_upap = 0; - } - p += cilen - CILEN_SHORT; - } - } - - /* - * If they can't cope with our link quality protocol, we'll have - * to stop asking for LQR. We haven't got any other protocol. - * If they Nak the reporting period, take their value XXX ? - */ - NAKCILQR(CI_QUALITY, neg_lqr, - if (cishort != PPP_LQR) { - try.neg_lqr = 0; - } else { - try.lqr_period = cilong; - } - ); - - /* - * Only implementing CBCP...not the rest of the callback options - */ - NAKCICHAR(CI_CALLBACK, neg_cbcp, - try.neg_cbcp = 0; - ); - - /* - * Check for a looped-back line. - */ - NAKCILONG(CI_MAGICNUMBER, neg_magicnumber, - try.magicnumber = magic(); - looped_back = 1; - ); - - /* - * Peer shouldn't send Nak for protocol compression or - * address/control compression requests; they should send - * a Reject instead. If they send a Nak, treat it as a Reject. - */ - NAKCIVOID(CI_PCOMPRESSION, neg_pcompression, - try.neg_pcompression = 0; - ); - NAKCIVOID(CI_ACCOMPRESSION, neg_accompression, - try.neg_accompression = 0; - ); - - /* - * There may be remaining CIs, if the peer is requesting negotiation - * on an option that we didn't include in our request packet. - * If we see an option that we requested, or one we've already seen - * in this packet, then this packet is bad. - * If we wanted to respond by starting to negotiate on the requested - * option(s), we could, but we don't, because except for the - * authentication type and quality protocol, if we are not negotiating - * an option, it is because we were told not to. - * For the authentication type, the Nak from the peer means - * `let me authenticate myself with you' which is a bit pointless. - * For the quality protocol, the Nak means `ask me to send you quality - * reports', but if we didn't ask for them, we don't want them. - * An option we don't recognize represents the peer asking to - * negotiate some option we don't support, so ignore it. - */ - while (len > CILEN_VOID) { - GETCHAR(citype, p); - GETCHAR(cilen, p); - if (cilen < CILEN_VOID || (len -= cilen) < 0) { - goto bad; - } - next = p + cilen - 2; - - switch (citype) { - case CI_MRU: - if ((go->neg_mru && go->mru != PPP_DEFMRU) - || no.neg_mru || cilen != CILEN_SHORT) { - goto bad; - } - GETSHORT(cishort, p); - if (cishort < PPP_DEFMRU) { - try.mru = cishort; - } - break; - case CI_ASYNCMAP: - if ((go->neg_asyncmap && go->asyncmap != 0xFFFFFFFFl) - || no.neg_asyncmap || cilen != CILEN_LONG) { - goto bad; - } - break; - case CI_AUTHTYPE: - if (go->neg_chap || no.neg_chap || go->neg_upap || no.neg_upap) { - goto bad; - } - break; - case CI_MAGICNUMBER: - if (go->neg_magicnumber || no.neg_magicnumber || - cilen != CILEN_LONG) { - goto bad; - } - break; - case CI_PCOMPRESSION: - if (go->neg_pcompression || no.neg_pcompression - || cilen != CILEN_VOID) { - goto bad; - } - break; - case CI_ACCOMPRESSION: - if (go->neg_accompression || no.neg_accompression - || cilen != CILEN_VOID) { - goto bad; - } - break; - case CI_QUALITY: - if (go->neg_lqr || no.neg_lqr || cilen != CILEN_LQR) { - goto bad; - } - break; - } - p = next; - } - - /* If there is still anything left, this packet is bad. */ - if (len != 0) { - goto bad; - } - - /* - * OK, the Nak is good. Now we can update state. - */ - if (f->state != LS_OPENED) { - if (looped_back) { - if (++try.numloops >= lcp_loopbackfail) { - LCPDEBUG(LOG_NOTICE, ("Serial line is looped back.\n")); - lcp_close(f->unit, "Loopback detected"); - } - } else { - try.numloops = 0; - } - *go = try; - } - - return 1; - -bad: - LCPDEBUG(LOG_WARNING, ("lcp_nakci: received bad Nak!\n")); - return 0; -} - - -/* - * lcp_rejci - Peer has Rejected some of our CIs. - * This should not modify any state if the Reject is bad - * or if LCP is in the LS_OPENED state. - * - * Returns: - * 0 - Reject was bad. - * 1 - Reject was good. - */ -static int -lcp_rejci(fsm *f, u_char *p, int len) -{ - lcp_options *go = &lcp_gotoptions[f->unit]; - u_char cichar; - u_short cishort; - u32_t cilong; - lcp_options try; /* options to request next time */ - - try = *go; - - /* - * Any Rejected CIs must be in exactly the same order that we sent. - * Check packet length and CI length at each step. - * If we find any deviations, then this packet is bad. - */ -#define REJCIVOID(opt, neg) \ - if (go->neg && \ - len >= CILEN_VOID && \ - p[1] == CILEN_VOID && \ - p[0] == opt) { \ - len -= CILEN_VOID; \ - INCPTR(CILEN_VOID, p); \ - try.neg = 0; \ - LCPDEBUG(LOG_INFO, ("lcp_rejci: void opt %d rejected\n", opt)); \ - } -#define REJCISHORT(opt, neg, val) \ - if (go->neg && \ - len >= CILEN_SHORT && \ - p[1] == CILEN_SHORT && \ - p[0] == opt) { \ - len -= CILEN_SHORT; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - /* Check rejected value. */ \ - if (cishort != val) { \ - goto bad; \ - } \ - try.neg = 0; \ - LCPDEBUG(LOG_INFO, ("lcp_rejci: short opt %d rejected\n", opt)); \ - } -#define REJCICHAP(opt, neg, val, digest) \ - if (go->neg && \ - len >= CILEN_CHAP && \ - p[1] == CILEN_CHAP && \ - p[0] == opt) { \ - len -= CILEN_CHAP; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - GETCHAR(cichar, p); \ - /* Check rejected value. */ \ - if (cishort != val || cichar != digest) { \ - goto bad; \ - } \ - try.neg = 0; \ - try.neg_upap = 0; \ - LCPDEBUG(LOG_INFO, ("lcp_rejci: chap opt %d rejected\n", opt)); \ - } -#define REJCILONG(opt, neg, val) \ - if (go->neg && \ - len >= CILEN_LONG && \ - p[1] == CILEN_LONG && \ - p[0] == opt) { \ - len -= CILEN_LONG; \ - INCPTR(2, p); \ - GETLONG(cilong, p); \ - /* Check rejected value. */ \ - if (cilong != val) { \ - goto bad; \ - } \ - try.neg = 0; \ - LCPDEBUG(LOG_INFO, ("lcp_rejci: long opt %d rejected\n", opt)); \ - } -#define REJCILQR(opt, neg, val) \ - if (go->neg && \ - len >= CILEN_LQR && \ - p[1] == CILEN_LQR && \ - p[0] == opt) { \ - len -= CILEN_LQR; \ - INCPTR(2, p); \ - GETSHORT(cishort, p); \ - GETLONG(cilong, p); \ - /* Check rejected value. */ \ - if (cishort != PPP_LQR || cilong != val) { \ - goto bad; \ - } \ - try.neg = 0; \ - LCPDEBUG(LOG_INFO, ("lcp_rejci: LQR opt %d rejected\n", opt)); \ - } -#define REJCICBCP(opt, neg, val) \ - if (go->neg && \ - len >= CILEN_CBCP && \ - p[1] == CILEN_CBCP && \ - p[0] == opt) { \ - len -= CILEN_CBCP; \ - INCPTR(2, p); \ - GETCHAR(cichar, p); \ - /* Check rejected value. */ \ - if (cichar != val) { \ - goto bad; \ - } \ - try.neg = 0; \ - LCPDEBUG(LOG_INFO, ("lcp_rejci: Callback opt %d rejected\n", opt)); \ - } - - REJCISHORT(CI_MRU, neg_mru, go->mru); - REJCILONG(CI_ASYNCMAP, neg_asyncmap, go->asyncmap); - REJCICHAP(CI_AUTHTYPE, neg_chap, PPP_CHAP, go->chap_mdtype); - if (!go->neg_chap) { - REJCISHORT(CI_AUTHTYPE, neg_upap, PPP_PAP); - } - REJCILQR(CI_QUALITY, neg_lqr, go->lqr_period); - REJCICBCP(CI_CALLBACK, neg_cbcp, CBCP_OPT); - REJCILONG(CI_MAGICNUMBER, neg_magicnumber, go->magicnumber); - REJCIVOID(CI_PCOMPRESSION, neg_pcompression); - REJCIVOID(CI_ACCOMPRESSION, neg_accompression); - - /* - * If there are any remaining CIs, then this packet is bad. - */ - if (len != 0) { - goto bad; - } - /* - * Now we can update state. - */ - if (f->state != LS_OPENED) { - *go = try; - } - return 1; - -bad: - LCPDEBUG(LOG_WARNING, ("lcp_rejci: received bad Reject!\n")); - return 0; -} - - -/* - * lcp_reqci - Check the peer's requested CIs and send appropriate response. - * - * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified - * appropriately. If reject_if_disagree is non-zero, doesn't return - * CONFNAK; returns CONFREJ if it can't return CONFACK. - */ -static int -lcp_reqci(fsm *f, - u_char *inp, /* Requested CIs */ - int *lenp, /* Length of requested CIs */ - int reject_if_disagree) -{ - lcp_options *go = &lcp_gotoptions[f->unit]; - lcp_options *ho = &lcp_hisoptions[f->unit]; - lcp_options *ao = &lcp_allowoptions[f->unit]; - u_char *cip, *next; /* Pointer to current and next CIs */ - int cilen, citype; /* Parsed len, type */ - u_char cichar; /* Parsed char value */ - u_short cishort; /* Parsed short value */ - u32_t cilong; /* Parse long value */ - int rc = CONFACK; /* Final packet return code */ - int orc; /* Individual option return code */ - u_char *p; /* Pointer to next char to parse */ - u_char *rejp; /* Pointer to next char in reject frame */ - u_char *nakp; /* Pointer to next char in Nak frame */ - int l = *lenp; /* Length left */ -#if TRACELCP > 0 - char traceBuf[80]; - size_t traceNdx = 0; -#endif - - /* - * Reset all his options. - */ - BZERO(ho, sizeof(*ho)); - - /* - * Process all his options. - */ - next = inp; - nakp = nak_buffer; - rejp = inp; - while (l) { - orc = CONFACK; /* Assume success */ - cip = p = next; /* Remember begining of CI */ - if (l < 2 || /* Not enough data for CI header or */ - p[1] < 2 || /* CI length too small or */ - p[1] > l) { /* CI length too big? */ - LCPDEBUG(LOG_WARNING, ("lcp_reqci: bad CI length!\n")); - orc = CONFREJ; /* Reject bad CI */ - cilen = l; /* Reject till end of packet */ - l = 0; /* Don't loop again */ - citype = 0; - goto endswitch; - } - GETCHAR(citype, p); /* Parse CI type */ - GETCHAR(cilen, p); /* Parse CI length */ - l -= cilen; /* Adjust remaining length */ - next += cilen; /* Step to next CI */ - - switch (citype) { /* Check CI type */ - case CI_MRU: - if (!ao->neg_mru) { /* Allow option? */ - LCPDEBUG(LOG_INFO, ("lcp_reqci: Reject MRU - not allowed\n")); - orc = CONFREJ; /* Reject CI */ - break; - } else if (cilen != CILEN_SHORT) { /* Check CI length */ - LCPDEBUG(LOG_INFO, ("lcp_reqci: Reject MRU - bad length\n")); - orc = CONFREJ; /* Reject CI */ - break; - } - GETSHORT(cishort, p); /* Parse MRU */ - - /* - * He must be able to receive at least our minimum. - * No need to check a maximum. If he sends a large number, - * we'll just ignore it. - */ - if (cishort < PPP_MINMRU) { - LCPDEBUG(LOG_INFO, ("lcp_reqci: Nak - MRU too small\n")); - orc = CONFNAK; /* Nak CI */ - PUTCHAR(CI_MRU, nakp); - PUTCHAR(CILEN_SHORT, nakp); - PUTSHORT(PPP_MINMRU, nakp); /* Give him a hint */ - break; - } - ho->neg_mru = 1; /* Remember he sent MRU */ - ho->mru = cishort; /* And remember value */ -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " MRU %d", cishort); - traceNdx = strlen(traceBuf); -#endif - break; - - case CI_ASYNCMAP: - if (!ao->neg_asyncmap) { - LCPDEBUG(LOG_INFO, ("lcp_reqci: Reject ASYNCMAP not allowed\n")); - orc = CONFREJ; - break; - } else if (cilen != CILEN_LONG) { - LCPDEBUG(LOG_INFO, ("lcp_reqci: Reject ASYNCMAP bad length\n")); - orc = CONFREJ; - break; - } - GETLONG(cilong, p); - - /* - * Asyncmap must have set at least the bits - * which are set in lcp_allowoptions[unit].asyncmap. - */ - if ((ao->asyncmap & ~cilong) != 0) { - LCPDEBUG(LOG_INFO, ("lcp_reqci: Nak ASYNCMAP %lX missing %lX\n", - cilong, ao->asyncmap)); - orc = CONFNAK; - PUTCHAR(CI_ASYNCMAP, nakp); - PUTCHAR(CILEN_LONG, nakp); - PUTLONG(ao->asyncmap | cilong, nakp); - break; - } - ho->neg_asyncmap = 1; - ho->asyncmap = cilong; -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " ASYNCMAP=%lX", cilong); - traceNdx = strlen(traceBuf); -#endif - break; - - case CI_AUTHTYPE: - if (cilen < CILEN_SHORT) { - LCPDEBUG(LOG_INFO, ("lcp_reqci: Reject AUTHTYPE missing arg\n")); - orc = CONFREJ; - break; - } else if (!(ao->neg_upap || ao->neg_chap)) { - /* - * Reject the option if we're not willing to authenticate. - */ - LCPDEBUG(LOG_INFO, ("lcp_reqci: Reject AUTHTYPE not allowed\n")); - orc = CONFREJ; - break; - } - GETSHORT(cishort, p); - - /* - * Authtype must be UPAP or CHAP. - * - * Note: if both ao->neg_upap and ao->neg_chap are set, - * and the peer sends a Configure-Request with two - * authenticate-protocol requests, one for CHAP and one - * for UPAP, then we will reject the second request. - * Whether we end up doing CHAP or UPAP depends then on - * the ordering of the CIs in the peer's Configure-Request. - */ - - if (cishort == PPP_PAP) { - if (ho->neg_chap) { /* we've already accepted CHAP */ - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Reject AUTHTYPE PAP already accepted\n")); - orc = CONFREJ; - break; - } else if (cilen != CILEN_SHORT) { - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Reject AUTHTYPE PAP bad len\n")); - orc = CONFREJ; - break; - } - if (!ao->neg_upap) { /* we don't want to do PAP */ - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Nak AUTHTYPE PAP not allowed\n")); - orc = CONFNAK; /* NAK it and suggest CHAP */ - PUTCHAR(CI_AUTHTYPE, nakp); - PUTCHAR(CILEN_CHAP, nakp); - PUTSHORT(PPP_CHAP, nakp); - PUTCHAR(ao->chap_mdtype, nakp); - break; - } - ho->neg_upap = 1; -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " PAP (%X)", cishort); - traceNdx = strlen(traceBuf); -#endif - break; - } - if (cishort == PPP_CHAP) { - if (ho->neg_upap) { /* we've already accepted PAP */ - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Reject AUTHTYPE CHAP accepted PAP\n")); - orc = CONFREJ; - break; - } else if (cilen != CILEN_CHAP) { - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Reject AUTHTYPE CHAP bad len\n")); - orc = CONFREJ; - break; - } - if (!ao->neg_chap) { /* we don't want to do CHAP */ - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Nak AUTHTYPE CHAP not allowed\n")); - orc = CONFNAK; /* NAK it and suggest PAP */ - PUTCHAR(CI_AUTHTYPE, nakp); - PUTCHAR(CILEN_SHORT, nakp); - PUTSHORT(PPP_PAP, nakp); - break; - } - GETCHAR(cichar, p); /* get digest type*/ - if (cichar != CHAP_DIGEST_MD5 -#if MSCHAP_SUPPORT - && cichar != CHAP_MICROSOFT -#endif - ) { - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Nak AUTHTYPE CHAP digest=%d\n", (int)cichar)); - orc = CONFNAK; - PUTCHAR(CI_AUTHTYPE, nakp); - PUTCHAR(CILEN_CHAP, nakp); - PUTSHORT(PPP_CHAP, nakp); - PUTCHAR(ao->chap_mdtype, nakp); - break; - } -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " CHAP %X,%d", cishort, (int)cichar); - traceNdx = strlen(traceBuf); -#endif - ho->chap_mdtype = cichar; /* save md type */ - ho->neg_chap = 1; - break; - } - - /* - * We don't recognize the protocol they're asking for. - * Nak it with something we're willing to do. - * (At this point we know ao->neg_upap || ao->neg_chap.) - */ - orc = CONFNAK; - PUTCHAR(CI_AUTHTYPE, nakp); - if (ao->neg_chap) { - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Nak AUTHTYPE %d req CHAP\n", cishort)); - PUTCHAR(CILEN_CHAP, nakp); - PUTSHORT(PPP_CHAP, nakp); - PUTCHAR(ao->chap_mdtype, nakp); - } else { - LCPDEBUG(LOG_WARNING, ("lcp_reqci: Nak AUTHTYPE %d req PAP\n", cishort)); - PUTCHAR(CILEN_SHORT, nakp); - PUTSHORT(PPP_PAP, nakp); - } - break; - - case CI_QUALITY: - GETSHORT(cishort, p); - GETLONG(cilong, p); -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " QUALITY (%x %x)", cishort, (unsigned int) cilong); - traceNdx = strlen(traceBuf); -#endif - - if (!ao->neg_lqr || - cilen != CILEN_LQR) { - orc = CONFREJ; - break; - } - - /* - * Check the protocol and the reporting period. - * XXX When should we Nak this, and what with? - */ - if (cishort != PPP_LQR) { - orc = CONFNAK; - PUTCHAR(CI_QUALITY, nakp); - PUTCHAR(CILEN_LQR, nakp); - PUTSHORT(PPP_LQR, nakp); - PUTLONG(ao->lqr_period, nakp); - break; - } - break; - - case CI_MAGICNUMBER: - if (!(ao->neg_magicnumber || go->neg_magicnumber) || - cilen != CILEN_LONG) { - orc = CONFREJ; - break; - } - GETLONG(cilong, p); -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " MAGICNUMBER (%lX)", cilong); - traceNdx = strlen(traceBuf); -#endif - - /* - * He must have a different magic number. - */ - if (go->neg_magicnumber && - cilong == go->magicnumber) { - cilong = magic(); /* Don't put magic() inside macro! */ - orc = CONFNAK; - PUTCHAR(CI_MAGICNUMBER, nakp); - PUTCHAR(CILEN_LONG, nakp); - PUTLONG(cilong, nakp); - break; - } - ho->neg_magicnumber = 1; - ho->magicnumber = cilong; - break; - - - case CI_PCOMPRESSION: -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " PCOMPRESSION"); - traceNdx = strlen(traceBuf); -#endif - if (!ao->neg_pcompression || - cilen != CILEN_VOID) { - orc = CONFREJ; - break; - } - ho->neg_pcompression = 1; - break; - - case CI_ACCOMPRESSION: -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " ACCOMPRESSION"); - traceNdx = strlen(traceBuf); -#endif - if (!ao->neg_accompression || - cilen != CILEN_VOID) { - orc = CONFREJ; - break; - } - ho->neg_accompression = 1; - break; - - case CI_MRRU: -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " CI_MRRU"); - traceNdx = strlen(traceBuf); -#endif - orc = CONFREJ; - break; - - case CI_SSNHF: -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " CI_SSNHF"); - traceNdx = strlen(traceBuf); -#endif - orc = CONFREJ; - break; - - case CI_EPDISC: -#if TRACELCP > 0 - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " CI_EPDISC"); - traceNdx = strlen(traceBuf); -#endif - orc = CONFREJ; - break; - - default: -#if TRACELCP - snprintf(&traceBuf[traceNdx], sizeof(traceBuf), " unknown %d", citype); - traceNdx = strlen(traceBuf); -#endif - orc = CONFREJ; - break; - } - - endswitch: -#if TRACELCP - if (traceNdx >= 80 - 32) { - LCPDEBUG(LOG_INFO, ("lcp_reqci: rcvd%s\n", traceBuf)); - traceNdx = 0; - } -#endif - if (orc == CONFACK && /* Good CI */ - rc != CONFACK) { /* but prior CI wasnt? */ - continue; /* Don't send this one */ - } - - if (orc == CONFNAK) { /* Nak this CI? */ - if (reject_if_disagree /* Getting fed up with sending NAKs? */ - && citype != CI_MAGICNUMBER) { - orc = CONFREJ; /* Get tough if so */ - } else { - if (rc == CONFREJ) { /* Rejecting prior CI? */ - continue; /* Don't send this one */ - } - rc = CONFNAK; - } - } - if (orc == CONFREJ) { /* Reject this CI */ - rc = CONFREJ; - if (cip != rejp) { /* Need to move rejected CI? */ - BCOPY(cip, rejp, cilen); /* Move it */ - } - INCPTR(cilen, rejp); /* Update output pointer */ - } - } - - /* - * If we wanted to send additional NAKs (for unsent CIs), the - * code would go here. The extra NAKs would go at *nakp. - * At present there are no cases where we want to ask the - * peer to negotiate an option. - */ - - switch (rc) { - case CONFACK: - *lenp = (int)(next - inp); - break; - case CONFNAK: - /* - * Copy the Nak'd options from the nak_buffer to the caller's buffer. - */ - *lenp = (int)(nakp - nak_buffer); - BCOPY(nak_buffer, inp, *lenp); - break; - case CONFREJ: - *lenp = (int)(rejp - inp); - break; - } - -#if TRACELCP > 0 - if (traceNdx > 0) { - LCPDEBUG(LOG_INFO, ("lcp_reqci: %s\n", traceBuf)); - } -#endif - LCPDEBUG(LOG_INFO, ("lcp_reqci: returning CONF%s.\n", CODENAME(rc))); - return (rc); /* Return final code */ -} - - -/* - * lcp_up - LCP has come UP. - */ -static void -lcp_up(fsm *f) -{ - lcp_options *wo = &lcp_wantoptions[f->unit]; - lcp_options *ho = &lcp_hisoptions[f->unit]; - lcp_options *go = &lcp_gotoptions[f->unit]; - lcp_options *ao = &lcp_allowoptions[f->unit]; - - if (!go->neg_magicnumber) { - go->magicnumber = 0; - } - if (!ho->neg_magicnumber) { - ho->magicnumber = 0; - } - - /* - * Set our MTU to the smaller of the MTU we wanted and - * the MRU our peer wanted. If we negotiated an MRU, - * set our MRU to the larger of value we wanted and - * the value we got in the negotiation. - */ - ppp_send_config(f->unit, LWIP_MIN(ao->mru, (ho->neg_mru? ho->mru: PPP_MRU)), - (ho->neg_asyncmap? ho->asyncmap: 0xffffffffl), - ho->neg_pcompression, ho->neg_accompression); - /* - * If the asyncmap hasn't been negotiated, we really should - * set the receive asyncmap to ffffffff, but we set it to 0 - * for backwards contemptibility. - */ - ppp_recv_config(f->unit, (go->neg_mru? LWIP_MAX(wo->mru, go->mru): PPP_MRU), - (go->neg_asyncmap? go->asyncmap: 0x00000000), - go->neg_pcompression, go->neg_accompression); - - if (ho->neg_mru) { - peer_mru[f->unit] = ho->mru; - } - - lcp_echo_lowerup(f->unit); /* Enable echo messages */ - - link_established(f->unit); /* The link is up; authenticate now */ -} - - -/* - * lcp_down - LCP has gone DOWN. - * - * Alert other protocols. - */ -static void -lcp_down(fsm *f) -{ - lcp_options *go = &lcp_gotoptions[f->unit]; - - lcp_echo_lowerdown(f->unit); - - link_down(f->unit); - - ppp_send_config(f->unit, PPP_MRU, 0xffffffffl, 0, 0); - ppp_recv_config(f->unit, PPP_MRU, - (go->neg_asyncmap? go->asyncmap: 0x00000000), - go->neg_pcompression, go->neg_accompression); - peer_mru[f->unit] = PPP_MRU; -} - - -/* - * lcp_starting - LCP needs the lower layer up. - */ -static void -lcp_starting(fsm *f) -{ - link_required(f->unit); /* lwip: currently does nothing */ -} - - -/* - * lcp_finished - LCP has finished with the lower layer. - */ -static void -lcp_finished(fsm *f) -{ - link_terminated(f->unit); /* we are finished with the link */ -} - - -#if PPP_ADDITIONAL_CALLBACKS -/* - * print_string - print a readable representation of a string using - * printer. - */ -static void -print_string( char *p, int len, void (*printer) (void *, char *, ...), void *arg) -{ - int c; - - printer(arg, "\""); - for (; len > 0; --len) { - c = *p++; - if (' ' <= c && c <= '~') { - if (c == '\\' || c == '"') { - printer(arg, "\\"); - } - printer(arg, "%c", c); - } else { - switch (c) { - case '\n': - printer(arg, "\\n"); - break; - case '\r': - printer(arg, "\\r"); - break; - case '\t': - printer(arg, "\\t"); - break; - default: - printer(arg, "\\%.3o", c); - } - } - } - printer(arg, "\""); -} - - -/* - * lcp_printpkt - print the contents of an LCP packet. - */ -static char *lcp_codenames[] = { - "ConfReq", "ConfAck", "ConfNak", "ConfRej", - "TermReq", "TermAck", "CodeRej", "ProtRej", - "EchoReq", "EchoRep", "DiscReq" -}; - -static int -lcp_printpkt( u_char *p, int plen, void (*printer) (void *, char *, ...), void *arg) -{ - int code, id, len, olen; - u_char *pstart, *optend; - u_short cishort; - u32_t cilong; - - if (plen < HEADERLEN) { - return 0; - } - pstart = p; - GETCHAR(code, p); - GETCHAR(id, p); - GETSHORT(len, p); - if (len < HEADERLEN || len > plen) { - return 0; - } - - if (code >= 1 && code <= sizeof(lcp_codenames) / sizeof(char *)) { - printer(arg, " %s", lcp_codenames[code-1]); - } else { - printer(arg, " code=0x%x", code); - } - printer(arg, " id=0x%x", id); - len -= HEADERLEN; - switch (code) { - case CONFREQ: - case CONFACK: - case CONFNAK: - case CONFREJ: - /* print option list */ - while (len >= 2) { - GETCHAR(code, p); - GETCHAR(olen, p); - p -= 2; - if (olen < 2 || olen > len) { - break; - } - printer(arg, " <"); - len -= olen; - optend = p + olen; - switch (code) { - case CI_MRU: - if (olen == CILEN_SHORT) { - p += 2; - GETSHORT(cishort, p); - printer(arg, "mru %d", cishort); - } - break; - case CI_ASYNCMAP: - if (olen == CILEN_LONG) { - p += 2; - GETLONG(cilong, p); - printer(arg, "asyncmap 0x%lx", cilong); - } - break; - case CI_AUTHTYPE: - if (olen >= CILEN_SHORT) { - p += 2; - printer(arg, "auth "); - GETSHORT(cishort, p); - switch (cishort) { - case PPP_PAP: - printer(arg, "pap"); - break; - case PPP_CHAP: - printer(arg, "chap"); - break; - default: - printer(arg, "0x%x", cishort); - } - } - break; - case CI_QUALITY: - if (olen >= CILEN_SHORT) { - p += 2; - printer(arg, "quality "); - GETSHORT(cishort, p); - switch (cishort) { - case PPP_LQR: - printer(arg, "lqr"); - break; - default: - printer(arg, "0x%x", cishort); - } - } - break; - case CI_CALLBACK: - if (olen >= CILEN_CHAR) { - p += 2; - printer(arg, "callback "); - GETSHORT(cishort, p); - switch (cishort) { - case CBCP_OPT: - printer(arg, "CBCP"); - break; - default: - printer(arg, "0x%x", cishort); - } - } - break; - case CI_MAGICNUMBER: - if (olen == CILEN_LONG) { - p += 2; - GETLONG(cilong, p); - printer(arg, "magic 0x%x", cilong); - } - break; - case CI_PCOMPRESSION: - if (olen == CILEN_VOID) { - p += 2; - printer(arg, "pcomp"); - } - break; - case CI_ACCOMPRESSION: - if (olen == CILEN_VOID) { - p += 2; - printer(arg, "accomp"); - } - break; - } - while (p < optend) { - GETCHAR(code, p); - printer(arg, " %.2x", code); - } - printer(arg, ">"); - } - break; - - case TERMACK: - case TERMREQ: - if (len > 0 && *p >= ' ' && *p < 0x7f) { - printer(arg, " "); - print_string((char*)p, len, printer, arg); - p += len; - len = 0; - } - break; - - case ECHOREQ: - case ECHOREP: - case DISCREQ: - if (len >= 4) { - GETLONG(cilong, p); - printer(arg, " magic=0x%x", cilong); - p += 4; - len -= 4; - } - break; - } - - /* print the rest of the bytes in the packet */ - for (; len > 0; --len) { - GETCHAR(code, p); - printer(arg, " %.2x", code); - } - - return (int)(p - pstart); -} -#endif /* PPP_ADDITIONAL_CALLBACKS */ - -/* - * Time to shut down the link because there is nothing out there. - */ -static void -LcpLinkFailure (fsm *f) -{ - if (f->state == LS_OPENED) { - LCPDEBUG(LOG_INFO, ("No response to %d echo-requests\n", lcp_echos_pending)); - LCPDEBUG(LOG_NOTICE, ("Serial link appears to be disconnected.\n")); - lcp_close(f->unit, "Peer not responding"); - } -} - -/* - * Timer expired for the LCP echo requests from this process. - */ -static void -LcpEchoCheck (fsm *f) -{ - LcpSendEchoRequest (f); - - /* - * Start the timer for the next interval. - */ - LWIP_ASSERT("lcp_echo_timer_running == 0", lcp_echo_timer_running == 0); - - TIMEOUT (LcpEchoTimeout, f, lcp_echo_interval); - lcp_echo_timer_running = 1; -} - -/* - * LcpEchoTimeout - Timer expired on the LCP echo - */ -static void -LcpEchoTimeout (void *arg) -{ - if (lcp_echo_timer_running != 0) { - lcp_echo_timer_running = 0; - LcpEchoCheck ((fsm *) arg); - } -} - -/* - * LcpEchoReply - LCP has received a reply to the echo - */ -static void -lcp_received_echo_reply (fsm *f, int id, u_char *inp, int len) -{ - u32_t magic; - - LWIP_UNUSED_ARG(id); - - /* Check the magic number - don't count replies from ourselves. */ - if (len < 4) { - LCPDEBUG(LOG_WARNING, ("lcp: received short Echo-Reply, length %d\n", len)); - return; - } - GETLONG(magic, inp); - if (lcp_gotoptions[f->unit].neg_magicnumber && magic == lcp_gotoptions[f->unit].magicnumber) { - LCPDEBUG(LOG_WARNING, ("appear to have received our own echo-reply!\n")); - return; - } - - /* Reset the number of outstanding echo frames */ - lcp_echos_pending = 0; -} - -/* - * LcpSendEchoRequest - Send an echo request frame to the peer - */ -static void -LcpSendEchoRequest (fsm *f) -{ - u32_t lcp_magic; - u_char pkt[4], *pktp; - - /* - * Detect the failure of the peer at this point. - */ - if (lcp_echo_fails != 0) { - if (lcp_echos_pending >= lcp_echo_fails) { - LcpLinkFailure(f); - lcp_echos_pending = 0; - } - } - - /* - * Make and send the echo request frame. - */ - if (f->state == LS_OPENED) { - lcp_magic = lcp_gotoptions[f->unit].magicnumber; - pktp = pkt; - PUTLONG(lcp_magic, pktp); - fsm_sdata(f, ECHOREQ, (u_char)(lcp_echo_number++ & 0xFF), pkt, (int)(pktp - pkt)); - ++lcp_echos_pending; - } -} - -/* - * lcp_echo_lowerup - Start the timer for the LCP frame - */ - -static void -lcp_echo_lowerup (int unit) -{ - fsm *f = &lcp_fsm[unit]; - - /* Clear the parameters for generating echo frames */ - lcp_echos_pending = 0; - lcp_echo_number = 0; - lcp_echo_timer_running = 0; - - /* If a timeout interval is specified then start the timer */ - if (lcp_echo_interval != 0) { - LcpEchoCheck (f); - } -} - -/* - * lcp_echo_lowerdown - Stop the timer for the LCP frame - */ - -static void -lcp_echo_lowerdown (int unit) -{ - fsm *f = &lcp_fsm[unit]; - - if (lcp_echo_timer_running != 0) { - UNTIMEOUT (LcpEchoTimeout, f); - lcp_echo_timer_running = 0; - } -} - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.h deleted file mode 100644 index b9201eeb5..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/lcp.h +++ /dev/null @@ -1,151 +0,0 @@ -/***************************************************************************** -* lcp.h - Network Link Control Protocol header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-11-05 Guy Lancaster , Global Election Systems Inc. -* Original derived from BSD codes. -*****************************************************************************/ -/* - * lcp.h - Link Control Protocol definitions. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: lcp.h,v 1.4 2010/01/18 20:49:43 goldsimon Exp $ - */ - -#ifndef LCP_H -#define LCP_H -/* - * Options. - */ -#define CI_MRU 1 /* Maximum Receive Unit */ -#define CI_ASYNCMAP 2 /* Async Control Character Map */ -#define CI_AUTHTYPE 3 /* Authentication Type */ -#define CI_QUALITY 4 /* Quality Protocol */ -#define CI_MAGICNUMBER 5 /* Magic Number */ -#define CI_PCOMPRESSION 7 /* Protocol Field Compression */ -#define CI_ACCOMPRESSION 8 /* Address/Control Field Compression */ -#define CI_CALLBACK 13 /* callback */ -#define CI_MRRU 17 /* max reconstructed receive unit; multilink */ -#define CI_SSNHF 18 /* short sequence numbers for multilink */ -#define CI_EPDISC 19 /* endpoint discriminator */ - -/* - * LCP-specific packet types (code numbers). - */ -#define PROTREJ 8 /* Protocol Reject */ -#define ECHOREQ 9 /* Echo Request */ -#define ECHOREP 10 /* Echo Reply */ -#define DISCREQ 11 /* Discard Request */ -#define CBCP_OPT 6 /* Use callback control protocol */ - -/* - * The state of options is described by an lcp_options structure. - */ -typedef struct lcp_options { - u_int passive : 1; /* Don't die if we don't get a response */ - u_int silent : 1; /* Wait for the other end to start first */ - u_int restart : 1; /* Restart vs. exit after close */ - u_int neg_mru : 1; /* Negotiate the MRU? */ - u_int neg_asyncmap : 1; /* Negotiate the async map? */ - u_int neg_upap : 1; /* Ask for UPAP authentication? */ - u_int neg_chap : 1; /* Ask for CHAP authentication? */ - u_int neg_magicnumber : 1; /* Ask for magic number? */ - u_int neg_pcompression : 1; /* HDLC Protocol Field Compression? */ - u_int neg_accompression : 1; /* HDLC Address/Control Field Compression? */ - u_int neg_lqr : 1; /* Negotiate use of Link Quality Reports */ - u_int neg_cbcp : 1; /* Negotiate use of CBCP */ -#ifdef PPP_MULTILINK - u_int neg_mrru : 1; /* Negotiate multilink MRRU */ - u_int neg_ssnhf : 1; /* Negotiate short sequence numbers */ - u_int neg_endpoint : 1; /* Negotiate endpoint discriminator */ -#endif - u_short mru; /* Value of MRU */ -#ifdef PPP_MULTILINK - u_short mrru; /* Value of MRRU, and multilink enable */ -#endif - u_char chap_mdtype; /* which MD type (hashing algorithm) */ - u32_t asyncmap; /* Value of async map */ - u32_t magicnumber; - int numloops; /* Number of loops during magic number neg. */ - u32_t lqr_period; /* Reporting period for LQR 1/100ths second */ -#ifdef PPP_MULTILINK - struct epdisc endpoint; /* endpoint discriminator */ -#endif -} lcp_options; - -/* - * Values for phase from BSD pppd.h based on RFC 1661. - */ -typedef enum { - PHASE_DEAD = 0, - PHASE_INITIALIZE, - PHASE_ESTABLISH, - PHASE_AUTHENTICATE, - PHASE_CALLBACK, - PHASE_NETWORK, - PHASE_TERMINATE -} LinkPhase; - - - -extern LinkPhase lcp_phase[NUM_PPP]; /* Phase of link session (RFC 1661) */ -extern lcp_options lcp_wantoptions[]; -extern lcp_options lcp_gotoptions[]; -extern lcp_options lcp_allowoptions[]; -extern lcp_options lcp_hisoptions[]; -extern ext_accm xmit_accm[]; - - -void lcp_init (int); -void lcp_open (int); -void lcp_close (int, char *); -void lcp_lowerup (int); -void lcp_lowerdown(int); -void lcp_sprotrej (int, u_char *, int); /* send protocol reject */ - -extern struct protent lcp_protent; - -/* Default number of times we receive our magic number from the peer - before deciding the link is looped-back. */ -#define DEFLOOPBACKFAIL 10 - -#endif /* LCP_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.c deleted file mode 100644 index 390133089..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.c +++ /dev/null @@ -1,80 +0,0 @@ -/***************************************************************************** -* magic.c - Network Random Number Generator program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-04 Guy Lancaster , Global Election Systems Inc. -* Original based on BSD magic.c. -*****************************************************************************/ -/* - * magic.c - PPP Magic Number routines. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT - -#include "ppp.h" -#include "randm.h" -#include "magic.h" - - -/* - * magicInit - Initialize the magic number generator. - * - * Since we use another random number generator that has its own - * initialization, we do nothing here. - */ -void magicInit() -{ - return; -} - -/* - * magic - Returns the next magic number. - */ -u32_t magic() -{ - return avRandom(); -} - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.h deleted file mode 100644 index eba70d20b..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/magic.h +++ /dev/null @@ -1,63 +0,0 @@ -/***************************************************************************** -* magic.h - Network Random Number Generator header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-04 Guy Lancaster , Global Election Systems Inc. -* Original derived from BSD codes. -*****************************************************************************/ -/* - * magic.h - PPP Magic Number definitions. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id: magic.h,v 1.3 2010/01/18 20:49:43 goldsimon Exp $ - */ - -#ifndef MAGIC_H -#define MAGIC_H - -/* Initialize the magic number generator */ -void magicInit(void); - -/* Returns the next magic number */ -u32_t magic(void); - -#endif /* MAGIC_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.c deleted file mode 100644 index 3cb69e2b0..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.c +++ /dev/null @@ -1,320 +0,0 @@ -/* - *********************************************************************** - ** md5.c -- the source code for MD5 routines ** - ** RSA Data Security, Inc. MD5 Message-Digest Algorithm ** - ** Created: 2/17/90 RLR ** - ** Revised: 1/91 SRD,AJ,BSK,JT Reference C ver., 7/10 constant corr. ** - *********************************************************************** - */ - -/* - *********************************************************************** - ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. ** - ** ** - ** License to copy and use this software is granted provided that ** - ** it is identified as the "RSA Data Security, Inc. MD5 Message- ** - ** Digest Algorithm" in all material mentioning or referencing this ** - ** software or this function. ** - ** ** - ** License is also granted to make and use derivative works ** - ** provided that such works are identified as "derived from the RSA ** - ** Data Security, Inc. MD5 Message-Digest Algorithm" in all ** - ** material mentioning or referencing the derived work. ** - ** ** - ** RSA Data Security, Inc. makes no representations concerning ** - ** either the merchantability of this software or the suitability ** - ** of this software for any particular purpose. It is provided "as ** - ** is" without express or implied warranty of any kind. ** - ** ** - ** These notices must be retained in any copies of any part of this ** - ** documentation and/or software. ** - *********************************************************************** - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#if CHAP_SUPPORT || MD5_SUPPORT - -#include "ppp.h" -#include "pppdebug.h" - -#include "md5.h" - -#include - -/* - *********************************************************************** - ** Message-digest routines: ** - ** To form the message digest for a message M ** - ** (1) Initialize a context buffer mdContext using MD5Init ** - ** (2) Call MD5Update on mdContext and M ** - ** (3) Call MD5Final on mdContext ** - ** The message digest is now in mdContext->digest[0...15] ** - *********************************************************************** - */ - -/* forward declaration */ -static void Transform (u32_t *buf, u32_t *in); - -static unsigned char PADDING[64] = { - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -/* F, G, H and I are basic MD5 functions */ -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define I(x, y, z) ((y) ^ ((x) | (~z))) - -/* ROTATE_LEFT rotates x left n bits */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4 */ -/* Rotation is separate from addition to prevent recomputation */ -#define FF(a, b, c, d, x, s, ac) \ - {(a) += F ((b), (c), (d)) + (x) + (u32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define GG(a, b, c, d, x, s, ac) \ - {(a) += G ((b), (c), (d)) + (x) + (u32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define HH(a, b, c, d, x, s, ac) \ - {(a) += H ((b), (c), (d)) + (x) + (u32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define II(a, b, c, d, x, s, ac) \ - {(a) += I ((b), (c), (d)) + (x) + (u32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } - -#ifdef __STDC__ -#define UL(x) x##UL -#else -#ifdef WIN32 -#define UL(x) x##UL -#else -#define UL(x) x -#endif -#endif - -/* The routine MD5Init initializes the message-digest context - mdContext. All fields are set to zero. - */ -void -MD5Init (MD5_CTX *mdContext) -{ - mdContext->i[0] = mdContext->i[1] = (u32_t)0; - - /* Load magic initialization constants. */ - mdContext->buf[0] = (u32_t)0x67452301UL; - mdContext->buf[1] = (u32_t)0xefcdab89UL; - mdContext->buf[2] = (u32_t)0x98badcfeUL; - mdContext->buf[3] = (u32_t)0x10325476UL; -} - -/* The routine MD5Update updates the message-digest context to - account for the presence of each of the characters inBuf[0..inLen-1] - in the message whose digest is being computed. - */ -void -MD5Update(MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen) -{ - u32_t in[16]; - int mdi; - unsigned int i, ii; - -#if 0 - PPPDEBUG(LOG_INFO, ("MD5Update: %u:%.*H\n", inLen, LWIP_MIN(inLen, 20) * 2, inBuf)); - PPPDEBUG(LOG_INFO, ("MD5Update: %u:%s\n", inLen, inBuf)); -#endif - - /* compute number of bytes mod 64 */ - mdi = (int)((mdContext->i[0] >> 3) & 0x3F); - - /* update number of bits */ - if ((mdContext->i[0] + ((u32_t)inLen << 3)) < mdContext->i[0]) { - mdContext->i[1]++; - } - mdContext->i[0] += ((u32_t)inLen << 3); - mdContext->i[1] += ((u32_t)inLen >> 29); - - while (inLen--) { - /* add new character to buffer, increment mdi */ - mdContext->in[mdi++] = *inBuf++; - - /* transform if necessary */ - if (mdi == 0x40) { - for (i = 0, ii = 0; i < 16; i++, ii += 4) { - in[i] = (((u32_t)mdContext->in[ii+3]) << 24) | - (((u32_t)mdContext->in[ii+2]) << 16) | - (((u32_t)mdContext->in[ii+1]) << 8) | - ((u32_t)mdContext->in[ii]); - } - Transform (mdContext->buf, in); - mdi = 0; - } - } -} - -/* The routine MD5Final terminates the message-digest computation and - ends with the desired message digest in mdContext->digest[0...15]. - */ -void -MD5Final (unsigned char hash[], MD5_CTX *mdContext) -{ - u32_t in[16]; - int mdi; - unsigned int i, ii; - unsigned int padLen; - - /* save number of bits */ - in[14] = mdContext->i[0]; - in[15] = mdContext->i[1]; - - /* compute number of bytes mod 64 */ - mdi = (int)((mdContext->i[0] >> 3) & 0x3F); - - /* pad out to 56 mod 64 */ - padLen = (mdi < 56) ? (56 - mdi) : (120 - mdi); - MD5Update (mdContext, PADDING, padLen); - - /* append length in bits and transform */ - for (i = 0, ii = 0; i < 14; i++, ii += 4) { - in[i] = (((u32_t)mdContext->in[ii+3]) << 24) | - (((u32_t)mdContext->in[ii+2]) << 16) | - (((u32_t)mdContext->in[ii+1]) << 8) | - ((u32_t)mdContext->in[ii]); - } - Transform (mdContext->buf, in); - - /* store buffer in digest */ - for (i = 0, ii = 0; i < 4; i++, ii += 4) { - mdContext->digest[ii] = (unsigned char)(mdContext->buf[i] & 0xFF); - mdContext->digest[ii+1] = - (unsigned char)((mdContext->buf[i] >> 8) & 0xFF); - mdContext->digest[ii+2] = - (unsigned char)((mdContext->buf[i] >> 16) & 0xFF); - mdContext->digest[ii+3] = - (unsigned char)((mdContext->buf[i] >> 24) & 0xFF); - } - SMEMCPY(hash, mdContext->digest, 16); -} - -/* Basic MD5 step. Transforms buf based on in. - */ -static void -Transform (u32_t *buf, u32_t *in) -{ - u32_t a = buf[0], b = buf[1], c = buf[2], d = buf[3]; - - /* Round 1 */ -#define S11 7 -#define S12 12 -#define S13 17 -#define S14 22 - FF ( a, b, c, d, in[ 0], S11, UL(3614090360)); /* 1 */ - FF ( d, a, b, c, in[ 1], S12, UL(3905402710)); /* 2 */ - FF ( c, d, a, b, in[ 2], S13, UL( 606105819)); /* 3 */ - FF ( b, c, d, a, in[ 3], S14, UL(3250441966)); /* 4 */ - FF ( a, b, c, d, in[ 4], S11, UL(4118548399)); /* 5 */ - FF ( d, a, b, c, in[ 5], S12, UL(1200080426)); /* 6 */ - FF ( c, d, a, b, in[ 6], S13, UL(2821735955)); /* 7 */ - FF ( b, c, d, a, in[ 7], S14, UL(4249261313)); /* 8 */ - FF ( a, b, c, d, in[ 8], S11, UL(1770035416)); /* 9 */ - FF ( d, a, b, c, in[ 9], S12, UL(2336552879)); /* 10 */ - FF ( c, d, a, b, in[10], S13, UL(4294925233)); /* 11 */ - FF ( b, c, d, a, in[11], S14, UL(2304563134)); /* 12 */ - FF ( a, b, c, d, in[12], S11, UL(1804603682)); /* 13 */ - FF ( d, a, b, c, in[13], S12, UL(4254626195)); /* 14 */ - FF ( c, d, a, b, in[14], S13, UL(2792965006)); /* 15 */ - FF ( b, c, d, a, in[15], S14, UL(1236535329)); /* 16 */ - - /* Round 2 */ -#define S21 5 -#define S22 9 -#define S23 14 -#define S24 20 - GG ( a, b, c, d, in[ 1], S21, UL(4129170786)); /* 17 */ - GG ( d, a, b, c, in[ 6], S22, UL(3225465664)); /* 18 */ - GG ( c, d, a, b, in[11], S23, UL( 643717713)); /* 19 */ - GG ( b, c, d, a, in[ 0], S24, UL(3921069994)); /* 20 */ - GG ( a, b, c, d, in[ 5], S21, UL(3593408605)); /* 21 */ - GG ( d, a, b, c, in[10], S22, UL( 38016083)); /* 22 */ - GG ( c, d, a, b, in[15], S23, UL(3634488961)); /* 23 */ - GG ( b, c, d, a, in[ 4], S24, UL(3889429448)); /* 24 */ - GG ( a, b, c, d, in[ 9], S21, UL( 568446438)); /* 25 */ - GG ( d, a, b, c, in[14], S22, UL(3275163606)); /* 26 */ - GG ( c, d, a, b, in[ 3], S23, UL(4107603335)); /* 27 */ - GG ( b, c, d, a, in[ 8], S24, UL(1163531501)); /* 28 */ - GG ( a, b, c, d, in[13], S21, UL(2850285829)); /* 29 */ - GG ( d, a, b, c, in[ 2], S22, UL(4243563512)); /* 30 */ - GG ( c, d, a, b, in[ 7], S23, UL(1735328473)); /* 31 */ - GG ( b, c, d, a, in[12], S24, UL(2368359562)); /* 32 */ - - /* Round 3 */ -#define S31 4 -#define S32 11 -#define S33 16 -#define S34 23 - HH ( a, b, c, d, in[ 5], S31, UL(4294588738)); /* 33 */ - HH ( d, a, b, c, in[ 8], S32, UL(2272392833)); /* 34 */ - HH ( c, d, a, b, in[11], S33, UL(1839030562)); /* 35 */ - HH ( b, c, d, a, in[14], S34, UL(4259657740)); /* 36 */ - HH ( a, b, c, d, in[ 1], S31, UL(2763975236)); /* 37 */ - HH ( d, a, b, c, in[ 4], S32, UL(1272893353)); /* 38 */ - HH ( c, d, a, b, in[ 7], S33, UL(4139469664)); /* 39 */ - HH ( b, c, d, a, in[10], S34, UL(3200236656)); /* 40 */ - HH ( a, b, c, d, in[13], S31, UL( 681279174)); /* 41 */ - HH ( d, a, b, c, in[ 0], S32, UL(3936430074)); /* 42 */ - HH ( c, d, a, b, in[ 3], S33, UL(3572445317)); /* 43 */ - HH ( b, c, d, a, in[ 6], S34, UL( 76029189)); /* 44 */ - HH ( a, b, c, d, in[ 9], S31, UL(3654602809)); /* 45 */ - HH ( d, a, b, c, in[12], S32, UL(3873151461)); /* 46 */ - HH ( c, d, a, b, in[15], S33, UL( 530742520)); /* 47 */ - HH ( b, c, d, a, in[ 2], S34, UL(3299628645)); /* 48 */ - - /* Round 4 */ -#define S41 6 -#define S42 10 -#define S43 15 -#define S44 21 - II ( a, b, c, d, in[ 0], S41, UL(4096336452)); /* 49 */ - II ( d, a, b, c, in[ 7], S42, UL(1126891415)); /* 50 */ - II ( c, d, a, b, in[14], S43, UL(2878612391)); /* 51 */ - II ( b, c, d, a, in[ 5], S44, UL(4237533241)); /* 52 */ - II ( a, b, c, d, in[12], S41, UL(1700485571)); /* 53 */ - II ( d, a, b, c, in[ 3], S42, UL(2399980690)); /* 54 */ - II ( c, d, a, b, in[10], S43, UL(4293915773)); /* 55 */ - II ( b, c, d, a, in[ 1], S44, UL(2240044497)); /* 56 */ - II ( a, b, c, d, in[ 8], S41, UL(1873313359)); /* 57 */ - II ( d, a, b, c, in[15], S42, UL(4264355552)); /* 58 */ - II ( c, d, a, b, in[ 6], S43, UL(2734768916)); /* 59 */ - II ( b, c, d, a, in[13], S44, UL(1309151649)); /* 60 */ - II ( a, b, c, d, in[ 4], S41, UL(4149444226)); /* 61 */ - II ( d, a, b, c, in[11], S42, UL(3174756917)); /* 62 */ - II ( c, d, a, b, in[ 2], S43, UL( 718787259)); /* 63 */ - II ( b, c, d, a, in[ 9], S44, UL(3951481745)); /* 64 */ - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} - -#endif /* CHAP_SUPPORT || MD5_SUPPORT */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.h deleted file mode 100644 index e129533f3..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/md5.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - *********************************************************************** - ** md5.h -- header file for implementation of MD5 ** - ** RSA Data Security, Inc. MD5 Message-Digest Algorithm ** - ** Created: 2/17/90 RLR ** - ** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version ** - ** Revised (for MD5): RLR 4/27/91 ** - ** -- G modified to have y&~z instead of y&z ** - ** -- FF, GG, HH modified to add in last register done ** - ** -- Access pattern: round 2 works mod 5, round 3 works mod 3 ** - ** -- distinct additive constant for each step ** - ** -- round 4 added, working mod 7 ** - *********************************************************************** - */ - -/* - *********************************************************************** - ** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. ** - ** ** - ** License to copy and use this software is granted provided that ** - ** it is identified as the "RSA Data Security, Inc. MD5 Message- ** - ** Digest Algorithm" in all material mentioning or referencing this ** - ** software or this function. ** - ** ** - ** License is also granted to make and use derivative works ** - ** provided that such works are identified as "derived from the RSA ** - ** Data Security, Inc. MD5 Message-Digest Algorithm" in all ** - ** material mentioning or referencing the derived work. ** - ** ** - ** RSA Data Security, Inc. makes no representations concerning ** - ** either the merchantability of this software or the suitability ** - ** of this software for any particular purpose. It is provided "as ** - ** is" without express or implied warranty of any kind. ** - ** ** - ** These notices must be retained in any copies of any part of this ** - ** documentation and/or software. ** - *********************************************************************** - */ - -#ifndef MD5_H -#define MD5_H - -/* Data structure for MD5 (Message-Digest) computation */ -typedef struct { - u32_t i[2]; /* number of _bits_ handled mod 2^64 */ - u32_t buf[4]; /* scratch buffer */ - unsigned char in[64]; /* input buffer */ - unsigned char digest[16]; /* actual digest after MD5Final call */ -} MD5_CTX; - -void MD5Init ( MD5_CTX *mdContext); -void MD5Update( MD5_CTX *mdContext, unsigned char *inBuf, unsigned int inLen); -void MD5Final ( unsigned char hash[], MD5_CTX *mdContext); - -#endif /* MD5_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.c deleted file mode 100644 index 78ef490a5..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.c +++ /dev/null @@ -1,628 +0,0 @@ -/***************************************************************************** -* pap.c - Network Password Authentication Protocol program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-12 Guy Lancaster , Global Election Systems Inc. -* Original. -*****************************************************************************/ -/* - * upap.c - User/Password Authentication Protocol. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#if PAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "auth.h" -#include "pap.h" - -#include - -#if 0 /* UNUSED */ -static bool hide_password = 1; - -/* - * Command-line options. - */ -static option_t pap_option_list[] = { - { "hide-password", o_bool, &hide_password, - "Don't output passwords to log", 1 }, - { "show-password", o_bool, &hide_password, - "Show password string in debug log messages", 0 }, - { "pap-restart", o_int, &upap[0].us_timeouttime, - "Set retransmit timeout for PAP" }, - { "pap-max-authreq", o_int, &upap[0].us_maxtransmits, - "Set max number of transmissions for auth-reqs" }, - { "pap-timeout", o_int, &upap[0].us_reqtimeout, - "Set time limit for peer PAP authentication" }, - { NULL } -}; -#endif - -/* - * Protocol entry points. - */ -static void upap_init (int); -static void upap_lowerup (int); -static void upap_lowerdown (int); -static void upap_input (int, u_char *, int); -static void upap_protrej (int); -#if PPP_ADDITIONAL_CALLBACKS -static int upap_printpkt (u_char *, int, void (*)(void *, char *, ...), void *); -#endif /* PPP_ADDITIONAL_CALLBACKS */ - -struct protent pap_protent = { - PPP_PAP, - upap_init, - upap_input, - upap_protrej, - upap_lowerup, - upap_lowerdown, - NULL, - NULL, -#if PPP_ADDITIONAL_CALLBACKS - upap_printpkt, - NULL, -#endif /* PPP_ADDITIONAL_CALLBACKS */ - 1, - "PAP", -#if PPP_ADDITIONAL_CALLBACKS - NULL, - NULL, - NULL -#endif /* PPP_ADDITIONAL_CALLBACKS */ -}; - -upap_state upap[NUM_PPP]; /* UPAP state; one for each unit */ - -static void upap_timeout (void *); -static void upap_reqtimeout(void *); -static void upap_rauthreq (upap_state *, u_char *, u_char, int); -static void upap_rauthack (upap_state *, u_char *, int, int); -static void upap_rauthnak (upap_state *, u_char *, int, int); -static void upap_sauthreq (upap_state *); -static void upap_sresp (upap_state *, u_char, u_char, char *, int); - - -/* - * upap_init - Initialize a UPAP unit. - */ -static void -upap_init(int unit) -{ - upap_state *u = &upap[unit]; - - UPAPDEBUG(LOG_INFO, ("upap_init: %d\n", unit)); - u->us_unit = unit; - u->us_user = NULL; - u->us_userlen = 0; - u->us_passwd = NULL; - u->us_passwdlen = 0; - u->us_clientstate = UPAPCS_INITIAL; - u->us_serverstate = UPAPSS_INITIAL; - u->us_id = 0; - u->us_timeouttime = UPAP_DEFTIMEOUT; - u->us_maxtransmits = 10; - u->us_reqtimeout = UPAP_DEFREQTIME; -} - -/* - * upap_authwithpeer - Authenticate us with our peer (start client). - * - * Set new state and send authenticate's. - */ -void -upap_authwithpeer(int unit, char *user, char *password) -{ - upap_state *u = &upap[unit]; - - UPAPDEBUG(LOG_INFO, ("upap_authwithpeer: %d user=%s password=%s s=%d\n", - unit, user, password, u->us_clientstate)); - - /* Save the username and password we're given */ - u->us_user = user; - u->us_userlen = (int)strlen(user); - u->us_passwd = password; - u->us_passwdlen = (int)strlen(password); - - u->us_transmits = 0; - - /* Lower layer up yet? */ - if (u->us_clientstate == UPAPCS_INITIAL || - u->us_clientstate == UPAPCS_PENDING) { - u->us_clientstate = UPAPCS_PENDING; - return; - } - - upap_sauthreq(u); /* Start protocol */ -} - - -/* - * upap_authpeer - Authenticate our peer (start server). - * - * Set new state. - */ -void -upap_authpeer(int unit) -{ - upap_state *u = &upap[unit]; - - /* Lower layer up yet? */ - if (u->us_serverstate == UPAPSS_INITIAL || - u->us_serverstate == UPAPSS_PENDING) { - u->us_serverstate = UPAPSS_PENDING; - return; - } - - u->us_serverstate = UPAPSS_LISTEN; - if (u->us_reqtimeout > 0) { - TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout); - } -} - -/* - * upap_timeout - Retransmission timer for sending auth-reqs expired. - */ -static void -upap_timeout(void *arg) -{ - upap_state *u = (upap_state *) arg; - - UPAPDEBUG(LOG_INFO, ("upap_timeout: %d timeout %d expired s=%d\n", - u->us_unit, u->us_timeouttime, u->us_clientstate)); - - if (u->us_clientstate != UPAPCS_AUTHREQ) { - UPAPDEBUG(LOG_INFO, ("upap_timeout: not in AUTHREQ state!\n")); - return; - } - - if (u->us_transmits >= u->us_maxtransmits) { - /* give up in disgust */ - UPAPDEBUG(LOG_ERR, ("No response to PAP authenticate-requests\n")); - u->us_clientstate = UPAPCS_BADAUTH; - auth_withpeer_fail(u->us_unit, PPP_PAP); - return; - } - - upap_sauthreq(u); /* Send Authenticate-Request and set upap timeout*/ -} - - -/* - * upap_reqtimeout - Give up waiting for the peer to send an auth-req. - */ -static void -upap_reqtimeout(void *arg) -{ - upap_state *u = (upap_state *) arg; - - if (u->us_serverstate != UPAPSS_LISTEN) { - return; /* huh?? */ - } - - auth_peer_fail(u->us_unit, PPP_PAP); - u->us_serverstate = UPAPSS_BADAUTH; -} - - -/* - * upap_lowerup - The lower layer is up. - * - * Start authenticating if pending. - */ -static void -upap_lowerup(int unit) -{ - upap_state *u = &upap[unit]; - - UPAPDEBUG(LOG_INFO, ("upap_lowerup: init %d clientstate s=%d\n", unit, u->us_clientstate)); - - if (u->us_clientstate == UPAPCS_INITIAL) { - u->us_clientstate = UPAPCS_CLOSED; - } else if (u->us_clientstate == UPAPCS_PENDING) { - upap_sauthreq(u); /* send an auth-request */ - /* now client state is UPAPCS__AUTHREQ */ - } - - if (u->us_serverstate == UPAPSS_INITIAL) { - u->us_serverstate = UPAPSS_CLOSED; - } else if (u->us_serverstate == UPAPSS_PENDING) { - u->us_serverstate = UPAPSS_LISTEN; - if (u->us_reqtimeout > 0) { - TIMEOUT(upap_reqtimeout, u, u->us_reqtimeout); - } - } -} - - -/* - * upap_lowerdown - The lower layer is down. - * - * Cancel all timeouts. - */ -static void -upap_lowerdown(int unit) -{ - upap_state *u = &upap[unit]; - - UPAPDEBUG(LOG_INFO, ("upap_lowerdown: %d s=%d\n", unit, u->us_clientstate)); - - if (u->us_clientstate == UPAPCS_AUTHREQ) { /* Timeout pending? */ - UNTIMEOUT(upap_timeout, u); /* Cancel timeout */ - } - if (u->us_serverstate == UPAPSS_LISTEN && u->us_reqtimeout > 0) { - UNTIMEOUT(upap_reqtimeout, u); - } - - u->us_clientstate = UPAPCS_INITIAL; - u->us_serverstate = UPAPSS_INITIAL; -} - - -/* - * upap_protrej - Peer doesn't speak this protocol. - * - * This shouldn't happen. In any case, pretend lower layer went down. - */ -static void -upap_protrej(int unit) -{ - upap_state *u = &upap[unit]; - - if (u->us_clientstate == UPAPCS_AUTHREQ) { - UPAPDEBUG(LOG_ERR, ("PAP authentication failed due to protocol-reject\n")); - auth_withpeer_fail(unit, PPP_PAP); - } - if (u->us_serverstate == UPAPSS_LISTEN) { - UPAPDEBUG(LOG_ERR, ("PAP authentication of peer failed (protocol-reject)\n")); - auth_peer_fail(unit, PPP_PAP); - } - upap_lowerdown(unit); -} - - -/* - * upap_input - Input UPAP packet. - */ -static void -upap_input(int unit, u_char *inpacket, int l) -{ - upap_state *u = &upap[unit]; - u_char *inp; - u_char code, id; - int len; - - /* - * Parse header (code, id and length). - * If packet too short, drop it. - */ - inp = inpacket; - if (l < (int)UPAP_HEADERLEN) { - UPAPDEBUG(LOG_INFO, ("pap_input: rcvd short header.\n")); - return; - } - GETCHAR(code, inp); - GETCHAR(id, inp); - GETSHORT(len, inp); - if (len < (int)UPAP_HEADERLEN) { - UPAPDEBUG(LOG_INFO, ("pap_input: rcvd illegal length.\n")); - return; - } - if (len > l) { - UPAPDEBUG(LOG_INFO, ("pap_input: rcvd short packet.\n")); - return; - } - len -= UPAP_HEADERLEN; - - /* - * Action depends on code. - */ - switch (code) { - case UPAP_AUTHREQ: - upap_rauthreq(u, inp, id, len); - break; - - case UPAP_AUTHACK: - upap_rauthack(u, inp, id, len); - break; - - case UPAP_AUTHNAK: - upap_rauthnak(u, inp, id, len); - break; - - default: /* XXX Need code reject */ - UPAPDEBUG(LOG_INFO, ("pap_input: UNHANDLED default: code: %d, id: %d, len: %d.\n", code, id, len)); - break; - } -} - - -/* - * upap_rauth - Receive Authenticate. - */ -static void -upap_rauthreq(upap_state *u, u_char *inp, u_char id, int len) -{ - u_char ruserlen, rpasswdlen; - char *ruser, *rpasswd; - u_char retcode; - char *msg; - int msglen; - - UPAPDEBUG(LOG_INFO, ("pap_rauth: Rcvd id %d.\n", id)); - - if (u->us_serverstate < UPAPSS_LISTEN) { - return; - } - - /* - * If we receive a duplicate authenticate-request, we are - * supposed to return the same status as for the first request. - */ - if (u->us_serverstate == UPAPSS_OPEN) { - upap_sresp(u, UPAP_AUTHACK, id, "", 0); /* return auth-ack */ - return; - } - if (u->us_serverstate == UPAPSS_BADAUTH) { - upap_sresp(u, UPAP_AUTHNAK, id, "", 0); /* return auth-nak */ - return; - } - - /* - * Parse user/passwd. - */ - if (len < (int)sizeof (u_char)) { - UPAPDEBUG(LOG_INFO, ("pap_rauth: rcvd short packet.\n")); - return; - } - GETCHAR(ruserlen, inp); - len -= sizeof (u_char) + ruserlen + sizeof (u_char); - if (len < 0) { - UPAPDEBUG(LOG_INFO, ("pap_rauth: rcvd short packet.\n")); - return; - } - ruser = (char *) inp; - INCPTR(ruserlen, inp); - GETCHAR(rpasswdlen, inp); - if (len < rpasswdlen) { - UPAPDEBUG(LOG_INFO, ("pap_rauth: rcvd short packet.\n")); - return; - } - rpasswd = (char *) inp; - - /* - * Check the username and password given. - */ - retcode = check_passwd(u->us_unit, ruser, ruserlen, rpasswd, rpasswdlen, &msg, &msglen); - /* lwip: currently retcode is always UPAP_AUTHACK */ - BZERO(rpasswd, rpasswdlen); - - upap_sresp(u, retcode, id, msg, msglen); - - if (retcode == UPAP_AUTHACK) { - u->us_serverstate = UPAPSS_OPEN; - auth_peer_success(u->us_unit, PPP_PAP, ruser, ruserlen); - } else { - u->us_serverstate = UPAPSS_BADAUTH; - auth_peer_fail(u->us_unit, PPP_PAP); - } - - if (u->us_reqtimeout > 0) { - UNTIMEOUT(upap_reqtimeout, u); - } -} - - -/* - * upap_rauthack - Receive Authenticate-Ack. - */ -static void -upap_rauthack(upap_state *u, u_char *inp, int id, int len) -{ - u_char msglen; - char *msg; - - LWIP_UNUSED_ARG(id); - - UPAPDEBUG(LOG_INFO, ("pap_rauthack: Rcvd id %d s=%d\n", id, u->us_clientstate)); - - if (u->us_clientstate != UPAPCS_AUTHREQ) { /* XXX */ - UPAPDEBUG(LOG_INFO, ("pap_rauthack: us_clientstate != UPAPCS_AUTHREQ\n")); - return; - } - - /* - * Parse message. - */ - if (len < (int)sizeof (u_char)) { - UPAPDEBUG(LOG_INFO, ("pap_rauthack: ignoring missing msg-length.\n")); - } else { - GETCHAR(msglen, inp); - if (msglen > 0) { - len -= sizeof (u_char); - if (len < msglen) { - UPAPDEBUG(LOG_INFO, ("pap_rauthack: rcvd short packet.\n")); - return; - } - msg = (char *) inp; - PRINTMSG(msg, msglen); - } - } - UNTIMEOUT(upap_timeout, u); /* Cancel timeout */ - u->us_clientstate = UPAPCS_OPEN; - - auth_withpeer_success(u->us_unit, PPP_PAP); -} - - -/* - * upap_rauthnak - Receive Authenticate-Nak. - */ -static void -upap_rauthnak(upap_state *u, u_char *inp, int id, int len) -{ - u_char msglen; - char *msg; - - LWIP_UNUSED_ARG(id); - - UPAPDEBUG(LOG_INFO, ("pap_rauthnak: Rcvd id %d s=%d\n", id, u->us_clientstate)); - - if (u->us_clientstate != UPAPCS_AUTHREQ) { /* XXX */ - return; - } - - /* - * Parse message. - */ - if (len < sizeof (u_char)) { - UPAPDEBUG(LOG_INFO, ("pap_rauthnak: ignoring missing msg-length.\n")); - } else { - GETCHAR(msglen, inp); - if(msglen > 0) { - len -= sizeof (u_char); - if (len < msglen) { - UPAPDEBUG(LOG_INFO, ("pap_rauthnak: rcvd short packet.\n")); - return; - } - msg = (char *) inp; - PRINTMSG(msg, msglen); - } - } - - u->us_clientstate = UPAPCS_BADAUTH; - - UPAPDEBUG(LOG_ERR, ("PAP authentication failed\n")); - auth_withpeer_fail(u->us_unit, PPP_PAP); -} - - -/* - * upap_sauthreq - Send an Authenticate-Request. - */ -static void -upap_sauthreq(upap_state *u) -{ - u_char *outp; - int outlen; - - outlen = UPAP_HEADERLEN + 2 * sizeof (u_char) - + u->us_userlen + u->us_passwdlen; - outp = outpacket_buf[u->us_unit]; - - MAKEHEADER(outp, PPP_PAP); - - PUTCHAR(UPAP_AUTHREQ, outp); - PUTCHAR(++u->us_id, outp); - PUTSHORT(outlen, outp); - PUTCHAR(u->us_userlen, outp); - BCOPY(u->us_user, outp, u->us_userlen); - INCPTR(u->us_userlen, outp); - PUTCHAR(u->us_passwdlen, outp); - BCOPY(u->us_passwd, outp, u->us_passwdlen); - - pppWrite(u->us_unit, outpacket_buf[u->us_unit], outlen + PPP_HDRLEN); - - UPAPDEBUG(LOG_INFO, ("pap_sauth: Sent id %d\n", u->us_id)); - - TIMEOUT(upap_timeout, u, u->us_timeouttime); - ++u->us_transmits; - u->us_clientstate = UPAPCS_AUTHREQ; -} - - -/* - * upap_sresp - Send a response (ack or nak). - */ -static void -upap_sresp(upap_state *u, u_char code, u_char id, char *msg, int msglen) -{ - u_char *outp; - int outlen; - - outlen = UPAP_HEADERLEN + sizeof (u_char) + msglen; - outp = outpacket_buf[u->us_unit]; - MAKEHEADER(outp, PPP_PAP); - - PUTCHAR(code, outp); - PUTCHAR(id, outp); - PUTSHORT(outlen, outp); - PUTCHAR(msglen, outp); - BCOPY(msg, outp, msglen); - pppWrite(u->us_unit, outpacket_buf[u->us_unit], outlen + PPP_HDRLEN); - - UPAPDEBUG(LOG_INFO, ("pap_sresp: Sent code %d, id %d s=%d\n", code, id, u->us_clientstate)); -} - -#if PPP_ADDITIONAL_CALLBACKS -static char *upap_codenames[] = { - "AuthReq", "AuthAck", "AuthNak" -}; - -/* - * upap_printpkt - print the contents of a PAP packet. - */ -static int upap_printpkt( - u_char *p, - int plen, - void (*printer) (void *, char *, ...), - void *arg -) -{ - LWIP_UNUSED_ARG(p); - LWIP_UNUSED_ARG(plen); - LWIP_UNUSED_ARG(printer); - LWIP_UNUSED_ARG(arg); - return 0; -} -#endif /* PPP_ADDITIONAL_CALLBACKS */ - -#endif /* PAP_SUPPORT */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.h deleted file mode 100644 index c99a20401..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pap.h +++ /dev/null @@ -1,118 +0,0 @@ -/***************************************************************************** -* pap.h - PPP Password Authentication Protocol header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-12-04 Guy Lancaster , Global Election Systems Inc. -* Original derived from BSD codes. -*****************************************************************************/ -/* - * upap.h - User/Password Authentication Protocol definitions. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#ifndef PAP_H -#define PAP_H - -#if PAP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -/* - * Packet header = Code, id, length. - */ -#define UPAP_HEADERLEN (sizeof (u_char) + sizeof (u_char) + sizeof (u_short)) - - -/* - * UPAP codes. - */ -#define UPAP_AUTHREQ 1 /* Authenticate-Request */ -#define UPAP_AUTHACK 2 /* Authenticate-Ack */ -#define UPAP_AUTHNAK 3 /* Authenticate-Nak */ - -/* - * Each interface is described by upap structure. - */ -typedef struct upap_state { - int us_unit; /* Interface unit number */ - const char *us_user; /* User */ - int us_userlen; /* User length */ - const char *us_passwd; /* Password */ - int us_passwdlen; /* Password length */ - int us_clientstate; /* Client state */ - int us_serverstate; /* Server state */ - u_char us_id; /* Current id */ - int us_timeouttime; /* Timeout (seconds) for auth-req retrans. */ - int us_transmits; /* Number of auth-reqs sent */ - int us_maxtransmits; /* Maximum number of auth-reqs to send */ - int us_reqtimeout; /* Time to wait for auth-req from peer */ -} upap_state; - -/* - * Client states. - */ -#define UPAPCS_INITIAL 0 /* Connection down */ -#define UPAPCS_CLOSED 1 /* Connection up, haven't requested auth */ -#define UPAPCS_PENDING 2 /* Connection down, have requested auth */ -#define UPAPCS_AUTHREQ 3 /* We've sent an Authenticate-Request */ -#define UPAPCS_OPEN 4 /* We've received an Ack */ -#define UPAPCS_BADAUTH 5 /* We've received a Nak */ - -/* - * Server states. - */ -#define UPAPSS_INITIAL 0 /* Connection down */ -#define UPAPSS_CLOSED 1 /* Connection up, haven't requested auth */ -#define UPAPSS_PENDING 2 /* Connection down, have requested auth */ -#define UPAPSS_LISTEN 3 /* Listening for an Authenticate */ -#define UPAPSS_OPEN 4 /* We've sent an Ack */ -#define UPAPSS_BADAUTH 5 /* We've sent a Nak */ - - -extern upap_state upap[]; - -void upap_authwithpeer (int, char *, char *); -void upap_authpeer (int); - -extern struct protent pap_protent; - -#endif /* PAP_SUPPORT */ - -#endif /* PAP_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.c deleted file mode 100644 index e9b433b05..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.c +++ /dev/null @@ -1,2020 +0,0 @@ -/***************************************************************************** -* ppp.c - Network Point to Point Protocol program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-11-05 Guy Lancaster , Global Election Systems Inc. -* Original. -*****************************************************************************/ - -/* - * ppp_defs.h - PPP definitions. - * - * if_pppvar.h - private structures and declarations for PPP. - * - * Copyright (c) 1994 The Australian National University. - * All rights reserved. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation is hereby granted, provided that the above copyright - * notice appears in all copies. This software is provided without any - * warranty, express or implied. The Australian National University - * makes no representations about the suitability of this software for - * any purpose. - * - * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY - * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF - * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO - * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, - * OR MODIFICATIONS. - */ - -/* - * if_ppp.h - Point-to-Point Protocol definitions. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/ip.h" /* for ip_input() */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "randm.h" -#include "fsm.h" -#if PAP_SUPPORT -#include "pap.h" -#endif /* PAP_SUPPORT */ -#if CHAP_SUPPORT -#include "chap.h" -#endif /* CHAP_SUPPORT */ -#include "ipcp.h" -#include "lcp.h" -#include "magic.h" -#include "auth.h" -#if VJ_SUPPORT -#include "vj.h" -#endif /* VJ_SUPPORT */ -#if PPPOE_SUPPORT -#include "netif/ppp_oe.h" -#endif /* PPPOE_SUPPORT */ - -#include "lwip/tcpip.h" -#include "lwip/api.h" -#include "lwip/snmp.h" - -#include - -/*************************/ -/*** LOCAL DEFINITIONS ***/ -/*************************/ - -/** PPP_INPROC_MULTITHREADED==1 call pppInput using tcpip_callback(). - * Set this to 0 if pppInProc is called inside tcpip_thread or with NO_SYS==1. - * Default is 1 for NO_SYS==0 (multithreaded) and 0 for NO_SYS==1 (single-threaded). - */ -#ifndef PPP_INPROC_MULTITHREADED -#define PPP_INPROC_MULTITHREADED (NO_SYS==0) -#endif - -/** PPP_INPROC_OWNTHREAD==1: start a dedicated RX thread per PPP session. - * Default is 0: call pppos_input() for received raw characters, charcater - * reception is up to the port */ -#ifndef PPP_INPROC_OWNTHREAD -#define PPP_INPROC_OWNTHREAD PPP_INPROC_MULTITHREADED -#endif - -#if PPP_INPROC_OWNTHREAD && !PPP_INPROC_MULTITHREADED - #error "PPP_INPROC_OWNTHREAD needs PPP_INPROC_MULTITHREADED==1" -#endif - -/* - * The basic PPP frame. - */ -#define PPP_ADDRESS(p) (((u_char *)(p))[0]) -#define PPP_CONTROL(p) (((u_char *)(p))[1]) -#define PPP_PROTOCOL(p) ((((u_char *)(p))[2] << 8) + ((u_char *)(p))[3]) - -/* PPP packet parser states. Current state indicates operation yet to be - * completed. */ -typedef enum { - PDIDLE = 0, /* Idle state - waiting. */ - PDSTART, /* Process start flag. */ - PDADDRESS, /* Process address field. */ - PDCONTROL, /* Process control field. */ - PDPROTOCOL1, /* Process protocol field 1. */ - PDPROTOCOL2, /* Process protocol field 2. */ - PDDATA /* Process data byte. */ -} PPPDevStates; - -#define ESCAPE_P(accm, c) ((accm)[(c) >> 3] & pppACCMMask[c & 0x07]) - -/************************/ -/*** LOCAL DATA TYPES ***/ -/************************/ - -/** RX buffer size: this may be configured smaller! */ -#ifndef PPPOS_RX_BUFSIZE -#define PPPOS_RX_BUFSIZE (PPP_MRU + PPP_HDRLEN) -#endif - -typedef struct PPPControlRx_s { - /** unit number / ppp descriptor */ - int pd; - /** the rx file descriptor */ - sio_fd_t fd; - /** receive buffer - encoded data is stored here */ - u_char rxbuf[PPPOS_RX_BUFSIZE]; - - /* The input packet. */ - struct pbuf *inHead, *inTail; - -#if PPPOS_SUPPORT - u16_t inProtocol; /* The input protocol code. */ - u16_t inFCS; /* Input Frame Check Sequence value. */ -#endif /* PPPOS_SUPPORT */ - PPPDevStates inState; /* The input process state. */ - char inEscaped; /* Escape next character. */ - ext_accm inACCM; /* Async-Ctl-Char-Map for input. */ -} PPPControlRx; - -/* - * PPP interface control block. - */ -typedef struct PPPControl_s { - PPPControlRx rx; - char openFlag; /* True when in use. */ -#if PPPOE_SUPPORT - struct netif *ethif; - struct pppoe_softc *pppoe_sc; -#endif /* PPPOE_SUPPORT */ - int if_up; /* True when the interface is up. */ - int errCode; /* Code indicating why interface is down. */ -#if PPPOS_SUPPORT - sio_fd_t fd; /* File device ID of port. */ -#endif /* PPPOS_SUPPORT */ - u16_t mtu; /* Peer's mru */ - int pcomp; /* Does peer accept protocol compression? */ - int accomp; /* Does peer accept addr/ctl compression? */ - u_long lastXMit; /* Time of last transmission. */ - ext_accm outACCM; /* Async-Ctl-Char-Map for output. */ -#if PPPOS_SUPPORT && VJ_SUPPORT - int vjEnabled; /* Flag indicating VJ compression enabled. */ - struct vjcompress vjComp; /* Van Jacobson compression header. */ -#endif /* PPPOS_SUPPORT && VJ_SUPPORT */ - - struct netif netif; - - struct ppp_addrs addrs; - - void (*linkStatusCB)(void *ctx, int errCode, void *arg); - void *linkStatusCtx; - -} PPPControl; - - -/* - * Ioctl definitions. - */ - -struct npioctl { - int protocol; /* PPP procotol, e.g. PPP_IP */ - enum NPmode mode; -}; - - - -/***********************************/ -/*** LOCAL FUNCTION DECLARATIONS ***/ -/***********************************/ -#if PPPOS_SUPPORT -#if PPP_INPROC_OWNTHREAD -static void pppInputThread(void *arg); -#endif /* PPP_INPROC_OWNTHREAD */ -static void pppDrop(PPPControlRx *pcrx); -static void pppInProc(PPPControlRx *pcrx, u_char *s, int l); -#endif /* PPPOS_SUPPORT */ - - -/******************************/ -/*** PUBLIC DATA STRUCTURES ***/ -/******************************/ -u_long subnetMask; - -static PPPControl pppControl[NUM_PPP]; /* The PPP interface control blocks. */ - -/* - * PPP Data Link Layer "protocol" table. - * One entry per supported protocol. - * The last entry must be NULL. - */ -struct protent *ppp_protocols[] = { - &lcp_protent, -#if PAP_SUPPORT - &pap_protent, -#endif /* PAP_SUPPORT */ -#if CHAP_SUPPORT - &chap_protent, -#endif /* CHAP_SUPPORT */ -#if CBCP_SUPPORT - &cbcp_protent, -#endif /* CBCP_SUPPORT */ - &ipcp_protent, -#if CCP_SUPPORT - &ccp_protent, -#endif /* CCP_SUPPORT */ - NULL -}; - - -/* - * Buffers for outgoing packets. This must be accessed only from the appropriate - * PPP task so that it doesn't need to be protected to avoid collisions. - */ -u_char outpacket_buf[NUM_PPP][PPP_MRU+PPP_HDRLEN]; - - -/*****************************/ -/*** LOCAL DATA STRUCTURES ***/ -/*****************************/ - -#if PPPOS_SUPPORT -/* - * FCS lookup table as calculated by genfcstab. - * @todo: smaller, slower implementation for lower memory footprint? - */ -static const u_short fcstab[256] = { - 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, - 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, - 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, - 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, - 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, - 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, - 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, - 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, - 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, - 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, - 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, - 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, - 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, - 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, - 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, - 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, - 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, - 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, - 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, - 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, - 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, - 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, - 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, - 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, - 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, - 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, - 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, - 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, - 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, - 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, - 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, - 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 -}; - -/* PPP's Asynchronous-Control-Character-Map. The mask array is used - * to select the specific bit for a character. */ -static u_char pppACCMMask[] = { - 0x01, - 0x02, - 0x04, - 0x08, - 0x10, - 0x20, - 0x40, - 0x80 -}; - -/** Wake up the task blocked in reading from serial line (if any) */ -static void -pppRecvWakeup(int pd) -{ - PPPDEBUG(LOG_DEBUG, ("pppRecvWakeup: unit %d\n", pd)); - if (pppControl[pd].openFlag != 0) { - sio_read_abort(pppControl[pd].fd); - } -} -#endif /* PPPOS_SUPPORT */ - -void -pppLinkTerminated(int pd) -{ - PPPDEBUG(LOG_DEBUG, ("pppLinkTerminated: unit %d\n", pd)); - -#if PPPOE_SUPPORT - if (pppControl[pd].ethif) { - pppoe_disconnect(pppControl[pd].pppoe_sc); - } else -#endif /* PPPOE_SUPPORT */ - { -#if PPPOS_SUPPORT - PPPControl* pc; - pppRecvWakeup(pd); - pc = &pppControl[pd]; - - PPPDEBUG(LOG_DEBUG, ("pppLinkTerminated: unit %d: linkStatusCB=%p errCode=%d\n", pd, pc->linkStatusCB, pc->errCode)); - if (pc->linkStatusCB) { - pc->linkStatusCB(pc->linkStatusCtx, pc->errCode ? pc->errCode : PPPERR_PROTOCOL, NULL); - } - - pc->openFlag = 0;/**/ -#endif /* PPPOS_SUPPORT */ - } - PPPDEBUG(LOG_DEBUG, ("pppLinkTerminated: finished.\n")); -} - -void -pppLinkDown(int pd) -{ - PPPDEBUG(LOG_DEBUG, ("pppLinkDown: unit %d\n", pd)); - -#if PPPOE_SUPPORT - if (pppControl[pd].ethif) { - pppoe_disconnect(pppControl[pd].pppoe_sc); - } else -#endif /* PPPOE_SUPPORT */ - { -#if PPPOS_SUPPORT - pppRecvWakeup(pd); -#endif /* PPPOS_SUPPORT */ - } -} - -/** Initiate LCP open request */ -static void -pppStart(int pd) -{ - PPPDEBUG(LOG_DEBUG, ("pppStart: unit %d\n", pd)); - lcp_lowerup(pd); - lcp_open(pd); /* Start protocol */ - PPPDEBUG(LOG_DEBUG, ("pppStart: finished\n")); -} - -/** LCP close request */ -static void -pppStop(int pd) -{ - PPPDEBUG(LOG_DEBUG, ("pppStop: unit %d\n", pd)); - lcp_close(pd, "User request"); -} - -/** Called when carrier/link is lost */ -static void -pppHup(int pd) -{ - PPPDEBUG(LOG_DEBUG, ("pppHupCB: unit %d\n", pd)); - lcp_lowerdown(pd); - link_terminated(pd); -} - -/***********************************/ -/*** PUBLIC FUNCTION DEFINITIONS ***/ -/***********************************/ -/* Initialize the PPP subsystem. */ - -struct ppp_settings ppp_settings; - -void -pppInit(void) -{ - struct protent *protp; - int i, j; - - memset(&ppp_settings, 0, sizeof(ppp_settings)); - ppp_settings.usepeerdns = 1; - pppSetAuth(PPPAUTHTYPE_NONE, NULL, NULL); - - magicInit(); - - subnetMask = PP_HTONL(0xffffff00UL); - - for (i = 0; i < NUM_PPP; i++) { - /* Initialize each protocol to the standard option set. */ - for (j = 0; (protp = ppp_protocols[j]) != NULL; ++j) { - (*protp->init)(i); - } - } -} - -void -pppSetAuth(enum pppAuthType authType, const char *user, const char *passwd) -{ - switch(authType) { - case PPPAUTHTYPE_NONE: - default: -#ifdef LWIP_PPP_STRICT_PAP_REJECT - ppp_settings.refuse_pap = 1; -#else /* LWIP_PPP_STRICT_PAP_REJECT */ - /* some providers request pap and accept an empty login/pw */ - ppp_settings.refuse_pap = 0; -#endif /* LWIP_PPP_STRICT_PAP_REJECT */ - ppp_settings.refuse_chap = 1; - break; - - case PPPAUTHTYPE_ANY: - /* Warning: Using PPPAUTHTYPE_ANY might have security consequences. - * RFC 1994 says: - * - * In practice, within or associated with each PPP server, there is a - * database which associates "user" names with authentication - * information ("secrets"). It is not anticipated that a particular - * named user would be authenticated by multiple methods. This would - * make the user vulnerable to attacks which negotiate the least secure - * method from among a set (such as PAP rather than CHAP). If the same - * secret was used, PAP would reveal the secret to be used later with - * CHAP. - * - * Instead, for each user name there should be an indication of exactly - * one method used to authenticate that user name. If a user needs to - * make use of different authentication methods under different - * circumstances, then distinct user names SHOULD be employed, each of - * which identifies exactly one authentication method. - * - */ - ppp_settings.refuse_pap = 0; - ppp_settings.refuse_chap = 0; - break; - - case PPPAUTHTYPE_PAP: - ppp_settings.refuse_pap = 0; - ppp_settings.refuse_chap = 1; - break; - - case PPPAUTHTYPE_CHAP: - ppp_settings.refuse_pap = 1; - ppp_settings.refuse_chap = 0; - break; - } - - if(user) { - strncpy(ppp_settings.user, user, sizeof(ppp_settings.user)-1); - ppp_settings.user[sizeof(ppp_settings.user)-1] = '\0'; - } else { - ppp_settings.user[0] = '\0'; - } - - if(passwd) { - strncpy(ppp_settings.passwd, passwd, sizeof(ppp_settings.passwd)-1); - ppp_settings.passwd[sizeof(ppp_settings.passwd)-1] = '\0'; - } else { - ppp_settings.passwd[0] = '\0'; - } -} - -#if PPPOS_SUPPORT -/** Open a new PPP connection using the given I/O device. - * This initializes the PPP control block but does not - * attempt to negotiate the LCP session. If this port - * connects to a modem, the modem connection must be - * established before calling this. - * Return a new PPP connection descriptor on success or - * an error code (negative) on failure. - * - * pppOpen() is directly defined to this function. - */ -int -pppOverSerialOpen(sio_fd_t fd, void (*linkStatusCB)(void *ctx, int errCode, void *arg), void *linkStatusCtx) -{ - PPPControl *pc; - int pd; - - if (linkStatusCB == NULL) { - /* PPP is single-threaded: without a callback, - * there is no way to know when the link is up. */ - return PPPERR_PARAM; - } - - /* Find a free PPP session descriptor. */ - for (pd = 0; pd < NUM_PPP && pppControl[pd].openFlag != 0; pd++); - - if (pd >= NUM_PPP) { - pd = PPPERR_OPEN; - } else { - pc = &pppControl[pd]; - /* @todo: is this correct or do I overwrite something? */ - memset(pc, 0, sizeof(PPPControl)); - pc->rx.pd = pd; - pc->rx.fd = fd; - - pc->openFlag = 1; - pc->fd = fd; - -#if VJ_SUPPORT - vj_compress_init(&pc->vjComp); -#endif /* VJ_SUPPORT */ - - /* - * Default the in and out accm so that escape and flag characters - * are always escaped. - */ - pc->rx.inACCM[15] = 0x60; /* no need to protect since RX is not running */ - pc->outACCM[15] = 0x60; - - pc->linkStatusCB = linkStatusCB; - pc->linkStatusCtx = linkStatusCtx; - - /* - * Start the connection and handle incoming events (packet or timeout). - */ - PPPDEBUG(LOG_INFO, ("pppOverSerialOpen: unit %d: Connecting\n", pd)); - pppStart(pd); -#if PPP_INPROC_OWNTHREAD - sys_thread_new(PPP_THREAD_NAME, pppInputThread, (void*)&pc->rx, PPP_THREAD_STACKSIZE, PPP_THREAD_PRIO); -#endif - } - - return pd; -} -#endif /* PPPOS_SUPPORT */ - -#if PPPOE_SUPPORT -static void pppOverEthernetLinkStatusCB(int pd, int up); - -void -pppOverEthernetClose(int pd) -{ - PPPControl* pc = &pppControl[pd]; - - /* *TJL* There's no lcp_deinit */ - lcp_close(pd, NULL); - - pppoe_destroy(&pc->netif); -} - -int pppOverEthernetOpen(struct netif *ethif, const char *service_name, const char *concentrator_name, void (*linkStatusCB)(void *ctx, int errCode, void *arg), void *linkStatusCtx) -{ - PPPControl *pc; - int pd; - - LWIP_UNUSED_ARG(service_name); - LWIP_UNUSED_ARG(concentrator_name); - - if (linkStatusCB == NULL) { - /* PPP is single-threaded: without a callback, - * there is no way to know when the link is up. */ - return PPPERR_PARAM; - } - - /* Find a free PPP session descriptor. Critical region? */ - for (pd = 0; pd < NUM_PPP && pppControl[pd].openFlag != 0; pd++); - if (pd >= NUM_PPP) { - pd = PPPERR_OPEN; - } else { - pc = &pppControl[pd]; - memset(pc, 0, sizeof(PPPControl)); - pc->openFlag = 1; - pc->ethif = ethif; - - pc->linkStatusCB = linkStatusCB; - pc->linkStatusCtx = linkStatusCtx; - - lcp_wantoptions[pd].mru = PPPOE_MAXMTU; - lcp_wantoptions[pd].neg_asyncmap = 0; - lcp_wantoptions[pd].neg_pcompression = 0; - lcp_wantoptions[pd].neg_accompression = 0; - - lcp_allowoptions[pd].mru = PPPOE_MAXMTU; - lcp_allowoptions[pd].neg_asyncmap = 0; - lcp_allowoptions[pd].neg_pcompression = 0; - lcp_allowoptions[pd].neg_accompression = 0; - - if(pppoe_create(ethif, pd, pppOverEthernetLinkStatusCB, &pc->pppoe_sc) != ERR_OK) { - pc->openFlag = 0; - return PPPERR_OPEN; - } - - pppoe_connect(pc->pppoe_sc); - } - - return pd; -} -#endif /* PPPOE_SUPPORT */ - - -/* Close a PPP connection and release the descriptor. - * Any outstanding packets in the queues are dropped. - * Return 0 on success, an error code on failure. */ -int -pppClose(int pd) -{ - PPPControl *pc = &pppControl[pd]; - int st = 0; - - PPPDEBUG(LOG_DEBUG, ("pppClose() called\n")); - - /* Disconnect */ -#if PPPOE_SUPPORT - if(pc->ethif) { - PPPDEBUG(LOG_DEBUG, ("pppClose: unit %d kill_link -> pppStop\n", pd)); - pc->errCode = PPPERR_USER; - /* This will leave us at PHASE_DEAD. */ - pppStop(pd); - } else -#endif /* PPPOE_SUPPORT */ - { -#if PPPOS_SUPPORT - PPPDEBUG(LOG_DEBUG, ("pppClose: unit %d kill_link -> pppStop\n", pd)); - pc->errCode = PPPERR_USER; - /* This will leave us at PHASE_DEAD. */ - pppStop(pd); - pppRecvWakeup(pd); -#endif /* PPPOS_SUPPORT */ - } - - return st; -} - -/* This function is called when carrier is lost on the PPP channel. */ -void -pppSigHUP(int pd) -{ - PPPDEBUG(LOG_DEBUG, ("pppSigHUP: unit %d sig_hup -> pppHupCB\n", pd)); - pppHup(pd); -} - -#if PPPOS_SUPPORT -static void -nPut(PPPControl *pc, struct pbuf *nb) -{ - struct pbuf *b; - int c; - - for(b = nb; b != NULL; b = b->next) { - if((c = sio_write(pc->fd, b->payload, b->len)) != b->len) { - PPPDEBUG(LOG_WARNING, - ("PPP nPut: incomplete sio_write(fd:%"SZT_F", len:%d, c: 0x%"X8_F") c = %d\n", (size_t)pc->fd, b->len, c, c)); - LINK_STATS_INC(link.err); - pc->lastXMit = 0; /* prepend PPP_FLAG to next packet */ - snmp_inc_ifoutdiscards(&pc->netif); - pbuf_free(nb); - return; - } - } - - snmp_add_ifoutoctets(&pc->netif, nb->tot_len); - snmp_inc_ifoutucastpkts(&pc->netif); - pbuf_free(nb); - LINK_STATS_INC(link.xmit); -} - -/* - * pppAppend - append given character to end of given pbuf. If outACCM - * is not NULL and the character needs to be escaped, do so. - * If pbuf is full, append another. - * Return the current pbuf. - */ -static struct pbuf * -pppAppend(u_char c, struct pbuf *nb, ext_accm *outACCM) -{ - struct pbuf *tb = nb; - - /* Make sure there is room for the character and an escape code. - * Sure we don't quite fill the buffer if the character doesn't - * get escaped but is one character worth complicating this? */ - /* Note: We assume no packet header. */ - if (nb && (PBUF_POOL_BUFSIZE - nb->len) < 2) { - tb = pbuf_alloc(PBUF_RAW, 0, PBUF_POOL); - if (tb) { - nb->next = tb; - } else { - LINK_STATS_INC(link.memerr); - } - nb = tb; - } - - if (nb) { - if (outACCM && ESCAPE_P(*outACCM, c)) { - *((u_char*)nb->payload + nb->len++) = PPP_ESCAPE; - *((u_char*)nb->payload + nb->len++) = c ^ PPP_TRANS; - } else { - *((u_char*)nb->payload + nb->len++) = c; - } - } - - return tb; -} -#endif /* PPPOS_SUPPORT */ - -#if PPPOE_SUPPORT -static err_t -pppifOutputOverEthernet(int pd, struct pbuf *p) -{ - PPPControl *pc = &pppControl[pd]; - struct pbuf *pb; - u_short protocol = PPP_IP; - int i=0; - u16_t tot_len; - - /* @todo: try to use pbuf_header() here! */ - pb = pbuf_alloc(PBUF_LINK, PPPOE_HDRLEN + sizeof(protocol), PBUF_RAM); - if(!pb) { - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.proterr); - snmp_inc_ifoutdiscards(&pc->netif); - return ERR_MEM; - } - - pbuf_header(pb, -(s16_t)PPPOE_HDRLEN); - - pc->lastXMit = sys_jiffies(); - - if (!pc->pcomp || protocol > 0xFF) { - *((u_char*)pb->payload + i++) = (protocol >> 8) & 0xFF; - } - *((u_char*)pb->payload + i) = protocol & 0xFF; - - pbuf_chain(pb, p); - tot_len = pb->tot_len; - - if(pppoe_xmit(pc->pppoe_sc, pb) != ERR_OK) { - LINK_STATS_INC(link.err); - snmp_inc_ifoutdiscards(&pc->netif); - return PPPERR_DEVICE; - } - - snmp_add_ifoutoctets(&pc->netif, tot_len); - snmp_inc_ifoutucastpkts(&pc->netif); - LINK_STATS_INC(link.xmit); - return ERR_OK; -} -#endif /* PPPOE_SUPPORT */ - -/* Send a packet on the given connection. */ -static err_t -pppifOutput(struct netif *netif, struct pbuf *pb, ip_addr_t *ipaddr) -{ - int pd = (int)(size_t)netif->state; - PPPControl *pc = &pppControl[pd]; -#if PPPOS_SUPPORT - u_short protocol = PPP_IP; - u_int fcsOut = PPP_INITFCS; - struct pbuf *headMB = NULL, *tailMB = NULL, *p; - u_char c; -#endif /* PPPOS_SUPPORT */ - - LWIP_UNUSED_ARG(ipaddr); - - /* Validate parameters. */ - /* We let any protocol value go through - it can't hurt us - * and the peer will just drop it if it's not accepting it. */ - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag || !pb) { - PPPDEBUG(LOG_WARNING, ("pppifOutput[%d]: bad parms prot=%d pb=%p\n", - pd, PPP_IP, pb)); - LINK_STATS_INC(link.opterr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(netif); - return ERR_ARG; - } - - /* Check that the link is up. */ - if (lcp_phase[pd] == PHASE_DEAD) { - PPPDEBUG(LOG_ERR, ("pppifOutput[%d]: link not up\n", pd)); - LINK_STATS_INC(link.rterr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(netif); - return ERR_RTE; - } - -#if PPPOE_SUPPORT - if(pc->ethif) { - return pppifOutputOverEthernet(pd, pb); - } -#endif /* PPPOE_SUPPORT */ - -#if PPPOS_SUPPORT - /* Grab an output buffer. */ - headMB = pbuf_alloc(PBUF_RAW, 0, PBUF_POOL); - if (headMB == NULL) { - PPPDEBUG(LOG_WARNING, ("pppifOutput[%d]: first alloc fail\n", pd)); - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(netif); - return ERR_MEM; - } - -#if VJ_SUPPORT - /* - * Attempt Van Jacobson header compression if VJ is configured and - * this is an IP packet. - */ - if (protocol == PPP_IP && pc->vjEnabled) { - switch (vj_compress_tcp(&pc->vjComp, pb)) { - case TYPE_IP: - /* No change... - protocol = PPP_IP_PROTOCOL; */ - break; - case TYPE_COMPRESSED_TCP: - protocol = PPP_VJC_COMP; - break; - case TYPE_UNCOMPRESSED_TCP: - protocol = PPP_VJC_UNCOMP; - break; - default: - PPPDEBUG(LOG_WARNING, ("pppifOutput[%d]: bad IP packet\n", pd)); - LINK_STATS_INC(link.proterr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(netif); - pbuf_free(headMB); - return ERR_VAL; - } - } -#endif /* VJ_SUPPORT */ - - tailMB = headMB; - - /* Build the PPP header. */ - if ((sys_jiffies() - pc->lastXMit) >= PPP_MAXIDLEFLAG) { - tailMB = pppAppend(PPP_FLAG, tailMB, NULL); - } - - pc->lastXMit = sys_jiffies(); - if (!pc->accomp) { - fcsOut = PPP_FCS(fcsOut, PPP_ALLSTATIONS); - tailMB = pppAppend(PPP_ALLSTATIONS, tailMB, &pc->outACCM); - fcsOut = PPP_FCS(fcsOut, PPP_UI); - tailMB = pppAppend(PPP_UI, tailMB, &pc->outACCM); - } - if (!pc->pcomp || protocol > 0xFF) { - c = (protocol >> 8) & 0xFF; - fcsOut = PPP_FCS(fcsOut, c); - tailMB = pppAppend(c, tailMB, &pc->outACCM); - } - c = protocol & 0xFF; - fcsOut = PPP_FCS(fcsOut, c); - tailMB = pppAppend(c, tailMB, &pc->outACCM); - - /* Load packet. */ - for(p = pb; p; p = p->next) { - int n; - u_char *sPtr; - - sPtr = (u_char*)p->payload; - n = p->len; - while (n-- > 0) { - c = *sPtr++; - - /* Update FCS before checking for special characters. */ - fcsOut = PPP_FCS(fcsOut, c); - - /* Copy to output buffer escaping special characters. */ - tailMB = pppAppend(c, tailMB, &pc->outACCM); - } - } - - /* Add FCS and trailing flag. */ - c = ~fcsOut & 0xFF; - tailMB = pppAppend(c, tailMB, &pc->outACCM); - c = (~fcsOut >> 8) & 0xFF; - tailMB = pppAppend(c, tailMB, &pc->outACCM); - tailMB = pppAppend(PPP_FLAG, tailMB, NULL); - - /* If we failed to complete the packet, throw it away. */ - if (!tailMB) { - PPPDEBUG(LOG_WARNING, - ("pppifOutput[%d]: Alloc err - dropping proto=%d\n", - pd, protocol)); - pbuf_free(headMB); - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.drop); - snmp_inc_ifoutdiscards(netif); - return ERR_MEM; - } - - /* Send it. */ - PPPDEBUG(LOG_INFO, ("pppifOutput[%d]: proto=0x%"X16_F"\n", pd, protocol)); - - nPut(pc, headMB); -#endif /* PPPOS_SUPPORT */ - - return ERR_OK; -} - -/* Get and set parameters for the given connection. - * Return 0 on success, an error code on failure. */ -int -pppIOCtl(int pd, int cmd, void *arg) -{ - PPPControl *pc = &pppControl[pd]; - int st = 0; - - if (pd < 0 || pd >= NUM_PPP) { - st = PPPERR_PARAM; - } else { - switch(cmd) { - case PPPCTLG_UPSTATUS: /* Get the PPP up status. */ - if (arg) { - *(int *)arg = (int)(pc->if_up); - } else { - st = PPPERR_PARAM; - } - break; - case PPPCTLS_ERRCODE: /* Set the PPP error code. */ - if (arg) { - pc->errCode = *(int *)arg; - } else { - st = PPPERR_PARAM; - } - break; - case PPPCTLG_ERRCODE: /* Get the PPP error code. */ - if (arg) { - *(int *)arg = (int)(pc->errCode); - } else { - st = PPPERR_PARAM; - } - break; -#if PPPOS_SUPPORT - case PPPCTLG_FD: /* Get the fd associated with the ppp */ - if (arg) { - *(sio_fd_t *)arg = pc->fd; - } else { - st = PPPERR_PARAM; - } - break; -#endif /* PPPOS_SUPPORT */ - default: - st = PPPERR_PARAM; - break; - } - } - - return st; -} - -/* - * Return the Maximum Transmission Unit for the given PPP connection. - */ -u_short -pppMTU(int pd) -{ - PPPControl *pc = &pppControl[pd]; - u_short st; - - /* Validate parameters. */ - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag) { - st = 0; - } else { - st = pc->mtu; - } - - return st; -} - -#if PPPOE_SUPPORT -int -pppWriteOverEthernet(int pd, const u_char *s, int n) -{ - PPPControl *pc = &pppControl[pd]; - struct pbuf *pb; - - /* skip address & flags */ - s += 2; - n -= 2; - - LWIP_ASSERT("PPPOE_HDRLEN + n <= 0xffff", PPPOE_HDRLEN + n <= 0xffff); - pb = pbuf_alloc(PBUF_LINK, (u16_t)(PPPOE_HDRLEN + n), PBUF_RAM); - if(!pb) { - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.proterr); - snmp_inc_ifoutdiscards(&pc->netif); - return PPPERR_ALLOC; - } - - pbuf_header(pb, -(s16_t)PPPOE_HDRLEN); - - pc->lastXMit = sys_jiffies(); - - MEMCPY(pb->payload, s, n); - - if(pppoe_xmit(pc->pppoe_sc, pb) != ERR_OK) { - LINK_STATS_INC(link.err); - snmp_inc_ifoutdiscards(&pc->netif); - return PPPERR_DEVICE; - } - - snmp_add_ifoutoctets(&pc->netif, (u16_t)n); - snmp_inc_ifoutucastpkts(&pc->netif); - LINK_STATS_INC(link.xmit); - return PPPERR_NONE; -} -#endif /* PPPOE_SUPPORT */ - -/* - * Write n characters to a ppp link. - * RETURN: >= 0 Number of characters written - * -1 Failed to write to device - */ -int -pppWrite(int pd, const u_char *s, int n) -{ - PPPControl *pc = &pppControl[pd]; -#if PPPOS_SUPPORT - u_char c; - u_int fcsOut; - struct pbuf *headMB, *tailMB; -#endif /* PPPOS_SUPPORT */ - -#if PPPOE_SUPPORT - if(pc->ethif) { - return pppWriteOverEthernet(pd, s, n); - } -#endif /* PPPOE_SUPPORT */ - -#if PPPOS_SUPPORT - headMB = pbuf_alloc(PBUF_RAW, 0, PBUF_POOL); - if (headMB == NULL) { - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.proterr); - snmp_inc_ifoutdiscards(&pc->netif); - return PPPERR_ALLOC; - } - - tailMB = headMB; - - /* If the link has been idle, we'll send a fresh flag character to - * flush any noise. */ - if ((sys_jiffies() - pc->lastXMit) >= PPP_MAXIDLEFLAG) { - tailMB = pppAppend(PPP_FLAG, tailMB, NULL); - } - pc->lastXMit = sys_jiffies(); - - fcsOut = PPP_INITFCS; - /* Load output buffer. */ - while (n-- > 0) { - c = *s++; - - /* Update FCS before checking for special characters. */ - fcsOut = PPP_FCS(fcsOut, c); - - /* Copy to output buffer escaping special characters. */ - tailMB = pppAppend(c, tailMB, &pc->outACCM); - } - - /* Add FCS and trailing flag. */ - c = ~fcsOut & 0xFF; - tailMB = pppAppend(c, tailMB, &pc->outACCM); - c = (~fcsOut >> 8) & 0xFF; - tailMB = pppAppend(c, tailMB, &pc->outACCM); - tailMB = pppAppend(PPP_FLAG, tailMB, NULL); - - /* If we failed to complete the packet, throw it away. - * Otherwise send it. */ - if (!tailMB) { - PPPDEBUG(LOG_WARNING, - ("pppWrite[%d]: Alloc err - dropping pbuf len=%d\n", pd, headMB->len)); - /*"pppWrite[%d]: Alloc err - dropping %d:%.*H", pd, headMB->len, LWIP_MIN(headMB->len * 2, 40), headMB->payload)); */ - pbuf_free(headMB); - LINK_STATS_INC(link.memerr); - LINK_STATS_INC(link.proterr); - snmp_inc_ifoutdiscards(&pc->netif); - return PPPERR_ALLOC; - } - - PPPDEBUG(LOG_INFO, ("pppWrite[%d]: len=%d\n", pd, headMB->len)); - /* "pppWrite[%d]: %d:%.*H", pd, headMB->len, LWIP_MIN(headMB->len * 2, 40), headMB->payload)); */ - nPut(pc, headMB); -#endif /* PPPOS_SUPPORT */ - - return PPPERR_NONE; -} - -/* - * ppp_send_config - configure the transmit characteristics of - * the ppp interface. - */ -void -ppp_send_config( int unit, u16_t mtu, u32_t asyncmap, int pcomp, int accomp) -{ - PPPControl *pc = &pppControl[unit]; - int i; - - pc->mtu = mtu; - pc->pcomp = pcomp; - pc->accomp = accomp; - - /* Load the ACCM bits for the 32 control codes. */ - for (i = 0; i < 32/8; i++) { - pc->outACCM[i] = (u_char)((asyncmap >> (8 * i)) & 0xFF); - } - PPPDEBUG(LOG_INFO, ("ppp_send_config[%d]: outACCM=%X %X %X %X\n", - unit, - pc->outACCM[0], pc->outACCM[1], pc->outACCM[2], pc->outACCM[3])); -} - - -/* - * ppp_set_xaccm - set the extended transmit ACCM for the interface. - */ -void -ppp_set_xaccm(int unit, ext_accm *accm) -{ - SMEMCPY(pppControl[unit].outACCM, accm, sizeof(ext_accm)); - PPPDEBUG(LOG_INFO, ("ppp_set_xaccm[%d]: outACCM=%X %X %X %X\n", - unit, - pppControl[unit].outACCM[0], - pppControl[unit].outACCM[1], - pppControl[unit].outACCM[2], - pppControl[unit].outACCM[3])); -} - - -/* - * ppp_recv_config - configure the receive-side characteristics of - * the ppp interface. - */ -void -ppp_recv_config( int unit, int mru, u32_t asyncmap, int pcomp, int accomp) -{ - PPPControl *pc = &pppControl[unit]; - int i; - SYS_ARCH_DECL_PROTECT(lev); - - LWIP_UNUSED_ARG(accomp); - LWIP_UNUSED_ARG(pcomp); - LWIP_UNUSED_ARG(mru); - - /* Load the ACCM bits for the 32 control codes. */ - SYS_ARCH_PROTECT(lev); - for (i = 0; i < 32 / 8; i++) { - /* @todo: does this work? ext_accm has been modified from pppd! */ - pc->rx.inACCM[i] = (u_char)(asyncmap >> (i * 8)); - } - SYS_ARCH_UNPROTECT(lev); - PPPDEBUG(LOG_INFO, ("ppp_recv_config[%d]: inACCM=%X %X %X %X\n", - unit, - pc->rx.inACCM[0], pc->rx.inACCM[1], pc->rx.inACCM[2], pc->rx.inACCM[3])); -} - -#if 0 -/* - * ccp_test - ask kernel whether a given compression method - * is acceptable for use. Returns 1 if the method and parameters - * are OK, 0 if the method is known but the parameters are not OK - * (e.g. code size should be reduced), or -1 if the method is unknown. - */ -int -ccp_test( int unit, int opt_len, int for_transmit, u_char *opt_ptr) -{ - return 0; /* XXX Currently no compression. */ -} - -/* - * ccp_flags_set - inform kernel about the current state of CCP. - */ -void -ccp_flags_set(int unit, int isopen, int isup) -{ - /* XXX */ -} - -/* - * ccp_fatal_error - returns 1 if decompression was disabled as a - * result of an error detected after decompression of a packet, - * 0 otherwise. This is necessary because of patent nonsense. - */ -int -ccp_fatal_error(int unit) -{ - /* XXX */ - return 0; -} -#endif - -/* - * get_idle_time - return how long the link has been idle. - */ -int -get_idle_time(int u, struct ppp_idle *ip) -{ - /* XXX */ - LWIP_UNUSED_ARG(u); - LWIP_UNUSED_ARG(ip); - - return 0; -} - - -/* - * Return user specified netmask, modified by any mask we might determine - * for address `addr' (in network byte order). - * Here we scan through the system's list of interfaces, looking for - * any non-point-to-point interfaces which might appear to be on the same - * network as `addr'. If we find any, we OR in their netmask to the - * user-specified netmask. - */ -u32_t -GetMask(u32_t addr) -{ - u32_t mask, nmask; - - htonl(addr); - if (IP_CLASSA(addr)) { /* determine network mask for address class */ - nmask = IP_CLASSA_NET; - } else if (IP_CLASSB(addr)) { - nmask = IP_CLASSB_NET; - } else { - nmask = IP_CLASSC_NET; - } - - /* class D nets are disallowed by bad_ip_adrs */ - mask = subnetMask | htonl(nmask); - - /* XXX - * Scan through the system's network interfaces. - * Get each netmask and OR them into our mask. - */ - - return mask; -} - -/* - * sifvjcomp - config tcp header compression - */ -int -sifvjcomp(int pd, int vjcomp, u8_t cidcomp, u8_t maxcid) -{ -#if PPPOS_SUPPORT && VJ_SUPPORT - PPPControl *pc = &pppControl[pd]; - - pc->vjEnabled = vjcomp; - pc->vjComp.compressSlot = cidcomp; - pc->vjComp.maxSlotIndex = maxcid; - PPPDEBUG(LOG_INFO, ("sifvjcomp: VJ compress enable=%d slot=%d max slot=%d\n", - vjcomp, cidcomp, maxcid)); -#else /* PPPOS_SUPPORT && VJ_SUPPORT */ - LWIP_UNUSED_ARG(pd); - LWIP_UNUSED_ARG(vjcomp); - LWIP_UNUSED_ARG(cidcomp); - LWIP_UNUSED_ARG(maxcid); -#endif /* PPPOS_SUPPORT && VJ_SUPPORT */ - - return 0; -} - -/* - * pppifNetifInit - netif init callback - */ -static err_t -pppifNetifInit(struct netif *netif) -{ - netif->name[0] = 'p'; - netif->name[1] = 'p'; - netif->output = pppifOutput; - netif->mtu = pppMTU((int)(size_t)netif->state); - netif->flags = NETIF_FLAG_POINTTOPOINT | NETIF_FLAG_LINK_UP; -#if LWIP_NETIF_HOSTNAME - /* @todo: Initialize interface hostname */ - /* netif_set_hostname(netif, "lwip"); */ -#endif /* LWIP_NETIF_HOSTNAME */ - return ERR_OK; -} - - -/* - * sifup - Config the interface up and enable IP packets to pass. - */ -int -sifup(int pd) -{ - PPPControl *pc = &pppControl[pd]; - int st = 1; - - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag) { - st = 0; - PPPDEBUG(LOG_WARNING, ("sifup[%d]: bad parms\n", pd)); - } else { - netif_remove(&pc->netif); - if (netif_add(&pc->netif, &pc->addrs.our_ipaddr, &pc->addrs.netmask, - &pc->addrs.his_ipaddr, (void *)(size_t)pd, pppifNetifInit, ip_input)) { - netif_set_up(&pc->netif); - pc->if_up = 1; - pc->errCode = PPPERR_NONE; - - PPPDEBUG(LOG_DEBUG, ("sifup: unit %d: linkStatusCB=%p errCode=%d\n", pd, pc->linkStatusCB, pc->errCode)); - if (pc->linkStatusCB) { - pc->linkStatusCB(pc->linkStatusCtx, pc->errCode, &pc->addrs); - } - } else { - st = 0; - PPPDEBUG(LOG_ERR, ("sifup[%d]: netif_add failed\n", pd)); - } - } - - return st; -} - -/* - * sifnpmode - Set the mode for handling packets for a given NP. - */ -int -sifnpmode(int u, int proto, enum NPmode mode) -{ - LWIP_UNUSED_ARG(u); - LWIP_UNUSED_ARG(proto); - LWIP_UNUSED_ARG(mode); - return 0; -} - -/* - * sifdown - Config the interface down and disable IP. - */ -int -sifdown(int pd) -{ - PPPControl *pc = &pppControl[pd]; - int st = 1; - - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag) { - st = 0; - PPPDEBUG(LOG_WARNING, ("sifdown[%d]: bad parms\n", pd)); - } else { - pc->if_up = 0; - /* make sure the netif status callback is called */ - netif_set_down(&pc->netif); - netif_remove(&pc->netif); - PPPDEBUG(LOG_DEBUG, ("sifdown: unit %d: linkStatusCB=%p errCode=%d\n", pd, pc->linkStatusCB, pc->errCode)); - if (pc->linkStatusCB) { - pc->linkStatusCB(pc->linkStatusCtx, PPPERR_CONNECT, NULL); - } - } - return st; -} - -/** - * sifaddr - Config the interface IP addresses and netmask. - * @param pd Interface unit ??? - * @param o Our IP address ??? - * @param h His IP address ??? - * @param m IP subnet mask ??? - * @param ns1 Primary DNS - * @param ns2 Secondary DNS - */ -int -sifaddr( int pd, u32_t o, u32_t h, u32_t m, u32_t ns1, u32_t ns2) -{ - PPPControl *pc = &pppControl[pd]; - int st = 1; - - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag) { - st = 0; - PPPDEBUG(LOG_WARNING, ("sifup[%d]: bad parms\n", pd)); - } else { - SMEMCPY(&pc->addrs.our_ipaddr, &o, sizeof(o)); - SMEMCPY(&pc->addrs.his_ipaddr, &h, sizeof(h)); - SMEMCPY(&pc->addrs.netmask, &m, sizeof(m)); - SMEMCPY(&pc->addrs.dns1, &ns1, sizeof(ns1)); - SMEMCPY(&pc->addrs.dns2, &ns2, sizeof(ns2)); - } - return st; -} - -/** - * cifaddr - Clear the interface IP addresses, and delete routes - * through the interface if possible. - * @param pd Interface unit ??? - * @param o Our IP address ??? - * @param h IP broadcast address ??? - */ -int -cifaddr( int pd, u32_t o, u32_t h) -{ - PPPControl *pc = &pppControl[pd]; - int st = 1; - - LWIP_UNUSED_ARG(o); - LWIP_UNUSED_ARG(h); - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag) { - st = 0; - PPPDEBUG(LOG_WARNING, ("sifup[%d]: bad parms\n", pd)); - } else { - IP4_ADDR(&pc->addrs.our_ipaddr, 0,0,0,0); - IP4_ADDR(&pc->addrs.his_ipaddr, 0,0,0,0); - IP4_ADDR(&pc->addrs.netmask, 255,255,255,0); - IP4_ADDR(&pc->addrs.dns1, 0,0,0,0); - IP4_ADDR(&pc->addrs.dns2, 0,0,0,0); - } - return st; -} - -/* - * sifdefaultroute - assign a default route through the address given. - */ -int -sifdefaultroute(int pd, u32_t l, u32_t g) -{ - PPPControl *pc = &pppControl[pd]; - int st = 1; - - LWIP_UNUSED_ARG(l); - LWIP_UNUSED_ARG(g); - - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag) { - st = 0; - PPPDEBUG(LOG_WARNING, ("sifup[%d]: bad parms\n", pd)); - } else { - netif_set_default(&pc->netif); - } - - /* TODO: check how PPP handled the netMask, previously not set by ipSetDefault */ - - return st; -} - -/* - * cifdefaultroute - delete a default route through the address given. - */ -int -cifdefaultroute(int pd, u32_t l, u32_t g) -{ - PPPControl *pc = &pppControl[pd]; - int st = 1; - - LWIP_UNUSED_ARG(l); - LWIP_UNUSED_ARG(g); - - if (pd < 0 || pd >= NUM_PPP || !pc->openFlag) { - st = 0; - PPPDEBUG(LOG_WARNING, ("sifup[%d]: bad parms\n", pd)); - } else { - netif_set_default(NULL); - } - - return st; -} - -/**********************************/ -/*** LOCAL FUNCTION DEFINITIONS ***/ -/**********************************/ - -#if PPPOS_SUPPORT && PPP_INPROC_OWNTHREAD -/* The main PPP process function. This implements the state machine according - * to section 4 of RFC 1661: The Point-To-Point Protocol. */ -static void -pppInputThread(void *arg) -{ - int count; - PPPControlRx *pcrx = arg; - - while (lcp_phase[pcrx->pd] != PHASE_DEAD) { - count = sio_read(pcrx->fd, pcrx->rxbuf, PPPOS_RX_BUFSIZE); - if(count > 0) { - pppInProc(pcrx, pcrx->rxbuf, count); - } else { - /* nothing received, give other tasks a chance to run */ - sys_msleep(1); - } - } -} -#endif /* PPPOS_SUPPORT && PPP_INPROC_OWNTHREAD */ - -#if PPPOE_SUPPORT - -void -pppOverEthernetInitFailed(int pd) -{ - PPPControl* pc; - - pppHup(pd); - pppStop(pd); - - pc = &pppControl[pd]; - pppoe_destroy(&pc->netif); - pc->openFlag = 0; - - if(pc->linkStatusCB) { - pc->linkStatusCB(pc->linkStatusCtx, pc->errCode ? pc->errCode : PPPERR_PROTOCOL, NULL); - } -} - -static void -pppOverEthernetLinkStatusCB(int pd, int up) -{ - if(up) { - PPPDEBUG(LOG_INFO, ("pppOverEthernetLinkStatusCB: unit %d: Connecting\n", pd)); - pppStart(pd); - } else { - pppOverEthernetInitFailed(pd); - } -} -#endif /* PPPOE_SUPPORT */ - -struct pbuf * -pppSingleBuf(struct pbuf *p) -{ - struct pbuf *q, *b; - u_char *pl; - - if(p->tot_len == p->len) { - return p; - } - - q = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); - if(!q) { - PPPDEBUG(LOG_ERR, - ("pppSingleBuf: unable to alloc new buf (%d)\n", p->tot_len)); - return p; /* live dangerously */ - } - - for(b = p, pl = q->payload; b != NULL; b = b->next) { - MEMCPY(pl, b->payload, b->len); - pl += b->len; - } - - pbuf_free(p); - - return q; -} - -struct pppInputHeader { - int unit; - u16_t proto; -}; - -/* - * Pass the processed input packet to the appropriate handler. - * This function and all handlers run in the context of the tcpip_thread - */ -static void -pppInput(void *arg) -{ - struct pbuf *nb = (struct pbuf *)arg; - u16_t protocol; - int pd; - - pd = ((struct pppInputHeader *)nb->payload)->unit; - protocol = ((struct pppInputHeader *)nb->payload)->proto; - - if(pbuf_header(nb, -(int)sizeof(struct pppInputHeader))) { - LWIP_ASSERT("pbuf_header failed\n", 0); - goto drop; - } - - LINK_STATS_INC(link.recv); - snmp_inc_ifinucastpkts(&pppControl[pd].netif); - snmp_add_ifinoctets(&pppControl[pd].netif, nb->tot_len); - - /* - * Toss all non-LCP packets unless LCP is OPEN. - * Until we get past the authentication phase, toss all packets - * except LCP, LQR and authentication packets. - */ - if((lcp_phase[pd] <= PHASE_AUTHENTICATE) && (protocol != PPP_LCP)) { - if(!((protocol == PPP_LQR) || (protocol == PPP_PAP) || (protocol == PPP_CHAP)) || - (lcp_phase[pd] != PHASE_AUTHENTICATE)) { - PPPDEBUG(LOG_INFO, ("pppInput: discarding proto 0x%"X16_F" in phase %d\n", protocol, lcp_phase[pd])); - goto drop; - } - } - - switch(protocol) { - case PPP_VJC_COMP: /* VJ compressed TCP */ -#if PPPOS_SUPPORT && VJ_SUPPORT - PPPDEBUG(LOG_INFO, ("pppInput[%d]: vj_comp in pbuf len=%d\n", pd, nb->len)); - /* - * Clip off the VJ header and prepend the rebuilt TCP/IP header and - * pass the result to IP. - */ - if ((vj_uncompress_tcp(&nb, &pppControl[pd].vjComp) >= 0) && (pppControl[pd].netif.input)) { - pppControl[pd].netif.input(nb, &pppControl[pd].netif); - return; - } - /* Something's wrong so drop it. */ - PPPDEBUG(LOG_WARNING, ("pppInput[%d]: Dropping VJ compressed\n", pd)); -#else /* PPPOS_SUPPORT && VJ_SUPPORT */ - /* No handler for this protocol so drop the packet. */ - PPPDEBUG(LOG_INFO, ("pppInput[%d]: drop VJ Comp in %d:%s\n", pd, nb->len, nb->payload)); -#endif /* PPPOS_SUPPORT && VJ_SUPPORT */ - break; - - case PPP_VJC_UNCOMP: /* VJ uncompressed TCP */ -#if PPPOS_SUPPORT && VJ_SUPPORT - PPPDEBUG(LOG_INFO, ("pppInput[%d]: vj_un in pbuf len=%d\n", pd, nb->len)); - /* - * Process the TCP/IP header for VJ header compression and then pass - * the packet to IP. - */ - if ((vj_uncompress_uncomp(nb, &pppControl[pd].vjComp) >= 0) && pppControl[pd].netif.input) { - pppControl[pd].netif.input(nb, &pppControl[pd].netif); - return; - } - /* Something's wrong so drop it. */ - PPPDEBUG(LOG_WARNING, ("pppInput[%d]: Dropping VJ uncompressed\n", pd)); -#else /* PPPOS_SUPPORT && VJ_SUPPORT */ - /* No handler for this protocol so drop the packet. */ - PPPDEBUG(LOG_INFO, - ("pppInput[%d]: drop VJ UnComp in %d:.*H\n", - pd, nb->len, LWIP_MIN(nb->len * 2, 40), nb->payload)); -#endif /* PPPOS_SUPPORT && VJ_SUPPORT */ - break; - - case PPP_IP: /* Internet Protocol */ - PPPDEBUG(LOG_INFO, ("pppInput[%d]: ip in pbuf len=%d\n", pd, nb->len)); - if (pppControl[pd].netif.input) { - pppControl[pd].netif.input(nb, &pppControl[pd].netif); - return; - } - break; - - default: { - struct protent *protp; - int i; - - /* - * Upcall the proper protocol input routine. - */ - for (i = 0; (protp = ppp_protocols[i]) != NULL; ++i) { - if (protp->protocol == protocol && protp->enabled_flag) { - PPPDEBUG(LOG_INFO, ("pppInput[%d]: %s len=%d\n", pd, protp->name, nb->len)); - nb = pppSingleBuf(nb); - (*protp->input)(pd, nb->payload, nb->len); - PPPDEBUG(LOG_DETAIL, ("pppInput[%d]: packet processed\n", pd)); - goto out; - } - } - - /* No handler for this protocol so reject the packet. */ - PPPDEBUG(LOG_INFO, ("pppInput[%d]: rejecting unsupported proto 0x%"X16_F" len=%d\n", pd, protocol, nb->len)); - if (pbuf_header(nb, sizeof(protocol))) { - LWIP_ASSERT("pbuf_header failed\n", 0); - goto drop; - } -#if BYTE_ORDER == LITTLE_ENDIAN - protocol = htons(protocol); -#endif /* BYTE_ORDER == LITTLE_ENDIAN */ - SMEMCPY(nb->payload, &protocol, sizeof(protocol)); - lcp_sprotrej(pd, nb->payload, nb->len); - } - break; - } - -drop: - LINK_STATS_INC(link.drop); - snmp_inc_ifindiscards(&pppControl[pd].netif); - -out: - pbuf_free(nb); - return; -} - -#if PPPOS_SUPPORT -/* - * Drop the input packet. - */ -static void -pppDrop(PPPControlRx *pcrx) -{ - if (pcrx->inHead != NULL) { -#if 0 - PPPDEBUG(LOG_INFO, ("pppDrop: %d:%.*H\n", pcrx->inHead->len, min(60, pcrx->inHead->len * 2), pcrx->inHead->payload)); -#endif - PPPDEBUG(LOG_INFO, ("pppDrop: pbuf len=%d, addr %p\n", pcrx->inHead->len, (void*)pcrx->inHead)); - if (pcrx->inTail && (pcrx->inTail != pcrx->inHead)) { - pbuf_free(pcrx->inTail); - } - pbuf_free(pcrx->inHead); - pcrx->inHead = NULL; - pcrx->inTail = NULL; - } -#if VJ_SUPPORT - vj_uncompress_err(&pppControl[pcrx->pd].vjComp); -#endif /* VJ_SUPPORT */ - - LINK_STATS_INC(link.drop); - snmp_inc_ifindiscards(&pppControl[pcrx->pd].netif); -} - -/** Pass received raw characters to PPPoS to be decoded. This function is - * thread-safe and can be called from a dedicated RX-thread or from a main-loop. - * - * @param pd PPP descriptor index, returned by pppOpen() - * @param data received data - * @param len length of received data - */ -void -pppos_input(int pd, u_char* data, int len) -{ - pppInProc(&pppControl[pd].rx, data, len); -} - -/** - * Process a received octet string. - */ -static void -pppInProc(PPPControlRx *pcrx, u_char *s, int l) -{ - struct pbuf *nextNBuf; - u_char curChar; - u_char escaped; - SYS_ARCH_DECL_PROTECT(lev); - - PPPDEBUG(LOG_DEBUG, ("pppInProc[%d]: got %d bytes\n", pcrx->pd, l)); - while (l-- > 0) { - curChar = *s++; - - SYS_ARCH_PROTECT(lev); - escaped = ESCAPE_P(pcrx->inACCM, curChar); - SYS_ARCH_UNPROTECT(lev); - /* Handle special characters. */ - if (escaped) { - /* Check for escape sequences. */ - /* XXX Note that this does not handle an escaped 0x5d character which - * would appear as an escape character. Since this is an ASCII ']' - * and there is no reason that I know of to escape it, I won't complicate - * the code to handle this case. GLL */ - if (curChar == PPP_ESCAPE) { - pcrx->inEscaped = 1; - /* Check for the flag character. */ - } else if (curChar == PPP_FLAG) { - /* If this is just an extra flag character, ignore it. */ - if (pcrx->inState <= PDADDRESS) { - /* ignore it */; - /* If we haven't received the packet header, drop what has come in. */ - } else if (pcrx->inState < PDDATA) { - PPPDEBUG(LOG_WARNING, - ("pppInProc[%d]: Dropping incomplete packet %d\n", - pcrx->pd, pcrx->inState)); - LINK_STATS_INC(link.lenerr); - pppDrop(pcrx); - /* If the fcs is invalid, drop the packet. */ - } else if (pcrx->inFCS != PPP_GOODFCS) { - PPPDEBUG(LOG_INFO, - ("pppInProc[%d]: Dropping bad fcs 0x%"X16_F" proto=0x%"X16_F"\n", - pcrx->pd, pcrx->inFCS, pcrx->inProtocol)); - /* Note: If you get lots of these, check for UART frame errors or try different baud rate */ - LINK_STATS_INC(link.chkerr); - pppDrop(pcrx); - /* Otherwise it's a good packet so pass it on. */ - } else { - struct pbuf *inp; - /* Trim off the checksum. */ - if(pcrx->inTail->len >= 2) { - pcrx->inTail->len -= 2; - - pcrx->inTail->tot_len = pcrx->inTail->len; - if (pcrx->inTail != pcrx->inHead) { - pbuf_cat(pcrx->inHead, pcrx->inTail); - } - } else { - pcrx->inTail->tot_len = pcrx->inTail->len; - if (pcrx->inTail != pcrx->inHead) { - pbuf_cat(pcrx->inHead, pcrx->inTail); - } - - pbuf_realloc(pcrx->inHead, pcrx->inHead->tot_len - 2); - } - - /* Dispatch the packet thereby consuming it. */ - inp = pcrx->inHead; - /* Packet consumed, release our references. */ - pcrx->inHead = NULL; - pcrx->inTail = NULL; -#if PPP_INPROC_MULTITHREADED - if(tcpip_callback_with_block(pppInput, inp, 0) != ERR_OK) { - PPPDEBUG(LOG_ERR, ("pppInProc[%d]: tcpip_callback() failed, dropping packet\n", pcrx->pd)); - pbuf_free(inp); - LINK_STATS_INC(link.drop); - snmp_inc_ifindiscards(&pppControl[pcrx->pd].netif); - } -#else /* PPP_INPROC_MULTITHREADED */ - pppInput(inp); -#endif /* PPP_INPROC_MULTITHREADED */ - } - - /* Prepare for a new packet. */ - pcrx->inFCS = PPP_INITFCS; - pcrx->inState = PDADDRESS; - pcrx->inEscaped = 0; - /* Other characters are usually control characters that may have - * been inserted by the physical layer so here we just drop them. */ - } else { - PPPDEBUG(LOG_WARNING, - ("pppInProc[%d]: Dropping ACCM char <%d>\n", pcrx->pd, curChar)); - } - /* Process other characters. */ - } else { - /* Unencode escaped characters. */ - if (pcrx->inEscaped) { - pcrx->inEscaped = 0; - curChar ^= PPP_TRANS; - } - - /* Process character relative to current state. */ - switch(pcrx->inState) { - case PDIDLE: /* Idle state - waiting. */ - /* Drop the character if it's not 0xff - * we would have processed a flag character above. */ - if (curChar != PPP_ALLSTATIONS) { - break; - } - - /* Fall through */ - case PDSTART: /* Process start flag. */ - /* Prepare for a new packet. */ - pcrx->inFCS = PPP_INITFCS; - - /* Fall through */ - case PDADDRESS: /* Process address field. */ - if (curChar == PPP_ALLSTATIONS) { - pcrx->inState = PDCONTROL; - break; - } - /* Else assume compressed address and control fields so - * fall through to get the protocol... */ - case PDCONTROL: /* Process control field. */ - /* If we don't get a valid control code, restart. */ - if (curChar == PPP_UI) { - pcrx->inState = PDPROTOCOL1; - break; - } -#if 0 - else { - PPPDEBUG(LOG_WARNING, - ("pppInProc[%d]: Invalid control <%d>\n", pcrx->pd, curChar)); - pcrx->inState = PDSTART; - } -#endif - case PDPROTOCOL1: /* Process protocol field 1. */ - /* If the lower bit is set, this is the end of the protocol - * field. */ - if (curChar & 1) { - pcrx->inProtocol = curChar; - pcrx->inState = PDDATA; - } else { - pcrx->inProtocol = (u_int)curChar << 8; - pcrx->inState = PDPROTOCOL2; - } - break; - case PDPROTOCOL2: /* Process protocol field 2. */ - pcrx->inProtocol |= curChar; - pcrx->inState = PDDATA; - break; - case PDDATA: /* Process data byte. */ - /* Make space to receive processed data. */ - if (pcrx->inTail == NULL || pcrx->inTail->len == PBUF_POOL_BUFSIZE) { - if (pcrx->inTail != NULL) { - pcrx->inTail->tot_len = pcrx->inTail->len; - if (pcrx->inTail != pcrx->inHead) { - pbuf_cat(pcrx->inHead, pcrx->inTail); - /* give up the inTail reference now */ - pcrx->inTail = NULL; - } - } - /* If we haven't started a packet, we need a packet header. */ - nextNBuf = pbuf_alloc(PBUF_RAW, 0, PBUF_POOL); - if (nextNBuf == NULL) { - /* No free buffers. Drop the input packet and let the - * higher layers deal with it. Continue processing - * the received pbuf chain in case a new packet starts. */ - PPPDEBUG(LOG_ERR, ("pppInProc[%d]: NO FREE MBUFS!\n", pcrx->pd)); - LINK_STATS_INC(link.memerr); - pppDrop(pcrx); - pcrx->inState = PDSTART; /* Wait for flag sequence. */ - break; - } - if (pcrx->inHead == NULL) { - struct pppInputHeader *pih = nextNBuf->payload; - - pih->unit = pcrx->pd; - pih->proto = pcrx->inProtocol; - - nextNBuf->len += sizeof(*pih); - - pcrx->inHead = nextNBuf; - } - pcrx->inTail = nextNBuf; - } - /* Load character into buffer. */ - ((u_char*)pcrx->inTail->payload)[pcrx->inTail->len++] = curChar; - break; - } - - /* update the frame check sequence number. */ - pcrx->inFCS = PPP_FCS(pcrx->inFCS, curChar); - } - } /* while (l-- > 0), all bytes processed */ - - avRandomize(); -} -#endif /* PPPOS_SUPPORT */ - -#if PPPOE_SUPPORT -void -pppInProcOverEthernet(int pd, struct pbuf *pb) -{ - struct pppInputHeader *pih; - u16_t inProtocol; - - if(pb->len < sizeof(inProtocol)) { - PPPDEBUG(LOG_ERR, ("pppInProcOverEthernet: too small for protocol field\n")); - goto drop; - } - - inProtocol = (((u8_t *)pb->payload)[0] << 8) | ((u8_t*)pb->payload)[1]; - - /* make room for pppInputHeader - should not fail */ - if (pbuf_header(pb, sizeof(*pih) - sizeof(inProtocol)) != 0) { - PPPDEBUG(LOG_ERR, ("pppInProcOverEthernet: could not allocate room for header\n")); - goto drop; - } - - pih = pb->payload; - - pih->unit = pd; - pih->proto = inProtocol; - - /* Dispatch the packet thereby consuming it. */ - pppInput(pb); - return; - -drop: - LINK_STATS_INC(link.drop); - snmp_inc_ifindiscards(&pppControl[pd].netif); - pbuf_free(pb); - return; -} -#endif /* PPPOE_SUPPORT */ - -#if LWIP_NETIF_STATUS_CALLBACK -/** Set the status callback of a PPP's netif - * - * @param pd The PPP descriptor returned by pppOpen() - * @param status_callback pointer to the status callback function - * - * @see netif_set_status_callback - */ -void -ppp_set_netif_statuscallback(int pd, netif_status_callback_fn status_callback) -{ - netif_set_status_callback(&pppControl[pd].netif, status_callback); -} -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -/** Set the link callback of a PPP's netif - * - * @param pd The PPP descriptor returned by pppOpen() - * @param link_callback pointer to the link callback function - * - * @see netif_set_link_callback - */ -void -ppp_set_netif_linkcallback(int pd, netif_status_callback_fn link_callback) -{ - netif_set_link_callback(&pppControl[pd].netif, link_callback); -} -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.h deleted file mode 100644 index a72ac9576..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp.h +++ /dev/null @@ -1,483 +0,0 @@ -/***************************************************************************** -* ppp.h - Network Point to Point Protocol header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1997 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 97-11-05 Guy Lancaster , Global Election Systems Inc. -* Original derived from BSD codes. -*****************************************************************************/ - -#ifndef PPP_H -#define PPP_H - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/sio.h" -#include "lwip/stats.h" -#include "lwip/mem.h" -#include "lwip/netif.h" -#include "lwip/sys.h" -#include "lwip/timers.h" - -/** Some defines for code we skip compared to the original pppd. - * These are just here to minimise the use of the ugly "#if 0". */ -#define PPP_ADDITIONAL_CALLBACKS 0 - -/** Some error checks to test for unsupported code */ -#if CBCP_SUPPORT -#error "CBCP is not supported in lwIP PPP" -#endif -#if CCP_SUPPORT -#error "CCP is not supported in lwIP PPP" -#endif - -/* - * pppd.h - PPP daemon global declarations. - * - * Copyright (c) 1989 Carnegie Mellon University. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by Carnegie Mellon University. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - */ -/* - * ppp_defs.h - PPP definitions. - * - * Copyright (c) 1994 The Australian National University. - * All rights reserved. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation is hereby granted, provided that the above copyright - * notice appears in all copies. This software is provided without any - * warranty, express or implied. The Australian National University - * makes no representations about the suitability of this software for - * any purpose. - * - * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY - * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF - * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO - * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, - * OR MODIFICATIONS. - */ - -#define TIMEOUT(f, a, t) do { sys_untimeout((f), (a)); sys_timeout((t)*1000, (f), (a)); } while(0) -#define UNTIMEOUT(f, a) sys_untimeout((f), (a)) - - -#ifndef __u_char_defined - -/* Type definitions for BSD code. */ -typedef unsigned long u_long; -typedef unsigned int u_int; -typedef unsigned short u_short; -typedef unsigned char u_char; - -#endif - -/* - * Constants and structures defined by the internet system, - * Per RFC 790, September 1981, and numerous additions. - */ - -/* - * The basic PPP frame. - */ -#define PPP_HDRLEN 4 /* octets for standard ppp header */ -#define PPP_FCSLEN 2 /* octets for FCS */ - - -/* - * Significant octet values. - */ -#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */ -#define PPP_UI 0x03 /* Unnumbered Information */ -#define PPP_FLAG 0x7e /* Flag Sequence */ -#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */ -#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */ - -/* - * Protocol field values. - */ -#define PPP_IP 0x21 /* Internet Protocol */ -#define PPP_AT 0x29 /* AppleTalk Protocol */ -#define PPP_VJC_COMP 0x2d /* VJ compressed TCP */ -#define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */ -#define PPP_COMP 0xfd /* compressed packet */ -#define PPP_IPCP 0x8021 /* IP Control Protocol */ -#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */ -#define PPP_CCP 0x80fd /* Compression Control Protocol */ -#define PPP_LCP 0xc021 /* Link Control Protocol */ -#define PPP_PAP 0xc023 /* Password Authentication Protocol */ -#define PPP_LQR 0xc025 /* Link Quality Report protocol */ -#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */ -#define PPP_CBCP 0xc029 /* Callback Control Protocol */ - -/* - * Values for FCS calculations. - */ -#define PPP_INITFCS 0xffff /* Initial FCS value */ -#define PPP_GOODFCS 0xf0b8 /* Good final FCS value */ -#define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff]) - -/* - * Extended asyncmap - allows any character to be escaped. - */ -typedef u_char ext_accm[32]; - -/* - * What to do with network protocol (NP) packets. - */ -enum NPmode { - NPMODE_PASS, /* pass the packet through */ - NPMODE_DROP, /* silently drop the packet */ - NPMODE_ERROR, /* return an error */ - NPMODE_QUEUE /* save it up for later. */ -}; - -/* - * Inline versions of get/put char/short/long. - * Pointer is advanced; we assume that both arguments - * are lvalues and will already be in registers. - * cp MUST be u_char *. - */ -#define GETCHAR(c, cp) { \ - (c) = *(cp)++; \ -} -#define PUTCHAR(c, cp) { \ - *(cp)++ = (u_char) (c); \ -} - - -#define GETSHORT(s, cp) { \ - (s) = *(cp); (cp)++; (s) <<= 8; \ - (s) |= *(cp); (cp)++; \ -} -#define PUTSHORT(s, cp) { \ - *(cp)++ = (u_char) ((s) >> 8); \ - *(cp)++ = (u_char) (s & 0xff); \ -} - -#define GETLONG(l, cp) { \ - (l) = *(cp); (cp)++; (l) <<= 8; \ - (l) |= *(cp); (cp)++; (l) <<= 8; \ - (l) |= *(cp); (cp)++; (l) <<= 8; \ - (l) |= *(cp); (cp)++; \ -} -#define PUTLONG(l, cp) { \ - *(cp)++ = (u_char) ((l) >> 24); \ - *(cp)++ = (u_char) ((l) >> 16); \ - *(cp)++ = (u_char) ((l) >> 8); \ - *(cp)++ = (u_char) (l); \ -} - - -#define INCPTR(n, cp) ((cp) += (n)) -#define DECPTR(n, cp) ((cp) -= (n)) - -#define BCMP(s0, s1, l) memcmp((u_char *)(s0), (u_char *)(s1), (l)) -#define BCOPY(s, d, l) MEMCPY((d), (s), (l)) -#define BZERO(s, n) memset(s, 0, n) - -#if PPP_DEBUG -#define PRINTMSG(m, l) { m[l] = '\0'; LWIP_DEBUGF(LOG_INFO, ("Remote message: %s\n", m)); } -#else /* PPP_DEBUG */ -#define PRINTMSG(m, l) -#endif /* PPP_DEBUG */ - -/* - * MAKEHEADER - Add PPP Header fields to a packet. - */ -#define MAKEHEADER(p, t) { \ - PUTCHAR(PPP_ALLSTATIONS, p); \ - PUTCHAR(PPP_UI, p); \ - PUTSHORT(t, p); } - -/************************* -*** PUBLIC DEFINITIONS *** -*************************/ - -/* Error codes. */ -#define PPPERR_NONE 0 /* No error. */ -#define PPPERR_PARAM -1 /* Invalid parameter. */ -#define PPPERR_OPEN -2 /* Unable to open PPP session. */ -#define PPPERR_DEVICE -3 /* Invalid I/O device for PPP. */ -#define PPPERR_ALLOC -4 /* Unable to allocate resources. */ -#define PPPERR_USER -5 /* User interrupt. */ -#define PPPERR_CONNECT -6 /* Connection lost. */ -#define PPPERR_AUTHFAIL -7 /* Failed authentication challenge. */ -#define PPPERR_PROTOCOL -8 /* Failed to meet protocol. */ - -/* - * PPP IOCTL commands. - */ -/* - * Get the up status - 0 for down, non-zero for up. The argument must - * point to an int. - */ -#define PPPCTLG_UPSTATUS 100 /* Get the up status - 0 down else up */ -#define PPPCTLS_ERRCODE 101 /* Set the error code */ -#define PPPCTLG_ERRCODE 102 /* Get the error code */ -#define PPPCTLG_FD 103 /* Get the fd associated with the ppp */ - -/************************ -*** PUBLIC DATA TYPES *** -************************/ - -/* - * The following struct gives the addresses of procedures to call - * for a particular protocol. - */ -struct protent { - u_short protocol; /* PPP protocol number */ - /* Initialization procedure */ - void (*init) (int unit); - /* Process a received packet */ - void (*input) (int unit, u_char *pkt, int len); - /* Process a received protocol-reject */ - void (*protrej) (int unit); - /* Lower layer has come up */ - void (*lowerup) (int unit); - /* Lower layer has gone down */ - void (*lowerdown) (int unit); - /* Open the protocol */ - void (*open) (int unit); - /* Close the protocol */ - void (*close) (int unit, char *reason); -#if PPP_ADDITIONAL_CALLBACKS - /* Print a packet in readable form */ - int (*printpkt) (u_char *pkt, int len, - void (*printer) (void *, char *, ...), - void *arg); - /* Process a received data packet */ - void (*datainput) (int unit, u_char *pkt, int len); -#endif /* PPP_ADDITIONAL_CALLBACKS */ - int enabled_flag; /* 0 if protocol is disabled */ - char *name; /* Text name of protocol */ -#if PPP_ADDITIONAL_CALLBACKS - /* Check requested options, assign defaults */ - void (*check_options) (u_long); - /* Configure interface for demand-dial */ - int (*demand_conf) (int unit); - /* Say whether to bring up link for this pkt */ - int (*active_pkt) (u_char *pkt, int len); -#endif /* PPP_ADDITIONAL_CALLBACKS */ -}; - -/* - * The following structure records the time in seconds since - * the last NP packet was sent or received. - */ -struct ppp_idle { - u_short xmit_idle; /* seconds since last NP packet sent */ - u_short recv_idle; /* seconds since last NP packet received */ -}; - -struct ppp_settings { - - u_int disable_defaultip : 1; /* Don't use hostname for default IP addrs */ - u_int auth_required : 1; /* Peer is required to authenticate */ - u_int explicit_remote : 1; /* remote_name specified with remotename opt */ - u_int refuse_pap : 1; /* Don't wanna auth. ourselves with PAP */ - u_int refuse_chap : 1; /* Don't wanna auth. ourselves with CHAP */ - u_int usehostname : 1; /* Use hostname for our_name */ - u_int usepeerdns : 1; /* Ask peer for DNS adds */ - - u_short idle_time_limit; /* Shut down link if idle for this long */ - int maxconnect; /* Maximum connect time (seconds) */ - - char user [MAXNAMELEN + 1]; /* Username for PAP */ - char passwd [MAXSECRETLEN + 1]; /* Password for PAP, secret for CHAP */ - char our_name [MAXNAMELEN + 1]; /* Our name for authentication purposes */ - char remote_name[MAXNAMELEN + 1]; /* Peer's name for authentication */ -}; - -struct ppp_addrs { - ip_addr_t our_ipaddr, his_ipaddr, netmask, dns1, dns2; -}; - -/***************************** -*** PUBLIC DATA STRUCTURES *** -*****************************/ - -/* Buffers for outgoing packets. */ -extern u_char outpacket_buf[NUM_PPP][PPP_MRU+PPP_HDRLEN]; - -extern struct ppp_settings ppp_settings; - -extern struct protent *ppp_protocols[]; /* Table of pointers to supported protocols */ - - -/*********************** -*** PUBLIC FUNCTIONS *** -***********************/ - -/* Initialize the PPP subsystem. */ -void pppInit(void); - -/* Warning: Using PPPAUTHTYPE_ANY might have security consequences. - * RFC 1994 says: - * - * In practice, within or associated with each PPP server, there is a - * database which associates "user" names with authentication - * information ("secrets"). It is not anticipated that a particular - * named user would be authenticated by multiple methods. This would - * make the user vulnerable to attacks which negotiate the least secure - * method from among a set (such as PAP rather than CHAP). If the same - * secret was used, PAP would reveal the secret to be used later with - * CHAP. - * - * Instead, for each user name there should be an indication of exactly - * one method used to authenticate that user name. If a user needs to - * make use of different authentication methods under different - * circumstances, then distinct user names SHOULD be employed, each of - * which identifies exactly one authentication method. - * - */ -enum pppAuthType { - PPPAUTHTYPE_NONE, - PPPAUTHTYPE_ANY, - PPPAUTHTYPE_PAP, - PPPAUTHTYPE_CHAP -}; - -void pppSetAuth(enum pppAuthType authType, const char *user, const char *passwd); - -/* - * Open a new PPP connection using the given serial I/O device. - * This initializes the PPP control block but does not - * attempt to negotiate the LCP session. - * Return a new PPP connection descriptor on success or - * an error code (negative) on failure. - */ -int pppOverSerialOpen(sio_fd_t fd, void (*linkStatusCB)(void *ctx, int errCode, void *arg), void *linkStatusCtx); - -/* - * Open a new PPP Over Ethernet (PPPOE) connection. - */ -int pppOverEthernetOpen(struct netif *ethif, const char *service_name, const char *concentrator_name, void (*linkStatusCB)(void *ctx, int errCode, void *arg), void *linkStatusCtx); - -/* for source code compatibility */ -#define pppOpen(fd,cb,ls) pppOverSerialOpen(fd,cb,ls) - -/* - * Close a PPP connection and release the descriptor. - * Any outstanding packets in the queues are dropped. - * Return 0 on success, an error code on failure. - */ -int pppClose(int pd); - -/* - * Indicate to the PPP process that the line has disconnected. - */ -void pppSigHUP(int pd); - -/* - * Get and set parameters for the given connection. - * Return 0 on success, an error code on failure. - */ -int pppIOCtl(int pd, int cmd, void *arg); - -/* - * Return the Maximum Transmission Unit for the given PPP connection. - */ -u_short pppMTU(int pd); - -/* - * Write n characters to a ppp link. - * RETURN: >= 0 Number of characters written, -1 Failed to write to device. - */ -int pppWrite(int pd, const u_char *s, int n); - -void pppInProcOverEthernet(int pd, struct pbuf *pb); - -struct pbuf *pppSingleBuf(struct pbuf *p); - -void pppLinkTerminated(int pd); - -void pppLinkDown(int pd); - -void pppos_input(int pd, u_char* data, int len); - -/* Configure i/f transmit parameters */ -void ppp_send_config (int, u16_t, u32_t, int, int); -/* Set extended transmit ACCM */ -void ppp_set_xaccm (int, ext_accm *); -/* Configure i/f receive parameters */ -void ppp_recv_config (int, int, u32_t, int, int); -/* Find out how long link has been idle */ -int get_idle_time (int, struct ppp_idle *); - -/* Configure VJ TCP header compression */ -int sifvjcomp (int, int, u8_t, u8_t); -/* Configure i/f down (for IP) */ -int sifup (int); -/* Set mode for handling packets for proto */ -int sifnpmode (int u, int proto, enum NPmode mode); -/* Configure i/f down (for IP) */ -int sifdown (int); -/* Configure IP addresses for i/f */ -int sifaddr (int, u32_t, u32_t, u32_t, u32_t, u32_t); -/* Reset i/f IP addresses */ -int cifaddr (int, u32_t, u32_t); -/* Create default route through i/f */ -int sifdefaultroute (int, u32_t, u32_t); -/* Delete default route through i/f */ -int cifdefaultroute (int, u32_t, u32_t); - -/* Get appropriate netmask for address */ -u32_t GetMask (u32_t); - -#if LWIP_NETIF_STATUS_CALLBACK -void ppp_set_netif_statuscallback(int pd, netif_status_callback_fn status_callback); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK -void ppp_set_netif_linkcallback(int pd, netif_status_callback_fn link_callback); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#endif /* PPP_SUPPORT */ - -#endif /* PPP_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp_oe.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp_oe.c deleted file mode 100644 index 040a0bc93..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/ppp_oe.c +++ /dev/null @@ -1,1132 +0,0 @@ -/***************************************************************************** -* ppp_oe.c - PPP Over Ethernet implementation for lwIP. -* -* Copyright (c) 2006 by Marc Boucher, Services Informatiques (MBSI) inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 06-01-01 Marc Boucher -* Ported to lwIP. -*****************************************************************************/ - - - -/* based on NetBSD: if_pppoe.c,v 1.64 2006/01/31 23:50:15 martin Exp */ - -/*- - * Copyright (c) 2002 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Martin Husemann . - * - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``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 FOUNDATION OR CONTRIBUTORS - * 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. - */ - -#include "lwip/opt.h" - -#if PPPOE_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "netif/ppp_oe.h" - -#include "ppp.h" -#include "pppdebug.h" - -#include "lwip/timers.h" -#include "lwip/memp.h" - -#include -#include - - -/* Add a 16 bit unsigned value to a buffer pointed to by PTR */ -#define PPPOE_ADD_16(PTR, VAL) \ - *(PTR)++ = (u8_t)((VAL) / 256); \ - *(PTR)++ = (u8_t)((VAL) % 256) - -/* Add a complete PPPoE header to the buffer pointed to by PTR */ -#define PPPOE_ADD_HEADER(PTR, CODE, SESS, LEN) \ - *(PTR)++ = PPPOE_VERTYPE; \ - *(PTR)++ = (CODE); \ - PPPOE_ADD_16(PTR, SESS); \ - PPPOE_ADD_16(PTR, LEN) - -#define PPPOE_DISC_TIMEOUT (5*1000) /* base for quick timeout calculation */ -#define PPPOE_SLOW_RETRY (60*1000) /* persistent retry interval */ -#define PPPOE_DISC_MAXPADI 4 /* retry PADI four times (quickly) */ -#define PPPOE_DISC_MAXPADR 2 /* retry PADR twice */ - -#ifdef PPPOE_SERVER -#error "PPPOE_SERVER is not yet supported under lwIP!" -/* from if_spppsubr.c */ -#define IFF_PASSIVE IFF_LINK0 /* wait passively for connection */ -#endif - -#ifndef PPPOE_ERRORSTRING_LEN -#define PPPOE_ERRORSTRING_LEN 64 -#endif -static char pppoe_error_tmp[PPPOE_ERRORSTRING_LEN]; - - -/* input routines */ -static void pppoe_dispatch_disc_pkt(struct netif *, struct pbuf *); - -/* management routines */ -static int pppoe_do_disconnect(struct pppoe_softc *); -static void pppoe_abort_connect(struct pppoe_softc *); -static void pppoe_clear_softc(struct pppoe_softc *, const char *); - -/* internal timeout handling */ -static void pppoe_timeout(void *); - -/* sending actual protocol controll packets */ -static err_t pppoe_send_padi(struct pppoe_softc *); -static err_t pppoe_send_padr(struct pppoe_softc *); -#ifdef PPPOE_SERVER -static err_t pppoe_send_pado(struct pppoe_softc *); -static err_t pppoe_send_pads(struct pppoe_softc *); -#endif -static err_t pppoe_send_padt(struct netif *, u_int, const u8_t *); - -/* internal helper functions */ -static struct pppoe_softc * pppoe_find_softc_by_session(u_int, struct netif *); -static struct pppoe_softc * pppoe_find_softc_by_hunique(u8_t *, size_t, struct netif *); - -/** linked list of created pppoe interfaces */ -static struct pppoe_softc *pppoe_softc_list; - -err_t -pppoe_create(struct netif *ethif, int pd, void (*linkStatusCB)(int pd, int up), struct pppoe_softc **scptr) -{ - struct pppoe_softc *sc; - - sc = (struct pppoe_softc *)memp_malloc(MEMP_PPPOE_IF); - if (sc == NULL) { - *scptr = NULL; - return ERR_MEM; - } - memset(sc, 0, sizeof(struct pppoe_softc)); - - /* changed to real address later */ - MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest)); - - sc->sc_pd = pd; - sc->sc_linkStatusCB = linkStatusCB; - sc->sc_ethif = ethif; - - /* put the new interface at the head of the list */ - sc->next = pppoe_softc_list; - pppoe_softc_list = sc; - - *scptr = sc; - - return ERR_OK; -} - -err_t -pppoe_destroy(struct netif *ifp) -{ - struct pppoe_softc *sc, *prev = NULL; - - for (sc = pppoe_softc_list; sc != NULL; prev = sc, sc = sc->next) { - if (sc->sc_ethif == ifp) { - break; - } - } - - if(!(sc && (sc->sc_ethif == ifp))) { - return ERR_IF; - } - - sys_untimeout(pppoe_timeout, sc); - if (prev == NULL) { - /* remove sc from the head of the list */ - pppoe_softc_list = sc->next; - } else { - /* remove sc from the list */ - prev->next = sc->next; - } - -#ifdef PPPOE_TODO - if (sc->sc_concentrator_name) { - mem_free(sc->sc_concentrator_name); - } - if (sc->sc_service_name) { - mem_free(sc->sc_service_name); - } -#endif /* PPPOE_TODO */ - memp_free(MEMP_PPPOE_IF, sc); - - return ERR_OK; -} - -/* - * Find the interface handling the specified session. - * Note: O(number of sessions open), this is a client-side only, mean - * and lean implementation, so number of open sessions typically should - * be 1. - */ -static struct pppoe_softc * -pppoe_find_softc_by_session(u_int session, struct netif *rcvif) -{ - struct pppoe_softc *sc; - - if (session == 0) { - return NULL; - } - - for (sc = pppoe_softc_list; sc != NULL; sc = sc->next) { - if (sc->sc_state == PPPOE_STATE_SESSION - && sc->sc_session == session) { - if (sc->sc_ethif == rcvif) { - return sc; - } else { - return NULL; - } - } - } - return NULL; -} - -/* Check host unique token passed and return appropriate softc pointer, - * or NULL if token is bogus. */ -static struct pppoe_softc * -pppoe_find_softc_by_hunique(u8_t *token, size_t len, struct netif *rcvif) -{ - struct pppoe_softc *sc, *t; - - if (pppoe_softc_list == NULL) { - return NULL; - } - - if (len != sizeof sc) { - return NULL; - } - MEMCPY(&t, token, len); - - for (sc = pppoe_softc_list; sc != NULL; sc = sc->next) { - if (sc == t) { - break; - } - } - - if (sc == NULL) { - PPPDEBUG(LOG_DEBUG, ("pppoe: alien host unique tag, no session found\n")); - return NULL; - } - - /* should be safe to access *sc now */ - if (sc->sc_state < PPPOE_STATE_PADI_SENT || sc->sc_state >= PPPOE_STATE_SESSION) { - printf("%c%c%"U16_F": host unique tag found, but it belongs to a connection in state %d\n", - sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, sc->sc_state); - return NULL; - } - if (sc->sc_ethif != rcvif) { - printf("%c%c%"U16_F": wrong interface, not accepting host unique\n", - sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num); - return NULL; - } - return sc; -} - -static void -pppoe_linkstatus_up(struct pppoe_softc *sc) -{ - sc->sc_linkStatusCB(sc->sc_pd, 1); -} - -/* analyze and handle a single received packet while not in session state */ -static void -pppoe_dispatch_disc_pkt(struct netif *netif, struct pbuf *pb) -{ - u16_t tag, len; - u16_t session, plen; - struct pppoe_softc *sc; - const char *err_msg; - char devname[6]; - u8_t *ac_cookie; - u16_t ac_cookie_len; -#ifdef PPPOE_SERVER - u8_t *hunique; - size_t hunique_len; -#endif - struct pppoehdr *ph; - struct pppoetag pt; - int off, err, errortag; - struct eth_hdr *ethhdr; - - pb = pppSingleBuf(pb); - - strcpy(devname, "pppoe"); /* as long as we don't know which instance */ - err_msg = NULL; - errortag = 0; - if (pb->len < sizeof(*ethhdr)) { - goto done; - } - ethhdr = (struct eth_hdr *)pb->payload; - off = sizeof(*ethhdr); - - ac_cookie = NULL; - ac_cookie_len = 0; -#ifdef PPPOE_SERVER - hunique = NULL; - hunique_len = 0; -#endif - session = 0; - if (pb->len - off < PPPOE_HEADERLEN) { - printf("pppoe: packet too short: %d\n", pb->len); - goto done; - } - - ph = (struct pppoehdr *) (ethhdr + 1); - if (ph->vertype != PPPOE_VERTYPE) { - printf("pppoe: unknown version/type packet: 0x%x\n", ph->vertype); - goto done; - } - session = ntohs(ph->session); - plen = ntohs(ph->plen); - off += sizeof(*ph); - - if (plen + off > pb->len) { - printf("pppoe: packet content does not fit: data available = %d, packet size = %u\n", - pb->len - off, plen); - goto done; - } - if(pb->tot_len == pb->len) { - pb->tot_len = pb->len = (u16_t)off + plen; /* ignore trailing garbage */ - } - tag = 0; - len = 0; - sc = NULL; - while (off + sizeof(pt) <= pb->len) { - MEMCPY(&pt, (u8_t*)pb->payload + off, sizeof(pt)); - tag = ntohs(pt.tag); - len = ntohs(pt.len); - if (off + sizeof(pt) + len > pb->len) { - printf("pppoe: tag 0x%x len 0x%x is too long\n", tag, len); - goto done; - } - switch (tag) { - case PPPOE_TAG_EOL: - goto breakbreak; - case PPPOE_TAG_SNAME: - break; /* ignored */ - case PPPOE_TAG_ACNAME: - break; /* ignored */ - case PPPOE_TAG_HUNIQUE: - if (sc != NULL) { - break; - } -#ifdef PPPOE_SERVER - hunique = (u8_t*)pb->payload + off + sizeof(pt); - hunique_len = len; -#endif - sc = pppoe_find_softc_by_hunique((u8_t*)pb->payload + off + sizeof(pt), len, netif); - if (sc != NULL) { - snprintf(devname, sizeof(devname), "%c%c%"U16_F, sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num); - } - break; - case PPPOE_TAG_ACCOOKIE: - if (ac_cookie == NULL) { - ac_cookie = (u8_t*)pb->payload + off + sizeof(pt); - ac_cookie_len = len; - } - break; - case PPPOE_TAG_SNAME_ERR: - err_msg = "SERVICE NAME ERROR"; - errortag = 1; - break; - case PPPOE_TAG_ACSYS_ERR: - err_msg = "AC SYSTEM ERROR"; - errortag = 1; - break; - case PPPOE_TAG_GENERIC_ERR: - err_msg = "GENERIC ERROR"; - errortag = 1; - break; - } - if (err_msg) { - if (errortag && len) { - u16_t error_len = LWIP_MIN(len, sizeof(pppoe_error_tmp)-1); - strncpy(pppoe_error_tmp, (char*)pb->payload + off + sizeof(pt), error_len); - pppoe_error_tmp[error_len-1] = '\0'; - printf("%s: %s: %s\n", devname, err_msg, pppoe_error_tmp); - } else { - printf("%s: %s\n", devname, err_msg); - } - if (errortag) { - goto done; - } - } - off += sizeof(pt) + len; - } - -breakbreak:; - switch (ph->code) { - case PPPOE_CODE_PADI: -#ifdef PPPOE_SERVER - /* - * got service name, concentrator name, and/or host unique. - * ignore if we have no interfaces with IFF_PASSIVE|IFF_UP. - */ - if (LIST_EMPTY(&pppoe_softc_list)) { - goto done; - } - LIST_FOREACH(sc, &pppoe_softc_list, sc_list) { - if (!(sc->sc_sppp.pp_if.if_flags & IFF_UP)) { - continue; - } - if (!(sc->sc_sppp.pp_if.if_flags & IFF_PASSIVE)) { - continue; - } - if (sc->sc_state == PPPOE_STATE_INITIAL) { - break; - } - } - if (sc == NULL) { - /* printf("pppoe: free passive interface is not found\n"); */ - goto done; - } - if (hunique) { - if (sc->sc_hunique) { - mem_free(sc->sc_hunique); - } - sc->sc_hunique = mem_malloc(hunique_len); - if (sc->sc_hunique == NULL) { - goto done; - } - sc->sc_hunique_len = hunique_len; - MEMCPY(sc->sc_hunique, hunique, hunique_len); - } - MEMCPY(&sc->sc_dest, eh->ether_shost, sizeof sc->sc_dest); - sc->sc_state = PPPOE_STATE_PADO_SENT; - pppoe_send_pado(sc); - break; -#endif /* PPPOE_SERVER */ - case PPPOE_CODE_PADR: -#ifdef PPPOE_SERVER - /* - * get sc from ac_cookie if IFF_PASSIVE - */ - if (ac_cookie == NULL) { - /* be quiet if there is not a single pppoe instance */ - printf("pppoe: received PADR but not includes ac_cookie\n"); - goto done; - } - sc = pppoe_find_softc_by_hunique(ac_cookie, ac_cookie_len, netif); - if (sc == NULL) { - /* be quiet if there is not a single pppoe instance */ - if (!LIST_EMPTY(&pppoe_softc_list)) { - printf("pppoe: received PADR but could not find request for it\n"); - } - goto done; - } - if (sc->sc_state != PPPOE_STATE_PADO_SENT) { - printf("%c%c%"U16_F": received unexpected PADR\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num); - goto done; - } - if (hunique) { - if (sc->sc_hunique) { - mem_free(sc->sc_hunique); - } - sc->sc_hunique = mem_malloc(hunique_len); - if (sc->sc_hunique == NULL) { - goto done; - } - sc->sc_hunique_len = hunique_len; - MEMCPY(sc->sc_hunique, hunique, hunique_len); - } - pppoe_send_pads(sc); - sc->sc_state = PPPOE_STATE_SESSION; - pppoe_linkstatus_up(sc); /* notify upper layers */ - break; -#else - /* ignore, we are no access concentrator */ - goto done; -#endif /* PPPOE_SERVER */ - case PPPOE_CODE_PADO: - if (sc == NULL) { - /* be quiet if there is not a single pppoe instance */ - if (pppoe_softc_list != NULL) { - printf("pppoe: received PADO but could not find request for it\n"); - } - goto done; - } - if (sc->sc_state != PPPOE_STATE_PADI_SENT) { - printf("%c%c%"U16_F": received unexpected PADO\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num); - goto done; - } - if (ac_cookie) { - sc->sc_ac_cookie_len = ac_cookie_len; - MEMCPY(sc->sc_ac_cookie, ac_cookie, ac_cookie_len); - } - MEMCPY(&sc->sc_dest, ethhdr->src.addr, sizeof(sc->sc_dest.addr)); - sys_untimeout(pppoe_timeout, sc); - sc->sc_padr_retried = 0; - sc->sc_state = PPPOE_STATE_PADR_SENT; - if ((err = pppoe_send_padr(sc)) != 0) { - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": failed to send PADR, error=%d\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, err)); - } - sys_timeout(PPPOE_DISC_TIMEOUT * (1 + sc->sc_padr_retried), pppoe_timeout, sc); - break; - case PPPOE_CODE_PADS: - if (sc == NULL) { - goto done; - } - sc->sc_session = session; - sys_untimeout(pppoe_timeout, sc); - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": session 0x%x connected\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, session)); - sc->sc_state = PPPOE_STATE_SESSION; - pppoe_linkstatus_up(sc); /* notify upper layers */ - break; - case PPPOE_CODE_PADT: - if (sc == NULL) { - goto done; - } - pppoe_clear_softc(sc, "received PADT"); - break; - default: - if(sc) { - printf("%c%c%"U16_F": unknown code (0x%"X16_F") session = 0x%"X16_F"\n", - sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, - (u16_t)ph->code, session); - } else { - printf("pppoe: unknown code (0x%"X16_F") session = 0x%"X16_F"\n", (u16_t)ph->code, session); - } - break; - } - -done: - pbuf_free(pb); - return; -} - -void -pppoe_disc_input(struct netif *netif, struct pbuf *p) -{ - /* avoid error messages if there is not a single pppoe instance */ - if (pppoe_softc_list != NULL) { - pppoe_dispatch_disc_pkt(netif, p); - } else { - pbuf_free(p); - } -} - -void -pppoe_data_input(struct netif *netif, struct pbuf *pb) -{ - u16_t session, plen; - struct pppoe_softc *sc; - struct pppoehdr *ph; -#ifdef PPPOE_TERM_UNKNOWN_SESSIONS - u8_t shost[ETHER_ADDR_LEN]; -#endif - -#ifdef PPPOE_TERM_UNKNOWN_SESSIONS - MEMCPY(shost, ((struct eth_hdr *)pb->payload)->src.addr, sizeof(shost)); -#endif - if (pbuf_header(pb, -(int)sizeof(struct eth_hdr)) != 0) { - /* bail out */ - PPPDEBUG(LOG_ERR, ("pppoe_data_input: pbuf_header failed\n")); - LINK_STATS_INC(link.lenerr); - goto drop; - } - - pb = pppSingleBuf (pb); - - if (pb->len <= PPPOE_HEADERLEN) { - printf("pppoe (data): dropping too short packet: %d bytes\n", pb->len); - goto drop; - } - - if (pb->len < sizeof(*ph)) { - printf("pppoe_data_input: could not get PPPoE header\n"); - goto drop; - } - ph = (struct pppoehdr *)pb->payload; - - if (ph->vertype != PPPOE_VERTYPE) { - printf("pppoe (data): unknown version/type packet: 0x%x\n", ph->vertype); - goto drop; - } - if (ph->code != 0) { - goto drop; - } - - session = ntohs(ph->session); - sc = pppoe_find_softc_by_session(session, netif); - if (sc == NULL) { -#ifdef PPPOE_TERM_UNKNOWN_SESSIONS - printf("pppoe: input for unknown session 0x%x, sending PADT\n", session); - pppoe_send_padt(netif, session, shost); -#endif - goto drop; - } - - plen = ntohs(ph->plen); - - if (pbuf_header(pb, -(int)(PPPOE_HEADERLEN)) != 0) { - /* bail out */ - PPPDEBUG(LOG_ERR, ("pppoe_data_input: pbuf_header PPPOE_HEADERLEN failed\n")); - LINK_STATS_INC(link.lenerr); - goto drop; - } - - PPPDEBUG(LOG_DEBUG, ("pppoe_data_input: %c%c%"U16_F": pkthdr.len=%d, pppoe.len=%d\n", - sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, - pb->len, plen)); - - if (pb->len < plen) { - goto drop; - } - - pppInProcOverEthernet(sc->sc_pd, pb); - - return; - -drop: - pbuf_free(pb); -} - -static err_t -pppoe_output(struct pppoe_softc *sc, struct pbuf *pb) -{ - struct eth_hdr *ethhdr; - u16_t etype; - err_t res; - - if (!sc->sc_ethif) { - pbuf_free(pb); - return ERR_IF; - } - - ethhdr = (struct eth_hdr *)pb->payload; - etype = sc->sc_state == PPPOE_STATE_SESSION ? ETHTYPE_PPPOE : ETHTYPE_PPPOEDISC; - ethhdr->type = htons(etype); - MEMCPY(ethhdr->dest.addr, sc->sc_dest.addr, sizeof(ethhdr->dest.addr)); - MEMCPY(ethhdr->src.addr, ((struct eth_addr *)sc->sc_ethif->hwaddr)->addr, sizeof(ethhdr->src.addr)); - - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F" (%x) state=%d, session=0x%x output -> %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F", len=%d\n", - sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, etype, - sc->sc_state, sc->sc_session, - sc->sc_dest.addr[0], sc->sc_dest.addr[1], sc->sc_dest.addr[2], sc->sc_dest.addr[3], sc->sc_dest.addr[4], sc->sc_dest.addr[5], - pb->tot_len)); - - res = sc->sc_ethif->linkoutput(sc->sc_ethif, pb); - - pbuf_free(pb); - - return res; -} - -static err_t -pppoe_send_padi(struct pppoe_softc *sc) -{ - struct pbuf *pb; - u8_t *p; - int len; -#ifdef PPPOE_TODO - int l1 = 0, l2 = 0; /* XXX: gcc */ -#endif /* PPPOE_TODO */ - - if (sc->sc_state >PPPOE_STATE_PADI_SENT) { - PPPDEBUG(LOG_ERR, ("ERROR: pppoe_send_padi in state %d", sc->sc_state)); - } - - /* calculate length of frame (excluding ethernet header + pppoe header) */ - len = 2 + 2 + 2 + 2 + sizeof sc; /* service name tag is required, host unique is send too */ -#ifdef PPPOE_TODO - if (sc->sc_service_name != NULL) { - l1 = (int)strlen(sc->sc_service_name); - len += l1; - } - if (sc->sc_concentrator_name != NULL) { - l2 = (int)strlen(sc->sc_concentrator_name); - len += 2 + 2 + l2; - } -#endif /* PPPOE_TODO */ - LWIP_ASSERT("sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff", - sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff); - - /* allocate a buffer */ - pb = pbuf_alloc(PBUF_LINK, (u16_t)(sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len), PBUF_RAM); - if (!pb) { - return ERR_MEM; - } - LWIP_ASSERT("pb->tot_len == pb->len", pb->tot_len == pb->len); - - p = (u8_t*)pb->payload + sizeof (struct eth_hdr); - /* fill in pkt */ - PPPOE_ADD_HEADER(p, PPPOE_CODE_PADI, 0, (u16_t)len); - PPPOE_ADD_16(p, PPPOE_TAG_SNAME); -#ifdef PPPOE_TODO - if (sc->sc_service_name != NULL) { - PPPOE_ADD_16(p, l1); - MEMCPY(p, sc->sc_service_name, l1); - p += l1; - } else -#endif /* PPPOE_TODO */ - { - PPPOE_ADD_16(p, 0); - } -#ifdef PPPOE_TODO - if (sc->sc_concentrator_name != NULL) { - PPPOE_ADD_16(p, PPPOE_TAG_ACNAME); - PPPOE_ADD_16(p, l2); - MEMCPY(p, sc->sc_concentrator_name, l2); - p += l2; - } -#endif /* PPPOE_TODO */ - PPPOE_ADD_16(p, PPPOE_TAG_HUNIQUE); - PPPOE_ADD_16(p, sizeof(sc)); - MEMCPY(p, &sc, sizeof sc); - - /* send pkt */ - return pppoe_output(sc, pb); -} - -static void -pppoe_timeout(void *arg) -{ - int retry_wait, err; - struct pppoe_softc *sc = (struct pppoe_softc*)arg; - - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": timeout\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num)); - - switch (sc->sc_state) { - case PPPOE_STATE_PADI_SENT: - /* - * We have two basic ways of retrying: - * - Quick retry mode: try a few times in short sequence - * - Slow retry mode: we already had a connection successfully - * established and will try infinitely (without user - * intervention) - * We only enter slow retry mode if IFF_LINK1 (aka autodial) - * is not set. - */ - - /* initialize for quick retry mode */ - retry_wait = PPPOE_DISC_TIMEOUT * (1 + sc->sc_padi_retried); - - sc->sc_padi_retried++; - if (sc->sc_padi_retried >= PPPOE_DISC_MAXPADI) { -#if 0 - if ((sc->sc_sppp.pp_if.if_flags & IFF_LINK1) == 0) { - /* slow retry mode */ - retry_wait = PPPOE_SLOW_RETRY; - } else -#endif - { - pppoe_abort_connect(sc); - return; - } - } - if ((err = pppoe_send_padi(sc)) != 0) { - sc->sc_padi_retried--; - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": failed to transmit PADI, error=%d\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, err)); - } - sys_timeout(retry_wait, pppoe_timeout, sc); - break; - - case PPPOE_STATE_PADR_SENT: - sc->sc_padr_retried++; - if (sc->sc_padr_retried >= PPPOE_DISC_MAXPADR) { - MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest)); - sc->sc_state = PPPOE_STATE_PADI_SENT; - sc->sc_padr_retried = 0; - if ((err = pppoe_send_padi(sc)) != 0) { - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": failed to send PADI, error=%d\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, err)); - } - sys_timeout(PPPOE_DISC_TIMEOUT * (1 + sc->sc_padi_retried), pppoe_timeout, sc); - return; - } - if ((err = pppoe_send_padr(sc)) != 0) { - sc->sc_padr_retried--; - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": failed to send PADR, error=%d\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, err)); - } - sys_timeout(PPPOE_DISC_TIMEOUT * (1 + sc->sc_padr_retried), pppoe_timeout, sc); - break; - case PPPOE_STATE_CLOSING: - pppoe_do_disconnect(sc); - break; - default: - return; /* all done, work in peace */ - } -} - -/* Start a connection (i.e. initiate discovery phase) */ -int -pppoe_connect(struct pppoe_softc *sc) -{ - int err; - - if (sc->sc_state != PPPOE_STATE_INITIAL) { - return EBUSY; - } - -#ifdef PPPOE_SERVER - /* wait PADI if IFF_PASSIVE */ - if ((sc->sc_sppp.pp_if.if_flags & IFF_PASSIVE)) { - return 0; - } -#endif - /* save state, in case we fail to send PADI */ - sc->sc_state = PPPOE_STATE_PADI_SENT; - sc->sc_padr_retried = 0; - err = pppoe_send_padi(sc); - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": failed to send PADI, error=%d\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, err)); - sys_timeout(PPPOE_DISC_TIMEOUT, pppoe_timeout, sc); - return err; -} - -/* disconnect */ -void -pppoe_disconnect(struct pppoe_softc *sc) -{ - if (sc->sc_state < PPPOE_STATE_SESSION) { - return; - } - /* - * Do not call pppoe_disconnect here, the upper layer state - * machine gets confused by this. We must return from this - * function and defer disconnecting to the timeout handler. - */ - sc->sc_state = PPPOE_STATE_CLOSING; - sys_timeout(20, pppoe_timeout, sc); -} - -static int -pppoe_do_disconnect(struct pppoe_softc *sc) -{ - int err; - - if (sc->sc_state < PPPOE_STATE_SESSION) { - err = EBUSY; - } else { - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": disconnecting\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num)); - err = pppoe_send_padt(sc->sc_ethif, sc->sc_session, (const u8_t *)&sc->sc_dest); - } - - /* cleanup softc */ - sc->sc_state = PPPOE_STATE_INITIAL; - MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest)); - sc->sc_ac_cookie_len = 0; -#ifdef PPPOE_SERVER - if (sc->sc_hunique) { - mem_free(sc->sc_hunique); - sc->sc_hunique = NULL; - } - sc->sc_hunique_len = 0; -#endif - sc->sc_session = 0; - - sc->sc_linkStatusCB(sc->sc_pd, 0); /* notify upper layers */ - - return err; -} - -/* Connection attempt aborted */ -static void -pppoe_abort_connect(struct pppoe_softc *sc) -{ - printf("%c%c%"U16_F": could not establish connection\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num); - sc->sc_state = PPPOE_STATE_CLOSING; - - sc->sc_linkStatusCB(sc->sc_pd, 0); /* notify upper layers */ - - /* clear connection state */ - MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest)); - sc->sc_state = PPPOE_STATE_INITIAL; -} - -/* Send a PADR packet */ -static err_t -pppoe_send_padr(struct pppoe_softc *sc) -{ - struct pbuf *pb; - u8_t *p; - size_t len; -#ifdef PPPOE_TODO - size_t l1 = 0; /* XXX: gcc */ -#endif /* PPPOE_TODO */ - - if (sc->sc_state != PPPOE_STATE_PADR_SENT) { - return ERR_CONN; - } - - len = 2 + 2 + 2 + 2 + sizeof(sc); /* service name, host unique */ -#ifdef PPPOE_TODO - if (sc->sc_service_name != NULL) { /* service name tag maybe empty */ - l1 = strlen(sc->sc_service_name); - len += l1; - } -#endif /* PPPOE_TODO */ - if (sc->sc_ac_cookie_len > 0) { - len += 2 + 2 + sc->sc_ac_cookie_len; /* AC cookie */ - } - LWIP_ASSERT("sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff", - sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len <= 0xffff); - pb = pbuf_alloc(PBUF_LINK, (u16_t)(sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len), PBUF_RAM); - if (!pb) { - return ERR_MEM; - } - LWIP_ASSERT("pb->tot_len == pb->len", pb->tot_len == pb->len); - p = (u8_t*)pb->payload + sizeof (struct eth_hdr); - PPPOE_ADD_HEADER(p, PPPOE_CODE_PADR, 0, len); - PPPOE_ADD_16(p, PPPOE_TAG_SNAME); -#ifdef PPPOE_TODO - if (sc->sc_service_name != NULL) { - PPPOE_ADD_16(p, l1); - MEMCPY(p, sc->sc_service_name, l1); - p += l1; - } else -#endif /* PPPOE_TODO */ - { - PPPOE_ADD_16(p, 0); - } - if (sc->sc_ac_cookie_len > 0) { - PPPOE_ADD_16(p, PPPOE_TAG_ACCOOKIE); - PPPOE_ADD_16(p, sc->sc_ac_cookie_len); - MEMCPY(p, sc->sc_ac_cookie, sc->sc_ac_cookie_len); - p += sc->sc_ac_cookie_len; - } - PPPOE_ADD_16(p, PPPOE_TAG_HUNIQUE); - PPPOE_ADD_16(p, sizeof(sc)); - MEMCPY(p, &sc, sizeof sc); - - return pppoe_output(sc, pb); -} - -/* send a PADT packet */ -static err_t -pppoe_send_padt(struct netif *outgoing_if, u_int session, const u8_t *dest) -{ - struct pbuf *pb; - struct eth_hdr *ethhdr; - err_t res; - u8_t *p; - - pb = pbuf_alloc(PBUF_LINK, sizeof(struct eth_hdr) + PPPOE_HEADERLEN, PBUF_RAM); - if (!pb) { - return ERR_MEM; - } - LWIP_ASSERT("pb->tot_len == pb->len", pb->tot_len == pb->len); - - ethhdr = (struct eth_hdr *)pb->payload; - ethhdr->type = PP_HTONS(ETHTYPE_PPPOEDISC); - MEMCPY(ethhdr->dest.addr, dest, sizeof(ethhdr->dest.addr)); - MEMCPY(ethhdr->src.addr, ((struct eth_addr *)outgoing_if->hwaddr)->addr, sizeof(ethhdr->src.addr)); - - p = (u8_t*)(ethhdr + 1); - PPPOE_ADD_HEADER(p, PPPOE_CODE_PADT, session, 0); - - res = outgoing_if->linkoutput(outgoing_if, pb); - - pbuf_free(pb); - - return res; -} - -#ifdef PPPOE_SERVER -static err_t -pppoe_send_pado(struct pppoe_softc *sc) -{ - struct pbuf *pb; - u8_t *p; - size_t len; - - if (sc->sc_state != PPPOE_STATE_PADO_SENT) { - return ERR_CONN; - } - - /* calc length */ - len = 0; - /* include ac_cookie */ - len += 2 + 2 + sizeof(sc); - /* include hunique */ - len += 2 + 2 + sc->sc_hunique_len; - pb = pbuf_alloc(PBUF_LINK, sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len, PBUF_RAM); - if (!pb) { - return ERR_MEM; - } - LWIP_ASSERT("pb->tot_len == pb->len", pb->tot_len == pb->len); - p = (u8_t*)pb->payload + sizeof (struct eth_hdr); - PPPOE_ADD_HEADER(p, PPPOE_CODE_PADO, 0, len); - PPPOE_ADD_16(p, PPPOE_TAG_ACCOOKIE); - PPPOE_ADD_16(p, sizeof(sc)); - MEMCPY(p, &sc, sizeof(sc)); - p += sizeof(sc); - PPPOE_ADD_16(p, PPPOE_TAG_HUNIQUE); - PPPOE_ADD_16(p, sc->sc_hunique_len); - MEMCPY(p, sc->sc_hunique, sc->sc_hunique_len); - return pppoe_output(sc, pb); -} - -static err_t -pppoe_send_pads(struct pppoe_softc *sc) -{ - struct pbuf *pb; - u8_t *p; - size_t len, l1 = 0; /* XXX: gcc */ - - if (sc->sc_state != PPPOE_STATE_PADO_SENT) { - return ERR_CONN; - } - - sc->sc_session = mono_time.tv_sec % 0xff + 1; - /* calc length */ - len = 0; - /* include hunique */ - len += 2 + 2 + 2 + 2 + sc->sc_hunique_len; /* service name, host unique*/ - if (sc->sc_service_name != NULL) { /* service name tag maybe empty */ - l1 = strlen(sc->sc_service_name); - len += l1; - } - pb = pbuf_alloc(PBUF_LINK, sizeof(struct eth_hdr) + PPPOE_HEADERLEN + len, PBUF_RAM); - if (!pb) { - return ERR_MEM; - } - LWIP_ASSERT("pb->tot_len == pb->len", pb->tot_len == pb->len); - p = (u8_t*)pb->payload + sizeof (struct eth_hdr); - PPPOE_ADD_HEADER(p, PPPOE_CODE_PADS, sc->sc_session, len); - PPPOE_ADD_16(p, PPPOE_TAG_SNAME); - if (sc->sc_service_name != NULL) { - PPPOE_ADD_16(p, l1); - MEMCPY(p, sc->sc_service_name, l1); - p += l1; - } else { - PPPOE_ADD_16(p, 0); - } - PPPOE_ADD_16(p, PPPOE_TAG_HUNIQUE); - PPPOE_ADD_16(p, sc->sc_hunique_len); - MEMCPY(p, sc->sc_hunique, sc->sc_hunique_len); - return pppoe_output(sc, pb); -} -#endif - -err_t -pppoe_xmit(struct pppoe_softc *sc, struct pbuf *pb) -{ - u8_t *p; - size_t len; - - /* are we ready to process data yet? */ - if (sc->sc_state < PPPOE_STATE_SESSION) { - /*sppp_flush(&sc->sc_sppp.pp_if);*/ - pbuf_free(pb); - return ERR_CONN; - } - - len = pb->tot_len; - - /* make room for Ethernet header - should not fail */ - if (pbuf_header(pb, sizeof(struct eth_hdr) + PPPOE_HEADERLEN) != 0) { - /* bail out */ - PPPDEBUG(LOG_ERR, ("pppoe: %c%c%"U16_F": pppoe_xmit: could not allocate room for header\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num)); - LINK_STATS_INC(link.lenerr); - pbuf_free(pb); - return ERR_BUF; - } - - p = (u8_t*)pb->payload + sizeof(struct eth_hdr); - PPPOE_ADD_HEADER(p, 0, sc->sc_session, len); - - return pppoe_output(sc, pb); -} - -#if 0 /*def PFIL_HOOKS*/ -static int -pppoe_ifattach_hook(void *arg, struct pbuf **mp, struct netif *ifp, int dir) -{ - struct pppoe_softc *sc; - int s; - - if (mp != (struct pbuf **)PFIL_IFNET_DETACH) { - return 0; - } - - LIST_FOREACH(sc, &pppoe_softc_list, sc_list) { - if (sc->sc_ethif != ifp) { - continue; - } - if (sc->sc_sppp.pp_if.if_flags & IFF_UP) { - sc->sc_sppp.pp_if.if_flags &= ~(IFF_UP|IFF_RUNNING); - printf("%c%c%"U16_F": ethernet interface detached, going down\n", - sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num); - } - sc->sc_ethif = NULL; - pppoe_clear_softc(sc, "ethernet interface detached"); - } - - return 0; -} -#endif - -static void -pppoe_clear_softc(struct pppoe_softc *sc, const char *message) -{ - LWIP_UNUSED_ARG(message); - - /* stop timer */ - sys_untimeout(pppoe_timeout, sc); - PPPDEBUG(LOG_DEBUG, ("pppoe: %c%c%"U16_F": session 0x%x terminated, %s\n", sc->sc_ethif->name[0], sc->sc_ethif->name[1], sc->sc_ethif->num, sc->sc_session, message)); - - /* fix our state */ - sc->sc_state = PPPOE_STATE_INITIAL; - - /* notify upper layers */ - sc->sc_linkStatusCB(sc->sc_pd, 0); - - /* clean up softc */ - MEMCPY(&sc->sc_dest, ethbroadcast.addr, sizeof(sc->sc_dest)); - sc->sc_ac_cookie_len = 0; - sc->sc_session = 0; -} - -#endif /* PPPOE_SUPPORT */ - diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pppdebug.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pppdebug.h deleted file mode 100644 index 81349971d..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/pppdebug.h +++ /dev/null @@ -1,73 +0,0 @@ -/***************************************************************************** -* pppdebug.h - System debugging utilities. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* portions Copyright (c) 1998 Global Election Systems Inc. -* portions Copyright (c) 2001 by Cognizant Pty Ltd. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY (please don't use tabs!) -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 98-07-29 Guy Lancaster , Global Election Systems Inc. -* Original. -* -***************************************************************************** -*/ -#ifndef PPPDEBUG_H -#define PPPDEBUG_H - -/* Trace levels. */ -#define LOG_CRITICAL (PPP_DEBUG | LWIP_DBG_LEVEL_SEVERE) -#define LOG_ERR (PPP_DEBUG | LWIP_DBG_LEVEL_SEVERE) -#define LOG_NOTICE (PPP_DEBUG | LWIP_DBG_LEVEL_WARNING) -#define LOG_WARNING (PPP_DEBUG | LWIP_DBG_LEVEL_WARNING) -#define LOG_INFO (PPP_DEBUG) -#define LOG_DETAIL (PPP_DEBUG) -#define LOG_DEBUG (PPP_DEBUG) - - -#define TRACELCP PPP_DEBUG - -#if PPP_DEBUG - -#define AUTHDEBUG(a, b) LWIP_DEBUGF(a, b) -#define IPCPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define UPAPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define LCPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define FSMDEBUG(a, b) LWIP_DEBUGF(a, b) -#define CHAPDEBUG(a, b) LWIP_DEBUGF(a, b) -#define PPPDEBUG(a, b) LWIP_DEBUGF(a, b) - -#else /* PPP_DEBUG */ - -#define AUTHDEBUG(a, b) -#define IPCPDEBUG(a, b) -#define UPAPDEBUG(a, b) -#define LCPDEBUG(a, b) -#define FSMDEBUG(a, b) -#define CHAPDEBUG(a, b) -#define PPPDEBUG(a, b) - -#endif /* PPP_DEBUG */ - -#endif /* PPPDEBUG_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.c deleted file mode 100644 index 2f35caf6a..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.c +++ /dev/null @@ -1,249 +0,0 @@ -/***************************************************************************** -* randm.c - Random number generator program file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* Copyright (c) 1998 by Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 98-06-03 Guy Lancaster , Global Election Systems Inc. -* Extracted from avos. -*****************************************************************************/ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "md5.h" -#include "randm.h" - -#include "ppp.h" -#include "pppdebug.h" - -#include - -#if MD5_SUPPORT /* this module depends on MD5 */ -#define RANDPOOLSZ 16 /* Bytes stored in the pool of randomness. */ - -/*****************************/ -/*** LOCAL DATA STRUCTURES ***/ -/*****************************/ -static char randPool[RANDPOOLSZ]; /* Pool of randomness. */ -static long randCount = 0; /* Pseudo-random incrementer */ - - -/***********************************/ -/*** PUBLIC FUNCTION DEFINITIONS ***/ -/***********************************/ -/* - * Initialize the random number generator. - * - * Since this is to be called on power up, we don't have much - * system randomess to work with. Here all we use is the - * real-time clock. We'll accumulate more randomness as soon - * as things start happening. - */ -void -avRandomInit() -{ - avChurnRand(NULL, 0); -} - -/* - * Churn the randomness pool on a random event. Call this early and often - * on random and semi-random system events to build randomness in time for - * usage. For randomly timed events, pass a null pointer and a zero length - * and this will use the system timer and other sources to add randomness. - * If new random data is available, pass a pointer to that and it will be - * included. - * - * Ref: Applied Cryptography 2nd Ed. by Bruce Schneier p. 427 - */ -void -avChurnRand(char *randData, u32_t randLen) -{ - MD5_CTX md5; - - /* LWIP_DEBUGF(LOG_INFO, ("churnRand: %u@%P\n", randLen, randData)); */ - MD5Init(&md5); - MD5Update(&md5, (u_char *)randPool, sizeof(randPool)); - if (randData) { - MD5Update(&md5, (u_char *)randData, randLen); - } else { - struct { - /* INCLUDE fields for any system sources of randomness */ - char foobar; - } sysData; - - /* Load sysData fields here. */ - MD5Update(&md5, (u_char *)&sysData, sizeof(sysData)); - } - MD5Final((u_char *)randPool, &md5); -/* LWIP_DEBUGF(LOG_INFO, ("churnRand: -> 0\n")); */ -} - -/* - * Use the random pool to generate random data. This degrades to pseudo - * random when used faster than randomness is supplied using churnRand(). - * Note: It's important that there be sufficient randomness in randPool - * before this is called for otherwise the range of the result may be - * narrow enough to make a search feasible. - * - * Ref: Applied Cryptography 2nd Ed. by Bruce Schneier p. 427 - * - * XXX Why does he not just call churnRand() for each block? Probably - * so that you don't ever publish the seed which could possibly help - * predict future values. - * XXX Why don't we preserve md5 between blocks and just update it with - * randCount each time? Probably there is a weakness but I wish that - * it was documented. - */ -void -avGenRand(char *buf, u32_t bufLen) -{ - MD5_CTX md5; - u_char tmp[16]; - u32_t n; - - while (bufLen > 0) { - n = LWIP_MIN(bufLen, RANDPOOLSZ); - MD5Init(&md5); - MD5Update(&md5, (u_char *)randPool, sizeof(randPool)); - MD5Update(&md5, (u_char *)&randCount, sizeof(randCount)); - MD5Final(tmp, &md5); - randCount++; - MEMCPY(buf, tmp, n); - buf += n; - bufLen -= n; - } -} - -/* - * Return a new random number. - */ -u32_t -avRandom() -{ - u32_t newRand; - - avGenRand((char *)&newRand, sizeof(newRand)); - - return newRand; -} - -#else /* MD5_SUPPORT */ - -/*****************************/ -/*** LOCAL DATA STRUCTURES ***/ -/*****************************/ -static int avRandomized = 0; /* Set when truely randomized. */ -static u32_t avRandomSeed = 0; /* Seed used for random number generation. */ - - -/***********************************/ -/*** PUBLIC FUNCTION DEFINITIONS ***/ -/***********************************/ -/* - * Initialize the random number generator. - * - * Here we attempt to compute a random number seed but even if - * it isn't random, we'll randomize it later. - * - * The current method uses the fields from the real time clock, - * the idle process counter, the millisecond counter, and the - * hardware timer tick counter. When this is invoked - * in startup(), then the idle counter and timer values may - * repeat after each boot and the real time clock may not be - * operational. Thus we call it again on the first random - * event. - */ -void -avRandomInit() -{ -#if 0 - /* Get a pointer into the last 4 bytes of clockBuf. */ - u32_t *lptr1 = (u32_t *)((char *)&clockBuf[3]); - - /* - * Initialize our seed using the real-time clock, the idle - * counter, the millisecond timer, and the hardware timer - * tick counter. The real-time clock and the hardware - * tick counter are the best sources of randomness but - * since the tick counter is only 16 bit (and truncated - * at that), the idle counter and millisecond timer - * (which may be small values) are added to help - * randomize the lower 16 bits of the seed. - */ - readClk(); - avRandomSeed += *(u32_t *)clockBuf + *lptr1 + OSIdleCtr - + ppp_mtime() + ((u32_t)TM1 << 16) + TM1; -#else - avRandomSeed += sys_jiffies(); /* XXX */ -#endif - - /* Initialize the Borland random number generator. */ - srand((unsigned)avRandomSeed); -} - -/* - * Randomize our random seed value. Here we use the fact that - * this function is called at *truely random* times by the polling - * and network functions. Here we only get 16 bits of new random - * value but we use the previous value to randomize the other 16 - * bits. - */ -void -avRandomize(void) -{ - static u32_t last_jiffies; - - if (!avRandomized) { - avRandomized = !0; - avRandomInit(); - /* The initialization function also updates the seed. */ - } else { - /* avRandomSeed += (avRandomSeed << 16) + TM1; */ - avRandomSeed += (sys_jiffies() - last_jiffies); /* XXX */ - } - last_jiffies = sys_jiffies(); -} - -/* - * Return a new random number. - * Here we use the Borland rand() function to supply a pseudo random - * number which we make truely random by combining it with our own - * seed which is randomized by truely random events. - * Thus the numbers will be truely random unless there have been no - * operator or network events in which case it will be pseudo random - * seeded by the real time clock. - */ -u32_t -avRandom() -{ - return ((((u32_t)rand() << 16) + rand()) + avRandomSeed); -} - -#endif /* MD5_SUPPORT */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.h deleted file mode 100644 index a0984b020..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/randm.h +++ /dev/null @@ -1,81 +0,0 @@ -/***************************************************************************** -* randm.h - Random number generator header file. -* -* Copyright (c) 2003 by Marc Boucher, Services Informatiques (MBSI) inc. -* Copyright (c) 1998 Global Election Systems Inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *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 CONTRIBUTORS 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. -* -****************************************************************************** -* REVISION HISTORY -* -* 03-01-01 Marc Boucher -* Ported to lwIP. -* 98-05-29 Guy Lancaster , Global Election Systems Inc. -* Extracted from avos. -*****************************************************************************/ - -#ifndef RANDM_H -#define RANDM_H - -/*********************** -*** PUBLIC FUNCTIONS *** -***********************/ -/* - * Initialize the random number generator. - */ -void avRandomInit(void); - -/* - * Churn the randomness pool on a random event. Call this early and often - * on random and semi-random system events to build randomness in time for - * usage. For randomly timed events, pass a null pointer and a zero length - * and this will use the system timer and other sources to add randomness. - * If new random data is available, pass a pointer to that and it will be - * included. - */ -void avChurnRand(char *randData, u32_t randLen); - -/* - * Randomize our random seed value. To be called for truely random events - * such as user operations and network traffic. - */ -#if MD5_SUPPORT -#define avRandomize() avChurnRand(NULL, 0) -#else /* MD5_SUPPORT */ -void avRandomize(void); -#endif /* MD5_SUPPORT */ - -/* - * Use the random pool to generate random data. This degrades to pseudo - * random when used faster than randomness is supplied using churnRand(). - * Thus it's important to make sure that the results of this are not - * published directly because one could predict the next result to at - * least some degree. Also, it's important to get a good seed before - * the first use. - */ -void avGenRand(char *buf, u32_t bufLen); - -/* - * Return a new random number. - */ -u32_t avRandom(void); - - -#endif /* RANDM_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.c deleted file mode 100644 index b7f2d54c6..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.c +++ /dev/null @@ -1,652 +0,0 @@ -/* - * Routines to compress and uncompess tcp packets (for transmission - * over low speed serial lines. - * - * Copyright (c) 1989 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989: - * Initial distribution. - * - * Modified June 1993 by Paul Mackerras, paulus@cs.anu.edu.au, - * so that the entire packet being decompressed doesn't have - * to be in contiguous memory (just the compressed header). - * - * Modified March 1998 by Guy Lancaster, glanca@gesn.com, - * for a 16 bit processor. - */ - -#include "lwip/opt.h" - -#if PPP_SUPPORT /* don't build if not configured for use in lwipopts.h */ - -#include "ppp.h" -#include "pppdebug.h" - -#include "vj.h" - -#include - -#if VJ_SUPPORT - -#if LINK_STATS -#define INCR(counter) ++comp->stats.counter -#else -#define INCR(counter) -#endif - -void -vj_compress_init(struct vjcompress *comp) -{ - register u_char i; - register struct cstate *tstate = comp->tstate; - -#if MAX_SLOTS == 0 - memset((char *)comp, 0, sizeof(*comp)); -#endif - comp->maxSlotIndex = MAX_SLOTS - 1; - comp->compressSlot = 0; /* Disable slot ID compression by default. */ - for (i = MAX_SLOTS - 1; i > 0; --i) { - tstate[i].cs_id = i; - tstate[i].cs_next = &tstate[i - 1]; - } - tstate[0].cs_next = &tstate[MAX_SLOTS - 1]; - tstate[0].cs_id = 0; - comp->last_cs = &tstate[0]; - comp->last_recv = 255; - comp->last_xmit = 255; - comp->flags = VJF_TOSS; -} - - -/* ENCODE encodes a number that is known to be non-zero. ENCODEZ - * checks for zero (since zero has to be encoded in the long, 3 byte - * form). - */ -#define ENCODE(n) { \ - if ((u_short)(n) >= 256) { \ - *cp++ = 0; \ - cp[1] = (u_char)(n); \ - cp[0] = (u_char)((n) >> 8); \ - cp += 2; \ - } else { \ - *cp++ = (u_char)(n); \ - } \ -} -#define ENCODEZ(n) { \ - if ((u_short)(n) >= 256 || (u_short)(n) == 0) { \ - *cp++ = 0; \ - cp[1] = (u_char)(n); \ - cp[0] = (u_char)((n) >> 8); \ - cp += 2; \ - } else { \ - *cp++ = (u_char)(n); \ - } \ -} - -#define DECODEL(f) { \ - if (*cp == 0) {\ - u32_t tmp = ntohl(f) + ((cp[1] << 8) | cp[2]); \ - (f) = htonl(tmp); \ - cp += 3; \ - } else { \ - u32_t tmp = ntohl(f) + (u32_t)*cp++; \ - (f) = htonl(tmp); \ - } \ -} - -#define DECODES(f) { \ - if (*cp == 0) {\ - u_short tmp = ntohs(f) + (((u_short)cp[1] << 8) | cp[2]); \ - (f) = htons(tmp); \ - cp += 3; \ - } else { \ - u_short tmp = ntohs(f) + (u_short)*cp++; \ - (f) = htons(tmp); \ - } \ -} - -#define DECODEU(f) { \ - if (*cp == 0) {\ - (f) = htons(((u_short)cp[1] << 8) | cp[2]); \ - cp += 3; \ - } else { \ - (f) = htons((u_short)*cp++); \ - } \ -} - -/* - * vj_compress_tcp - Attempt to do Van Jacobson header compression on a - * packet. This assumes that nb and comp are not null and that the first - * buffer of the chain contains a valid IP header. - * Return the VJ type code indicating whether or not the packet was - * compressed. - */ -u_int -vj_compress_tcp(struct vjcompress *comp, struct pbuf *pb) -{ - register struct ip_hdr *ip = (struct ip_hdr *)pb->payload; - register struct cstate *cs = comp->last_cs->cs_next; - register u_short hlen = IPH_HL(ip); - register struct tcp_hdr *oth; - register struct tcp_hdr *th; - register u_short deltaS, deltaA; - register u_long deltaL; - register u_int changes = 0; - u_char new_seq[16]; - register u_char *cp = new_seq; - - /* - * Check that the packet is IP proto TCP. - */ - if (IPH_PROTO(ip) != IP_PROTO_TCP) { - return (TYPE_IP); - } - - /* - * Bail if this is an IP fragment or if the TCP packet isn't - * `compressible' (i.e., ACK isn't set or some other control bit is - * set). - */ - if ((IPH_OFFSET(ip) & PP_HTONS(0x3fff)) || pb->tot_len < 40) { - return (TYPE_IP); - } - th = (struct tcp_hdr *)&((long *)ip)[hlen]; - if ((TCPH_FLAGS(th) & (TCP_SYN|TCP_FIN|TCP_RST|TCP_ACK)) != TCP_ACK) { - return (TYPE_IP); - } - /* - * Packet is compressible -- we're going to send either a - * COMPRESSED_TCP or UNCOMPRESSED_TCP packet. Either way we need - * to locate (or create) the connection state. Special case the - * most recently used connection since it's most likely to be used - * again & we don't have to do any reordering if it's used. - */ - INCR(vjs_packets); - if (!ip_addr_cmp(&ip->src, &cs->cs_ip.src) - || !ip_addr_cmp(&ip->dest, &cs->cs_ip.dest) - || *(long *)th != ((long *)&cs->cs_ip)[IPH_HL(&cs->cs_ip)]) { - /* - * Wasn't the first -- search for it. - * - * States are kept in a circularly linked list with - * last_cs pointing to the end of the list. The - * list is kept in lru order by moving a state to the - * head of the list whenever it is referenced. Since - * the list is short and, empirically, the connection - * we want is almost always near the front, we locate - * states via linear search. If we don't find a state - * for the datagram, the oldest state is (re-)used. - */ - register struct cstate *lcs; - register struct cstate *lastcs = comp->last_cs; - - do { - lcs = cs; cs = cs->cs_next; - INCR(vjs_searches); - if (ip_addr_cmp(&ip->src, &cs->cs_ip.src) - && ip_addr_cmp(&ip->dest, &cs->cs_ip.dest) - && *(long *)th == ((long *)&cs->cs_ip)[IPH_HL(&cs->cs_ip)]) { - goto found; - } - } while (cs != lastcs); - - /* - * Didn't find it -- re-use oldest cstate. Send an - * uncompressed packet that tells the other side what - * connection number we're using for this conversation. - * Note that since the state list is circular, the oldest - * state points to the newest and we only need to set - * last_cs to update the lru linkage. - */ - INCR(vjs_misses); - comp->last_cs = lcs; - hlen += TCPH_OFFSET(th); - hlen <<= 2; - /* Check that the IP/TCP headers are contained in the first buffer. */ - if (hlen > pb->len) { - return (TYPE_IP); - } - goto uncompressed; - - found: - /* - * Found it -- move to the front on the connection list. - */ - if (cs == lastcs) { - comp->last_cs = lcs; - } else { - lcs->cs_next = cs->cs_next; - cs->cs_next = lastcs->cs_next; - lastcs->cs_next = cs; - } - } - - oth = (struct tcp_hdr *)&((long *)&cs->cs_ip)[hlen]; - deltaS = hlen; - hlen += TCPH_OFFSET(th); - hlen <<= 2; - /* Check that the IP/TCP headers are contained in the first buffer. */ - if (hlen > pb->len) { - PPPDEBUG(LOG_INFO, ("vj_compress_tcp: header len %d spans buffers\n", hlen)); - return (TYPE_IP); - } - - /* - * Make sure that only what we expect to change changed. The first - * line of the `if' checks the IP protocol version, header length & - * type of service. The 2nd line checks the "Don't fragment" bit. - * The 3rd line checks the time-to-live and protocol (the protocol - * check is unnecessary but costless). The 4th line checks the TCP - * header length. The 5th line checks IP options, if any. The 6th - * line checks TCP options, if any. If any of these things are - * different between the previous & current datagram, we send the - * current datagram `uncompressed'. - */ - if (((u_short *)ip)[0] != ((u_short *)&cs->cs_ip)[0] - || ((u_short *)ip)[3] != ((u_short *)&cs->cs_ip)[3] - || ((u_short *)ip)[4] != ((u_short *)&cs->cs_ip)[4] - || TCPH_OFFSET(th) != TCPH_OFFSET(oth) - || (deltaS > 5 && BCMP(ip + 1, &cs->cs_ip + 1, (deltaS - 5) << 2)) - || (TCPH_OFFSET(th) > 5 && BCMP(th + 1, oth + 1, (TCPH_OFFSET(th) - 5) << 2))) { - goto uncompressed; - } - - /* - * Figure out which of the changing fields changed. The - * receiver expects changes in the order: urgent, window, - * ack, seq (the order minimizes the number of temporaries - * needed in this section of code). - */ - if (TCPH_FLAGS(th) & TCP_URG) { - deltaS = ntohs(th->urgp); - ENCODEZ(deltaS); - changes |= NEW_U; - } else if (th->urgp != oth->urgp) { - /* argh! URG not set but urp changed -- a sensible - * implementation should never do this but RFC793 - * doesn't prohibit the change so we have to deal - * with it. */ - goto uncompressed; - } - - if ((deltaS = (u_short)(ntohs(th->wnd) - ntohs(oth->wnd))) != 0) { - ENCODE(deltaS); - changes |= NEW_W; - } - - if ((deltaL = ntohl(th->ackno) - ntohl(oth->ackno)) != 0) { - if (deltaL > 0xffff) { - goto uncompressed; - } - deltaA = (u_short)deltaL; - ENCODE(deltaA); - changes |= NEW_A; - } - - if ((deltaL = ntohl(th->seqno) - ntohl(oth->seqno)) != 0) { - if (deltaL > 0xffff) { - goto uncompressed; - } - deltaS = (u_short)deltaL; - ENCODE(deltaS); - changes |= NEW_S; - } - - switch(changes) { - case 0: - /* - * Nothing changed. If this packet contains data and the - * last one didn't, this is probably a data packet following - * an ack (normal on an interactive connection) and we send - * it compressed. Otherwise it's probably a retransmit, - * retransmitted ack or window probe. Send it uncompressed - * in case the other side missed the compressed version. - */ - if (IPH_LEN(ip) != IPH_LEN(&cs->cs_ip) && - ntohs(IPH_LEN(&cs->cs_ip)) == hlen) { - break; - } - - /* (fall through) */ - - case SPECIAL_I: - case SPECIAL_D: - /* - * actual changes match one of our special case encodings -- - * send packet uncompressed. - */ - goto uncompressed; - - case NEW_S|NEW_A: - if (deltaS == deltaA && deltaS == ntohs(IPH_LEN(&cs->cs_ip)) - hlen) { - /* special case for echoed terminal traffic */ - changes = SPECIAL_I; - cp = new_seq; - } - break; - - case NEW_S: - if (deltaS == ntohs(IPH_LEN(&cs->cs_ip)) - hlen) { - /* special case for data xfer */ - changes = SPECIAL_D; - cp = new_seq; - } - break; - } - - deltaS = (u_short)(ntohs(IPH_ID(ip)) - ntohs(IPH_ID(&cs->cs_ip))); - if (deltaS != 1) { - ENCODEZ(deltaS); - changes |= NEW_I; - } - if (TCPH_FLAGS(th) & TCP_PSH) { - changes |= TCP_PUSH_BIT; - } - /* - * Grab the cksum before we overwrite it below. Then update our - * state with this packet's header. - */ - deltaA = ntohs(th->chksum); - BCOPY(ip, &cs->cs_ip, hlen); - - /* - * We want to use the original packet as our compressed packet. - * (cp - new_seq) is the number of bytes we need for compressed - * sequence numbers. In addition we need one byte for the change - * mask, one for the connection id and two for the tcp checksum. - * So, (cp - new_seq) + 4 bytes of header are needed. hlen is how - * many bytes of the original packet to toss so subtract the two to - * get the new packet size. - */ - deltaS = (u_short)(cp - new_seq); - if (!comp->compressSlot || comp->last_xmit != cs->cs_id) { - comp->last_xmit = cs->cs_id; - hlen -= deltaS + 4; - if(pbuf_header(pb, -hlen)){ - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - } - cp = (u_char *)pb->payload; - *cp++ = (u_char)(changes | NEW_C); - *cp++ = cs->cs_id; - } else { - hlen -= deltaS + 3; - if(pbuf_header(pb, -hlen)) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - } - cp = (u_char *)pb->payload; - *cp++ = (u_char)changes; - } - *cp++ = (u_char)(deltaA >> 8); - *cp++ = (u_char)deltaA; - BCOPY(new_seq, cp, deltaS); - INCR(vjs_compressed); - return (TYPE_COMPRESSED_TCP); - - /* - * Update connection state cs & send uncompressed packet (that is, - * a regular ip/tcp packet but with the 'conversation id' we hope - * to use on future compressed packets in the protocol field). - */ -uncompressed: - BCOPY(ip, &cs->cs_ip, hlen); - IPH_PROTO_SET(ip, cs->cs_id); - comp->last_xmit = cs->cs_id; - return (TYPE_UNCOMPRESSED_TCP); -} - -/* - * Called when we may have missed a packet. - */ -void -vj_uncompress_err(struct vjcompress *comp) -{ - comp->flags |= VJF_TOSS; - INCR(vjs_errorin); -} - -/* - * "Uncompress" a packet of type TYPE_UNCOMPRESSED_TCP. - * Return 0 on success, -1 on failure. - */ -int -vj_uncompress_uncomp(struct pbuf *nb, struct vjcompress *comp) -{ - register u_int hlen; - register struct cstate *cs; - register struct ip_hdr *ip; - - ip = (struct ip_hdr *)nb->payload; - hlen = IPH_HL(ip) << 2; - if (IPH_PROTO(ip) >= MAX_SLOTS - || hlen + sizeof(struct tcp_hdr) > nb->len - || (hlen += TCPH_OFFSET(((struct tcp_hdr *)&((char *)ip)[hlen])) << 2) - > nb->len - || hlen > MAX_HDR) { - PPPDEBUG(LOG_INFO, ("vj_uncompress_uncomp: bad cid=%d, hlen=%d buflen=%d\n", - IPH_PROTO(ip), hlen, nb->len)); - comp->flags |= VJF_TOSS; - INCR(vjs_errorin); - return -1; - } - cs = &comp->rstate[comp->last_recv = IPH_PROTO(ip)]; - comp->flags &=~ VJF_TOSS; - IPH_PROTO_SET(ip, IP_PROTO_TCP); - BCOPY(ip, &cs->cs_ip, hlen); - cs->cs_hlen = (u_short)hlen; - INCR(vjs_uncompressedin); - return 0; -} - -/* - * Uncompress a packet of type TYPE_COMPRESSED_TCP. - * The packet is composed of a buffer chain and the first buffer - * must contain an accurate chain length. - * The first buffer must include the entire compressed TCP/IP header. - * This procedure replaces the compressed header with the uncompressed - * header and returns the length of the VJ header. - */ -int -vj_uncompress_tcp(struct pbuf **nb, struct vjcompress *comp) -{ - u_char *cp; - struct tcp_hdr *th; - struct cstate *cs; - u_short *bp; - struct pbuf *n0 = *nb; - u32_t tmp; - u_int vjlen, hlen, changes; - - INCR(vjs_compressedin); - cp = (u_char *)n0->payload; - changes = *cp++; - if (changes & NEW_C) { - /* - * Make sure the state index is in range, then grab the state. - * If we have a good state index, clear the 'discard' flag. - */ - if (*cp >= MAX_SLOTS) { - PPPDEBUG(LOG_INFO, ("vj_uncompress_tcp: bad cid=%d\n", *cp)); - goto bad; - } - - comp->flags &=~ VJF_TOSS; - comp->last_recv = *cp++; - } else { - /* - * this packet has an implicit state index. If we've - * had a line error since the last time we got an - * explicit state index, we have to toss the packet. - */ - if (comp->flags & VJF_TOSS) { - PPPDEBUG(LOG_INFO, ("vj_uncompress_tcp: tossing\n")); - INCR(vjs_tossed); - return (-1); - } - } - cs = &comp->rstate[comp->last_recv]; - hlen = IPH_HL(&cs->cs_ip) << 2; - th = (struct tcp_hdr *)&((u_char *)&cs->cs_ip)[hlen]; - th->chksum = htons((*cp << 8) | cp[1]); - cp += 2; - if (changes & TCP_PUSH_BIT) { - TCPH_SET_FLAG(th, TCP_PSH); - } else { - TCPH_UNSET_FLAG(th, TCP_PSH); - } - - switch (changes & SPECIALS_MASK) { - case SPECIAL_I: - { - register u32_t i = ntohs(IPH_LEN(&cs->cs_ip)) - cs->cs_hlen; - /* some compilers can't nest inline assembler.. */ - tmp = ntohl(th->ackno) + i; - th->ackno = htonl(tmp); - tmp = ntohl(th->seqno) + i; - th->seqno = htonl(tmp); - } - break; - - case SPECIAL_D: - /* some compilers can't nest inline assembler.. */ - tmp = ntohl(th->seqno) + ntohs(IPH_LEN(&cs->cs_ip)) - cs->cs_hlen; - th->seqno = htonl(tmp); - break; - - default: - if (changes & NEW_U) { - TCPH_SET_FLAG(th, TCP_URG); - DECODEU(th->urgp); - } else { - TCPH_UNSET_FLAG(th, TCP_URG); - } - if (changes & NEW_W) { - DECODES(th->wnd); - } - if (changes & NEW_A) { - DECODEL(th->ackno); - } - if (changes & NEW_S) { - DECODEL(th->seqno); - } - break; - } - if (changes & NEW_I) { - DECODES(cs->cs_ip._id); - } else { - IPH_ID_SET(&cs->cs_ip, ntohs(IPH_ID(&cs->cs_ip)) + 1); - IPH_ID_SET(&cs->cs_ip, htons(IPH_ID(&cs->cs_ip))); - } - - /* - * At this point, cp points to the first byte of data in the - * packet. Fill in the IP total length and update the IP - * header checksum. - */ - vjlen = (u_short)(cp - (u_char*)n0->payload); - if (n0->len < vjlen) { - /* - * We must have dropped some characters (crc should detect - * this but the old slip framing won't) - */ - PPPDEBUG(LOG_INFO, ("vj_uncompress_tcp: head buffer %d too short %d\n", - n0->len, vjlen)); - goto bad; - } - -#if BYTE_ORDER == LITTLE_ENDIAN - tmp = n0->tot_len - vjlen + cs->cs_hlen; - IPH_LEN_SET(&cs->cs_ip, htons((u_short)tmp)); -#else - IPH_LEN_SET(&cs->cs_ip, htons(n0->tot_len - vjlen + cs->cs_hlen)); -#endif - - /* recompute the ip header checksum */ - bp = (u_short *) &cs->cs_ip; - IPH_CHKSUM_SET(&cs->cs_ip, 0); - for (tmp = 0; hlen > 0; hlen -= 2) { - tmp += *bp++; - } - tmp = (tmp & 0xffff) + (tmp >> 16); - tmp = (tmp & 0xffff) + (tmp >> 16); - IPH_CHKSUM_SET(&cs->cs_ip, (u_short)(~tmp)); - - /* Remove the compressed header and prepend the uncompressed header. */ - if(pbuf_header(n0, -((s16_t)(vjlen)))) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - goto bad; - } - - if(LWIP_MEM_ALIGN(n0->payload) != n0->payload) { - struct pbuf *np, *q; - u8_t *bufptr; - - np = pbuf_alloc(PBUF_RAW, n0->len + cs->cs_hlen, PBUF_POOL); - if(!np) { - PPPDEBUG(LOG_WARNING, ("vj_uncompress_tcp: realign failed\n")); - goto bad; - } - - if(pbuf_header(np, -cs->cs_hlen)) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - goto bad; - } - - bufptr = n0->payload; - for(q = np; q != NULL; q = q->next) { - MEMCPY(q->payload, bufptr, q->len); - bufptr += q->len; - } - - if(n0->next) { - pbuf_chain(np, n0->next); - pbuf_dechain(n0); - } - pbuf_free(n0); - n0 = np; - } - - if(pbuf_header(n0, cs->cs_hlen)) { - struct pbuf *np; - - LWIP_ASSERT("vj_uncompress_tcp: cs->cs_hlen <= PBUF_POOL_BUFSIZE", cs->cs_hlen <= PBUF_POOL_BUFSIZE); - np = pbuf_alloc(PBUF_RAW, cs->cs_hlen, PBUF_POOL); - if(!np) { - PPPDEBUG(LOG_WARNING, ("vj_uncompress_tcp: prepend failed\n")); - goto bad; - } - pbuf_cat(np, n0); - n0 = np; - } - LWIP_ASSERT("n0->len >= cs->cs_hlen", n0->len >= cs->cs_hlen); - MEMCPY(n0->payload, &cs->cs_ip, cs->cs_hlen); - - *nb = n0; - - return vjlen; - -bad: - comp->flags |= VJF_TOSS; - INCR(vjs_errorin); - return (-1); -} - -#endif /* VJ_SUPPORT */ - -#endif /* PPP_SUPPORT */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.h b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.h deleted file mode 100644 index fad121364..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/ppp/vj.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Definitions for tcp compression routines. - * - * $Id: vj.h,v 1.7 2010/02/22 17:52:09 goldsimon Exp $ - * - * Copyright (c) 1989 Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Van Jacobson (van@helios.ee.lbl.gov), Dec 31, 1989: - * - Initial distribution. - */ - -#ifndef VJ_H -#define VJ_H - -#include "lwip/ip.h" -#include "lwip/tcp_impl.h" - -#define MAX_SLOTS 16 /* must be > 2 and < 256 */ -#define MAX_HDR 128 - -/* - * Compressed packet format: - * - * The first octet contains the packet type (top 3 bits), TCP - * 'push' bit, and flags that indicate which of the 4 TCP sequence - * numbers have changed (bottom 5 bits). The next octet is a - * conversation number that associates a saved IP/TCP header with - * the compressed packet. The next two octets are the TCP checksum - * from the original datagram. The next 0 to 15 octets are - * sequence number changes, one change per bit set in the header - * (there may be no changes and there are two special cases where - * the receiver implicitly knows what changed -- see below). - * - * There are 5 numbers which can change (they are always inserted - * in the following order): TCP urgent pointer, window, - * acknowlegement, sequence number and IP ID. (The urgent pointer - * is different from the others in that its value is sent, not the - * change in value.) Since typical use of SLIP links is biased - * toward small packets (see comments on MTU/MSS below), changes - * use a variable length coding with one octet for numbers in the - * range 1 - 255 and 3 octets (0, MSB, LSB) for numbers in the - * range 256 - 65535 or 0. (If the change in sequence number or - * ack is more than 65535, an uncompressed packet is sent.) - */ - -/* - * Packet types (must not conflict with IP protocol version) - * - * The top nibble of the first octet is the packet type. There are - * three possible types: IP (not proto TCP or tcp with one of the - * control flags set); uncompressed TCP (a normal IP/TCP packet but - * with the 8-bit protocol field replaced by an 8-bit connection id -- - * this type of packet syncs the sender & receiver); and compressed - * TCP (described above). - * - * LSB of 4-bit field is TCP "PUSH" bit (a worthless anachronism) and - * is logically part of the 4-bit "changes" field that follows. Top - * three bits are actual packet type. For backward compatibility - * and in the interest of conserving bits, numbers are chosen so the - * IP protocol version number (4) which normally appears in this nibble - * means "IP packet". - */ - -/* packet types */ -#define TYPE_IP 0x40 -#define TYPE_UNCOMPRESSED_TCP 0x70 -#define TYPE_COMPRESSED_TCP 0x80 -#define TYPE_ERROR 0x00 - -/* Bits in first octet of compressed packet */ -#define NEW_C 0x40 /* flag bits for what changed in a packet */ -#define NEW_I 0x20 -#define NEW_S 0x08 -#define NEW_A 0x04 -#define NEW_W 0x02 -#define NEW_U 0x01 - -/* reserved, special-case values of above */ -#define SPECIAL_I (NEW_S|NEW_W|NEW_U) /* echoed interactive traffic */ -#define SPECIAL_D (NEW_S|NEW_A|NEW_W|NEW_U) /* unidirectional data */ -#define SPECIALS_MASK (NEW_S|NEW_A|NEW_W|NEW_U) - -#define TCP_PUSH_BIT 0x10 - - -/* - * "state" data for each active tcp conversation on the wire. This is - * basically a copy of the entire IP/TCP header from the last packet - * we saw from the conversation together with a small identifier - * the transmit & receive ends of the line use to locate saved header. - */ -struct cstate { - struct cstate *cs_next; /* next most recently used state (xmit only) */ - u_short cs_hlen; /* size of hdr (receive only) */ - u_char cs_id; /* connection # associated with this state */ - u_char cs_filler; - union { - char csu_hdr[MAX_HDR]; - struct ip_hdr csu_ip; /* ip/tcp hdr from most recent packet */ - } vjcs_u; -}; -#define cs_ip vjcs_u.csu_ip -#define cs_hdr vjcs_u.csu_hdr - - -struct vjstat { - unsigned long vjs_packets; /* outbound packets */ - unsigned long vjs_compressed; /* outbound compressed packets */ - unsigned long vjs_searches; /* searches for connection state */ - unsigned long vjs_misses; /* times couldn't find conn. state */ - unsigned long vjs_uncompressedin; /* inbound uncompressed packets */ - unsigned long vjs_compressedin; /* inbound compressed packets */ - unsigned long vjs_errorin; /* inbound unknown type packets */ - unsigned long vjs_tossed; /* inbound packets tossed because of error */ -}; - -/* - * all the state data for one serial line (we need one of these per line). - */ -struct vjcompress { - struct cstate *last_cs; /* most recently used tstate */ - u_char last_recv; /* last rcvd conn. id */ - u_char last_xmit; /* last sent conn. id */ - u_short flags; - u_char maxSlotIndex; - u_char compressSlot; /* Flag indicating OK to compress slot ID. */ -#if LINK_STATS - struct vjstat stats; -#endif - struct cstate tstate[MAX_SLOTS]; /* xmit connection states */ - struct cstate rstate[MAX_SLOTS]; /* receive connection states */ -}; - -/* flag values */ -#define VJF_TOSS 1U /* tossing rcvd frames because of input err */ - -extern void vj_compress_init (struct vjcompress *comp); -extern u_int vj_compress_tcp (struct vjcompress *comp, struct pbuf *pb); -extern void vj_uncompress_err (struct vjcompress *comp); -extern int vj_uncompress_uncomp(struct pbuf *nb, struct vjcompress *comp); -extern int vj_uncompress_tcp (struct pbuf **nb, struct vjcompress *comp); - -#endif /* VJ_H */ diff --git a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/slipif.c b/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/slipif.c deleted file mode 100644 index c908a1e42..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/contrib/src/netif/slipif.c +++ /dev/null @@ -1,371 +0,0 @@ -/** - * @file - * SLIP Interface - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * 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. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``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 INSTITUTE OR CONTRIBUTORS 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. - * - * This file is built upon the file: src/arch/rtxc/netif/sioslip.c - * - * Author: Magnus Ivarsson - */ - -/* - * This is an arch independent SLIP netif. The specific serial hooks must be - * provided by another file. They are sio_open, sio_read/sio_tryread and sio_send - */ - -#include "netif/slipif.h" -#include "lwip/opt.h" - -#if LWIP_HAVE_SLIPIF - -#include "lwip/def.h" -#include "lwip/pbuf.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "lwip/sio.h" -#if !NO_SYS -#include "lwip/sys.h" -#endif - -#define SLIP_BLOCK 1 -#define SLIP_DONTBLOCK 0 - -#define SLIP_END 0300 /* 0xC0 */ -#define SLIP_ESC 0333 /* 0xDB */ -#define SLIP_ESC_END 0334 /* 0xDC */ -#define SLIP_ESC_ESC 0335 /* 0xDD */ - -#define SLIP_MAX_SIZE 1500 - -enum slipif_recv_state { - SLIP_RECV_NORMAL, - SLIP_RECV_ESCAPE, -}; - -struct slipif_priv { - sio_fd_t sd; - /* q is the whole pbuf chain for a packet, p is the current pbuf in the chain */ - struct pbuf *p, *q; - enum slipif_recv_state state; - u16_t i, recved; -}; - -/** - * Send a pbuf doing the necessary SLIP encapsulation - * - * Uses the serial layer's sio_send() - * - * @param netif the lwip network interface structure for this slipif - * @param p the pbuf chaing packet to send - * @param ipaddr the ip address to send the packet to (not used for slipif) - * @return always returns ERR_OK since the serial layer does not provide return values - */ -err_t -slipif_output(struct netif *netif, struct pbuf *p, ip_addr_t *ipaddr) -{ - struct slipif_priv *priv; - struct pbuf *q; - u16_t i; - u8_t c; - - LWIP_ASSERT("netif != NULL", (netif != NULL)); - LWIP_ASSERT("netif->state != NULL", (netif->state != NULL)); - LWIP_ASSERT("p != NULL", (p != NULL)); - - LWIP_UNUSED_ARG(ipaddr); - - priv = netif->state; - - /* Send pbuf out on the serial I/O device. */ - sio_send(SLIP_END, priv->sd); - - for (q = p; q != NULL; q = q->next) { - for (i = 0; i < q->len; i++) { - c = ((u8_t *)q->payload)[i]; - switch (c) { - case SLIP_END: - sio_send(SLIP_ESC, priv->sd); - sio_send(SLIP_ESC_END, priv->sd); - break; - case SLIP_ESC: - sio_send(SLIP_ESC, priv->sd); - sio_send(SLIP_ESC_ESC, priv->sd); - break; - default: - sio_send(c, priv->sd); - break; - } - } - } - sio_send(SLIP_END, priv->sd); - return ERR_OK; -} - -/** - * Static function for easy use of blockig or non-blocking - * sio_read - * - * @param fd serial device handle - * @param data pointer to data buffer for receiving - * @param len maximum length (in bytes) of data to receive - * @param block if 1, call sio_read; if 0, call sio_tryread - * @return return value of sio_read of sio_tryread - */ -static u32_t -slip_sio_read(sio_fd_t fd, u8_t* data, u32_t len, u8_t block) -{ - if (block) { - return sio_read(fd, data, len); - } else { - return sio_tryread(fd, data, len); - } -} - -/** - * Handle the incoming SLIP stream character by character - * - * Poll the serial layer by calling sio_read() or sio_tryread(). - * - * @param netif the lwip network interface structure for this slipif - * @param block if 1, block until data is received; if 0, return when all data - * from the buffer is received (multiple calls to this function will - * return a complete packet, NULL is returned before - used for polling) - * @return The IP packet when SLIP_END is received - */ -static struct pbuf * -slipif_input(struct netif *netif, u8_t block) -{ - struct slipif_priv *priv; - u8_t c; - struct pbuf *t; - - LWIP_ASSERT("netif != NULL", (netif != NULL)); - LWIP_ASSERT("netif->state != NULL", (netif->state != NULL)); - - priv = netif->state; - - while (slip_sio_read(priv->sd, &c, 1, block) > 0) { - switch (priv->state) { - case SLIP_RECV_NORMAL: - switch (c) { - case SLIP_END: - if (priv->recved > 0) { - /* Received whole packet. */ - /* Trim the pbuf to the size of the received packet. */ - pbuf_realloc(priv->q, priv->recved); - - LINK_STATS_INC(link.recv); - - LWIP_DEBUGF(SLIP_DEBUG, ("slipif: Got packet\n")); - t = priv->q; - priv->p = priv->q = NULL; - priv->i = priv->recved = 0; - return t; - } - continue; - case SLIP_ESC: - priv->state = SLIP_RECV_ESCAPE; - continue; - } - break; - case SLIP_RECV_ESCAPE: - switch (c) { - case SLIP_ESC_END: - c = SLIP_END; - break; - case SLIP_ESC_ESC: - c = SLIP_ESC; - break; - } - priv->state = SLIP_RECV_NORMAL; - /* FALLTHROUGH */ - } - - /* byte received, packet not yet completely received */ - if (priv->p == NULL) { - /* allocate a new pbuf */ - LWIP_DEBUGF(SLIP_DEBUG, ("slipif_input: alloc\n")); - priv->p = pbuf_alloc(PBUF_LINK, (PBUF_POOL_BUFSIZE - PBUF_LINK_HLEN), PBUF_POOL); - - if (priv->p == NULL) { - LINK_STATS_INC(link.drop); - LWIP_DEBUGF(SLIP_DEBUG, ("slipif_input: no new pbuf! (DROP)\n")); - /* don't process any further since we got no pbuf to receive to */ - break; - } - - if (priv->q != NULL) { - /* 'chain' the pbuf to the existing chain */ - pbuf_cat(priv->q, priv->p); - } else { - /* p is the first pbuf in the chain */ - priv->q = priv->p; - } - } - - /* this automatically drops bytes if > SLIP_MAX_SIZE */ - if ((priv->p != NULL) && (priv->recved <= SLIP_MAX_SIZE)) { - ((u8_t *)priv->p->payload)[priv->i] = c; - priv->recved++; - priv->i++; - if (priv->i >= priv->p->len) { - /* on to the next pbuf */ - priv->i = 0; - if (priv->p->next != NULL && priv->p->next->len > 0) { - /* p is a chain, on to the next in the chain */ - priv->p = priv->p->next; - } else { - /* p is a single pbuf, set it to NULL so next time a new - * pbuf is allocated */ - priv->p = NULL; - } - } - } - } - - return NULL; -} - -#if !NO_SYS -/** - * The SLIP input thread. - * - * Feed the IP layer with incoming packets - * - * @param nf the lwip network interface structure for this slipif - */ -static void -slipif_loop_thread(void *nf) -{ - struct pbuf *p; - struct netif *netif = (struct netif *)nf; - - while (1) { - p = slipif_input(netif, SLIP_BLOCK); - if (p != NULL) { - if (netif->input(p, netif) != ERR_OK) { - pbuf_free(p); - p = NULL; - } - } - } -} -#endif /* !NO_SYS */ - -/** - * SLIP netif initialization - * - * Call the arch specific sio_open and remember - * the opened device in the state field of the netif. - * - * @param netif the lwip network interface structure for this slipif - * @return ERR_OK if serial line could be opened, - * ERR_MEM if no memory could be allocated, - * ERR_IF is serial line couldn't be opened - * - * @note netif->num must contain the number of the serial port to open - * (0 by default) - */ -err_t -slipif_init(struct netif *netif) -{ - struct slipif_priv *priv; - - LWIP_DEBUGF(SLIP_DEBUG, ("slipif_init: netif->num=%"U16_F"\n", (u16_t)netif->num)); - - /* Allocate private data */ - priv = mem_malloc(sizeof(struct slipif_priv)); - if (!priv) { - return ERR_MEM; - } - - netif->name[0] = 's'; - netif->name[1] = 'l'; - netif->output = slipif_output; - netif->mtu = SLIP_MAX_SIZE; - netif->flags |= NETIF_FLAG_POINTTOPOINT; - - /* Try to open the serial port (netif->num contains the port number). */ - priv->sd = sio_open(netif->num); - if (!priv->sd) { - /* Opening the serial port failed. */ - mem_free(priv); - return ERR_IF; - } - - /* Initialize private data */ - priv->p = NULL; - priv->q = NULL; - priv->state = SLIP_RECV_NORMAL; - priv->i = 0; - priv->recved = 0; - - netif->state = priv; - - /* initialize the snmp variables and counters inside the struct netif - * ifSpeed: no assumption can be made without knowing more about the - * serial line! - */ - NETIF_INIT_SNMP(netif, snmp_ifType_slip, 0); - -#if !NO_SYS - /* Create a thread to poll the serial line. */ - sys_thread_new(SLIPIF_THREAD_NAME, slipif_loop_thread, netif, - SLIPIF_THREAD_STACKSIZE, SLIPIF_THREAD_PRIO); -#endif - return ERR_OK; -} - -/** - * Polls the serial device and feeds the IP layer with incoming packets. - * - * @param netif The lwip network interface structure for this slipif - */ -void -slipif_poll(struct netif *netif) -{ - struct pbuf *p; - struct slipif_priv *priv; - - LWIP_ASSERT("netif != NULL", (netif != NULL)); - LWIP_ASSERT("netif->state != NULL", (netif->state != NULL)); - - priv = netif->state; - - while ((p = slipif_input(netif, SLIP_DONTBLOCK)) != NULL) { - if (netif->input(p, netif) != ERR_OK) { - pbuf_free(p); - } - } -} - -#endif /* LWIP_HAVE_SLIPIF */ diff --git a/l4/pkg/ankh/lib/lwip/lib/lwipopts.h b/l4/pkg/ankh/lib/lwip/lib/lwipopts.h deleted file mode 100644 index 3529976ac..000000000 --- a/l4/pkg/ankh/lib/lwip/lib/lwipopts.h +++ /dev/null @@ -1,594 +0,0 @@ -#pragma once - -#define LWIP_DEBUG 0 - -/** - * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain - * critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#ifndef SYS_LIGHTWEIGHT_PROT -#define SYS_LIGHTWEIGHT_PROT 1 -#endif - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library - * instead of the lwip internal allocator. Can save code size if you - * already use it. - */ -#ifndef MEM_LIBC_MALLOC -#define MEM_LIBC_MALLOC 1 -#endif - -/** -* MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator. -* Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution -* speed and usage from interrupts! -*/ -#ifndef MEMP_MEM_MALLOC -#define MEMP_MEM_MALLOC 1 -#endif - -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#ifndef MEM_ALIGNMENT -#define MEM_ALIGNMENT 4 -#endif - -/** - * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable - * amount of bytes before and after each memp element in every pool and fills - * it with a prominent default value. - * MEMP_OVERFLOW_CHECK == 0 no checking - * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed - * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time - * memp_malloc() or memp_free() is called (useful but slow!) - */ -#ifndef MEMP_OVERFLOW_CHECK -#define MEMP_OVERFLOW_CHECK 1 -#endif - -/** - * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make - * sure that there are no cycles in the linked lists. - */ -#ifndef MEMP_SANITY_CHECK -#define MEMP_SANITY_CHECK 1 -#endif - -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#ifndef LWIP_ARP -#define LWIP_ARP 1 -#endif - -/** - * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached. - */ -#ifndef ARP_TABLE_SIZE -#define ARP_TABLE_SIZE 16 -#endif - -/** - * ARP_QUEUEING==1: Outgoing packets are queued during hardware address - * resolution. - */ -#ifndef ARP_QUEUEING -#define ARP_QUEUEING 1 -#endif - -/** - * ETHARP_TRUST_IP_MAC==1: Incoming IP packets cause the ARP table to be - * updated with the source MAC and IP addresses supplied in the packet. - * You may want to disable this if you do not trust LAN peers to have the - * correct addresses, or as a limited approach to attempt to handle - * spoofing. If disabled, lwIP will need to make a new ARP request if - * the peer is not already in the ARP table, adding a little latency. - */ -#ifndef ETHARP_TRUST_IP_MAC -#define ETHARP_TRUST_IP_MAC 1 -#endif - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#ifndef IP_FORWARD -#define IP_FORWARD 0 -#endif - -/** - * IP_OPTIONS_ALLOWED: Defines the behavior for IP options. - * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped. - * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed). - */ -#ifndef IP_OPTIONS_ALLOWED -#define IP_OPTIONS_ALLOWED 1 -#endif - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#ifndef IP_REASSEMBLY -#define IP_REASSEMBLY 1 -#endif - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#ifndef IP_FRAG -#define IP_FRAG 1 -#endif - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#ifndef IP_REASS_MAXAGE -#define IP_REASS_MAXAGE 3 -#endif - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#ifndef IP_REASS_MAX_PBUFS -#define IP_REASS_MAX_PBUFS 10 -#endif - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented. - */ -#ifndef IP_FRAG_USES_STATIC_BUF -#define IP_FRAG_USES_STATIC_BUF 1 -#endif - -/** - * IP_FRAG_MAX_MTU: Assumed max MTU on any interface for IP frag buffer - * (requires IP_FRAG_USES_STATIC_BUF==1) - */ -#if IP_FRAG_USES_STATIC_BUF && !defined(IP_FRAG_MAX_MTU) -#define IP_FRAG_MAX_MTU 1500 -#endif - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#ifndef IP_DEFAULT_TTL -#define IP_DEFAULT_TTL 255 -#endif - -/** - * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast - * filter per pcb on udp and raw send operations. To enable broadcast filter - * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1. - */ -#ifndef IP_SOF_BROADCAST -#define IP_SOF_BROADCAST 0 -#endif - -/** - * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast - * filter on recv operations. - */ -#ifndef IP_SOF_BROADCAST_RECV -#define IP_SOF_BROADCAST_RECV 0 -#endif - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#ifndef LWIP_ICMP -#define LWIP_ICMP 1 -#endif - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#ifndef ICMP_TTL -#define ICMP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only) - */ -#ifndef LWIP_BROADCAST_PING -#define LWIP_BROADCAST_PING 0 -#endif - -/** - * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only) - */ -#ifndef LWIP_MULTICAST_PING -#define LWIP_MULTICAST_PING 0 -#endif - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef LWIP_RAW -#define LWIP_RAW 1 -#endif - -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef RAW_TTL -#define RAW_TTL (IP_DEFAULT_TTL) -#endif - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#ifndef LWIP_DHCP -#define LWIP_DHCP 1 -#endif - -/** - * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. - */ -#ifndef DHCP_DOES_ARP_CHECK -#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP)) -#endif - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#ifndef LWIP_AUTOIP -#define LWIP_AUTOIP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on - * the same interface at the same time. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP -#define LWIP_DHCP_AUTOIP_COOP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes - * that should be sent before falling back on AUTOIP. This can be set - * as low as 1 to get an AutoIP address very quickly, but you should - * be prepared to handle a changing IP address when DHCP overrides - * AutoIP. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP_TRIES -#define LWIP_DHCP_AUTOIP_COOP_TRIES 9 -#endif - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#ifndef LWIP_SNMP -#define LWIP_SNMP 1 -#endif - -/** - * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will - * allow. At least one request buffer is required. - */ -#ifndef SNMP_CONCURRENT_REQUESTS -#define SNMP_CONCURRENT_REQUESTS 1 -#endif - -/** - * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap - * destination is required - */ -#ifndef SNMP_TRAP_DESTINATIONS -#define SNMP_TRAP_DESTINATIONS 1 -#endif - -/** - * SNMP_PRIVATE_MIB: - */ -#ifndef SNMP_PRIVATE_MIB -#define SNMP_PRIVATE_MIB 0 -#endif - -/** - * Only allow SNMP write actions that are 'safe' (e.g. disabeling netifs is not - * a safe action and disabled when SNMP_SAFE_REQUESTS = 1). - * Unsafe requests are disabled by default! - */ -#ifndef SNMP_SAFE_REQUESTS -#define SNMP_SAFE_REQUESTS 1 -#endif - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#ifndef LWIP_IGMP -#define LWIP_IGMP 1 -#endif - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#ifndef LWIP_DNS -#define LWIP_DNS 1 -#endif - -/** DNS maximum number of entries to maintain locally. */ -#ifndef DNS_TABLE_SIZE -#define DNS_TABLE_SIZE 8 -#endif - -/** DNS maximum host name length supported in the name table. */ -#ifndef DNS_MAX_NAME_LENGTH -#define DNS_MAX_NAME_LENGTH 256 -#endif - -/** The maximum of DNS servers */ -#ifndef DNS_MAX_SERVERS -#define DNS_MAX_SERVERS 2 -#endif - -/** DNS do a name checking between the query and the response. */ -#ifndef DNS_DOES_NAME_CHECK -#define DNS_DOES_NAME_CHECK 1 -#endif - -/** DNS use a local buffer if DNS_USES_STATIC_BUF=0, a static one if - DNS_USES_STATIC_BUF=1, or a dynamic one if DNS_USES_STATIC_BUF=2. - The buffer will be of size DNS_MSG_SIZE */ -#ifndef DNS_USES_STATIC_BUF -#define DNS_USES_STATIC_BUF 1 -#endif - -/** DNS message max. size. Default value is RFC compliant. */ -#ifndef DNS_MSG_SIZE -#define DNS_MSG_SIZE 512 -#endif - -/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled, - * you have to define - * #define DNS_LOCAL_HOSTLIST_INIT {{"host1", 0x123}, {"host2", 0x234}} - * (an array of structs name/address, where address is an u32_t in network - * byte order). - * - * Instead, you can also use an external function: - * #define DNS_LOOKUP_LOCAL_EXTERN(x) extern u32_t my_lookup_function(const char *name) - * that returns the IP address or INADDR_NONE if not found. - */ -#ifndef DNS_LOCAL_HOSTLIST -#define DNS_LOCAL_HOSTLIST 1 -#endif /* DNS_LOCAL_HOSTLIST */ - -/** If this is turned on, the local host-list can be dynamically changed - * at runtime. */ -#ifndef DNS_LOCAL_HOSTLIST_IS_DYNAMIC -#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 1 -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -#define LWIP_DNS_API_DECLARE_H_ERRNO 0 - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#ifndef LWIP_UDP -#define LWIP_UDP 1 -#endif - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#ifndef LWIP_UDPLITE -#define LWIP_UDPLITE 1 -#endif - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#ifndef UDP_TTL -#define UDP_TTL (IP_DEFAULT_TTL) -#endif - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#ifndef LWIP_TCP -#define LWIP_TCP 1 -#endif - -/** - * TCP_TTL: Default Time-To-Live value. - */ -#ifndef TCP_TTL -#define TCP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * TCP_WND: The size of a TCP window. This must be at least - * (2 * TCP_MSS) for things to work well - */ -#ifndef TCP_WND -#define TCP_WND 2048 -#endif - -/** - * TCP_MAXRTX: Maximum number of retransmissions of data segments. - */ -#ifndef TCP_MAXRTX -#define TCP_MAXRTX 12 -#endif - -/** - * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments. - */ -#ifndef TCP_SYNMAXRTX -#define TCP_SYNMAXRTX 6 -#endif - -/** - * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order. - * Define to 0 if your device is low on memory. - */ -#ifndef TCP_QUEUE_OOSEQ -#define TCP_QUEUE_OOSEQ (LWIP_TCP) -#endif - -/** - * TCP_MSS: TCP Maximum segment size. (default is 128, a *very* - * conservative default.) - * For the receive side, this MSS is advertised to the remote side - * when opening a connection. For the transmit size, this MSS sets - * an upper limit on the MSS advertised by the remote host. - */ -#ifndef TCP_MSS -#define TCP_MSS 128 -#endif - -/** - * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really - * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which - * reflects the available reassembly buffer size at the remote host) and the - * largest size permitted by the IP layer" (RFC 1122) - * Setting this to 1 enables code that checks TCP_MSS against the MTU of the - * netif used for a connection and limits the MSS if it would be too big otherwise. - */ -#ifndef TCP_CALCULATE_EFF_SEND_MSS -#define TCP_CALCULATE_EFF_SEND_MSS 1 -#endif - - -/** - * TCP_SND_BUF: TCP sender buffer space (bytes). - */ -#ifndef TCP_SND_BUF -#define TCP_SND_BUF 256 -#endif - -/** - * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least - * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. - */ -#ifndef TCP_SND_QUEUELEN -#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF/TCP_MSS)) -#endif - -/** - * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than or equal - * to TCP_SND_BUF. It is the amount of space which must be available in the - * TCP snd_buf for select to return writable. - */ -#ifndef TCP_SNDLOWAT -#define TCP_SNDLOWAT (TCP_SND_BUF/2) -#endif - -/** - * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb. - */ -#ifndef TCP_LISTEN_BACKLOG -#define TCP_LISTEN_BACKLOG 0 -#endif - -/** - * The maximum allowed backlog for TCP listen netconns. - * This backlog is used unless another is explicitly specified. - * 0xff is the maximum (u8_t). - */ -#ifndef TCP_DEFAULT_LISTEN_BACKLOG -#define TCP_DEFAULT_LISTEN_BACKLOG 0xff -#endif - -/** - * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. - */ -#ifndef LWIP_TCP_TIMESTAMPS -#define LWIP_TCP_TIMESTAMPS 0 -#endif - -/** - * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an - * explicit window update - */ -#ifndef TCP_WND_UPDATE_THRESHOLD -#define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4) -#endif - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#ifndef MEMP_NUM_SYS_TIMEOUT -#define MEMP_NUM_SYS_TIMEOUT 16 -#endif diff --git a/l4/pkg/bootstrap/server/src/ARCH-x86/serial.cc b/l4/pkg/bootstrap/server/src/ARCH-x86/serial.cc deleted file mode 100644 index 219e95211..000000000 --- a/l4/pkg/bootstrap/server/src/ARCH-x86/serial.cc +++ /dev/null @@ -1,213 +0,0 @@ -/* - * (c) 2009 Adam Lackorzynski , - * Alexander Warg , - * Frank Mehnert - * 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 -#include -#include -#include "base_critical.h" -#include "serial.h" -#include "koptions-def.h" - -static int ser_io_base; - - -struct bootstrap_termios { - unsigned long c_iflag; - unsigned long c_oflag; - unsigned long c_cflag; - unsigned long c_lflag; - unsigned char c_cc[20]; - long c_ispeed; - long c_ospeed; - -} serial_termios = -{ - 0, /* input flags */ - OPOST, /* output flags */ - CS8, /* control flags */ - 0, /* local flags */ - { 'D'-64, /* VEOF */ - _POSIX_VDISABLE, /* VEOL */ - 0, - 'H'-64, /* VERASE */ - 0, - 'U'-64, /* VKILL */ - 0, - 0, - 'C'-64, /* VINTR */ - '\\'-64, /* VQUIT */ - 'Z'-64, /* VSUSP */ - 0, - 'Q'-64, /* VSTART */ - 'S'-64, /* VSTOP */ - }, - 115200, /* input speed */ - 115200, /* output speed */ -}; - -void -com_cons_putchar(int ch) -{ - base_critical_enter(); - - if (ser_io_base == 0) - { - base_critical_leave(); - return; - } - - if (serial_termios.c_oflag & OPOST) - if (ch == '\n') - com_cons_putchar('\r'); - - /* Wait for the transmit buffer to become available. */ - while (!(l4util_in8(ser_io_base + 5) & 0x20)); - - l4util_out8(ch, ser_io_base + 0); - - base_critical_leave(); -} - -int -com_cons_char_avail(void) -{ - return !!(l4util_in8(ser_io_base + 5) & 0x01); -} - -int -com_cons_try_getchar(void) -{ - int ch = -1; - - base_critical_enter(); - - if (ser_io_base == 0) - { - base_critical_leave(); - return -1; - } - - /* character available? */ - if (com_cons_char_avail()) { - /* Grab it. */ - ch = l4util_in8(ser_io_base + 0); - } - - base_critical_leave(); - return ch; -} - -static int -have_serial(unsigned port_base) -{ - unsigned char scratch, scratch2, scratch3; - - scratch = l4util_in8(port_base + 1); - l4util_out8(0, port_base + 1); - - l4util_iodelay(); - - scratch2 = l4util_in8(port_base + 1); - l4util_out8(0x0f, port_base + 1); - - l4util_iodelay(); - - scratch3 = l4util_in8(port_base + 1); - l4util_out8(scratch, port_base + 1); - - if (scratch2 || scratch3 != 0x0f) - return 0; - - return 1; -} - -int -com_cons_init(int com_port_or_base, - int com_irq, L4_kernel_options::Uart *kuart, - unsigned int *kuart_flags) -{ - unsigned char dfr; - unsigned divisor; - - base_critical_enter(); - - switch (com_port_or_base) - { - case 1: com_port_or_base = 0x3f8; - if (com_irq == -1) - com_irq = 4; - break; - case 2: com_port_or_base = 0x2f8; - if (com_irq == -1) - com_irq = 3; - break; - case 3: com_port_or_base = 0x3e8; break; - case 4: com_port_or_base = 0x2e8; break; - } - - if (!have_serial(com_port_or_base)) - { - base_critical_leave(); - return 1; - } - - ser_io_base = com_port_or_base; - - kuart->access_type = L4_kernel_options::Uart_type_ioport; - kuart->irqno = com_irq; - kuart->base_address = com_port_or_base; - kuart->baud = 115200; - *kuart_flags |= L4_kernel_options::F_uart_base - | L4_kernel_options::F_uart_baud; - if (com_irq != -1) - *kuart_flags |= L4_kernel_options::F_uart_irq; - - /* Determine what to plug in the data format register. */ - if (serial_termios.c_cflag & PARENB) - if (serial_termios.c_cflag & PARODD) - dfr = 0x08; - else - dfr = 0x18; - else - dfr = 0x00; - if (serial_termios.c_cflag & CSTOPB) - dfr |= 0x04; - switch (serial_termios.c_cflag & 0x00000300) - { - case CS5: dfr |= 0x00; break; - case CS6: dfr |= 0x01; break; - case CS7: dfr |= 0x02; break; - case CS8: dfr |= 0x03; break; - } - - /* Convert the baud rate into a divisor latch value. */ - divisor = 115200 / serial_termios.c_ospeed; - - /* Initialize the serial port. */ - l4util_out8(0x80 | dfr, ser_io_base + 3); /* DLAB = 1 */ - l4util_out8(divisor & 0xff, ser_io_base + 0); - l4util_out8(divisor >> 8, ser_io_base + 1); - l4util_out8(0x03 | dfr, ser_io_base + 3); /* DLAB = 0, frame = 8N1 */ - l4util_out8(0x00, ser_io_base + 1); /* no interrupts enabled */ - l4util_out8(0x0b, ser_io_base + 4); /* OUT2, RTS, and DTR enabled */ - - l4util_out8(0x41, ser_io_base + 2); /* 4 byte trigger + on */ - - /* Clear all serial interrupts. */ - l4util_in8(ser_io_base + 6); /* ID 0: read RS-232 status register */ - l4util_in8(ser_io_base + 2); /* ID 1: read interrupt identification reg */ - l4util_in8(ser_io_base + 0); /* ID 2: read receive buffer register */ - l4util_in8(ser_io_base + 5); /* ID 3: read serialization status reg */ - - base_critical_leave(); - - return 0; -} diff --git a/l4/pkg/bootstrap/server/src/ARCH-x86/serial.h b/l4/pkg/bootstrap/server/src/ARCH-x86/serial.h deleted file mode 100644 index f7004522e..000000000 --- a/l4/pkg/bootstrap/server/src/ARCH-x86/serial.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * (c) 2009 Adam Lackorzynski , - * Alexander Warg - * 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. - */ -#ifndef SERIAL_H -#define SERIAL_H - -#include -#include "koptions-def.h" - -EXTERN_C_BEGIN - -void com_cons_putchar(int ch); -int com_cons_try_getchar(void); -int com_cons_char_avail(void); -int com_cons_init(int com_port, int com_irq, - L4_kernel_options::Uart *kuart, - unsigned int *kuart_flags); - -EXTERN_C_END - -#endif - diff --git a/l4/pkg/dde/include/ddekit/__usem_wrap.h b/l4/pkg/dde/include/ddekit/__usem_wrap.h deleted file mode 100644 index 1a775510d..000000000 --- a/l4/pkg/dde/include/ddekit/__usem_wrap.h +++ /dev/null @@ -1,210 +0,0 @@ -/* - * This file is part of DDEKit. - * - * (c) 2009-2010 Bjoern Doebel - * Christian Helmuth - * Thomas Friebel - * economic rights: Technische Universitaet 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. - */ - -#pragma once - -#include -#include -#include -#include -#include - -/** - * Memory alignment requirement for L4 kernel semaphores. - * - * Make sure that your memory is aligned to this size when - * allocating memory for a kernel semaphore dynamically. - */ -#define USEM_LOCK_ALIGN (2*sizeof(l4_mword_t)) - -/** - * Allocate memory that is aligned to USEM_LOCK_ALIGN. - * - * #type must contain a member #baseptrname where the - * pointer to the original base is stored. - * - * \param ptr result pointer - * \param type type to be allocated - * \param baseptrname name of the base pointer slot - * in type - * \param malloc_fn function for allocating memory - */ -#define USEM_ALLOC_ALIGNED(ptr, type, baseptrname, malloc_fn) \ - do { \ - void *_tmp = (malloc_fn)(sizeof(type) + USEM_LOCK_ALIGN); \ - long _mask = ~(USEM_LOCK_ALIGN - 1); \ - (ptr) = (type *)((char*)_tmp + USEM_LOCK_ALIGN); \ - (ptr) = (type *)((long)(ptr) & _mask); \ - (ptr)->baseptrname = _tmp; \ - } while (0); - -L4_INLINE int - __do_init_lock(l4_u_semaphore_t *sem, l4_cap_idx_t *cap, int init_val); - -L4_INLINE int -__init_lock_locked(l4_u_semaphore_t *sem, l4_cap_idx_t *cap); - -L4_INLINE int -__init_lock_unlocked(l4_u_semaphore_t *sem, l4_cap_idx_t *cap); - -L4_INLINE int -__lock(l4_u_semaphore_t *sem, l4_cap_idx_t cap); - -L4_INLINE int -__lock_timed(l4_u_semaphore_t *sem, l4_cap_idx_t cap, l4_timeout_s to); - -L4_INLINE int -__unlock(l4_u_semaphore_t *sem, l4_cap_idx_t cap); - -L4_INLINE int -__lock_free(l4_cap_idx_t cap); - -L4_INLINE int -__locked(l4_u_semaphore_t *s); - -/** - * Initialize u_semaphore. - * - * \param sem semaphore ptr - * \param cap cap ptr - * \param init_val initial counter value - * - * \retval cap semaphore cap - * \retval sem semaphore - * \return 1 for success, 0 on error - */ -L4_INLINE int __do_init_lock(l4_u_semaphore_t *sem, - l4_cap_idx_t *cap, int init_val) -{ - *cap = l4re_util_cap_alloc(); - if (l4_is_invalid_cap(*cap)) - return 0; - - l4_msgtag_t ret = l4_factory_create_semaphore(l4re_env()->factory, *cap); - if (l4_error(ret)) - return 0; - - l4_usem_init(init_val ,sem); - - return 1; -} - - -/** - * Initialize u_semaphore in locked state - * - * \param sem semaphore ptr - * \param cap cap ptr - * \param init_val initial counter value - * - * \retval cap semaphore cap - * \retval sem semaphore - * \return 1 for success, 0 on error - */ -L4_INLINE int __init_lock_locked(l4_u_semaphore_t *sem, - l4_cap_idx_t *cap) -{ - return __do_init_lock(sem, cap, 0); -} - - -/** - * Initialize u_semaphore in unlocked state - * - * \param sem semaphore ptr - * \param cap cap ptr - * \param init_val initial counter value - * - * \retval cap semaphore cap - * \retval sem semaphore - * \return 1 for success, 0 on error - */ -L4_INLINE int __init_lock_unlocked(l4_u_semaphore_t *sem, - l4_cap_idx_t *cap) -{ - return __do_init_lock(sem, cap, 1); -} - - -/** - * Lock u_semaphore. - * - * \param sem semaphore - * \param cap semaphore cap - * - * \return 1 success, 0 error - */ -L4_INLINE int __lock(l4_u_semaphore_t *sem, l4_cap_idx_t cap) -{ - return (l4_usem_down(cap, sem).raw == L4_USEM_OK); -} - - -/** - * Lock u_semaphore with timeout. - * - * \param sem semaphore - * \param cap semaphore cap - * \param to timeout - * \return 1 success, 0 error - */ -L4_INLINE int __lock_timed(l4_u_semaphore_t *sem, - l4_cap_idx_t cap, l4_timeout_s to) -{ - return (l4_usem_down_to(cap, sem, to).raw == L4_USEM_OK); -} - - -/** - * Unlock u_semaphore. - * - * \param sem semaphore - * \param cap semaphore cap - * - * \return 1 success, 0 error - */ -L4_INLINE int __unlock(l4_u_semaphore_t *sem, l4_cap_idx_t cap) -{ - return (l4_usem_up(cap, sem).raw == L4_USEM_OK); -} - - -/** - * Delete u_semaphore. - * - * \param cap semaphore cap - * - * \return 1 success, 0 error - */ -L4_INLINE int __lock_free(l4_cap_idx_t cap) -{ - l4_msgtag_t ret = l4_task_unmap(L4RE_THIS_TASK_CAP, - l4_obj_fpage(cap, 0, L4_FPAGE_RWX), - L4_FP_ALL_SPACES); - - l4re_util_cap_free(cap); - - return !l4_msgtag_has_error(ret); -} - - -/* - * Determine whether a usem is locked. - * - * \param s u_semaphore to check. - * \return 1 if locked, 0 if not - */ -L4_INLINE int __locked(l4_u_semaphore_t *s) -{ - return (s->counter < 1); -} diff --git a/l4/pkg/l4sys/doc/Makefile b/l4/pkg/l4sys/doc/Makefile deleted file mode 100644 index 2b85aa326..000000000 --- a/l4/pkg/l4sys/doc/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -PKGDIR = .. -L4DIR ?= $(PKGDIR)/../.. - -SRC_DOX_REF = l4sys-l4f.cfg - -include $(L4DIR)/mk/doc.mk diff --git a/l4/pkg/l4sys/doc/l4sys-l4f-footer.html b/l4/pkg/l4sys/doc/l4sys-l4f-footer.html deleted file mode 100644 index 06e50c829..000000000 --- a/l4/pkg/l4sys/doc/l4sys-l4f-footer.html +++ /dev/null @@ -1,9 +0,0 @@ - - -
-
- Fiasco/L4 System Call C-Bindings Reference Manual, -  © 1996-2009 -
- - diff --git a/l4/pkg/l4sys/doc/l4sys-l4f-header.html b/l4/pkg/l4sys/doc/l4sys-l4f-header.html deleted file mode 100644 index 11b9314b2..000000000 --- a/l4/pkg/l4sys/doc/l4sys-l4f-header.html +++ /dev/null @@ -1,14 +0,0 @@ - - - Fiasco/L4 System Call C-Bindings Reference Manual - - - - -
- Introduction   - API Reference   - Files   - Index   -
-
diff --git a/l4/pkg/l4sys/doc/l4sys-l4f.cfg b/l4/pkg/l4sys/doc/l4sys-l4f.cfg deleted file mode 100644 index fa3bcdc1d..000000000 --- a/l4/pkg/l4sys/doc/l4sys-l4f.cfg +++ /dev/null @@ -1,1294 +0,0 @@ -# Doxyfile 1.5.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file that -# follow. The default is UTF-8 which is also the encoding used for all text before -# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into -# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of -# possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = "Fiasco/L4 System Call C-Bindings " - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = l4sys-l4f - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, -# Italian, Japanese, Japanese-en (Japanese with English messages), Korean, -# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, -# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 2 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to -# include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be extracted -# and appear in the documentation as a namespace called 'anonymous_namespace{file}', -# where file will be replaced with the base name of the file that contains the anonymous -# namespace. By default anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = NO - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = NO - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from the -# version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = YES - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text " - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -@INCLUDE = $(L4DIR)/pkg/l4sys/doc/files.cfg - -# This tag can be used to specify the character encoding of the source files that -# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default -# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. -# See http://www.gnu.org/software/libiconv for the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the output. -# The symbol name can be a fully qualified name, a word, or if the wildcard * is used, -# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH -# then you must also enable this option. If you don't then doxygen will produce -# a warning and turn it on anyway - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = $(L4DIR)/pkg/l4sys/doc/l4sys-l4f-header.html - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = $(L4DIR)/pkg/l4sys/doc/l4sys-l4f-footer.html - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = L4_INLINE=inline - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to -# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to -# specify the directory where the mscgen tool resides. If left empty the tool is assumed to -# be found in the default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will -# generate a caller dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable caller graphs for selected -# functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the number -# of direct children of the root node in a graph is already larger than -# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, which results in a white background. -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/l4/pkg/l4sys/doc/l4sys-l4f.dox b/l4/pkg/l4sys/doc/l4sys-l4f.dox deleted file mode 100644 index a37e3e4e6..000000000 --- a/l4/pkg/l4sys/doc/l4sys-l4f.dox +++ /dev/null @@ -1,16 +0,0 @@ -/* -*- c -*- */ - -/** -\mainpage Fiasco/L4 System Call C-Bindings Reference Manual - -\section content Contents - -- \ref intro -- \htmlonly\endhtmlonly Modules - \htmlonly\endhtmlonly - -\section intro Introduction - -This manual describes the C-Bindings for the Fiasco/L4 system calls. - -*/ diff --git a/l4/pkg/l4sys/include/ARCH-amd64/L4API-l4f/__semaphore_impl.h b/l4/pkg/l4sys/include/ARCH-amd64/L4API-l4f/__semaphore_impl.h deleted file mode 100644 index ddfcece6f..000000000 --- a/l4/pkg/l4sys/include/ARCH-amd64/L4API-l4f/__semaphore_impl.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * \file - * \brief User-lock implementation for amd64 - */ -/* - * (c) 2008-2009 Adam Lackorzynski , - * Alexander Warg - * 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. - * - * 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. - */ -#pragma once - -#include -#include - -L4_INLINE l4_msgtag_t -l4_usem_down_to(l4_cap_idx_t ksem, l4_u_semaphore_t *sem, l4_timeout_s timeout) L4_NOTHROW -{ - l4_msgtag_t res; - - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - - do - { - unsigned long dummy1, dummy2, dummy3; - __asm__ __volatile__( - " xor %%rax, %%rax \n\t" - " decq 0(%%rdi) \n\t" - " jge 1f \n\t" - " mov $1, %%rax \n\t" - L4_ENTER_KERNEL - "1: \n\t" - : - "=D" (dummy1), - "=c" (dummy2), - "=d" (dummy3), - "=a" (res.raw) - : - "D" (sem), - "d" (ksem), - "c" (timeout) - : - "rsi", "memory" - ); - } - while (l4_msgtag_label(res) == L4_USEM_RETRY); - - return res; -} - -L4_INLINE l4_msgtag_t -l4_usem_up(l4_cap_idx_t ksem, l4_u_semaphore_t *sem) L4_NOTHROW -{ - l4_msgtag_t tag; - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - __asm__ __volatile__( - "xor %%rax, %%rax \n\t" - "incq 0(%%rdi) \n\t" - "testb $1, 8(%%rdi) \n\t" - "jz 2f \n\t" - "mov $0x10001, %%rax \n\t" - L4_ENTER_KERNEL - "2: \n\t" - : - "=D" (sem), - "=d" (ksem), - "=a" (tag.raw) - : - "D" (sem), - "d" (ksem) - : - "rcx", "rsi", "memory" - ); - - return tag; -} - diff --git a/l4/pkg/l4sys/include/ARCH-arm/__semaphore_impl.h b/l4/pkg/l4sys/include/ARCH-arm/__semaphore_impl.h deleted file mode 100644 index 655da1c9e..000000000 --- a/l4/pkg/l4sys/include/ARCH-arm/__semaphore_impl.h +++ /dev/null @@ -1,116 +0,0 @@ -/** - * \file - * \brief User-lock implementation for ARM - */ -/* - * (c) 2008-2009 Adam Lackorzynski , - * Alexander Warg - * 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. - * - * 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. - */ -#pragma once - -#include -#include -#include -#include - -L4_INLINE l4_msgtag_t -l4_usem_down_to(l4_cap_idx_t lock, l4_u_semaphore_t *sem, l4_timeout_s timeout) L4_NOTHROW -{ - do - { - if (__builtin_expect(l4_atomic_add((long*)&(sem->counter), -1) >= 0, 1)) - return l4_msgtag(0, 0, 0, 0); - - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - - register unsigned long _lock __asm__ ("r2") = lock | L4_SYSF_CALL; - register unsigned long _timeout __asm__ ("r3") = timeout.t; - register unsigned long _flags __asm__ ("r4") = 0; - register l4_msgtag_t _tag __asm__ ("r0") = - l4_msgtag(0 /*L4_SEMAPHORE_DOWN*/, 1, 0, 0); - - __asm__ __volatile__ - ("@ l4_usem_down_to (semaphore block) \n\t" - PIC_SAVE_ASM - "mov lr, pc \n\t" - "mov pc, %[sys] \n\t" - PIC_RESTORE_ASM - : - "=r" (_lock), - "=r" (_timeout), - "=r" (_flags), - "=r" (_tag.raw) - : - "0" (_lock), - "1" (_timeout), - "2" (_flags), - "3" (_tag.raw), - [sys] "i" (L4_SYSCALL_INVOKE) - : - "cc", "memory", "lr" - ); - - if (l4_msgtag_label(_tag) != L4_USEM_RETRY) - { - l4_msgtag_t t; - t.raw = _tag.raw; - return t; - } - } - while (1); -} - -L4_INLINE l4_msgtag_t -l4_usem_up(l4_cap_idx_t lock, l4_u_semaphore_t *sem) L4_NOTHROW -{ - l4_atomic_add((long*)&(sem->counter), 1); - - if (__builtin_expect(sem->flags == 0, 1)) - return l4_msgtag(0,0,0,0); - - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - - register unsigned long _lock __asm__ ("r2") = lock | L4_SYSF_CALL; - register unsigned long _timeout __asm__ ("r3") = 0; - register unsigned long _flags __asm__ ("r4") = 0; - register unsigned long _tag __asm__ ("r0") = - l4_msgtag(1 /* L4_SEMAPHORE_UP_WITHOUT_YIELD */, 1, 0, 0).raw; - - __asm__ __volatile__ - ("@ l4_usem_up (semaphore block) \n\t" - PIC_SAVE_ASM - "mov lr, pc \n\t" - "mov pc, %[sys] \n\t" - PIC_RESTORE_ASM - : - "=r"(_lock), - "=r"(_timeout), - "=r"(_flags), - "=r"(_tag) - : - "0"(_lock), - "1"(_timeout), - "2"(_flags), - "3"(_tag), - [sys] "i" (L4_SYSCALL_INVOKE) - : - "cc", "memory", "lr"); - - l4_msgtag_t t; t.raw = _tag; - return t; -} - diff --git a/l4/pkg/l4sys/include/ARCH-ppc32/__semaphore_impl.h b/l4/pkg/l4sys/include/ARCH-ppc32/__semaphore_impl.h deleted file mode 100644 index 8d4449d0c..000000000 --- a/l4/pkg/l4sys/include/ARCH-ppc32/__semaphore_impl.h +++ /dev/null @@ -1,103 +0,0 @@ -/** - * \file - * \brief User-lock implementation for x86 - */ -/* - * (c) 2008-2009 Adam Lackorzynski - * 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. - * - * 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. - */ -#pragma once - -#include -#include -#include -#include - -L4_INLINE l4_msgtag_t -l4_usem_down_to(l4_cap_idx_t lock, l4_u_semaphore_t *sem, l4_timeout_s timeout) L4_NOTHROW -{ - do - { - if (__builtin_expect(l4_atomic_add((long*)&(sem->counter), -1) >= 0, 1)) - return l4_msgtag(0,0,0,0); - - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - - register unsigned long _lock __asm__ ("r4") = lock | L4_SYSF_CALL; - register unsigned long _timeout __asm__ ("r5") = timeout.t; - register unsigned long _flags __asm__ ("r6") = 0; - register unsigned long _tag __asm__ ("r3") = 1; - - __asm__ __volatile__ - (" bla %[addr] \n" - : - "=r"(_lock), - "=r"(_timeout), - "=r"(_flags), - "=r"(_tag) - : - "0"(_lock), - "1"(_timeout), - "2"(_flags), - "3"(_tag), - [addr] "i" (L4_SYSCALL_INVOKE) - : - "memory", "lr"); - - if (_tag != 0x10000) - { - l4_msgtag_t t; t.raw = _tag; - return t; - } - } - while (1); -} - -L4_INLINE l4_msgtag_t -l4_usem_up(l4_cap_idx_t lock, l4_u_semaphore_t *sem) L4_NOTHROW -{ - l4_atomic_add((long*)&(sem->counter), 1); - - if (__builtin_expect(sem->flags == 0, 1)) - return l4_msgtag(0,0,0,0); - - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - - register unsigned long _lock __asm__ ("r4") = lock | L4_SYSF_CALL; - register unsigned long _timeout __asm__ ("r5") = 0; - register unsigned long _flags __asm__ ("r6") = 0; - register unsigned long _tag __asm__ ("r3") = 0x10001; - - __asm__ __volatile__ - (" bla %[addr] \n" - : - "=r"(_lock), - "=r"(_timeout), - "=r"(_flags), - "=r"(_tag) - : - "0"(_lock), - "1"(_timeout), - "2"(_flags), - "3"(_tag), - [addr] "i" (L4_SYSCALL_INVOKE) - : - "memory", "lr"); - - l4_msgtag_t t; t.raw = _tag; - return t; -} - diff --git a/l4/pkg/l4sys/include/ARCH-sparc/__semaphore_impl.h b/l4/pkg/l4sys/include/ARCH-sparc/__semaphore_impl.h deleted file mode 100644 index b2511d98f..000000000 --- a/l4/pkg/l4sys/include/ARCH-sparc/__semaphore_impl.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - * \file - * \brief User-lock implementation for SPARC - */ -/* - * (c) 2008-2009 Adam Lackorzynski , - * Alexander Warg - * 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. - * - * 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. - */ -#pragma once - -#include -// dumb, however atomic sequences are defined in kdebug.h -#include - -#include -#include - -L4_INLINE l4_msgtag_t -l4_usem_down_to(l4_cap_idx_t lock, l4_u_semaphore_t *sem, l4_timeout_s timeout) L4_NOTHROW -{ - __asm__ __volatile__("ta 0x815\n"); - return l4_msgtag(1,1,1,1); -} - -L4_INLINE l4_msgtag_t -l4_usem_up(l4_cap_idx_t lock, l4_u_semaphore_t *sem) L4_NOTHROW -{ - __asm__ __volatile__ ("ta 0x816\n"); - return l4_msgtag(1,1,1,1); -} - diff --git a/l4/pkg/l4sys/include/ARCH-x86/L4API-l4f/__semaphore_impl.h b/l4/pkg/l4sys/include/ARCH-x86/L4API-l4f/__semaphore_impl.h deleted file mode 100644 index 4827c875f..000000000 --- a/l4/pkg/l4sys/include/ARCH-x86/L4API-l4f/__semaphore_impl.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * \file - * \brief User-lock implementation for x86 - */ -/* - * (c) 2008-2009 Adam Lackorzynski , - * Alexander Warg - * 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. - * - * 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. - */ -#pragma once - -#include -#include - -L4_INLINE l4_msgtag_t -l4_usem_down_to(l4_cap_idx_t ksem, l4_u_semaphore_t *sem, l4_timeout_s timeout) L4_NOTHROW -{ - l4_msgtag_t res; - - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - - do - { - unsigned long dummy1, dummy2, dummy3; - __asm__ __volatile__( - " xorl %%eax, %%eax \n\t" - " decl 0(%%edi) \n\t" - " jge 1f \n\t" - " mov $1, %%eax \n\t" - L4_ENTER_KERNEL - "1: \n\t" - : - "=D" (dummy1), - "=c" (dummy2), - "=d" (dummy3), - "=a" (res.raw) - : - "D" (sem), - "d" (ksem), - "c" (timeout) - : - "esi", "memory" L4S_PIC_CLOBBER - ); - } - while (l4_msgtag_label(res) == L4_USEM_RETRY); - - return res; -} - -L4_INLINE l4_msgtag_t -l4_usem_up(l4_cap_idx_t ksem, l4_u_semaphore_t *sem) L4_NOTHROW -{ - l4_msgtag_t tag; - l4_utcb_mr()->mr[0] = (l4_addr_t)sem; - __asm__ __volatile__( - "xorl %%eax, %%eax \n\t" - "incl 0(%%edi) \n\t" - "testb $1, 4(%%edi) \n\t" - "jz 2f \n\t" - "mov $0x10001, %%eax \n\t" - L4_ENTER_KERNEL - "2: \n\t" - : - "=D" (sem), - "=d" (ksem), - "=a" (tag.raw) - : - "D" (sem), - "d" (ksem) - : - "ecx", "esi", "memory" L4S_PIC_CLOBBER - ); - - return tag; -} - diff --git a/l4/pkg/l4sys/include/semaphore b/l4/pkg/l4sys/include/semaphore deleted file mode 100644 index 9c1b8ac48..000000000 --- a/l4/pkg/l4sys/include/semaphore +++ /dev/null @@ -1,155 +0,0 @@ -// vi:ft=cpp -/* - * \file - * \brief User-Level Semaphores. - * \ingroup l4_sem_api - */ -/* - * (c) 2008-2009 Adam Lackorzynski , - * Alexander Warg - * 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. - * - * 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. - */ - -#pragma once - -#include -#include - -namespace L4 { - -/* - * \ingroup l4_sem_api - * \brief Kernel pert of the fast user semaphore. - * - * \#include - * - * \see L4::Semaphore for the full sempahore class. - */ -class K_semaphore : public Kobject -{ -protected: - K_semaphore(); - -public: - /* - * \brief return codes of the down operation. - */ - enum Returncode - { - OK = 0, ///< Got the semaphore. - TIMEOUT = 2, ///< Timeout during blocking. - INVALID = 3 ///< The semaphore does not exist, or is about to be deleted. - }; - - long down(l4_u_semaphore_t *sem, l4_timeout_s timeout) throw() - { return l4_error(l4_usem_down_to(cap(), sem, timeout)); } - long down(l4_u_semaphore_t *sem) throw() - { return l4_error(l4_usem_down(cap(), sem)); } - long up(l4_u_semaphore_t *sem) throw() - { return l4_error(l4_usem_up(cap(), sem)); } -}; - -/* - * \ingroup l4_sem_api - * \brief Fast user-level semaphore. - * - * \#include - * - * This is a fast user-level semaphore implementation. It can be used - * for all kinds of synchronization and is well optimized for the - * non-contention case. - */ -class Semaphore -{ -private: - l4_u_semaphore_t _u; - Cap _k; - -public: - /* - * \brief Return codes for the down operations. - */ - enum Returncode - { - OK = K_semaphore::OK, ///< Got the semaphore. - TIMEOUT = K_semaphore::TIMEOUT, ///< Timeout during blocking. - INVALID = K_semaphore::INVALID, ///< Semaphore does not exist, or is about to be deleted. - }; - - - /* - * \brief Create a new semaphore. - * \param k the capability selector for the kernel part of the semaphore. - * - * The kernel part must be allocated separately (see L4::Factory, - * \ref l4_factory_api). You can also initialize the capability and - * the counter value later by using one of the init() methods. - */ - Semaphore(Cap const &k = Cap::Invalid) : _k(k) - { _u.counter = 0; _u.flags = 0; } - - /* - * \brief Initialize the semaphore object. - * \param cnt the initial counter value (>0 means free, <=0 means blocked). - * \param k the capability for the kernel object related to that semaphore. - */ - void init(long cnt, Cap const &k) - { _k = k; _u.counter = cnt; _u.flags = 0; } - - /* - * \brief Initialize the semaphore object. - * \param cnt the initial counter value (>0 means free, <=0 means blocked). - */ - void init(long cnt) - { _u.counter = cnt; _u.flags = 0; } - - /* - * \brief Do a down operation on the semaphore, with a timeout for blocking. - * \param timeout the timeout to use when the operation blocks. - * \return #OK on success, #TIMEOUT or #INVALID on failure. - * - * \note This operation will block if the counter is 0 or less. - * \note To implement a try-lock semantics use a relative timeout of 0, this - * shall immediately return in either case and the return value - * indicates if the operation succeeded. - */ - long down(l4_timeout_s timeout) throw() - { return _k->down(&_u, timeout); } - - /* - * \brief Do a down operation on the semaphore. - * \return #OK on success, #INVALID on failure. - * - * \note This operation will block if the counter is 0 or less. - */ - long down() throw() - { return _k->down(&_u); } - - /* - * \brief Do an up operation on the semaphore. - * - * \note This operation shall wakeup possibly blocked threads. - */ - long up() throw() - { return _k->up(&_u); } - - /* - * \brief Get the capability for the kernel part. - */ - Cap ksem_cap() const { return _k; } -}; - -} diff --git a/l4/pkg/l4sys/include/semaphore.h b/l4/pkg/l4sys/include/semaphore.h deleted file mode 100644 index 55973c9d0..000000000 --- a/l4/pkg/l4sys/include/semaphore.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * \file - * \brief User-Level Semaphores. - * \ingroup l4_sem_api - */ -/* - * (c) 2008-2009 Adam Lackorzynski , - * Alexander Warg - * 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. - * - * 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. - */ -/*****************************************************************************/ -#pragma once - -#include - -/***************************************************************************** - *** Prototypes - *****************************************************************************/ - -/* - * \defgroup l4_sem_api Semaphore - * \ingroup l4_kernel_object_api - * - * \brief Class definition of the Semaphore object. - * - * \#include - * - * The semaphore class provides a fast user-level - * semaphore implementation. The main idea is to only invoke the micro kernel - * in the contention case and to do everything else with atomic - * read-modify-write instructions on user level. - * - * The semaphore currently implements a priority sorted list of threads that are - * blocked on a semaphore. However, the semaphore does not implement measures - * to prevent priority inversion. Therefore a more pessimistic implementation - * would be necessary. - * - * Every semaphore kernel object has to be accompanied by a user-level data - * structure that contains a counter. - * - * To create a semaphore kernel object see \ref l4_factory_api - * (l4_factory_create_semaphore()). - */ - - -/* - * \brief Semaphore operations. - * \ingroup l4_sem_api - * \internal - */ -enum l4_sem_ops_t -{ - L4_USEM_SLEEP = 6, - L4_USEM_WAKEUP = 7, -}; - -/* - * \brief Result values of the semaphore down operation. - * \ingroup l4_sem_api - */ -enum l4_u_semaphore_ret_t -{ - L4_USEM_OK = 0, ///< OK, got the semaphore - L4_USEM_RETRY = 1, ///< never seen by user - L4_USEM_TIMEOUT = 2, ///< The timeout has hit - L4_USEM_INVALID = 3 ///< The Semaphore/Lock was destroyed -}; - -/* - * \brief Semaphore structure. - * \ingroup l4_sem_api - */ -typedef struct l4_u_semaphore_t -{ - l4_mword_t counter; /*< Counter */ - l4_umword_t flags; /*< Flags */ -} __attribute__((aligned(sizeof(l4_umword_t)*2))) l4_u_semaphore_t; - -/* - * \brief Initialize semaphore data structure. - * \ingroup l4_sem_api - * \param count Initial counter value - * \param sem Semaphore data structure pointer - * - * The counter value should be greater than zero and indicates how - * many threads can enter the critical section. - * - * \note After initialization this data stucture should never be - * touched by any application. - */ -L4_INLINE void -l4_usem_init(long count, l4_u_semaphore_t *sem) L4_NOTHROW; - -/* - * \brief Semaphore down operation with timeout. - * \ingroup l4_sem_api - * \param ksem Capability selector to semaphore object - * \param sem Pointer to semaphore data structure - * \param timeout Absolute or relative timeout - * - * The timeout specifies the maximum time a thread blocks - * while trying to acquire the semaphore. - * - * \return See #l4_u_semaphore_t - */ -L4_INLINE l4_msgtag_t -l4_usem_down_to(l4_cap_idx_t ksem, l4_u_semaphore_t *sem, - l4_timeout_s timeout) L4_NOTHROW; - -/* - * \brief Semaphore down operation with infinite timeout. - * \ingroup l4_sem_api - * \param ksem Capability selector to semaphore object - * \param sem Pointer to semaphore data structure - * - * The thread blocks without any timeout while waiting - * for the semaphore. - * - * \return See #l4_u_semaphore_t - */ -//todo can this operation fail??? -L4_INLINE l4_msgtag_t -l4_usem_down(l4_cap_idx_t ksem, l4_u_semaphore_t *sem) L4_NOTHROW; - -/* - * \brief Semaphore up operation. - * \ingroup l4_sem_api - * \param ksem Capability selector to semaphore object - * \param sem Pointer to semaphore data structure - * - * \pre This function should only be called after a successful l4_sem_down - * operation. - */ -L4_INLINE l4_msgtag_t -l4_usem_up(l4_cap_idx_t ksem, l4_u_semaphore_t *sem) L4_NOTHROW; - - - -/***** - * Implementations - */ -#include - - -L4_INLINE void -l4_usem_init(long count, l4_u_semaphore_t *sem) L4_NOTHROW -{ - sem->counter = count; - sem->flags = 0; -} - - -L4_INLINE l4_msgtag_t -l4_usem_down(l4_cap_idx_t ksem, l4_u_semaphore_t *sem) L4_NOTHROW -{ - return l4_usem_down_to(ksem, sem, L4_IPC_TIMEOUT_NEVER); -} - diff --git a/l4/pkg/libkproxy/lib/src/scheduler_svr.cc b/l4/pkg/libkproxy/lib/src/scheduler_svr.cc deleted file mode 100644 index c196455d2..000000000 --- a/l4/pkg/libkproxy/lib/src/scheduler_svr.cc +++ /dev/null @@ -1,90 +0,0 @@ -// vi:ft=cpp -/** - * \internal - * \file - * \brief - */ -/* - * (c) 2008-2009 Adam Lackorzynski , - * Alexander Warg - * 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. - * - * As a special exception, you may use this file as part of a free software - * library without restriction. Specifically, if other files instantiate - * templates or use macros or inline functions from this file, or you compile - * this file and link it with other files to produce an executable, this - * file does not by itself cause the resulting executable to be covered by - * the GNU General Public License. This exception does not however - * invalidate any other reasons why the executable file might be covered by - * the GNU General Public License. - */ -#include -#include -#include -#include - -namespace L4kproxy { - -int Scheduler_svr::scheduler_dispatch(l4_umword_t, L4::Ipc::Iostream &ios) -{ - L4::Opcode op; - ios >> op; - switch (op) - { - case L4_SCHEDULER_INFO_OP: - { - l4_sched_cpu_set_t cpus; - l4_umword_t cpu_max; - - { - l4_umword_t gran_off; - ios >> gran_off; - - cpus.offset = gran_off & 0x00ffffff; - cpus.granularity = (gran_off >> 24); - cpus.map = 0; - } - - int ret = _sched->info(&cpu_max, &cpus); - - if (ret == L4_EOK) - ios << cpus.map << cpu_max; - - return ret; - } - case L4_SCHEDULER_RUN_THREAD_OP: - { - l4_sched_param_t sp; - L4::Ipc::Snd_fpage thread; - { - l4_umword_t gran_off, prio, quantum; - ios >> gran_off >> sp.affinity.map >> prio >> quantum >> thread; - sp.prio = prio; - sp.quantum = quantum; - sp.affinity.offset = gran_off & 0x00ffffff; - sp.affinity.granularity = gran_off >> 24; - } - - return _sched->run_thread(received_thread(thread), sp); - } - case L4_SCHEDULER_IDLE_TIME_OP: - { - l4_sched_cpu_set_t cpus; - { - l4_umword_t gran_off; - ios >> gran_off >> cpus.map; - cpus.offset = gran_off & 0x00ffffff; - cpus.granularity = gran_off >> 24; - } - return _sched->idle_time(cpus); - } - default: - return -L4_ENOSYS; - } -} - -} diff --git a/l4/pkg/libpng/lib/dist/pngvalid.c b/l4/pkg/libpng/lib/dist/pngvalid.c deleted file mode 100644 index 6d1736c15..000000000 --- a/l4/pkg/libpng/lib/dist/pngvalid.c +++ /dev/null @@ -1,8619 +0,0 @@ - -/* pngvalid.c - validate libpng by constructing then reading png files. - * - * Last changed in libpng 1.5.4 [July 7, 2011] - * Copyright (c) 2011 Glenn Randers-Pehrson - * Written by John Cunningham Bowler - * - * This code is released under the libpng license. - * For conditions of distribution and use, see the disclaimer - * and license in png.h - * - * NOTES: - * This is a C program that is intended to be linked against libpng. It - * generates bitmaps internally, stores them as PNG files (using the - * sequential write code) then reads them back (using the sequential - * read code) and validates that the result has the correct data. - * - * The program can be modified and extended to test the correctness of - * transformations performed by libpng. - */ - -#define _POSIX_SOURCE 1 - -#include "png.h" -#if PNG_LIBPNG_VER < 10500 -/* This delibarately lacks the PNG_CONST. */ -typedef png_byte *png_const_bytep; - -/* This is copied from 1.5.1 png.h: */ -#define PNG_INTERLACE_ADAM7_PASSES 7 -#define PNG_PASS_START_ROW(pass) (((1U&~(pass))<<(3-((pass)>>1)))&7) -#define PNG_PASS_START_COL(pass) (((1U& (pass))<<(3-(((pass)+1)>>1)))&7) -#define PNG_PASS_ROW_SHIFT(pass) ((pass)>2?(8-(pass))>>1:3) -#define PNG_PASS_COL_SHIFT(pass) ((pass)>1?(7-(pass))>>1:3) -#define PNG_PASS_ROWS(height, pass) (((height)+(((1<>PNG_PASS_ROW_SHIFT(pass)) -#define PNG_PASS_COLS(width, pass) (((width)+(((1<>PNG_PASS_COL_SHIFT(pass)) -#define PNG_ROW_FROM_PASS_ROW(yIn, pass) \ - (((yIn)<>(((7-(off))-(pass))<<2)) & 0xFU) | \ - ((0x01145AF0U>>(((7-(off))-(pass))<<2)) & 0xF0U)) -#define PNG_ROW_IN_INTERLACE_PASS(y, pass) \ - ((PNG_PASS_MASK(pass,0) >> ((y)&7)) & 1) -#define PNG_COL_IN_INTERLACE_PASS(x, pass) \ - ((PNG_PASS_MASK(pass,1) >> ((x)&7)) & 1) - -/* These are needed too for the default build: */ -#define PNG_WRITE_16BIT_SUPPORTED -#define PNG_READ_16BIT_SUPPORTED - -/* This comes from pnglibconf.h afer 1.5: */ -#define PNG_GAMMA_THRESHOLD_FIXED\ - ((png_fixed_point)(PNG_GAMMA_THRESHOLD * 100000)) -#endif - -#include "zlib.h" /* For crc32 */ - -#include /* For floating point constants */ -#include /* For malloc */ -#include /* For memcpy, memset */ -#include /* For floor */ - -/* Unused formal parameter errors are removed using the following macro which is - * expected to have no bad effects on performance. - */ -#ifndef UNUSED -# if defined(__GNUC__) || defined(_MSC_VER) -# define UNUSED(param) (void)param; -# else -# define UNUSED(param) -# endif -#endif - -/***************************** EXCEPTION HANDLING *****************************/ -#include "contrib/visupng/cexcept.h" -struct png_store; -define_exception_type(struct png_store*); - -/* The following are macros to reduce typing everywhere where the well known - * name 'the_exception_context' must be defined. - */ -#define anon_context(ps) struct exception_context *the_exception_context = \ - &(ps)->exception_context -#define context(ps,fault) anon_context(ps); png_store *fault - -/******************************* UTILITIES ************************************/ -/* Error handling is particularly problematic in production code - error - * handlers often themselves have bugs which lead to programs that detect - * minor errors crashing. The following functions deal with one very - * common class of errors in error handlers - attempting to format error or - * warning messages into buffers that are too small. - */ -static size_t safecat(char *buffer, size_t bufsize, size_t pos, - PNG_CONST char *cat) -{ - while (pos < bufsize && cat != NULL && *cat != 0) - buffer[pos++] = *cat++; - - if (pos >= bufsize) - pos = bufsize-1; - - buffer[pos] = 0; - return pos; -} - -static size_t safecatn(char *buffer, size_t bufsize, size_t pos, int n) -{ - char number[64]; - sprintf(number, "%d", n); - return safecat(buffer, bufsize, pos, number); -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -static size_t safecatd(char *buffer, size_t bufsize, size_t pos, double d, - int precision) -{ - char number[64]; - sprintf(number, "%.*f", precision, d); - return safecat(buffer, bufsize, pos, number); -} -#endif - -static PNG_CONST char invalid[] = "invalid"; -static PNG_CONST char sep[] = ": "; - -static PNG_CONST char *colour_types[8] = -{ - "greyscale", invalid, "truecolour", "indexed-colour", - "greyscale with alpha", invalid, "truecolour with alpha", invalid -}; - -/* Generate random bytes. This uses a boring repeatable algorithm and it - * is implemented here so that it gives the same set of numbers on every - * architecture. It's a linear congruential generator (Knuth or Sedgewick - * "Algorithms") but it comes from the 'feedback taps' table in Horowitz and - * Hill, "The Art of Electronics". - */ -static void -make_random_bytes(png_uint_32* seed, void* pv, size_t size) -{ - png_uint_32 u0 = seed[0], u1 = seed[1]; - png_bytep bytes = /*no cast required*/pv; - - /* There are thirty three bits, the next bit in the sequence is bit-33 XOR - * bit-20. The top 1 bit is in u1, the bottom 32 are in u0. - */ - size_t i; - for (i=0; i> (20-8)) ^ ((u1 << 7) | (u0 >> (32-7)))) & 0xff; - u1 <<= 8; - u1 |= u0 >> 24; - u0 <<= 8; - u0 |= u; - *bytes++ = (png_byte)u; - } - - seed[0] = u0; - seed[1] = u1; -} - -static void -make_four_random_bytes(png_uint_32* seed, png_bytep bytes) -{ - make_random_bytes(seed, bytes, 4); -} - -static void -randomize(void *pv, size_t size) -{ - static png_uint_32 random_seed[2] = {0x56789abc, 0xd}; - make_random_bytes(random_seed, pv, size); -} - -#define RANDOMIZE(this) randomize(&(this), sizeof (this)) - -/* A numeric ID based on PNG file characteristics. The 'do_interlace' field - * simply records whether pngvalid did the interlace itself or whether it - * was done by libpng. Width and height must be less than 256. 'palette' is an - * index of the palette to use for formats with a palette (0 otherwise.) - */ -#define FILEID(col, depth, palette, interlace, width, height, do_interlace) \ - ((png_uint_32)((col) + ((depth)<<3) + ((palette)<<8) + ((interlace)<<13) + \ - (((do_interlace)!=0)<<15) + ((width)<<16) + ((height)<<24))) - -#define COL_FROM_ID(id) ((png_byte)((id)& 0x7U)) -#define DEPTH_FROM_ID(id) ((png_byte)(((id) >> 3) & 0x1fU)) -#define PALETTE_FROM_ID(id) ((int)(((id) >> 8) & 0x1f)) -#define INTERLACE_FROM_ID(id) ((int)(((id) >> 13) & 0x3)) -#define DO_INTERLACE_FROM_ID(id) ((int)(((id)>>15) & 1)) -#define WIDTH_FROM_ID(id) (((id)>>16) & 0xff) -#define HEIGHT_FROM_ID(id) (((id)>>24) & 0xff) - -/* Utility to construct a standard name for a standard image. */ -static size_t -standard_name(char *buffer, size_t bufsize, size_t pos, png_byte colour_type, - int bit_depth, int npalette, int interlace_type, - png_uint_32 w, png_uint_32 h, int do_interlace) -{ - pos = safecat(buffer, bufsize, pos, colour_types[colour_type]); - if (npalette > 0) - { - pos = safecat(buffer, bufsize, pos, "["); - pos = safecatn(buffer, bufsize, pos, npalette); - pos = safecat(buffer, bufsize, pos, "]"); - } - pos = safecat(buffer, bufsize, pos, " "); - pos = safecatn(buffer, bufsize, pos, bit_depth); - pos = safecat(buffer, bufsize, pos, " bit"); - - if (interlace_type != PNG_INTERLACE_NONE) - { - pos = safecat(buffer, bufsize, pos, " interlaced"); - if (do_interlace) - pos = safecat(buffer, bufsize, pos, "(pngvalid)"); - else - pos = safecat(buffer, bufsize, pos, "(libpng)"); - } - - if (w > 0 || h > 0) - { - pos = safecat(buffer, bufsize, pos, " "); - pos = safecatn(buffer, bufsize, pos, w); - pos = safecat(buffer, bufsize, pos, "x"); - pos = safecatn(buffer, bufsize, pos, h); - } - - return pos; -} - -static size_t -standard_name_from_id(char *buffer, size_t bufsize, size_t pos, png_uint_32 id) -{ - return standard_name(buffer, bufsize, pos, COL_FROM_ID(id), - DEPTH_FROM_ID(id), PALETTE_FROM_ID(id), INTERLACE_FROM_ID(id), - WIDTH_FROM_ID(id), HEIGHT_FROM_ID(id), DO_INTERLACE_FROM_ID(id)); -} - -/* Convenience API and defines to list valid formats. Note that 16 bit read and - * write support is required to do 16 bit read tests (we must be able to make a - * 16 bit image to test!) - */ -#ifdef PNG_WRITE_16BIT_SUPPORTED -# define WRITE_BDHI 4 -# ifdef PNG_READ_16BIT_SUPPORTED -# define READ_BDHI 4 -# define DO_16BIT -# endif -#else -# define WRITE_BDHI 3 -#endif -#ifndef DO_16BIT -# define READ_BDHI 3 -#endif - -/* The following defines the number of different palettes to generate for - * each log bit depth of a colour type 3 standard image. - */ -#define PALETTE_COUNT(bit_depth) ((bit_depth) > 4 ? 1 : 16) - -static int -next_format(png_bytep colour_type, png_bytep bit_depth, int* palette_number) -{ - if (*bit_depth == 0) - { - *colour_type = 0, *bit_depth = 1, *palette_number = 0; - return 1; - } - - if (*colour_type == 3) - { - /* Add multiple palettes for colour type 3. */ - if (++*palette_number < PALETTE_COUNT(*bit_depth)) - return 1; - - *palette_number = 0; - } - - *bit_depth = (png_byte)(*bit_depth << 1); - - /* Palette images are restricted to 8 bit depth */ - if (*bit_depth <= 8 -# ifdef DO_16BIT - || (*colour_type != 3 && *bit_depth <= 16) -# endif - ) - return 1; - - /* Move to the next color type, or return 0 at the end. */ - switch (*colour_type) - { - case 0: - *colour_type = 2; - *bit_depth = 8; - return 1; - - case 2: - *colour_type = 3; - *bit_depth = 1; - return 1; - - case 3: - *colour_type = 4; - *bit_depth = 8; - return 1; - - case 4: - *colour_type = 6; - *bit_depth = 8; - return 1; - - default: - return 0; - } -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -static unsigned int -sample(png_const_bytep row, png_byte colour_type, png_byte bit_depth, - png_uint_32 x, unsigned int sample_index) -{ - png_uint_32 bit_index, result; - - /* Find a sample index for the desired sample: */ - x *= bit_depth; - bit_index = x; - - if ((colour_type & 1) == 0) /* !palette */ - { - if (colour_type & 2) - bit_index *= 3; - - if (colour_type & 4) - bit_index += x; /* Alpha channel */ - - /* Multiple channels; select one: */ - if (colour_type & (2+4)) - bit_index += sample_index * bit_depth; - } - - /* Return the sample from the row as an integer. */ - row += bit_index >> 3; - result = *row; - - if (bit_depth == 8) - return result; - - else if (bit_depth > 8) - return (result << 8) + *++row; - - /* Less than 8 bits per sample. */ - bit_index &= 7; - return (result >> (8-bit_index-bit_depth)) & ((1U<> 3] & ~destMask; - unsigned int sourceByte = fromBuffer[fromIndex >> 3]; - - /* Don't rely on << or >> supporting '0' here, just in case: */ - fromIndex &= 7; - if (fromIndex > 0) sourceByte <<= fromIndex; - if ((toIndex & 7) > 0) sourceByte >>= toIndex & 7; - - toBuffer[toIndex >> 3] = (png_byte)(destByte | (sourceByte & destMask)); - } - else /* One or more bytes */ - memmove(toBuffer+(toIndex>>3), fromBuffer+(fromIndex>>3), pixelSize>>3); -} - -/* Compare pixels - they are assumed to start at the first byte in the - * given buffers. - */ -static int -pixel_cmp(png_const_bytep pa, png_const_bytep pb, png_uint_32 bit_width) -{ - if (memcmp(pa, pb, bit_width>>3) == 0) - { - png_uint_32 p; - - if ((bit_width & 7) == 0) return 0; - - /* Ok, any differences? */ - p = pa[bit_width >> 3]; - p ^= pb[bit_width >> 3]; - - if (p == 0) return 0; - - /* There are, but they may not be significant, remove the bits - * after the end (the low order bits in PNG.) - */ - bit_width &= 7; - p >>= 8-bit_width; - - if (p == 0) return 0; - } - - return 1; /* Different */ -} - -/*************************** BASIC PNG FILE WRITING ***************************/ -/* A png_store takes data from the sequential writer or provides data - * to the sequential reader. It can also store the result of a PNG - * write for later retrieval. - */ -#define STORE_BUFFER_SIZE 500 /* arbitrary */ -typedef struct png_store_buffer -{ - struct png_store_buffer* prev; /* NOTE: stored in reverse order */ - png_byte buffer[STORE_BUFFER_SIZE]; -} png_store_buffer; - -#define FILE_NAME_SIZE 64 - -typedef struct store_palette_entry /* record of a single palette entry */ -{ - png_byte red; - png_byte green; - png_byte blue; - png_byte alpha; -} store_palette_entry, store_palette[256]; - -typedef struct png_store_file -{ - struct png_store_file* next; /* as many as you like... */ - char name[FILE_NAME_SIZE]; - png_uint_32 id; /* must be correct (see FILEID) */ - png_size_t datacount; /* In this (the last) buffer */ - png_store_buffer data; /* Last buffer in file */ - int npalette; /* Number of entries in palette */ - store_palette_entry* palette; /* May be NULL */ -} png_store_file; - -/* The following is a pool of memory allocated by a single libpng read or write - * operation. - */ -typedef struct store_pool -{ - struct png_store *store; /* Back pointer */ - struct store_memory *list; /* List of allocated memory */ - png_byte mark[4]; /* Before and after data */ - - /* Statistics for this run. */ - png_alloc_size_t max; /* Maximum single allocation */ - png_alloc_size_t current; /* Current allocation */ - png_alloc_size_t limit; /* Highest current allocation */ - png_alloc_size_t total; /* Total allocation */ - - /* Overall statistics (retained across successive runs). */ - png_alloc_size_t max_max; - png_alloc_size_t max_limit; - png_alloc_size_t max_total; -} store_pool; - -typedef struct png_store -{ - /* For cexcept.h exception handling - simply store one of these; - * the context is a self pointer but it may point to a different - * png_store (in fact it never does in this program.) - */ - struct exception_context - exception_context; - - unsigned int verbose :1; - unsigned int treat_warnings_as_errors :1; - unsigned int expect_error :1; - unsigned int expect_warning :1; - unsigned int saw_warning :1; - unsigned int speed :1; - unsigned int progressive :1; /* use progressive read */ - unsigned int validated :1; /* used as a temporary flag */ - int nerrors; - int nwarnings; - char test[128]; /* Name of test */ - char error[256]; - - /* Read fields */ - png_structp pread; /* Used to read a saved file */ - png_infop piread; - png_store_file* current; /* Set when reading */ - png_store_buffer* next; /* Set when reading */ - png_size_t readpos; /* Position in *next */ - png_byte* image; /* Buffer for reading interlaced images */ - png_size_t cb_image; /* Size of this buffer */ - png_size_t cb_row; /* Row size of the image(s) */ - png_uint_32 image_h; /* Number of rows in a single image */ - store_pool read_memory_pool; - - /* Write fields */ - png_store_file* saved; - png_structp pwrite; /* Used when writing a new file */ - png_infop piwrite; - png_size_t writepos; /* Position in .new */ - char wname[FILE_NAME_SIZE]; - png_store_buffer new; /* The end of the new PNG file being written. */ - store_pool write_memory_pool; - store_palette_entry* palette; - int npalette; -} png_store; - -/* Initialization and cleanup */ -static void -store_pool_mark(png_bytep mark) -{ - static png_uint_32 store_seed[2] = { 0x12345678, 1}; - - make_four_random_bytes(store_seed, mark); -} - -/* Use this for random 32 bit values; this function makes sure the result is - * non-zero. - */ -static png_uint_32 -random_32(void) -{ - - for(;;) - { - png_byte mark[4]; - png_uint_32 result; - - store_pool_mark(mark); - result = png_get_uint_32(mark); - - if (result != 0) - return result; - } -} - -static void -store_pool_init(png_store *ps, store_pool *pool) -{ - memset(pool, 0, sizeof *pool); - - pool->store = ps; - pool->list = NULL; - pool->max = pool->current = pool->limit = pool->total = 0; - pool->max_max = pool->max_limit = pool->max_total = 0; - store_pool_mark(pool->mark); -} - -static void -store_init(png_store* ps) -{ - memset(ps, 0, sizeof *ps); - init_exception_context(&ps->exception_context); - store_pool_init(ps, &ps->read_memory_pool); - store_pool_init(ps, &ps->write_memory_pool); - ps->verbose = 0; - ps->treat_warnings_as_errors = 0; - ps->expect_error = 0; - ps->expect_warning = 0; - ps->saw_warning = 0; - ps->speed = 0; - ps->progressive = 0; - ps->validated = 0; - ps->nerrors = ps->nwarnings = 0; - ps->pread = NULL; - ps->piread = NULL; - ps->saved = ps->current = NULL; - ps->next = NULL; - ps->readpos = 0; - ps->image = NULL; - ps->cb_image = 0; - ps->cb_row = 0; - ps->image_h = 0; - ps->pwrite = NULL; - ps->piwrite = NULL; - ps->writepos = 0; - ps->new.prev = NULL; - ps->palette = NULL; - ps->npalette = 0; -} - -static void -store_freebuffer(png_store_buffer* psb) -{ - if (psb->prev) - { - store_freebuffer(psb->prev); - free(psb->prev); - psb->prev = NULL; - } -} - -static void -store_freenew(png_store *ps) -{ - store_freebuffer(&ps->new); - ps->writepos = 0; - if (ps->palette != NULL) - { - free(ps->palette); - ps->palette = NULL; - ps->npalette = 0; - } -} - -static void -store_storenew(png_store *ps) -{ - png_store_buffer *pb; - - if (ps->writepos != STORE_BUFFER_SIZE) - png_error(ps->pwrite, "invalid store call"); - - pb = malloc(sizeof *pb); - - if (pb == NULL) - png_error(ps->pwrite, "store new: OOM"); - - *pb = ps->new; - ps->new.prev = pb; - ps->writepos = 0; -} - -static void -store_freefile(png_store_file **ppf) -{ - if (*ppf != NULL) - { - store_freefile(&(*ppf)->next); - - store_freebuffer(&(*ppf)->data); - (*ppf)->datacount = 0; - if ((*ppf)->palette != NULL) - { - free((*ppf)->palette); - (*ppf)->palette = NULL; - (*ppf)->npalette = 0; - } - free(*ppf); - *ppf = NULL; - } -} - -/* Main interface to file storeage, after writing a new PNG file (see the API - * below) call store_storefile to store the result with the given name and id. - */ -static void -store_storefile(png_store *ps, png_uint_32 id) -{ - png_store_file *pf = malloc(sizeof *pf); - if (pf == NULL) - png_error(ps->pwrite, "storefile: OOM"); - safecat(pf->name, sizeof pf->name, 0, ps->wname); - pf->id = id; - pf->data = ps->new; - pf->datacount = ps->writepos; - ps->new.prev = NULL; - ps->writepos = 0; - pf->palette = ps->palette; - pf->npalette = ps->npalette; - ps->palette = 0; - ps->npalette = 0; - - /* And save it. */ - pf->next = ps->saved; - ps->saved = pf; -} - -/* Generate an error message (in the given buffer) */ -static size_t -store_message(png_store *ps, png_structp pp, char *buffer, size_t bufsize, - size_t pos, PNG_CONST char *msg) -{ - if (pp != NULL && pp == ps->pread) - { - /* Reading a file */ - pos = safecat(buffer, bufsize, pos, "read: "); - - if (ps->current != NULL) - { - pos = safecat(buffer, bufsize, pos, ps->current->name); - pos = safecat(buffer, bufsize, pos, sep); - } - } - - else if (pp != NULL && pp == ps->pwrite) - { - /* Writing a file */ - pos = safecat(buffer, bufsize, pos, "write: "); - pos = safecat(buffer, bufsize, pos, ps->wname); - pos = safecat(buffer, bufsize, pos, sep); - } - - else - { - /* Neither reading nor writing (or a memory error in struct delete) */ - pos = safecat(buffer, bufsize, pos, "pngvalid: "); - } - - if (ps->test[0] != 0) - { - pos = safecat(buffer, bufsize, pos, ps->test); - pos = safecat(buffer, bufsize, pos, sep); - } - pos = safecat(buffer, bufsize, pos, msg); - return pos; -} - -/* Verbose output to the error stream: */ -static void -store_verbose(png_store *ps, png_structp pp, png_const_charp prefix, - png_const_charp message) -{ - char buffer[512]; - - if (prefix) - fputs(prefix, stderr); - - (void)store_message(ps, pp, buffer, sizeof buffer, 0, message); - fputs(buffer, stderr); - fputc('\n', stderr); -} - -/* Log an error or warning - the relevant count is always incremented. */ -static void -store_log(png_store* ps, png_structp pp, png_const_charp message, int is_error) -{ - /* The warning is copied to the error buffer if there are no errors and it is - * the first warning. The error is copied to the error buffer if it is the - * first error (overwriting any prior warnings). - */ - if (is_error ? (ps->nerrors)++ == 0 : - (ps->nwarnings)++ == 0 && ps->nerrors == 0) - store_message(ps, pp, ps->error, sizeof ps->error, 0, message); - - if (ps->verbose) - store_verbose(ps, pp, is_error ? "error: " : "warning: ", message); -} - -/* Functions to use as PNG callbacks. */ -static void -store_error(png_structp pp, png_const_charp message) /* PNG_NORETURN */ -{ - png_store *ps = png_get_error_ptr(pp); - - if (!ps->expect_error) - store_log(ps, pp, message, 1 /* error */); - - /* And finally throw an exception. */ - { - struct exception_context *the_exception_context = &ps->exception_context; - Throw ps; - } -} - -static void -store_warning(png_structp pp, png_const_charp message) -{ - png_store *ps = png_get_error_ptr(pp); - - if (!ps->expect_warning) - store_log(ps, pp, message, 0 /* warning */); - else - ps->saw_warning = 1; -} - -/* These somewhat odd functions are used when reading an image to ensure that - * the buffer is big enough, the png_structp is for errors. - */ -/* Return a single row from the correct image. */ -static png_bytep -store_image_row(PNG_CONST png_store* ps, png_structp pp, int nImage, - png_uint_32 y) -{ - png_size_t coffset = (nImage * ps->image_h + y) * (ps->cb_row + 5) + 2; - - if (ps->image == NULL) - png_error(pp, "no allocated image"); - - if (coffset + ps->cb_row + 3 > ps->cb_image) - png_error(pp, "image too small"); - - return ps->image + coffset; -} - -static void -store_image_free(png_store *ps, png_structp pp) -{ - if (ps->image != NULL) - { - png_bytep image = ps->image; - - if (image[-1] != 0xed || image[ps->cb_image] != 0xfe) - { - if (pp != NULL) - png_error(pp, "png_store image overwrite (1)"); - else - store_log(ps, NULL, "png_store image overwrite (2)", 1); - } - - ps->image = NULL; - ps->cb_image = 0; - --image; - free(image); - } -} - -static void -store_ensure_image(png_store *ps, png_structp pp, int nImages, png_size_t cbRow, - png_uint_32 cRows) -{ - png_size_t cb = nImages * cRows * (cbRow + 5); - - if (ps->cb_image < cb) - { - png_bytep image; - - store_image_free(ps, pp); - - /* The buffer is deliberately mis-aligned. */ - image = malloc(cb+2); - if (image == NULL) - { - /* Called from the startup - ignore the error for the moment. */ - if (pp == NULL) - return; - - png_error(pp, "OOM allocating image buffer"); - } - - /* These magic tags are used to detect overwrites above. */ - ++image; - image[-1] = 0xed; - image[cb] = 0xfe; - - ps->image = image; - ps->cb_image = cb; - } - - /* We have an adequate sized image; lay out the rows. There are 2 bytes at - * the start and three at the end of each (this ensures that the row - * alignment starts out odd - 2+1 and changes for larger images on each row.) - */ - ps->cb_row = cbRow; - ps->image_h = cRows; - - /* For error checking, the whole buffer is set to '1' - this matches what - * happens with the 'size' test images on write and also matches the unused - * bits in the test rows. - */ - memset(ps->image, 0xff, cb); - - /* Then put in the marks. */ - while (--nImages >= 0) - { - png_uint_32 y; - - for (y=0; yimage; - - if (image[-1] != 0xed || image[ps->cb_image] != 0xfe) - png_error(pp, "image overwrite"); - else - { - png_size_t cbRow = ps->cb_row; - png_uint_32 rows = ps->image_h; - - image += iImage * (cbRow+5) * ps->image_h; - - image += 2; /* skip image first row markers */ - - while (rows-- > 0) - { - if (image[-2] != 190 || image[-1] != 239) - png_error(pp, "row start overwritten"); - - if (image[cbRow] != 222 || image[cbRow+1] != 173 || - image[cbRow+2] != 17) - png_error(pp, "row end overwritten"); - - image += cbRow+5; - } - } -} - -static void -store_write(png_structp pp, png_bytep pb, png_size_t st) -{ - png_store *ps = png_get_io_ptr(pp); - - if (ps->pwrite != pp) - png_error(pp, "store state damaged"); - - while (st > 0) - { - size_t cb; - - if (ps->writepos >= STORE_BUFFER_SIZE) - store_storenew(ps); - - cb = st; - - if (cb > STORE_BUFFER_SIZE - ps->writepos) - cb = STORE_BUFFER_SIZE - ps->writepos; - - memcpy(ps->new.buffer + ps->writepos, pb, cb); - pb += cb; - st -= cb; - ps->writepos += cb; - } -} - -static void -store_flush(png_structp pp) -{ - UNUSED(pp) /*DOES NOTHING*/ -} - -static size_t -store_read_buffer_size(png_store *ps) -{ - /* Return the bytes available for read in the current buffer. */ - if (ps->next != &ps->current->data) - return STORE_BUFFER_SIZE; - - return ps->current->datacount; -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* Return total bytes available for read. */ -static size_t -store_read_buffer_avail(png_store *ps) -{ - if (ps->current != NULL && ps->next != NULL) - { - png_store_buffer *next = &ps->current->data; - size_t cbAvail = ps->current->datacount; - - while (next != ps->next && next != NULL) - { - next = next->prev; - cbAvail += STORE_BUFFER_SIZE; - } - - if (next != ps->next) - png_error(ps->pread, "buffer read error"); - - if (cbAvail > ps->readpos) - return cbAvail - ps->readpos; - } - - return 0; -} -#endif - -static int -store_read_buffer_next(png_store *ps) -{ - png_store_buffer *pbOld = ps->next; - png_store_buffer *pbNew = &ps->current->data; - if (pbOld != pbNew) - { - while (pbNew != NULL && pbNew->prev != pbOld) - pbNew = pbNew->prev; - - if (pbNew != NULL) - { - ps->next = pbNew; - ps->readpos = 0; - return 1; - } - - png_error(ps->pread, "buffer lost"); - } - - return 0; /* EOF or error */ -} - -/* Need separate implementation and callback to allow use of the same code - * during progressive read, where the io_ptr is set internally by libpng. - */ -static void -store_read_imp(png_store *ps, png_bytep pb, png_size_t st) -{ - if (ps->current == NULL || ps->next == NULL) - png_error(ps->pread, "store state damaged"); - - while (st > 0) - { - size_t cbAvail = store_read_buffer_size(ps) - ps->readpos; - - if (cbAvail > 0) - { - if (cbAvail > st) cbAvail = st; - memcpy(pb, ps->next->buffer + ps->readpos, cbAvail); - st -= cbAvail; - pb += cbAvail; - ps->readpos += cbAvail; - } - - else if (!store_read_buffer_next(ps)) - png_error(ps->pread, "read beyond end of file"); - } -} - -static void -store_read(png_structp pp, png_bytep pb, png_size_t st) -{ - png_store *ps = png_get_io_ptr(pp); - - if (ps == NULL || ps->pread != pp) - png_error(pp, "bad store read call"); - - store_read_imp(ps, pb, st); -} - -static void -store_progressive_read(png_store *ps, png_structp pp, png_infop pi) -{ - /* Notice that a call to store_read will cause this function to fail because - * readpos will be set. - */ - if (ps->pread != pp || ps->current == NULL || ps->next == NULL) - png_error(pp, "store state damaged (progressive)"); - - do - { - if (ps->readpos != 0) - png_error(pp, "store_read called during progressive read"); - - png_process_data(pp, pi, ps->next->buffer, store_read_buffer_size(ps)); - } - while (store_read_buffer_next(ps)); -} - -/* The caller must fill this in: */ -static store_palette_entry * -store_write_palette(png_store *ps, int npalette) -{ - if (ps->pwrite == NULL) - store_log(ps, NULL, "attempt to write palette without write stream", 1); - - if (ps->palette != NULL) - png_error(ps->pwrite, "multiple store_write_palette calls"); - - /* This function can only return NULL if called with '0'! */ - if (npalette > 0) - { - ps->palette = malloc(npalette * sizeof *ps->palette); - - if (ps->palette == NULL) - png_error(ps->pwrite, "store new palette: OOM"); - - ps->npalette = npalette; - } - - return ps->palette; -} - -static store_palette_entry * -store_current_palette(png_store *ps, int *npalette) -{ - /* This is an internal error (the call has been made outside a read - * operation.) - */ - if (ps->current == NULL) - store_log(ps, ps->pread, "no current stream for palette", 1); - - /* The result may be null if there is no palette. */ - *npalette = ps->current->npalette; - return ps->current->palette; -} - -/***************************** MEMORY MANAGEMENT*** ***************************/ -/* A store_memory is simply the header for an allocated block of memory. The - * pointer returned to libpng is just after the end of the header block, the - * allocated memory is followed by a second copy of the 'mark'. - */ -typedef struct store_memory -{ - store_pool *pool; /* Originating pool */ - struct store_memory *next; /* Singly linked list */ - png_alloc_size_t size; /* Size of memory allocated */ - png_byte mark[4]; /* ID marker */ -} store_memory; - -/* Handle a fatal error in memory allocation. This calls png_error if the - * libpng struct is non-NULL, else it outputs a message and returns. This means - * that a memory problem while libpng is running will abort (png_error) the - * handling of particular file while one in cleanup (after the destroy of the - * struct has returned) will simply keep going and free (or attempt to free) - * all the memory. - */ -static void -store_pool_error(png_store *ps, png_structp pp, PNG_CONST char *msg) -{ - if (pp != NULL) - png_error(pp, msg); - - /* Else we have to do it ourselves. png_error eventually calls store_log, - * above. store_log accepts a NULL png_structp - it just changes what gets - * output by store_message. - */ - store_log(ps, pp, msg, 1 /* error */); -} - -static void -store_memory_free(png_structp pp, store_pool *pool, store_memory *memory) -{ - /* Note that pp may be NULL (see store_pool_delete below), the caller has - * found 'memory' in pool->list *and* unlinked this entry, so this is a valid - * pointer (for sure), but the contents may have been trashed. - */ - if (memory->pool != pool) - store_pool_error(pool->store, pp, "memory corrupted (pool)"); - - else if (memcmp(memory->mark, pool->mark, sizeof memory->mark) != 0) - store_pool_error(pool->store, pp, "memory corrupted (start)"); - - /* It should be safe to read the size field now. */ - else - { - png_alloc_size_t cb = memory->size; - - if (cb > pool->max) - store_pool_error(pool->store, pp, "memory corrupted (size)"); - - else if (memcmp((png_bytep)(memory+1)+cb, pool->mark, sizeof pool->mark) - != 0) - store_pool_error(pool->store, pp, "memory corrupted (end)"); - - /* Finally give the library a chance to find problems too: */ - else - { - pool->current -= cb; - free(memory); - } - } -} - -static void -store_pool_delete(png_store *ps, store_pool *pool) -{ - if (pool->list != NULL) - { - fprintf(stderr, "%s: %s %s: memory lost (list follows):\n", ps->test, - pool == &ps->read_memory_pool ? "read" : "write", - pool == &ps->read_memory_pool ? (ps->current != NULL ? - ps->current->name : "unknown file") : ps->wname); - ++ps->nerrors; - - do - { - store_memory *next = pool->list; - pool->list = next->next; - next->next = NULL; - - fprintf(stderr, "\t%lu bytes @ %p\n", - (unsigned long)next->size, (PNG_CONST void*)(next+1)); - /* The NULL means this will always return, even if the memory is - * corrupted. - */ - store_memory_free(NULL, pool, next); - } - while (pool->list != NULL); - } - - /* And reset the other fields too for the next time. */ - if (pool->max > pool->max_max) pool->max_max = pool->max; - pool->max = 0; - if (pool->current != 0) /* unexpected internal error */ - fprintf(stderr, "%s: %s %s: memory counter mismatch (internal error)\n", - ps->test, pool == &ps->read_memory_pool ? "read" : "write", - pool == &ps->read_memory_pool ? (ps->current != NULL ? - ps->current->name : "unknown file") : ps->wname); - pool->current = 0; - - if (pool->limit > pool->max_limit) - pool->max_limit = pool->limit; - - pool->limit = 0; - - if (pool->total > pool->max_total) - pool->max_total = pool->total; - - pool->total = 0; - - /* Get a new mark too. */ - store_pool_mark(pool->mark); -} - -/* The memory callbacks: */ -static png_voidp -store_malloc(png_structp pp, png_alloc_size_t cb) -{ - store_pool *pool = png_get_mem_ptr(pp); - store_memory *new = malloc(cb + (sizeof *new) + (sizeof pool->mark)); - - if (new != NULL) - { - if (cb > pool->max) - pool->max = cb; - - pool->current += cb; - - if (pool->current > pool->limit) - pool->limit = pool->current; - - pool->total += cb; - - new->size = cb; - memcpy(new->mark, pool->mark, sizeof new->mark); - memcpy((png_byte*)(new+1) + cb, pool->mark, sizeof pool->mark); - new->pool = pool; - new->next = pool->list; - pool->list = new; - ++new; - } - - else - store_pool_error(pool->store, pp, "out of memory"); - - return new; -} - -static void -store_free(png_structp pp, png_voidp memory) -{ - store_pool *pool = png_get_mem_ptr(pp); - store_memory *this = memory, **test; - - /* First check that this 'memory' really is valid memory - it must be in the - * pool list. If it is, use the shared memory_free function to free it. - */ - --this; - for (test = &pool->list; *test != this; test = &(*test)->next) - { - if (*test == NULL) - { - store_pool_error(pool->store, pp, "bad pointer to free"); - return; - } - } - - /* Unlink this entry, *test == this. */ - *test = this->next; - this->next = NULL; - store_memory_free(pp, pool, this); -} - -/* Setup functions. */ -/* Cleanup when aborting a write or after storing the new file. */ -static void -store_write_reset(png_store *ps) -{ - if (ps->pwrite != NULL) - { - anon_context(ps); - - Try - png_destroy_write_struct(&ps->pwrite, &ps->piwrite); - - Catch_anonymous - { - /* memory corruption: continue. */ - } - - ps->pwrite = NULL; - ps->piwrite = NULL; - } - - /* And make sure that all the memory has been freed - this will output - * spurious errors in the case of memory corruption above, but this is safe. - */ - store_pool_delete(ps, &ps->write_memory_pool); - - store_freenew(ps); -} - -/* The following is the main write function, it returns a png_struct and, - * optionally, a png_info suitable for writiing a new PNG file. Use - * store_storefile above to record this file after it has been written. The - * returned libpng structures as destroyed by store_write_reset above. - */ -static png_structp -set_store_for_write(png_store *ps, png_infopp ppi, - PNG_CONST char * volatile name) -{ - anon_context(ps); - - Try - { - if (ps->pwrite != NULL) - png_error(ps->pwrite, "write store already in use"); - - store_write_reset(ps); - safecat(ps->wname, sizeof ps->wname, 0, name); - - /* Don't do the slow memory checks if doing a speed test. */ - if (ps->speed) - ps->pwrite = png_create_write_struct(PNG_LIBPNG_VER_STRING, - ps, store_error, store_warning); - - else - ps->pwrite = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, - ps, store_error, store_warning, &ps->write_memory_pool, - store_malloc, store_free); - - png_set_write_fn(ps->pwrite, ps, store_write, store_flush); - - if (ppi != NULL) - *ppi = ps->piwrite = png_create_info_struct(ps->pwrite); - } - - Catch_anonymous - return NULL; - - return ps->pwrite; -} - -/* Cleanup when finished reading (either due to error or in the success case). - */ -static void -store_read_reset(png_store *ps) -{ - if (ps->pread != NULL) - { - anon_context(ps); - - Try - png_destroy_read_struct(&ps->pread, &ps->piread, NULL); - - Catch_anonymous - { - /* error already output: continue */ - } - - ps->pread = NULL; - ps->piread = NULL; - } - - /* Always do this to be safe. */ - store_pool_delete(ps, &ps->read_memory_pool); - - ps->current = NULL; - ps->next = NULL; - ps->readpos = 0; - ps->validated = 0; -} - -static void -store_read_set(png_store *ps, png_uint_32 id) -{ - png_store_file *pf = ps->saved; - - while (pf != NULL) - { - if (pf->id == id) - { - ps->current = pf; - ps->next = NULL; - store_read_buffer_next(ps); - return; - } - - pf = pf->next; - } - - { - size_t pos; - char msg[FILE_NAME_SIZE+64]; - - pos = standard_name_from_id(msg, sizeof msg, 0, id); - pos = safecat(msg, sizeof msg, pos, ": file not found"); - png_error(ps->pread, msg); - } -} - -/* The main interface for reading a saved file - pass the id number of the file - * to retrieve. Ids must be unique or the earlier file will be hidden. The API - * returns a png_struct and, optionally, a png_info. Both of these will be - * destroyed by store_read_reset above. - */ -static png_structp -set_store_for_read(png_store *ps, png_infopp ppi, png_uint_32 id, - PNG_CONST char *name) -{ - /* Set the name for png_error */ - safecat(ps->test, sizeof ps->test, 0, name); - - if (ps->pread != NULL) - png_error(ps->pread, "read store already in use"); - - store_read_reset(ps); - - /* Both the create APIs can return NULL if used in their default mode - * (because there is no other way of handling an error because the jmp_buf - * by default is stored in png_struct and that has not been allocated!) - * However, given that store_error works correctly in these circumstances - * we don't ever expect NULL in this program. - */ - if (ps->speed) - ps->pread = png_create_read_struct(PNG_LIBPNG_VER_STRING, ps, - store_error, store_warning); - - else - ps->pread = png_create_read_struct_2(PNG_LIBPNG_VER_STRING, ps, - store_error, store_warning, &ps->read_memory_pool, store_malloc, - store_free); - - if (ps->pread == NULL) - { - struct exception_context *the_exception_context = &ps->exception_context; - - store_log(ps, NULL, "png_create_read_struct returned NULL (unexpected)", - 1 /*error*/); - - Throw ps; - } - - store_read_set(ps, id); - - if (ppi != NULL) - *ppi = ps->piread = png_create_info_struct(ps->pread); - - return ps->pread; -} - -/* The overall cleanup of a store simply calls the above then removes all the - * saved files. This does not delete the store itself. - */ -static void -store_delete(png_store *ps) -{ - store_write_reset(ps); - store_read_reset(ps); - store_freefile(&ps->saved); - store_image_free(ps, NULL); -} - -/*********************** PNG FILE MODIFICATION ON READ ************************/ -/* Files may be modified on read. The following structure contains a complete - * png_store together with extra members to handle modification and a special - * read callback for libpng. To use this the 'modifications' field must be set - * to a list of png_modification structures that actually perform the - * modification, otherwise a png_modifier is functionally equivalent to a - * png_store. There is a special read function, set_modifier_for_read, which - * replaces set_store_for_read. - */ -typedef struct png_modifier -{ - png_store this; /* I am a png_store */ - struct png_modification *modifications; /* Changes to make */ - - enum modifier_state - { - modifier_start, /* Initial value */ - modifier_signature, /* Have a signature */ - modifier_IHDR /* Have an IHDR */ - } state; /* My state */ - - /* Information from IHDR: */ - png_byte bit_depth; /* From IHDR */ - png_byte colour_type; /* From IHDR */ - - /* While handling PLTE, IDAT and IEND these chunks may be pended to allow - * other chunks to be inserted. - */ - png_uint_32 pending_len; - png_uint_32 pending_chunk; - - /* Test values */ - double *gammas; - unsigned int ngammas; - - /* Lowest sbit to test (libpng fails for sbit < 8) */ - png_byte sbitlow; - - /* Error control - these are the limits on errors accepted by the gamma tests - * below. - */ - double maxout8; /* Maximum output value error */ - double maxabs8; /* Absolute sample error 0..1 */ - double maxcalc8; /* Absolute sample error 0..1 */ - double maxpc8; /* Percentage sample error 0..100% */ - double maxout16; /* Maximum output value error */ - double maxabs16; /* Absolute sample error 0..1 */ - double maxcalc16;/* Absolute sample error 0..1 */ - double maxpc16; /* Percentage sample error 0..100% */ - - /* Log limits - values above this are logged, but not necessarily - * warned. - */ - double log8; /* Absolute error in 8 bits to log */ - double log16; /* Absolute error in 16 bits to log */ - - /* Logged 8 and 16 bit errors ('output' values): */ - double error_gray_2; - double error_gray_4; - double error_gray_8; - double error_gray_16; - double error_color_8; - double error_color_16; - double error_indexed; - - /* Flags: */ - /* Whether or not to interlace. */ - int interlace_type :9; /* int, but must store '1' */ - - /* Run the standard tests? */ - unsigned int test_standard :1; - - /* Run the odd-sized image and interlace read/write tests? */ - unsigned int test_size :1; - - /* Run tests on reading with a combiniation of transforms, */ - unsigned int test_transform :1; - - /* When to use the use_input_precision option: */ - unsigned int use_input_precision :1; - unsigned int use_input_precision_sbit :1; - unsigned int use_input_precision_16to8 :1; - - /* If set assume that the calculation bit depth is set by the input - * precision, not the output precision. - */ - unsigned int calculations_use_input_precision :1; - - /* If set assume that the calculations are done in 16 bits even if both input - * and output are 8 bit or less. - */ - unsigned int assume_16_bit_calculations :1; - - /* Which gamma tests to run: */ - unsigned int test_gamma_threshold :1; - unsigned int test_gamma_transform :1; /* main tests */ - unsigned int test_gamma_sbit :1; - unsigned int test_gamma_scale16 :1; - unsigned int test_gamma_background :1; - unsigned int test_gamma_alpha_mode :1; - unsigned int test_gamma_expand16 :1; - - unsigned int log :1; /* Log max error */ - - /* Buffer information, the buffer size limits the size of the chunks that can - * be modified - they must fit (including header and CRC) into the buffer! - */ - size_t flush; /* Count of bytes to flush */ - size_t buffer_count; /* Bytes in buffer */ - size_t buffer_position; /* Position in buffer */ - png_byte buffer[1024]; -} png_modifier; - -/* This returns true if the test should be stopped now because it has already - * failed and it is running silently. - */ -static int fail(png_modifier *pm) -{ - return !pm->log && !pm->this.verbose && (pm->this.nerrors > 0 || - (pm->this.treat_warnings_as_errors && pm->this.nwarnings > 0)); -} - -static void -modifier_init(png_modifier *pm) -{ - memset(pm, 0, sizeof *pm); - store_init(&pm->this); - pm->modifications = NULL; - pm->state = modifier_start; - pm->sbitlow = 1U; - pm->ngammas = 0; - pm->gammas = 0; - pm->maxout8 = pm->maxpc8 = pm->maxabs8 = pm->maxcalc8 = 0; - pm->maxout16 = pm->maxpc16 = pm->maxabs16 = pm->maxcalc16 = 0; - pm->log8 = pm->log16 = 0; /* Means 'off' */ - pm->error_gray_2 = pm->error_gray_4 = pm->error_gray_8 = 0; - pm->error_gray_16 = pm->error_color_8 = pm->error_color_16 = 0; - pm->error_indexed = 0; - pm->interlace_type = PNG_INTERLACE_NONE; - pm->test_standard = 0; - pm->test_size = 0; - pm->test_transform = 0; - pm->use_input_precision = 0; - pm->use_input_precision_sbit = 0; - pm->use_input_precision_16to8 = 0; - pm->calculations_use_input_precision = 0; - pm->test_gamma_threshold = 0; - pm->test_gamma_transform = 0; - pm->test_gamma_sbit = 0; - pm->test_gamma_scale16 = 0; - pm->test_gamma_background = 0; - pm->test_gamma_alpha_mode = 0; - pm->test_gamma_expand16 = 0; - pm->log = 0; - - /* Rely on the memset for all the other fields - there are no pointers */ -} - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* If pm->calculations_use_input_precision is set then operations will happen - * with only 8 bit precision unless both the input and output bit depth are 16. - * - * If pm->assume_16_bit_calculations is set then even 8 bit calculations use 16 - * bit precision. This only affects those of the following limits that pertain - * to a calculation - not a digitization operation! - */ -static double abserr(png_modifier *pm, int in_depth, int out_depth) -{ - /* Absolute error permitted in linear values - affected by the bit depth of - * the calculations. - */ - if (pm->assume_16_bit_calculations || (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision))) - return pm->maxabs16; - else - return pm->maxabs8; -} - -static double calcerr(png_modifier *pm, int in_depth, int out_depth) -{ - /* Error in the linear composition arithmetic - only relevant when - * composition actually happens (0 < alpha < 1). - */ - if (pm->assume_16_bit_calculations || (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision))) - return pm->maxcalc16; - else - return pm->maxcalc8; -} - -static double pcerr(png_modifier *pm, int in_depth, int out_depth) -{ - /* Percentage error permitted in the linear values. Note that the specified - * value is a percentage but this routine returns a simple number. - */ - if (pm->assume_16_bit_calculations || (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision))) - return pm->maxpc16 * .01; - else - return pm->maxpc8 * .01; -} - -/* Output error - the error in the encoded value. This is determined by the - * digitization of the output so can be +/-0.5 in the actual output value. In - * the expand_16 case with the current code in libpng the expand happens after - * all the calculations are done in 8 bit arithmetic, so even though the output - * depth is 16 the output error is determined by the 8 bit calculation. - * - * This limit is not determined by the bit depth of internal calculations. - * - * The specified parameter does *not* include the base .5 digitization error but - * it is added here. - */ -static double outerr(png_modifier *pm, int in_depth, int out_depth) -{ - /* There is a serious error in the 2 and 4 bit grayscale transform because - * the gamma table value (8 bits) is simply shifted, not rounded, so the - * error in 4 bit greyscale gamma is up to the value below. This is a hack - * to allow pngvalid to succeed: - * - * TODO: fix this in libpng - */ - if (out_depth == 2) - return .73182-.5; - - if (out_depth == 4) - return .90644-.5; - - if (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision)) - return pm->maxout16; - - /* This is the case where the value was calculated at 8-bit precision then - * scaled to 16 bits. - */ - else if (out_depth == 16) - return pm->maxout8 * 257; - - else - return pm->maxout8; -} - -/* This does the same thing as the above however it returns the value to log, - * rather than raising a warning. This is useful for debugging to track down - * exactly what set of parameters cause high error values. - */ -static double outlog(png_modifier *pm, int in_depth, int out_depth) -{ - /* The command line parameters are either 8 bit (0..255) or 16 bit (0..65535) - * and so must be adjusted for low bit depth grayscale: - */ - if (out_depth <= 8) - { - if (pm->log8 == 0) /* switched off */ - return 256; - - if (out_depth < 8) - return pm->log8 / 255 * ((1<log8; - } - - if (out_depth == 16 && (in_depth == 16 || - !pm->calculations_use_input_precision)) - { - if (pm->log16 == 0) - return 65536; - - return pm->log16; - } - - /* This is the case where the value was calculated at 8-bit precision then - * scaled to 16 bits. - */ - if (pm->log8 == 0) - return 65536; - - return pm->log8 * 257; -} - -/* This complements the above by providing the appropriate quantization for the - * final value. Normally this would just be quantization to an integral value, - * but in the 8 bit calculation case it's actually quantization to a multiple of - * 257! - */ -static int output_quantization_factor(png_modifier *pm, int in_depth, - int out_depth) -{ - if (out_depth == 16 && in_depth != 16 - && pm->calculations_use_input_precision) - return 257; - else - return 1; -} - -/* One modification structure must be provided for each chunk to be modified (in - * fact more than one can be provided if multiple separate changes are desired - * for a single chunk.) Modifications include adding a new chunk when a - * suitable chunk does not exist. - * - * The caller of modify_fn will reset the CRC of the chunk and record 'modified' - * or 'added' as appropriate if the modify_fn returns 1 (true). If the - * modify_fn is NULL the chunk is simply removed. - */ -typedef struct png_modification -{ - struct png_modification *next; - png_uint_32 chunk; - - /* If the following is NULL all matching chunks will be removed: */ - int (*modify_fn)(struct png_modifier *pm, - struct png_modification *me, int add); - - /* If the following is set to PLTE, IDAT or IEND and the chunk has not been - * found and modified (and there is a modify_fn) the modify_fn will be called - * to add the chunk before the relevant chunk. - */ - png_uint_32 add; - unsigned int modified :1; /* Chunk was modified */ - unsigned int added :1; /* Chunk was added */ - unsigned int removed :1; /* Chunk was removed */ -} png_modification; - -static void modification_reset(png_modification *pmm) -{ - if (pmm != NULL) - { - pmm->modified = 0; - pmm->added = 0; - pmm->removed = 0; - modification_reset(pmm->next); - } -} - -static void -modification_init(png_modification *pmm) -{ - memset(pmm, 0, sizeof *pmm); - pmm->next = NULL; - pmm->chunk = 0; - pmm->modify_fn = NULL; - pmm->add = 0; - modification_reset(pmm); -} - -static void -modifier_reset(png_modifier *pm) -{ - store_read_reset(&pm->this); - pm->modifications = NULL; - pm->state = modifier_start; - pm->bit_depth = pm->colour_type = 0; - pm->pending_len = pm->pending_chunk = 0; - pm->flush = pm->buffer_count = pm->buffer_position = 0; -} - -/* Convenience macros. */ -#define CHUNK(a,b,c,d) (((a)<<24)+((b)<<16)+((c)<<8)+(d)) -#define CHUNK_IHDR CHUNK(73,72,68,82) -#define CHUNK_PLTE CHUNK(80,76,84,69) -#define CHUNK_IDAT CHUNK(73,68,65,84) -#define CHUNK_IEND CHUNK(73,69,78,68) -#define CHUNK_cHRM CHUNK(99,72,82,77) -#define CHUNK_gAMA CHUNK(103,65,77,65) -#define CHUNK_sBIT CHUNK(115,66,73,84) -#define CHUNK_sRGB CHUNK(115,82,71,66) - -/* The guts of modification are performed during a read. */ -static void -modifier_crc(png_bytep buffer) -{ - /* Recalculate the chunk CRC - a complete chunk must be in - * the buffer, at the start. - */ - uInt datalen = png_get_uint_32(buffer); - png_save_uint_32(buffer+datalen+8, crc32(0L, buffer+4, datalen+4)); -} - -static void -modifier_setbuffer(png_modifier *pm) -{ - modifier_crc(pm->buffer); - pm->buffer_count = png_get_uint_32(pm->buffer)+12; - pm->buffer_position = 0; -} - -/* Separate the callback into the actual implementation (which is passed the - * png_modifier explicitly) and the callback, which gets the modifier from the - * png_struct. - */ -static void -modifier_read_imp(png_modifier *pm, png_bytep pb, png_size_t st) -{ - while (st > 0) - { - size_t cb; - png_uint_32 len, chunk; - png_modification *mod; - - if (pm->buffer_position >= pm->buffer_count) switch (pm->state) - { - static png_byte sign[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; - case modifier_start: - store_read_imp(&pm->this, pm->buffer, 8); /* size of signature. */ - pm->buffer_count = 8; - pm->buffer_position = 0; - - if (memcmp(pm->buffer, sign, 8) != 0) - png_error(pm->this.pread, "invalid PNG file signature"); - pm->state = modifier_signature; - break; - - case modifier_signature: - store_read_imp(&pm->this, pm->buffer, 13+12); /* size of IHDR */ - pm->buffer_count = 13+12; - pm->buffer_position = 0; - - if (png_get_uint_32(pm->buffer) != 13 || - png_get_uint_32(pm->buffer+4) != CHUNK_IHDR) - png_error(pm->this.pread, "invalid IHDR"); - - /* Check the list of modifiers for modifications to the IHDR. */ - mod = pm->modifications; - while (mod != NULL) - { - if (mod->chunk == CHUNK_IHDR && mod->modify_fn && - (*mod->modify_fn)(pm, mod, 0)) - { - mod->modified = 1; - modifier_setbuffer(pm); - } - - /* Ignore removal or add if IHDR! */ - mod = mod->next; - } - - /* Cache information from the IHDR (the modified one.) */ - pm->bit_depth = pm->buffer[8+8]; - pm->colour_type = pm->buffer[8+8+1]; - - pm->state = modifier_IHDR; - pm->flush = 0; - break; - - case modifier_IHDR: - default: - /* Read a new chunk and process it until we see PLTE, IDAT or - * IEND. 'flush' indicates that there is still some data to - * output from the preceding chunk. - */ - if ((cb = pm->flush) > 0) - { - if (cb > st) cb = st; - pm->flush -= cb; - store_read_imp(&pm->this, pb, cb); - pb += cb; - st -= cb; - if (st == 0) return; - } - - /* No more bytes to flush, read a header, or handle a pending - * chunk. - */ - if (pm->pending_chunk != 0) - { - png_save_uint_32(pm->buffer, pm->pending_len); - png_save_uint_32(pm->buffer+4, pm->pending_chunk); - pm->pending_len = 0; - pm->pending_chunk = 0; - } - else - store_read_imp(&pm->this, pm->buffer, 8); - - pm->buffer_count = 8; - pm->buffer_position = 0; - - /* Check for something to modify or a terminator chunk. */ - len = png_get_uint_32(pm->buffer); - chunk = png_get_uint_32(pm->buffer+4); - - /* Terminators first, they may have to be delayed for added - * chunks - */ - if (chunk == CHUNK_PLTE || chunk == CHUNK_IDAT || - chunk == CHUNK_IEND) - { - mod = pm->modifications; - - while (mod != NULL) - { - if ((mod->add == chunk || - (mod->add == CHUNK_PLTE && chunk == CHUNK_IDAT)) && - mod->modify_fn != NULL && !mod->modified && !mod->added) - { - /* Regardless of what the modify function does do not run - * this again. - */ - mod->added = 1; - - if ((*mod->modify_fn)(pm, mod, 1 /*add*/)) - { - /* Reset the CRC on a new chunk */ - if (pm->buffer_count > 0) - modifier_setbuffer(pm); - - else - { - pm->buffer_position = 0; - mod->removed = 1; - } - - /* The buffer has been filled with something (we assume) - * so output this. Pend the current chunk. - */ - pm->pending_len = len; - pm->pending_chunk = chunk; - break; /* out of while */ - } - } - - mod = mod->next; - } - - /* Don't do any further processing if the buffer was modified - - * otherwise the code will end up modifying a chunk that was - * just added. - */ - if (mod != NULL) - break; /* out of switch */ - } - - /* If we get to here then this chunk may need to be modified. To - * do this it must be less than 1024 bytes in total size, otherwise - * it just gets flushed. - */ - if (len+12 <= sizeof pm->buffer) - { - store_read_imp(&pm->this, pm->buffer+pm->buffer_count, - len+12-pm->buffer_count); - pm->buffer_count = len+12; - - /* Check for a modification, else leave it be. */ - mod = pm->modifications; - while (mod != NULL) - { - if (mod->chunk == chunk) - { - if (mod->modify_fn == NULL) - { - /* Remove this chunk */ - pm->buffer_count = pm->buffer_position = 0; - mod->removed = 1; - break; /* Terminate the while loop */ - } - - else if ((*mod->modify_fn)(pm, mod, 0)) - { - mod->modified = 1; - /* The chunk may have been removed: */ - if (pm->buffer_count == 0) - { - pm->buffer_position = 0; - break; - } - modifier_setbuffer(pm); - } - } - - mod = mod->next; - } - } - - else - pm->flush = len+12 - pm->buffer_count; /* data + crc */ - - /* Take the data from the buffer (if there is any). */ - break; - } - - /* Here to read from the modifier buffer (not directly from - * the store, as in the flush case above.) - */ - cb = pm->buffer_count - pm->buffer_position; - - if (cb > st) - cb = st; - - memcpy(pb, pm->buffer + pm->buffer_position, cb); - st -= cb; - pb += cb; - pm->buffer_position += cb; - } -} - -/* The callback: */ -static void -modifier_read(png_structp pp, png_bytep pb, png_size_t st) -{ - png_modifier *pm = png_get_io_ptr(pp); - - if (pm == NULL || pm->this.pread != pp) - png_error(pp, "bad modifier_read call"); - - modifier_read_imp(pm, pb, st); -} - -/* Like store_progressive_read but the data is getting changed as we go so we - * need a local buffer. - */ -static void -modifier_progressive_read(png_modifier *pm, png_structp pp, png_infop pi) -{ - if (pm->this.pread != pp || pm->this.current == NULL || - pm->this.next == NULL) - png_error(pp, "store state damaged (progressive)"); - - /* This is another Horowitz and Hill random noise generator. In this case - * the aim is to stress the progressive reader with truely horrible variable - * buffer sizes in the range 1..500, so a sequence of 9 bit random numbers - * is generated. We could probably just count from 1 to 32767 and get as - * good a result. - */ - for (;;) - { - static png_uint_32 noise = 1; - png_size_t cb, cbAvail; - png_byte buffer[512]; - - /* Generate 15 more bits of stuff: */ - noise = (noise << 9) | ((noise ^ (noise >> (9-5))) & 0x1ff); - cb = noise & 0x1ff; - - /* Check that this number of bytes are available (in the current buffer.) - * (This doesn't quite work - the modifier might delete a chunk; unlikely - * but possible, it doesn't happen at present because the modifier only - * adds chunks to standard images.) - */ - cbAvail = store_read_buffer_avail(&pm->this); - if (pm->buffer_count > pm->buffer_position) - cbAvail += pm->buffer_count - pm->buffer_position; - - if (cb > cbAvail) - { - /* Check for EOF: */ - if (cbAvail == 0) - break; - - cb = cbAvail; - } - - modifier_read_imp(pm, buffer, cb); - png_process_data(pp, pi, buffer, cb); - } - - /* Check the invariants at the end (if this fails it's a problem in this - * file!) - */ - if (pm->buffer_count > pm->buffer_position || - pm->this.next != &pm->this.current->data || - pm->this.readpos < pm->this.current->datacount) - png_error(pp, "progressive read implementation error"); -} - -/* Set up a modifier. */ -static png_structp -set_modifier_for_read(png_modifier *pm, png_infopp ppi, png_uint_32 id, - PNG_CONST char *name) -{ - /* Do this first so that the modifier fields are cleared even if an error - * happens allocating the png_struct. No allocation is done here so no - * cleanup is required. - */ - pm->state = modifier_start; - pm->bit_depth = 0; - pm->colour_type = 255; - - pm->pending_len = 0; - pm->pending_chunk = 0; - pm->flush = 0; - pm->buffer_count = 0; - pm->buffer_position = 0; - - return set_store_for_read(&pm->this, ppi, id, name); -} -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -/***************************** STANDARD PNG FILES *****************************/ -/* Standard files - write and save standard files. */ -/* There are two basic forms of standard images. Those which attempt to have - * all the possible pixel values (not possible for 16bpp images, but a range of - * values are produced) and those which have a range of image sizes. The former - * are used for testing transforms, in particular gamma correction and bit - * reduction and increase. The latter are reserved for testing the behavior of - * libpng with respect to 'odd' image sizes - particularly small images where - * rows become 1 byte and interlace passes disappear. - * - * The first, most useful, set are the 'transform' images, the second set of - * small images are the 'size' images. - * - * The transform files are constructed with rows which fit into a 1024 byte row - * buffer. This makes allocation easier below. Further regardless of the file - * format every row has 128 pixels (giving 1024 bytes for 64bpp formats). - * - * Files are stored with no gAMA or sBIT chunks, with a PLTE only when needed - * and with an ID derived from the colour type, bit depth and interlace type - * as above (FILEID). The width (128) and height (variable) are not stored in - * the FILEID - instead the fields are set to 0, indicating a transform file. - * - * The size files ar constructed with rows a maximum of 128 bytes wide, allowing - * a maximum width of 16 pixels (for the 64bpp case.) They also have a maximum - * height of 16 rows. The width and height are stored in the FILEID and, being - * non-zero, indicate a size file. - * - * For palette image (colour type 3) multiple transform images are stored with - * the same bit depth to allow testing of more colour combinations - - * particularly important for testing the gamma code because libpng uses a - * different code path for palette images. For size images a single palette is - * used. - */ - -/* Make a 'standard' palette. Because there are only 256 entries in a palette - * (maximum) this actually makes a random palette in the hope that enough tests - * will catch enough errors. (Note that the same palette isn't produced every - * time for the same test - it depends on what previous tests have been run - - * but a given set of arguments to pngvalid will always produce the same palette - * at the same test! This is why pseudo-random number generators are useful for - * testing.) - * - * The store must be open for write when this is called, otherwise an internal - * error will occur. This routine contains its own magic number seed, so the - * palettes generated don't change if there are intervening errors (changing the - * calls to the store_mark seed.) - */ -static store_palette_entry * -make_standard_palette(png_store* ps, int npalette, int do_tRNS) -{ - static png_uint_32 palette_seed[2] = { 0x87654321, 9 }; - - int i = 0; - png_byte values[256][4]; - - /* Always put in black and white plus the six primary and secondary colors. - */ - for (; i<8; ++i) - { - values[i][1] = (i&1) ? 255 : 0; - values[i][2] = (i&2) ? 255 : 0; - values[i][3] = (i&4) ? 255 : 0; - } - - /* Then add 62 greys (one quarter of the remaining 256 slots). */ - { - int j = 0; - png_byte random_bytes[4]; - png_byte need[256]; - - need[0] = 0; /*got black*/ - memset(need+1, 1, (sizeof need)-2); /*need these*/ - need[255] = 0; /*but not white*/ - - while (i<70) - { - png_byte b; - - if (j==0) - { - make_four_random_bytes(palette_seed, random_bytes); - j = 4; - } - - b = random_bytes[--j]; - if (need[b]) - { - values[i][1] = b; - values[i][2] = b; - values[i++][3] = b; - } - } - } - - /* Finally add 192 colors at random - don't worry about matches to things we - * already have, chance is less than 1/65536. Don't worry about greys, - * chance is the same, so we get a duplicate or extra gray less than 1 time - * in 170. - */ - for (; i<256; ++i) - make_four_random_bytes(palette_seed, values[i]); - - /* Fill in the alpha values in the first byte. Just use all possible values - * (0..255) in an apparently random order: - */ - { - store_palette_entry *palette; - png_byte selector[4]; - - make_four_random_bytes(palette_seed, selector); - - if (do_tRNS) - for (i=0; i<256; ++i) - values[i][0] = (png_byte)(i ^ selector[0]); - - else - for (i=0; i<256; ++i) - values[i][0] = 255; /* no transparency/tRNS chunk */ - - /* 'values' contains 256 ARGB values, but we only need 'npalette'. - * 'npalette' will always be a power of 2: 2, 4, 16 or 256. In the low - * bit depth cases select colors at random, else it is difficult to have - * a set of low bit depth palette test with any chance of a reasonable - * range of colors. Do this by randomly permuting values into the low - * 'npalette' entries using an XOR mask generated here. This also - * permutes the npalette == 256 case in a potentially useful way (there is - * no relationship between palette index and the color value therein!) - */ - palette = store_write_palette(ps, npalette); - - for (i=0; i 0) - png_set_tRNS(pp, pi, tRNS, j, 0/*color*/); - } -} - -/* The number of passes is related to the interlace type. There was no libpng - * API to determine this prior to 1.5, so we need an inquiry function: - */ -static int -npasses_from_interlace_type(png_structp pp, int interlace_type) -{ - switch (interlace_type) - { - default: - png_error(pp, "invalid interlace type"); - - case PNG_INTERLACE_NONE: - return 1; - - case PNG_INTERLACE_ADAM7: - return PNG_INTERLACE_ADAM7_PASSES; - } -} - -static unsigned int -bit_size(png_structp pp, png_byte colour_type, png_byte bit_depth) -{ - switch (colour_type) - { - default: png_error(pp, "invalid color type"); - - case 0: return bit_depth; - - case 2: return 3*bit_depth; - - case 3: return bit_depth; - - case 4: return 2*bit_depth; - - case 6: return 4*bit_depth; - } -} - -#define TRANSFORM_WIDTH 128U -#define TRANSFORM_ROWMAX (TRANSFORM_WIDTH*8U) -#define SIZE_ROWMAX (16*8U) /* 16 pixels, max 8 bytes each - 128 bytes */ -#define STANDARD_ROWMAX TRANSFORM_ROWMAX /* The larger of the two */ -#define SIZE_HEIGHTMAX 16 /* Maximum range of size images */ - -static size_t -transform_rowsize(png_structp pp, png_byte colour_type, png_byte bit_depth) -{ - return (TRANSFORM_WIDTH * bit_size(pp, colour_type, bit_depth)) / 8; -} - -/* transform_width(pp, colour_type, bit_depth) current returns the same number - * every time, so just use a macro: - */ -#define transform_width(pp, colour_type, bit_depth) TRANSFORM_WIDTH - -static png_uint_32 -transform_height(png_structp pp, png_byte colour_type, png_byte bit_depth) -{ - switch (bit_size(pp, colour_type, bit_depth)) - { - case 1: - case 2: - case 4: - return 1; /* Total of 128 pixels */ - - case 8: - return 2; /* Total of 256 pixels/bytes */ - - case 16: - return 512; /* Total of 65536 pixels */ - - case 24: - case 32: - return 512; /* 65536 pixels */ - - case 48: - case 64: - return 2048;/* 4 x 65536 pixels. */ -# define TRANSFORM_HEIGHTMAX 2048 - - default: - return 0; /* Error, will be caught later */ - } -} - -/* The following can only be defined here, now we have the definitions - * of the transform image sizes. - */ -static png_uint_32 -standard_width(png_structp pp, png_uint_32 id) -{ - png_uint_32 width = WIDTH_FROM_ID(id); - UNUSED(pp) - - if (width == 0) - width = transform_width(pp, COL_FROM_ID(id), DEPTH_FROM_ID(id)); - - return width; -} - -static png_uint_32 -standard_height(png_structp pp, png_uint_32 id) -{ - png_uint_32 height = HEIGHT_FROM_ID(id); - - if (height == 0) - height = transform_height(pp, COL_FROM_ID(id), DEPTH_FROM_ID(id)); - - return height; -} - -static png_uint_32 -standard_rowsize(png_structp pp, png_uint_32 id) -{ - png_uint_32 width = standard_width(pp, id); - - /* This won't overflow: */ - width *= bit_size(pp, COL_FROM_ID(id), DEPTH_FROM_ID(id)); - return (width + 7) / 8; -} - -static void -transform_row(png_structp pp, png_byte buffer[TRANSFORM_ROWMAX], - png_byte colour_type, png_byte bit_depth, png_uint_32 y) -{ - png_uint_32 v = y << 7; - png_uint_32 i = 0; - - switch (bit_size(pp, colour_type, bit_depth)) - { - case 1: - while (i<128/8) buffer[i] = v & 0xff, v += 17, ++i; - return; - - case 2: - while (i<128/4) buffer[i] = v & 0xff, v += 33, ++i; - return; - - case 4: - while (i<128/2) buffer[i] = v & 0xff, v += 65, ++i; - return; - - case 8: - /* 256 bytes total, 128 bytes in each row set as follows: */ - while (i<128) buffer[i] = v & 0xff, ++v, ++i; - return; - - case 16: - /* Generate all 65536 pixel values in order, which includes the 8 bit - * GA case as well as the 16 bit G case. - */ - while (i<128) - buffer[2*i] = (v>>8) & 0xff, buffer[2*i+1] = v & 0xff, ++v, ++i; - - return; - - case 24: - /* 65535 pixels, but rotate the values. */ - while (i<128) - { - /* Three bytes per pixel, r, g, b, make b by r^g */ - buffer[3*i+0] = (v >> 8) & 0xff; - buffer[3*i+1] = v & 0xff; - buffer[3*i+2] = ((v >> 8) ^ v) & 0xff; - ++v; - ++i; - } - - return; - - case 32: - /* 65535 pixels, r, g, b, a; just replicate */ - while (i<128) - { - buffer[4*i+0] = (v >> 8) & 0xff; - buffer[4*i+1] = v & 0xff; - buffer[4*i+2] = (v >> 8) & 0xff; - buffer[4*i+3] = v & 0xff; - ++v; - ++i; - } - - return; - - case 48: - /* y is maximum 2047, giving 4x65536 pixels, make 'r' increase by 1 at - * each pixel, g increase by 257 (0x101) and 'b' by 0x1111: - */ - while (i<128) - { - png_uint_32 t = v++; - buffer[6*i+0] = (t >> 8) & 0xff; - buffer[6*i+1] = t & 0xff; - t *= 257; - buffer[6*i+2] = (t >> 8) & 0xff; - buffer[6*i+3] = t & 0xff; - t *= 17; - buffer[6*i+4] = (t >> 8) & 0xff; - buffer[6*i+5] = t & 0xff; - ++i; - } - - return; - - case 64: - /* As above in the 32 bit case. */ - while (i<128) - { - png_uint_32 t = v++; - buffer[8*i+0] = (t >> 8) & 0xff; - buffer[8*i+1] = t & 0xff; - buffer[8*i+4] = (t >> 8) & 0xff; - buffer[8*i+5] = t & 0xff; - t *= 257; - buffer[8*i+2] = (t >> 8) & 0xff; - buffer[8*i+3] = t & 0xff; - buffer[8*i+6] = (t >> 8) & 0xff; - buffer[8*i+7] = t & 0xff; - ++i; - } - return; - - default: - break; - } - - png_error(pp, "internal error"); -} - -/* This is just to do the right cast - could be changed to a function to check - * 'bd' but there isn't much point. - */ -#define DEPTH(bd) ((png_byte)(1U << (bd))) - -/* Make a standardized image given a an image colour type, bit depth and - * interlace type. The standard images have a very restricted range of - * rows and heights and are used for testing transforms rather than image - * layout details. See make_size_images below for a way to make images - * that test odd sizes along with the libpng interlace handling. - */ -static void -make_transform_image(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type, - png_byte PNG_CONST bit_depth, int palette_number, int interlace_type, - png_const_charp name) -{ - context(ps, fault); - - Try - { - png_infop pi; - png_structp pp = set_store_for_write(ps, &pi, name); - png_uint_32 h; - - /* In the event of a problem return control to the Catch statement below - * to do the clean up - it is not possible to 'return' directly from a Try - * block. - */ - if (pp == NULL) - Throw ps; - - h = transform_height(pp, colour_type, bit_depth); - - png_set_IHDR(pp, pi, transform_width(pp, colour_type, bit_depth), h, - bit_depth, colour_type, interlace_type, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - -#ifdef PNG_TEXT_SUPPORTED - { - static char key[] = "image name"; /* must be writeable */ - size_t pos; - png_text text; - char copy[FILE_NAME_SIZE]; - - /* Use a compressed text string to test the correct interaction of text - * compression and IDAT compression. - */ - text.compression = PNG_TEXT_COMPRESSION_zTXt; - text.key = key; - /* Yuck: the text must be writable! */ - pos = safecat(copy, sizeof copy, 0, ps->wname); - text.text = copy; - text.text_length = pos; - text.itxt_length = 0; - text.lang = 0; - text.lang_key = 0; - - png_set_text(pp, pi, &text, 1); - } -#endif - - if (colour_type == 3) /* palette */ - init_standard_palette(ps, pp, pi, 1U << bit_depth, 1/*do tRNS*/); - - png_write_info(pp, pi); - - if (png_get_rowbytes(pp, pi) != - transform_rowsize(pp, colour_type, bit_depth)) - png_error(pp, "row size incorrect"); - - else - { - /* Somewhat confusingly this must be called *after* png_write_info - * because if it is called before, the information in *pp has not been - * updated to reflect the interlaced image. - */ - int npasses = png_set_interlace_handling(pp); - int pass; - - if (npasses != npasses_from_interlace_type(pp, interlace_type)) - png_error(pp, "write: png_set_interlace_handling failed"); - - for (pass=0; passtest, sizeof ps->test, 0, "make standard images"); - - /* Use next_format to enumerate all the combinations we test, including - * generating multiple low bit depth palette images. - */ - while (next_format(&colour_type, &bit_depth, &palette_number)) - { - int interlace_type; - - for (interlace_type = PNG_INTERLACE_NONE; - interlace_type < PNG_INTERLACE_LAST; ++interlace_type) - { - char name[FILE_NAME_SIZE]; - - standard_name(name, sizeof name, 0, colour_type, bit_depth, - palette_number, interlace_type, 0, 0, 0); - make_transform_image(ps, colour_type, bit_depth, palette_number, - interlace_type, name); - } - } -} - -/* The following two routines use the PNG interlace support macros from - * png.h to interlace or deinterlace rows. - */ -static void -interlace_row(png_bytep buffer, png_const_bytep imageRow, - unsigned int pixel_size, png_uint_32 w, int pass) -{ - png_uint_32 xin, xout, xstep; - - /* Note that this can, trivially, be optimized to a memcpy on pass 7, the - * code is presented this way to make it easier to understand. In practice - * consult the code in the libpng source to see other ways of doing this. - */ - xin = PNG_PASS_START_COL(pass); - xstep = 1U<= 8) - *buffer++ = (png_byte)y++, bit_width -= 8; - - /* There may be up to 7 remaining bits, these go in the most significant - * bits of the byte. - */ - if (bit_width > 0) - { - png_uint_32 mask = (1U<<(8-bit_width))-1; - *buffer = (png_byte)((*buffer & mask) | (y & ~mask)); - } -} - -static void -make_size_image(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type, - png_byte PNG_CONST bit_depth, int PNG_CONST interlace_type, - png_uint_32 PNG_CONST w, png_uint_32 PNG_CONST h, - int PNG_CONST do_interlace) -{ - context(ps, fault); - - Try - { - png_infop pi; - png_structp pp; - unsigned int pixel_size; - - /* Make a name and get an appropriate id for the store: */ - char name[FILE_NAME_SIZE]; - PNG_CONST png_uint_32 id = FILEID(colour_type, bit_depth, 0/*palette*/, - interlace_type, w, h, do_interlace); - - standard_name_from_id(name, sizeof name, 0, id); - pp = set_store_for_write(ps, &pi, name); - - /* In the event of a problem return control to the Catch statement below - * to do the clean up - it is not possible to 'return' directly from a Try - * block. - */ - if (pp == NULL) - Throw ps; - - png_set_IHDR(pp, pi, w, h, bit_depth, colour_type, interlace_type, - PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - if (colour_type == 3) /* palette */ - init_standard_palette(ps, pp, pi, 1U << bit_depth, 0/*do tRNS*/); - - png_write_info(pp, pi); - - /* Calculate the bit size, divide by 8 to get the byte size - this won't - * overflow because we know the w values are all small enough even for - * a system where 'unsigned int' is only 16 bits. - */ - pixel_size = bit_size(pp, colour_type, bit_depth); - if (png_get_rowbytes(pp, pi) != ((w * pixel_size) + 7) / 8) - png_error(pp, "row size incorrect"); - - else - { - int npasses = npasses_from_interlace_type(pp, interlace_type); - png_uint_32 y; - int pass; - png_byte image[16][SIZE_ROWMAX]; - - /* To help consistent error detection make the parts of this buffer - * that aren't set below all '1': - */ - memset(image, 0xff, sizeof image); - - if (!do_interlace && npasses != png_set_interlace_handling(pp)) - png_error(pp, "write: png_set_interlace_handling failed"); - - /* Prepare the whole image first to avoid making it 7 times: */ - for (y=0; y 0) - { - /* Set to all 1's for error detection (libpng tends to - * set unset things to 0). - */ - memset(tempRow, 0xff, sizeof tempRow); - interlace_row(tempRow, row, pixel_size, w, pass); - row = tempRow; - } - else - continue; - } - - /* Only get to here if the row has some pixels in it. */ - png_write_row(pp, row); - } - } - } - - png_write_end(pp, pi); - - /* And store this under the appropriate id, then clean up. */ - store_storefile(ps, id); - - store_write_reset(ps); - } - - Catch(fault) - { - /* Use the png_store returned by the exception. This may help the compiler - * because 'ps' is not used in this branch of the setjmp. Note that fault - * and ps will always be the same value. - */ - store_write_reset(fault); - } -} - -static void -make_size(png_store* PNG_CONST ps, png_byte PNG_CONST colour_type, int bdlo, - int PNG_CONST bdhi) -{ - for (; bdlo <= bdhi; ++bdlo) - { - png_uint_32 width; - - for (width = 1; width <= 16; ++width) - { - png_uint_32 height; - - for (height = 1; height <= 16; ++height) - { - /* The four combinations of DIY interlace and interlace or not - - * no interlace + DIY should be identical to no interlace with - * libpng doing it. - */ - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_NONE, - width, height, 0); - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_NONE, - width, height, 1); - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7, - width, height, 0); - make_size_image(ps, colour_type, DEPTH(bdlo), PNG_INTERLACE_ADAM7, - width, height, 1); - } - } - } -} - -static void -make_size_images(png_store *ps) -{ - /* This is in case of errors. */ - safecat(ps->test, sizeof ps->test, 0, "make size images"); - - /* Arguments are colour_type, low bit depth, high bit depth - */ - make_size(ps, 0, 0, WRITE_BDHI); - make_size(ps, 2, 3, WRITE_BDHI); - make_size(ps, 3, 0, 3 /*palette: max 8 bits*/); - make_size(ps, 4, 3, WRITE_BDHI); - make_size(ps, 6, 3, WRITE_BDHI); -} - -/* Return a row based on image id and 'y' for checking: */ -static void -standard_row(png_structp pp, png_byte std[STANDARD_ROWMAX], png_uint_32 id, - png_uint_32 y) -{ - if (WIDTH_FROM_ID(id) == 0) - transform_row(pp, std, COL_FROM_ID(id), DEPTH_FROM_ID(id), y); - else - size_row(std, WIDTH_FROM_ID(id) * bit_size(pp, COL_FROM_ID(id), - DEPTH_FROM_ID(id)), y); -} - -/* Tests - individual test cases */ -/* Like 'make_standard' but errors are deliberately introduced into the calls - * to ensure that they get detected - it should not be possible to write an - * invalid image with libpng! - */ -#ifdef PNG_WARNINGS_SUPPORTED -static void -sBIT0_error_fn(png_structp pp, png_infop pi) -{ - /* 0 is invalid... */ - png_color_8 bad; - bad.red = bad.green = bad.blue = bad.gray = bad.alpha = 0; - png_set_sBIT(pp, pi, &bad); -} - -static void -sBIT_error_fn(png_structp pp, png_infop pi) -{ - png_byte bit_depth; - png_color_8 bad; - - if (png_get_color_type(pp, pi) == PNG_COLOR_TYPE_PALETTE) - bit_depth = 8; - - else - bit_depth = png_get_bit_depth(pp, pi); - - /* Now we know the bit depth we can easily generate an invalid sBIT entry */ - bad.red = bad.green = bad.blue = bad.gray = bad.alpha = - (png_byte)(bit_depth+1); - png_set_sBIT(pp, pi, &bad); -} - -static PNG_CONST struct -{ - void (*fn)(png_structp, png_infop); - PNG_CONST char *msg; - unsigned int warning :1; /* the error is a warning... */ -} error_test[] = - { - /* no warnings makes these errors undetectable. */ - { sBIT0_error_fn, "sBIT(0): failed to detect error", 1 }, - { sBIT_error_fn, "sBIT(too big): failed to detect error", 1 }, - }; - -static void -make_error(png_store* volatile ps, png_byte PNG_CONST colour_type, - png_byte bit_depth, int interlace_type, int test, png_const_charp name) -{ - context(ps, fault); - - Try - { - png_structp pp; - png_infop pi; - - pp = set_store_for_write(ps, &pi, name); - - if (pp == NULL) - Throw ps; - - png_set_IHDR(pp, pi, transform_width(pp, colour_type, bit_depth), - transform_height(pp, colour_type, bit_depth), bit_depth, colour_type, - interlace_type, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - if (colour_type == 3) /* palette */ - init_standard_palette(ps, pp, pi, 1U << bit_depth, 0/*do tRNS*/); - - /* Time for a few errors; these are in various optional chunks, the - * standard tests test the standard chunks pretty well. - */ -# define exception__prev exception_prev_1 -# define exception__env exception_env_1 - Try - { - /* Expect this to throw: */ - ps->expect_error = !error_test[test].warning; - ps->expect_warning = error_test[test].warning; - ps->saw_warning = 0; - error_test[test].fn(pp, pi); - - /* Normally the error is only detected here: */ - png_write_info(pp, pi); - - /* And handle the case where it was only a warning: */ - if (ps->expect_warning && ps->saw_warning) - Throw ps; - - /* If we get here there is a problem, we have success - no error or - * no warning - when we shouldn't have success. Log an error. - */ - store_log(ps, pp, error_test[test].msg, 1 /*error*/); - } - - Catch (fault) - ps = fault; /* expected exit, make sure ps is not clobbered */ -#undef exception__prev -#undef exception__env - - /* And clear these flags */ - ps->expect_error = 0; - ps->expect_warning = 0; - - /* Now write the whole image, just to make sure that the detected, or - * undetected, errro has not created problems inside libpng. - */ - if (png_get_rowbytes(pp, pi) != - transform_rowsize(pp, colour_type, bit_depth)) - png_error(pp, "row size incorrect"); - - else - { - png_uint_32 h = transform_height(pp, colour_type, bit_depth); - int npasses = png_set_interlace_handling(pp); - int pass; - - if (npasses != npasses_from_interlace_type(pp, interlace_type)) - png_error(pp, "write: png_set_interlace_handling failed"); - - for (pass=0; passthis, colour_type, DEPTH(bdlo), interlace_type, - test, name); - - if (fail(pm)) - return 0; - } - } - } - - return 1; /* keep going */ -} -#endif - -static void -perform_error_test(png_modifier *pm) -{ -#ifdef PNG_WARNINGS_SUPPORTED /* else there are no cases that work! */ - /* Need to do this here because we just write in this test. */ - safecat(pm->this.test, sizeof pm->this.test, 0, "error test"); - - if (!make_errors(pm, 0, 0, WRITE_BDHI)) - return; - - if (!make_errors(pm, 2, 3, WRITE_BDHI)) - return; - - if (!make_errors(pm, 3, 0, 3)) - return; - - if (!make_errors(pm, 4, 3, WRITE_BDHI)) - return; - - if (!make_errors(pm, 6, 3, WRITE_BDHI)) - return; -#else - UNUSED(pm) -#endif -} - -/* This is just to validate the internal PNG formatting code - if this fails - * then the warning messages the library outputs will probably be garbage. - */ -static void -perform_formatting_test(png_store *volatile ps) -{ -#ifdef PNG_TIME_RFC1123_SUPPORTED - /* The handle into the formatting code is the RFC1123 support; this test does - * nothing if that is compiled out. - */ - context(ps, fault); - - Try - { - png_const_charp correct = "29 Aug 2079 13:53:60 +0000"; - png_const_charp result; - png_structp pp; - png_time pt; - - pp = set_store_for_write(ps, NULL, "libpng formatting test"); - - if (pp == NULL) - Throw ps; - - - /* Arbitrary settings: */ - pt.year = 2079; - pt.month = 8; - pt.day = 29; - pt.hour = 13; - pt.minute = 53; - pt.second = 60; /* a leap second */ - - result = png_convert_to_rfc1123(pp, &pt); - - if (result == NULL) - png_error(pp, "png_convert_to_rfc1123 failed"); - - if (strcmp(result, correct) != 0) - { - size_t pos = 0; - char msg[128]; - - pos = safecat(msg, sizeof msg, pos, "png_convert_to_rfc1123("); - pos = safecat(msg, sizeof msg, pos, correct); - pos = safecat(msg, sizeof msg, pos, ") returned: '"); - pos = safecat(msg, sizeof msg, pos, result); - pos = safecat(msg, sizeof msg, pos, "'"); - - png_error(pp, msg); - } - - store_write_reset(ps); - } - - Catch(fault) - { - store_write_reset(fault); - } -#else - UNUSED(ps) -#endif -} - -/* Because we want to use the same code in both the progressive reader and the - * sequential reader it is necessary to deal with the fact that the progressive - * reader callbacks only have one parameter (png_get_progressive_ptr()), so this - * must contain all the test parameters and all the local variables directly - * accessible to the sequential reader implementation. - * - * The technique adopted is to reinvent part of what Dijkstra termed a - * 'display'; an array of pointers to the stack frames of enclosing functions so - * that a nested function definition can access the local (C auto) variables of - * the functions that contain its definition. In fact C provides the first - * pointer (the local variables - the stack frame pointer) and the last (the - * global variables - the BCPL global vector typically implemented as global - * addresses), this code requires one more pointer to make the display - the - * local variables (and function call parameters) of the function that actually - * invokes either the progressive or sequential reader. - * - * Perhaps confusingly this technique is confounded with classes - the - * 'standard_display' defined here is sub-classed as the 'gamma_display' below. - * A gamma_display is a standard_display, taking advantage of the ANSI-C - * requirement that the pointer to the first member of a structure must be the - * same as the pointer to the structure. This allows us to reuse standard_ - * functions in the gamma test code; something that could not be done with - * nested functions! - */ -typedef struct standard_display -{ - png_store* ps; /* Test parameters (passed to the function) */ - png_byte colour_type; - png_byte bit_depth; - png_byte red_sBIT; /* Input data sBIT values. */ - png_byte green_sBIT; - png_byte blue_sBIT; - png_byte alpha_sBIT; - int interlace_type; - png_uint_32 id; /* Calculated file ID */ - png_uint_32 w; /* Width of image */ - png_uint_32 h; /* Height of image */ - int npasses; /* Number of interlaced passes */ - png_uint_32 pixel_size; /* Width of one pixel in bits */ - png_uint_32 bit_width; /* Width of output row in bits */ - size_t cbRow; /* Bytes in a row of the output image */ - int do_interlace; /* Do interlacing internally */ - int is_transparent; /* Transparency information was present. */ - int speed; /* Doing a speed test */ - struct - { - png_uint_16 red; - png_uint_16 green; - png_uint_16 blue; - } transparent; /* The transparent color, if set. */ - int npalette; /* Number of entries in the palette. */ - store_palette - palette; -} standard_display; - -static void -standard_display_init(standard_display *dp, png_store* ps, png_uint_32 id, - int do_interlace) -{ - dp->ps = ps; - dp->colour_type = COL_FROM_ID(id); - dp->bit_depth = DEPTH_FROM_ID(id); - if (dp->colour_type == 3) - dp->red_sBIT = dp->blue_sBIT = dp->green_sBIT = dp->alpha_sBIT = 8; - else - dp->red_sBIT = dp->blue_sBIT = dp->green_sBIT = dp->alpha_sBIT = - dp->bit_depth; - dp->interlace_type = INTERLACE_FROM_ID(id); - dp->id = id; - /* All the rest are filled in after the read_info: */ - dp->w = 0; - dp->h = 0; - dp->npasses = 0; - dp->pixel_size = 0; - dp->bit_width = 0; - dp->cbRow = 0; - dp->do_interlace = do_interlace; - dp->is_transparent = 0; - dp->speed = ps->speed; - dp->npalette = 0; - /* Preset the transparent color to black: */ - memset(&dp->transparent, 0, sizeof dp->transparent); - /* Preset the palette to full intensity/opaque througout: */ - memset(dp->palette, 0xff, sizeof dp->palette); -} - -/* Initialize the palette fields - this must be done later because the palette - * comes from the particular png_store_file that is selected. - */ -static void -standard_palette_init(standard_display *dp) -{ - store_palette_entry *palette = store_current_palette(dp->ps, &dp->npalette); - - /* The remaining entries remain white/opaque. */ - if (dp->npalette > 0) - { - int i = dp->npalette; - memcpy(dp->palette, palette, i * sizeof *palette); - - /* Check for a non-opaque palette entry: */ - while (--i >= 0) - if (palette[i].alpha < 255) - break; - -# ifdef __GNUC__ - /* GCC can't handle the more obviously optimizable version. */ - if (i >= 0) - dp->is_transparent = 1; - else - dp->is_transparent = 0; -# else - dp->is_transparent = (i >= 0); -# endif - } -} - -/* Utility to read the palette from the PNG file and convert it into - * store_palette format. This returns 1 if there is any transparency in the - * palette (it does not check for a transparent colour in the non-palette case.) - */ -static int -read_palette(store_palette palette, int *npalette, png_structp pp, png_infop pi) -{ - png_colorp pal; - png_bytep trans_alpha; - int num; - - pal = 0; - *npalette = -1; - - if (png_get_PLTE(pp, pi, &pal, npalette) & PNG_INFO_PLTE) - { - int i = *npalette; - - if (i <= 0 || i > 256) - png_error(pp, "validate: invalid PLTE count"); - - while (--i >= 0) - { - palette[i].red = pal[i].red; - palette[i].green = pal[i].green; - palette[i].blue = pal[i].blue; - } - - /* Mark the remainder of the entries with a flag value (other than - * white/opaque which is the flag value stored above.) - */ - memset(palette + *npalette, 126, (256-*npalette) * sizeof *palette); - } - - else /* !png_get_PLTE */ - { - if (*npalette != (-1)) - png_error(pp, "validate: invalid PLTE result"); - /* But there is no palette, so record this: */ - *npalette = 0; - memset(palette, 113, sizeof palette); - } - - trans_alpha = 0; - num = 2; /* force error below */ - if ((png_get_tRNS(pp, pi, &trans_alpha, &num, 0) & PNG_INFO_tRNS) != 0 && - (trans_alpha != NULL || num != 1/*returns 1 for a transparent color*/) && - /* Oops, if a palette tRNS gets expanded png_read_update_info (at least so - * far as 1.5.4) does not zap the trans_alpha pointer, only num_trans, so - * in the above call we get a success, we get a pointer (who knows what - * to) and we get num_trans == 0: - */ - !(trans_alpha != NULL && num == 0)) /* TODO: fix this in libpng. */ - { - int i; - - /* Any of these are crash-worthy - given the implementation of - * png_get_tRNS up to 1.5 an app won't crash if it just checks the - * result above and fails to check that the variables it passed have - * actually been filled in! Note that if the app were to pass the - * last, png_color_16p, variable too it couldn't rely on this. - */ - if (trans_alpha == NULL || num <= 0 || num > 256 || num > *npalette) - png_error(pp, "validate: unexpected png_get_tRNS (palette) result"); - - for (i=0; iis_transparent) - png_error(pp, "validate: palette transparency changed"); - - if (npalette != dp->npalette) - { - size_t pos = 0; - char msg[64]; - - pos = safecat(msg, sizeof msg, pos, "validate: palette size changed: "); - pos = safecatn(msg, sizeof msg, pos, dp->npalette); - pos = safecat(msg, sizeof msg, pos, " -> "); - pos = safecatn(msg, sizeof msg, pos, npalette); - png_error(pp, msg); - } - - { - int i = npalette; /* npalette is aliased */ - - while (--i >= 0) - if (palette[i].red != dp->palette[i].red || - palette[i].green != dp->palette[i].green || - palette[i].blue != dp->palette[i].blue || - palette[i].alpha != dp->palette[i].alpha) - png_error(pp, "validate: PLTE or tRNS chunk changed"); - } -} - -/* By passing a 'standard_display' the progressive callbacks can be used - * directly by the sequential code, the functions suffixed "_imp" are the - * implementations, the functions without the suffix are the callbacks. - * - * The code for the info callback is split into two because this callback calls - * png_read_update_info or png_start_read_image and what gets called depends on - * whether the info needs updating (we want to test both calls in pngvalid.) - */ -static void -standard_info_part1(standard_display *dp, png_structp pp, png_infop pi) -{ - if (png_get_bit_depth(pp, pi) != dp->bit_depth) - png_error(pp, "validate: bit depth changed"); - - if (png_get_color_type(pp, pi) != dp->colour_type) - png_error(pp, "validate: color type changed"); - - if (png_get_filter_type(pp, pi) != PNG_FILTER_TYPE_BASE) - png_error(pp, "validate: filter type changed"); - - if (png_get_interlace_type(pp, pi) != dp->interlace_type) - png_error(pp, "validate: interlacing changed"); - - if (png_get_compression_type(pp, pi) != PNG_COMPRESSION_TYPE_BASE) - png_error(pp, "validate: compression type changed"); - - dp->w = png_get_image_width(pp, pi); - - if (dp->w != standard_width(pp, dp->id)) - png_error(pp, "validate: image width changed"); - - dp->h = png_get_image_height(pp, pi); - - if (dp->h != standard_height(pp, dp->id)) - png_error(pp, "validate: image height changed"); - - /* Record (but don't check at present) the input sBIT according to the colour - * type information. - */ - { - png_color_8p sBIT = 0; - - if (png_get_sBIT(pp, pi, &sBIT) & PNG_INFO_sBIT) - { - int sBIT_invalid = 0; - - if (sBIT == 0) - png_error(pp, "validate: unexpected png_get_sBIT result"); - - if (dp->colour_type & PNG_COLOR_MASK_COLOR) - { - if (sBIT->red == 0 || sBIT->red > dp->bit_depth) - sBIT_invalid = 1; - else - dp->red_sBIT = sBIT->red; - - if (sBIT->green == 0 || sBIT->green > dp->bit_depth) - sBIT_invalid = 1; - else - dp->green_sBIT = sBIT->green; - - if (sBIT->blue == 0 || sBIT->blue > dp->bit_depth) - sBIT_invalid = 1; - else - dp->blue_sBIT = sBIT->blue; - } - - else /* !COLOR */ - { - if (sBIT->gray == 0 || sBIT->gray > dp->bit_depth) - sBIT_invalid = 1; - else - dp->blue_sBIT = dp->green_sBIT = dp->red_sBIT = sBIT->gray; - } - - /* All 8 bits in tRNS for a palette image are significant - see the - * spec. - */ - if (dp->colour_type & PNG_COLOR_MASK_ALPHA) - { - if (sBIT->alpha == 0 || sBIT->alpha > dp->bit_depth) - sBIT_invalid = 1; - else - dp->alpha_sBIT = sBIT->alpha; - } - - if (sBIT_invalid) - png_error(pp, "validate: sBIT value out of range"); - } - } - - /* Important: this is validating the value *before* any transforms have been - * put in place. It doesn't matter for the standard tests, where there are - * no transforms, but it does for other tests where rowbytes may change after - * png_read_update_info. - */ - if (png_get_rowbytes(pp, pi) != standard_rowsize(pp, dp->id)) - png_error(pp, "validate: row size changed"); - - /* Validate the colour type 3 palette (this can be present on other color - * types.) - */ - standard_palette_validate(dp, pp, pi); - - /* In any case always check for a tranparent color (notice that the - * colour type 3 case must not give a successful return on the get_tRNS call - * with these arguments!) - */ - { - png_color_16p trans_color = 0; - - if (png_get_tRNS(pp, pi, 0, 0, &trans_color) & PNG_INFO_tRNS) - { - if (trans_color == 0) - png_error(pp, "validate: unexpected png_get_tRNS (color) result"); - - switch (dp->colour_type) - { - case 0: - dp->transparent.red = dp->transparent.green = dp->transparent.blue = - trans_color->gray; - dp->is_transparent = 1; - break; - - case 2: - dp->transparent.red = trans_color->red; - dp->transparent.green = trans_color->green; - dp->transparent.blue = trans_color->blue; - dp->is_transparent = 1; - break; - - case 3: - /* Not expected because it should result in the array case - * above. - */ - png_error(pp, "validate: unexpected png_get_tRNS result"); - break; - - default: - png_error(pp, "validate: invalid tRNS chunk with alpha image"); - } - } - } - - /* Read the number of passes - expected to match the value used when - * creating the image (interlaced or not). This has the side effect of - * turning on interlace handling (if do_interlace is not set.) - */ - dp->npasses = npasses_from_interlace_type(pp, dp->interlace_type); - if (!dp->do_interlace && dp->npasses != png_set_interlace_handling(pp)) - png_error(pp, "validate: file changed interlace type"); - - /* Caller calls png_read_update_info or png_start_read_image now, then calls - * part2. - */ -} - -/* This must be called *after* the png_read_update_info call to get the correct - * 'rowbytes' value, otherwise png_get_rowbytes will refer to the untransformed - * image. - */ -static void -standard_info_part2(standard_display *dp, png_structp pp, png_infop pi, - int nImages) -{ - /* Record cbRow now that it can be found. */ - dp->pixel_size = bit_size(pp, png_get_color_type(pp, pi), - png_get_bit_depth(pp, pi)); - dp->bit_width = png_get_image_width(pp, pi) * dp->pixel_size; - dp->cbRow = png_get_rowbytes(pp, pi); - - /* Validate the rowbytes here again. */ - if (dp->cbRow != (dp->bit_width+7)/8) - png_error(pp, "bad png_get_rowbytes calculation"); - - /* Then ensure there is enough space for the output image(s). */ - store_ensure_image(dp->ps, pp, nImages, dp->cbRow, dp->h); -} - -static void -standard_info_imp(standard_display *dp, png_structp pp, png_infop pi, - int nImages) -{ - /* Note that the validation routine has the side effect of turning on - * interlace handling in the subsequent code. - */ - standard_info_part1(dp, pp, pi); - - /* And the info callback has to call this (or png_read_update_info - see - * below in the png_modifier code for that variant. - */ - png_start_read_image(pp); - - /* Validate the height, width and rowbytes plus ensure that sufficient buffer - * exists for decoding the image. - */ - standard_info_part2(dp, pp, pi, nImages); -} - -static void -standard_info(png_structp pp, png_infop pi) -{ - standard_display *dp = png_get_progressive_ptr(pp); - - /* Call with nImages==1 because the progressive reader can only produce one - * image. - */ - standard_info_imp(dp, pp, pi, 1 /*only one image*/); -} - -static void -progressive_row(png_structp pp, png_bytep new_row, png_uint_32 y, int pass) -{ - PNG_CONST standard_display *dp = png_get_progressive_ptr(pp); - - /* When handling interlacing some rows will be absent in each pass, the - * callback still gets called, but with a NULL pointer. This is checked - * in the 'else' clause below. We need our own 'cbRow', but we can't call - * png_get_rowbytes because we got no info structure. - */ - if (new_row != NULL) - { - png_bytep row; - - /* In the case where the reader doesn't do the interlace it gives - * us the y in the sub-image: - */ - if (dp->do_interlace && dp->interlace_type == PNG_INTERLACE_ADAM7) - { -#ifdef PNG_USER_TRANSFORM_INFO_SUPPORTED - /* Use this opportunity to validate the png 'current' APIs: */ - if (y != png_get_current_row_number(pp)) - png_error(pp, "png_get_current_row_number is broken"); - - if (pass != png_get_current_pass_number(pp)) - png_error(pp, "png_get_current_pass_number is broken"); -#endif - - y = PNG_ROW_FROM_PASS_ROW(y, pass); - } - - /* Validate this just in case. */ - if (y >= dp->h) - png_error(pp, "invalid y to progressive row callback"); - - row = store_image_row(dp->ps, pp, 0, y); - - /* Combine the new row into the old: */ - if (dp->do_interlace) - { - if (dp->interlace_type == PNG_INTERLACE_ADAM7) - deinterlace_row(row, new_row, dp->pixel_size, dp->w, pass); - else - memcpy(row, new_row, dp->cbRow); - } - else - png_progressive_combine_row(pp, row, new_row); - } else if (dp->interlace_type == PNG_INTERLACE_ADAM7 && - PNG_ROW_IN_INTERLACE_PASS(y, pass) && - PNG_PASS_COLS(dp->w, pass) > 0) - png_error(pp, "missing row in progressive de-interlacing"); -} - -static void -sequential_row(standard_display *dp, png_structp pp, png_infop pi, - PNG_CONST int iImage, PNG_CONST int iDisplay) -{ - PNG_CONST int npasses = dp->npasses; - PNG_CONST int do_interlace = dp->do_interlace && - dp->interlace_type == PNG_INTERLACE_ADAM7; - PNG_CONST png_uint_32 height = standard_height(pp, dp->id); - PNG_CONST png_uint_32 width = standard_width(pp, dp->id); - PNG_CONST png_store* ps = dp->ps; - int pass; - - for (pass=0; pass 0 && PNG_ROW_IN_INTERLACE_PASS(y, pass)) - { - /* Read the row into a pair of temporary buffers, then do the - * merge here into the output rows. - */ - png_byte row[STANDARD_ROWMAX], display[STANDARD_ROWMAX]; - - /* The following aids (to some extent) error detection - we can - * see where png_read_row wrote. Use opposite values in row and - * display to make this easier. - */ - memset(row, 0xff, sizeof row); - memset(display, 0, sizeof display); - - png_read_row(pp, row, display); - - if (iImage >= 0) - deinterlace_row(store_image_row(ps, pp, iImage, y), row, - dp->pixel_size, dp->w, pass); - - if (iDisplay >= 0) - deinterlace_row(store_image_row(ps, pp, iDisplay, y), display, - dp->pixel_size, dp->w, pass); - } - } - else - png_read_row(pp, - iImage >= 0 ? store_image_row(ps, pp, iImage, y) : NULL, - iDisplay >= 0 ? store_image_row(ps, pp, iDisplay, y) : NULL); - } - } - - /* And finish the read operation (only really necessary if the caller wants - * to find additional data in png_info from chunks after the last IDAT.) - */ - png_read_end(pp, pi); -} - -static void -standard_row_validate(standard_display *dp, png_structp pp, - int iImage, int iDisplay, png_uint_32 y) -{ - png_byte std[STANDARD_ROWMAX]; - - memset(std, 0xff, sizeof std); - standard_row(pp, std, dp->id, y); - - /* At the end both the 'row' and 'display' arrays should end up identical. - * In earlier passes 'row' will be partially filled in, with only the pixels - * that have been read so far, but 'display' will have those pixels - * replicated to fill the unread pixels while reading an interlaced image. - * The side effect inside the libpng sequential reader is that the 'row' - * array retains the correct values for unwritten pixels within the row - * bytes, while the 'display' array gets bits off the end of the image (in - * the last byte) trashed. Unfortunately in the progressive reader the - * row bytes are always trashed, so we always do a pixel_cmp here even though - * a memcmp of all cbRow bytes will succeed for the sequential reader. - */ - if (iImage >= 0 && pixel_cmp(std, store_image_row(dp->ps, pp, iImage, y), - dp->bit_width) != 0) - { - char msg[64]; - sprintf(msg, "PNG image row %d changed", y); - png_error(pp, msg); - } - - /* In this case use pixel_cmp because we need to compare a partial - * byte at the end of the row if the row is not an exact multiple - * of 8 bits wide. - */ - if (iDisplay >= 0 && pixel_cmp(std, store_image_row(dp->ps, pp, iDisplay, y), - dp->bit_width) != 0) - { - char msg[64]; - sprintf(msg, "display row %d changed", y); - png_error(pp, msg); - } -} - -static void -standard_image_validate(standard_display *dp, png_structp pp, int iImage, - int iDisplay) -{ - png_uint_32 y; - - if (iImage >= 0) - store_image_check(dp->ps, pp, iImage); - - if (iDisplay >= 0) - store_image_check(dp->ps, pp, iDisplay); - - for (y=0; yh; ++y) - standard_row_validate(dp, pp, iImage, iDisplay, y); - - /* This avoids false positives if the validation code is never called! */ - dp->ps->validated = 1; -} - -static void -standard_end(png_structp pp, png_infop pi) -{ - standard_display *dp = png_get_progressive_ptr(pp); - - UNUSED(pi) - - /* Validate the image - progressive reading only produces one variant for - * interlaced images. - */ - standard_image_validate(dp, pp, 0, -1); -} - -/* A single test run checking the standard image to ensure it is not damaged. */ -static void -standard_test(png_store* PNG_CONST psIn, png_uint_32 PNG_CONST id, - int do_interlace) -{ - standard_display d; - context(psIn, fault); - - /* Set up the display (stack frame) variables from the arguments to the - * function and initialize the locals that are filled in later. - */ - standard_display_init(&d, psIn, id, do_interlace); - - /* Everything is protected by a Try/Catch. The functions called also - * typically have local Try/Catch blocks. - */ - Try - { - png_structp pp; - png_infop pi; - - /* Get a png_struct for reading the image. This will throw an error if it - * fails, so we don't need to check the result. - */ - pp = set_store_for_read(d.ps, &pi, d.id, - d.do_interlace ? (d.ps->progressive ? - "pngvalid progressive deinterlacer" : - "pngvalid sequential deinterlacer") : (d.ps->progressive ? - "progressive reader" : "sequential reader")); - - /* Initialize the palette correctly from the png_store_file. */ - standard_palette_init(&d); - - /* Introduce the correct read function. */ - if (d.ps->progressive) - { - png_set_progressive_read_fn(pp, &d, standard_info, progressive_row, - standard_end); - - /* Now feed data into the reader until we reach the end: */ - store_progressive_read(d.ps, pp, pi); - } - else - { - /* Note that this takes the store, not the display. */ - png_set_read_fn(pp, d.ps, store_read); - - /* Check the header values: */ - png_read_info(pp, pi); - - /* The code tests both versions of the images that the sequential - * reader can produce. - */ - standard_info_imp(&d, pp, pi, 2 /*images*/); - - /* Need the total bytes in the image below; we can't get to this point - * unless the PNG file values have been checked against the expected - * values. - */ - { - sequential_row(&d, pp, pi, 0, 1); - - /* After the last pass loop over the rows again to check that the - * image is correct. - */ - if (!d.speed) - standard_image_validate(&d, pp, 0, 1); - } - } - - /* Check for validation. */ - if (!d.ps->validated) - png_error(pp, "image read failed silently"); - - /* Successful completion. */ - } - - Catch(fault) - d.ps = fault; /* make sure this hasn't been clobbered. */ - - /* In either case clean up the store. */ - store_read_reset(d.ps); -} - -static int -test_standard(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type, - int bdlo, int PNG_CONST bdhi) -{ - for (; bdlo <= bdhi; ++bdlo) - { - int interlace_type; - - for (interlace_type = PNG_INTERLACE_NONE; - interlace_type < PNG_INTERLACE_LAST; ++interlace_type) - { - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - interlace_type, 0, 0, 0), 0/*do_interlace*/); - - if (fail(pm)) - return 0; - } - } - - return 1; /* keep going */ -} - -static void -perform_standard_test(png_modifier *pm) -{ - /* Test each colour type over the valid range of bit depths (expressed as - * log2(bit_depth) in turn, stop as soon as any error is detected. - */ - if (!test_standard(pm, 0, 0, READ_BDHI)) - return; - - if (!test_standard(pm, 2, 3, READ_BDHI)) - return; - - if (!test_standard(pm, 3, 0, 3)) - return; - - if (!test_standard(pm, 4, 3, READ_BDHI)) - return; - - if (!test_standard(pm, 6, 3, READ_BDHI)) - return; -} - - -/********************************** SIZE TESTS ********************************/ -static int -test_size(png_modifier* PNG_CONST pm, png_byte PNG_CONST colour_type, - int bdlo, int PNG_CONST bdhi) -{ - /* Run the tests on each combination. - * - * NOTE: on my 32 bit x86 each of the following blocks takes - * a total of 3.5 seconds if done across every combo of bit depth - * width and height. This is a waste of time in practice, hence the - * hinc and winc stuff: - */ - static PNG_CONST png_byte hinc[] = {1, 3, 11, 1, 5}; - static PNG_CONST png_byte winc[] = {1, 9, 5, 7, 1}; - for (; bdlo <= bdhi; ++bdlo) - { - png_uint_32 h, w; - - for (h=1; h<=16; h+=hinc[bdlo]) for (w=1; w<=16; w+=winc[bdlo]) - { - /* First test all the 'size' images against the sequential - * reader using libpng to deinterlace (where required.) This - * validates the write side of libpng. There are four possibilities - * to validate. - */ - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_NONE, w, h, 0), 0/*do_interlace*/); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_NONE, w, h, 1), 0/*do_interlace*/); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_ADAM7, w, h, 0), 0/*do_interlace*/); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_ADAM7, w, h, 1), 0/*do_interlace*/); - - if (fail(pm)) - return 0; - - /* Now validate the interlaced read side - do_interlace true, - * in the progressive case this does actually make a difference - * to the code used in the non-interlaced case too. - */ - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_NONE, w, h, 0), 1/*do_interlace*/); - - if (fail(pm)) - return 0; - - standard_test(&pm->this, FILEID(colour_type, DEPTH(bdlo), 0/*palette*/, - PNG_INTERLACE_ADAM7, w, h, 0), 1/*do_interlace*/); - - if (fail(pm)) - return 0; - } - } - - return 1; /* keep going */ -} - -static void -perform_size_test(png_modifier *pm) -{ - /* Test each colour type over the valid range of bit depths (expressed as - * log2(bit_depth) in turn, stop as soon as any error is detected. - */ - if (!test_size(pm, 0, 0, READ_BDHI)) - return; - - if (!test_size(pm, 2, 3, READ_BDHI)) - return; - - /* For the moment don't do the palette test - it's a waste of time when - * compared to the greyscale test. - */ -#if 0 - if (!test_size(pm, 3, 0, 3)) - return; -#endif - - if (!test_size(pm, 4, 3, READ_BDHI)) - return; - - if (!test_size(pm, 6, 3, READ_BDHI)) - return; -} - - -/******************************* TRANSFORM TESTS ******************************/ -#ifdef PNG_READ_TRANSFORMS_SUPPORTED -/* A set of tests to validate libpng image transforms. The possibilities here - * are legion because the transforms can be combined in a combinatorial - * fashion. To deal with this some measure of restraint is required, otherwise - * the tests would take forever. - */ -typedef struct image_pixel -{ - /* A local (pngvalid) representation of a PNG pixel, in all its - * various forms. - */ - unsigned int red, green, blue, alpha; /* For non-palette images. */ - unsigned int palette_index; /* For a palette image. */ - png_byte colour_type; /* As in the spec. */ - png_byte bit_depth; /* Defines bit size in row */ - png_byte sample_depth; /* Scale of samples */ - int have_tRNS; /* tRNS chunk may need processing */ - - /* For checking the code calculates double precision floating point values - * along with an error value, accumulated from the transforms. Because an - * sBIT setting allows larger error bounds (indeed, by the spec, apparently - * up to just less than +/-1 in the scaled value) the *lowest* sBIT for each - * channel is stored. This sBIT value is folded in to the stored error value - * at the end of the application of the transforms to the pixel. - */ - double redf, greenf, bluef, alphaf; - double rede, greene, bluee, alphae; - png_byte red_sBIT, green_sBIT, blue_sBIT, alpha_sBIT; -} image_pixel; - -/* Shared utility function, see below. */ -static void -image_pixel_setf(image_pixel *this, unsigned int max) -{ - this->redf = this->red / (double)max; - this->greenf = this->green / (double)max; - this->bluef = this->blue / (double)max; - this->alphaf = this->alpha / (double)max; - - if (this->red < max) - this->rede = this->redf * DBL_EPSILON; - else - this->rede = 0; - if (this->green < max) - this->greene = this->greenf * DBL_EPSILON; - else - this->greene = 0; - if (this->blue < max) - this->bluee = this->bluef * DBL_EPSILON; - else - this->bluee = 0; - if (this->alpha < max) - this->alphae = this->alphaf * DBL_EPSILON; - else - this->alphae = 0; -} - -/* Initialize the structure for the next pixel - call this before doing any - * transforms and call it for each pixel since all the fields may need to be - * reset. - */ -static void -image_pixel_init(image_pixel *this, png_const_bytep row, png_byte colour_type, - png_byte bit_depth, png_uint_32 x, store_palette palette) -{ - PNG_CONST png_byte sample_depth = (png_byte)(colour_type == - PNG_COLOR_TYPE_PALETTE ? 8 : bit_depth); - PNG_CONST unsigned int max = (1U<palette_index = this->red = this->green = this->blue = - sample(row, colour_type, bit_depth, x, 0); - this->alpha = max; - this->red_sBIT = this->green_sBIT = this->blue_sBIT = this->alpha_sBIT = - sample_depth; - - /* Then override as appropriate: */ - if (colour_type == 3) /* palette */ - { - /* This permits the caller to default to the sample value. */ - if (palette != 0) - { - PNG_CONST unsigned int i = this->palette_index; - - this->red = palette[i].red; - this->green = palette[i].green; - this->blue = palette[i].blue; - this->alpha = palette[i].alpha; - } - } - - else /* not palette */ - { - unsigned int i = 0; - - if (colour_type & 2) - { - this->green = sample(row, colour_type, bit_depth, x, 1); - this->blue = sample(row, colour_type, bit_depth, x, 2); - i = 2; - } - if (colour_type & 4) - this->alpha = sample(row, colour_type, bit_depth, x, ++i); - } - - /* Calculate the scaled values, these are simply the values divided by - * 'max' and the error is initialized to the double precision epsilon value - * from the header file. - */ - image_pixel_setf(this, max); - - /* Store the input information for use in the transforms - these will - * modify the information. - */ - this->colour_type = colour_type; - this->bit_depth = bit_depth; - this->sample_depth = sample_depth; - this->have_tRNS = 0; -} - -/* Convert a palette image to an rgb image. This necessarily converts the tRNS - * chunk at the same time, because the tRNS will be in palette form. The way - * palette validation works means that the original palette is never updated, - * instead the image_pixel value from the row contains the RGB of the - * corresponding palette entry and *this* is updated. Consequently this routine - * only needs to change the colour type information. - */ -static void -image_pixel_convert_PLTE(image_pixel *this) -{ - if (this->colour_type == PNG_COLOR_TYPE_PALETTE) - { - if (this->have_tRNS) - { - this->colour_type = PNG_COLOR_TYPE_RGB_ALPHA; - this->have_tRNS = 0; - } - else - this->colour_type = PNG_COLOR_TYPE_RGB; - - /* The bit depth of the row changes at this point too (notice that this is - * the row format, not the sample depth, which is separate.) - */ - this->bit_depth = 8; - } -} - -/* Add an alpha channel; this will import the tRNS information because tRNS is - * not valid in an alpha image. The bit depth will invariably be set to at - * least 8. Palette images will be converted to alpha (using the above API). - */ -static void -image_pixel_add_alpha(image_pixel *this, const standard_display *display) -{ - if (this->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(this); - - if ((this->colour_type & PNG_COLOR_MASK_ALPHA) == 0) - { - if (this->colour_type == PNG_COLOR_TYPE_GRAY) - { - if (this->bit_depth < 8) - this->bit_depth = 8; - - if (this->have_tRNS) - { - this->have_tRNS = 0; - - /* Check the input, original, channel value here against the - * original tRNS gray chunk valie. - */ - if (this->red == display->transparent.red) - this->alphaf = 0; - else - this->alphaf = 1; - } - else - this->alphaf = 1; - - this->colour_type = PNG_COLOR_TYPE_GRAY_ALPHA; - } - - else if (this->colour_type == PNG_COLOR_TYPE_RGB) - { - if (this->have_tRNS) - { - this->have_tRNS = 0; - - /* Again, check the exact input values, not the current transformed - * value! - */ - if (this->red == display->transparent.red && - this->green == display->transparent.green && - this->blue == display->transparent.blue) - this->alphaf = 0; - else - this->alphaf = 1; - - this->colour_type = PNG_COLOR_TYPE_RGB_ALPHA; - } - } - - /* The error in the alpha is zero and the sBIT value comes from the - * original sBIT data (actually it will always be the original bit depth). - */ - this->alphae = 0; - this->alpha_sBIT = display->alpha_sBIT; - } -} - -struct transform_display; -typedef struct image_transform -{ - /* The name of this transform: a string. */ - PNG_CONST char *name; - - /* Each transform can be disabled from the command line: */ - int enable; - - /* The global list of transforms; read only. */ - struct image_transform *PNG_CONST list; - - /* The global count of the number of times this transform has been set on an - * image. - */ - unsigned int global_use; - - /* The local count of the number of times this transform has been set. */ - unsigned int local_use; - - /* The next transform in the list, each transform must call its own next - * transform after it has processed the pixel successfully. - */ - PNG_CONST struct image_transform *next; - - /* A single transform for the image, expressed as a series of function - * callbacks and some space for values. - * - * First a callback to set the transform on the current png_read_struct: - */ - void (*set)(PNG_CONST struct image_transform *this, - struct transform_display *that, png_structp pp, png_infop pi); - - /* Then a transform that takes an input pixel in one PNG format or another - * and modifies it by a pngvalid implementation of the transform (thus - * duplicating the libpng intent without, we hope, duplicating the bugs - * in the libpng implementation!) The png_structp is solely to allow error - * reporting via png_error and png_warning. - */ - void (*mod)(PNG_CONST struct image_transform *this, image_pixel *that, - png_structp pp, PNG_CONST struct transform_display *display); - - /* Add this transform to the list and return true if the transform is - * meaningful for this colour type and bit depth - if false then the - * transform should have no effect on the image so there's not a lot of - * point running it. - */ - int (*add)(struct image_transform *this, - PNG_CONST struct image_transform **that, png_byte colour_type, - png_byte bit_depth); -} image_transform; - -typedef struct transform_display -{ - standard_display this; - - /* Parameters */ - png_modifier* pm; - PNG_CONST image_transform* transform_list; - - /* Local variables */ - png_byte output_colour_type; - png_byte output_bit_depth; - - /* Variables for the individual transforms. */ - /* png_set_background */ - image_pixel background_colour; -} transform_display; - -/* Two functions to end the list: */ -static void -image_transform_set_end(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - UNUSED(this) - UNUSED(that) - UNUSED(pp) - UNUSED(pi) -} - -/* At the end of the list recalculate the output image pixel value from the - * double precision values set up by the preceding 'mod' calls: - */ -static unsigned int -sample_scale(double sample_value, unsigned int scale) -{ - sample_value = floor(sample_value * scale + .5); - - /* Return NaN as 0: */ - if (!(sample_value > 0)) - sample_value = 0; - else if (sample_value > scale) - sample_value = scale; - - return (unsigned int)sample_value; -} - -static void -image_transform_mod_end(PNG_CONST image_transform *this, image_pixel *that, - png_structp pp, PNG_CONST transform_display *display) -{ - PNG_CONST unsigned int scale = (1U<sample_depth)-1; - - UNUSED(this) - UNUSED(pp) - UNUSED(display) - - /* At the end recalculate the digitized red green and blue values according - * to the current sample_depth of the pixel. - * - * The sample value is simply scaled to the maximum, checking for over - * and underflow (which can both happen for some image transforms, - * including simple size scaling, though libpng doesn't do that at present. - */ - that->red = sample_scale(that->redf, scale); - - /* The error value is increased, at the end, according to the lowest sBIT - * value seen. Common sense tells us that the intermediate integer - * representations are no more accurate than +/- 0.5 in the integral values, - * the sBIT allows the implementation to be worse than this. In addition the - * PNG specification actually permits any error within the range (-1..+1), - * but that is ignored here. Instead the final digitized value is compared, - * below to the digitized value of the error limits - this has the net effect - * of allowing (almost) +/-1 in the output value. It's difficult to see how - * any algorithm that digitizes intermediate results can be more accurate. - */ - that->rede += 1./(2*((1U<red_sBIT)-1)); - - if (that->colour_type & PNG_COLOR_MASK_COLOR) - { - that->green = sample_scale(that->greenf, scale); - that->blue = sample_scale(that->bluef, scale); - that->greene += 1./(2*((1U<green_sBIT)-1)); - that->bluee += 1./(2*((1U<blue_sBIT)-1)); - } - else - { - that->blue = that->green = that->red; - that->bluef = that->greenf = that->redf; - that->bluee = that->greene = that->rede; - } - - if ((that->colour_type & PNG_COLOR_MASK_ALPHA) || - that->colour_type == PNG_COLOR_TYPE_PALETTE) - { - that->alpha = sample_scale(that->alphaf, scale); - that->alphae += 1./(2*((1U<alpha_sBIT)-1)); - } - else - { - that->alpha = scale; /* opaque */ - that->alpha = 1; /* Override this. */ - that->alphae = 0; /* It's exact ;-) */ - } -} - -/* Static 'end' structure: */ -static image_transform image_transform_end = -{ - "(end)", /* name */ - 1, /* enable */ - 0, /* list */ - 0, /* global_use */ - 0, /* local_use */ - 0, /* next */ - image_transform_set_end, - image_transform_mod_end, - 0 /* never called, I want it to crash if it is! */ -}; - -/* Reader callbacks and implementations, where they differ from the standard - * ones. - */ -static void -transform_display_init(transform_display *dp, png_modifier *pm, png_uint_32 id, - PNG_CONST image_transform *transform_list) -{ - /* Standard fields */ - standard_display_init(&dp->this, &pm->this, id, 0/*do_interlace*/); - - /* Parameter fields */ - dp->pm = pm; - dp->transform_list = transform_list; - - /* Local variable fields */ - dp->output_colour_type = 255; /* invalid */ - dp->output_bit_depth = 255; /* invalid */ -} - -static void -transform_info_imp(transform_display *dp, png_structp pp, png_infop pi) -{ - /* Reuse the standard stuff as appropriate. */ - standard_info_part1(&dp->this, pp, pi); - - /* Now set the list of transforms. */ - dp->transform_list->set(dp->transform_list, dp, pp, pi); - - /* Update the info structure for these transforms: */ - png_read_update_info(pp, pi); - - /* And get the output information into the standard_display */ - standard_info_part2(&dp->this, pp, pi, 1/*images*/); - - /* Plus the extra stuff we need for the transform tests: */ - dp->output_colour_type = png_get_color_type(pp, pi); - dp->output_bit_depth = png_get_bit_depth(pp, pi); - - /* Validate the combination of colour type and bit depth that we are getting - * out of libpng; the semantics of something not in the PNG spec are, at - * best, unclear. - */ - switch (dp->output_colour_type) - { - case PNG_COLOR_TYPE_PALETTE: - if (dp->output_bit_depth > 8) goto error; - /*FALL THROUGH*/ - case PNG_COLOR_TYPE_GRAY: - if (dp->output_bit_depth == 1 || dp->output_bit_depth == 2 || - dp->output_bit_depth == 4) - break; - /*FALL THROUGH*/ - default: - if (dp->output_bit_depth == 8 || dp->output_bit_depth == 16) - break; - /*FALL THROUGH*/ - error: - { - char message[128]; - size_t pos; - - pos = safecat(message, sizeof message, 0, - "invalid final bit depth: colour type("); - pos = safecatn(message, sizeof message, pos, dp->output_colour_type); - pos = safecat(message, sizeof message, pos, ") with bit depth: "); - pos = safecatn(message, sizeof message, pos, dp->output_bit_depth); - - png_error(pp, message); - } - } - - /* Use a test pixel to check that the output agrees with what we expect - - * this avoids running the whole test if the output is unexpected. - */ - { - image_pixel test_pixel; - - memset(&test_pixel, 0, sizeof test_pixel); - test_pixel.colour_type = dp->this.colour_type; /* input */ - test_pixel.bit_depth = dp->this.bit_depth; - if (test_pixel.colour_type == PNG_COLOR_TYPE_PALETTE) - test_pixel.sample_depth = 8; - else - test_pixel.sample_depth = test_pixel.bit_depth; - /* Don't need sBIT here */ - test_pixel.have_tRNS = dp->this.is_transparent; - - dp->transform_list->mod(dp->transform_list, &test_pixel, pp, dp); - - if (test_pixel.colour_type != dp->output_colour_type) - { - char message[128]; - size_t pos = safecat(message, sizeof message, 0, "colour type "); - - pos = safecatn(message, sizeof message, pos, dp->output_colour_type); - pos = safecat(message, sizeof message, pos, " expected "); - pos = safecatn(message, sizeof message, pos, test_pixel.colour_type); - - png_error(pp, message); - } - - if (test_pixel.bit_depth != dp->output_bit_depth) - { - char message[128]; - size_t pos = safecat(message, sizeof message, 0, "bit depth "); - - pos = safecatn(message, sizeof message, pos, dp->output_bit_depth); - pos = safecat(message, sizeof message, pos, " expected "); - pos = safecatn(message, sizeof message, pos, test_pixel.bit_depth); - - png_error(pp, message); - } - - /* If both bit depth and colour type are correct check the sample depth. - * I believe these are both internal errors. - */ - if (test_pixel.colour_type == PNG_COLOR_TYPE_PALETTE) - { - if (test_pixel.sample_depth != 8) /* oops - internal error! */ - png_error(pp, "pngvalid: internal: palette sample depth not 8"); - } - else if (test_pixel.sample_depth != dp->output_bit_depth) - { - char message[128]; - size_t pos = safecat(message, sizeof message, 0, - "internal: sample depth "); - - pos = safecatn(message, sizeof message, pos, dp->output_bit_depth); - pos = safecat(message, sizeof message, pos, " expected "); - pos = safecatn(message, sizeof message, pos, test_pixel.sample_depth); - - png_error(pp, message); - } - } -} - -static void -transform_info(png_structp pp, png_infop pi) -{ - transform_info_imp(png_get_progressive_ptr(pp), pp, pi); -} - -static void -transform_range_check(png_structp pp, unsigned int r, unsigned int g, - unsigned int b, unsigned int a, unsigned int in_digitized, double in, - unsigned int out, png_byte sample_depth, double err, PNG_CONST char *name, - double digitization_error) -{ - /* Compare the scaled, digitzed, values of our local calculation (in+-err) - * with the digitized values libpng produced; 'sample_depth' is the actual - * digitization depth of the libpng output colors (the bit depth except for - * palette images where it is always 8.) The check on 'err' is to detect - * internal errors in pngvalid itself (the threshold is about 1/255.) - */ - unsigned int max = (1U< 4E-3 || !(out >= in_min && out <= in_max)) - { - char message[256]; - size_t pos; - - pos = safecat(message, sizeof message, 0, name); - pos = safecat(message, sizeof message, pos, " output value error: rgba("); - pos = safecatn(message, sizeof message, pos, r); - pos = safecat(message, sizeof message, pos, ","); - pos = safecatn(message, sizeof message, pos, g); - pos = safecat(message, sizeof message, pos, ","); - pos = safecatn(message, sizeof message, pos, b); - pos = safecat(message, sizeof message, pos, ","); - pos = safecatn(message, sizeof message, pos, a); - pos = safecat(message, sizeof message, pos, "): "); - pos = safecatn(message, sizeof message, pos, out); - pos = safecat(message, sizeof message, pos, " expected: "); - pos = safecatn(message, sizeof message, pos, in_digitized); - pos = safecat(message, sizeof message, pos, " ("); - pos = safecatd(message, sizeof message, pos, (in-err)*max, 3); - pos = safecat(message, sizeof message, pos, ".."); - pos = safecatd(message, sizeof message, pos, (in+err)*max, 3); - pos = safecat(message, sizeof message, pos, ")"); - - png_error(pp, message); - } -} - -static void -transform_image_validate(transform_display *dp, png_structp pp, png_infop pi) -{ - /* Constants for the loop below: */ - PNG_CONST png_store* PNG_CONST ps = dp->this.ps; - PNG_CONST png_byte in_ct = dp->this.colour_type; - PNG_CONST png_byte in_bd = dp->this.bit_depth; - PNG_CONST png_uint_32 w = dp->this.w; - PNG_CONST png_uint_32 h = dp->this.h; - PNG_CONST png_byte out_ct = dp->output_colour_type; - PNG_CONST png_byte out_bd = dp->output_bit_depth; - PNG_CONST png_byte sample_depth = (png_byte)(out_ct == - PNG_COLOR_TYPE_PALETTE ? 8 : out_bd); - PNG_CONST png_byte red_sBIT = dp->this.red_sBIT; - PNG_CONST png_byte green_sBIT = dp->this.green_sBIT; - PNG_CONST png_byte blue_sBIT = dp->this.blue_sBIT; - PNG_CONST png_byte alpha_sBIT = dp->this.alpha_sBIT; - PNG_CONST int have_tRNS = dp->this.is_transparent; - double digitization_error; - - store_palette out_palette; - png_uint_32 y; - - UNUSED(pi) - - /* Check for row overwrite errors */ - store_image_check(dp->this.ps, pp, 0); - - /* Read the palette corresponding to the output if the output colour type - * indicates a palette, othewise set out_palette to garbage. - */ - if (out_ct == PNG_COLOR_TYPE_PALETTE) - { - /* Validate that the palette count itself has not changed - this is not - * expected. - */ - int npalette = (-1); - - (void)read_palette(out_palette, &npalette, pp, pi); - if (npalette != dp->this.npalette) - png_error(pp, "unexpected change in palette size"); - - digitization_error = .5; - } - else - { - png_byte in_sample_depth; - - memset(out_palette, 0x5e, sizeof out_palette); - - /* assume-8-bit-calculations means assume that if the input has 8 bit - * (or less) samples and the output has 16 bit samples the calculations - * will be done with 8 bit precision, not 16. - * - * TODO: fix this in libpng; png_set_expand_16 should cause 16 bit - * calculations to be used throughout. - */ - if (in_ct == PNG_COLOR_TYPE_PALETTE || in_bd < 16) - in_sample_depth = 8; - else - in_sample_depth = in_bd; - - if (sample_depth != 16 || in_sample_depth > 8 || - !dp->pm->calculations_use_input_precision) - digitization_error = .5; - - /* Else errors are at 8 bit precision, scale .5 in 8 bits to the 16 bits: - */ - else - digitization_error = .5 * 257; - } - - for (y=0; ythis.palette); - - in_pixel.red_sBIT = red_sBIT; - in_pixel.green_sBIT = green_sBIT; - in_pixel.blue_sBIT = blue_sBIT; - in_pixel.alpha_sBIT = alpha_sBIT; - in_pixel.have_tRNS = have_tRNS; - - /* For error detection, below. */ - r = in_pixel.red; - g = in_pixel.green; - b = in_pixel.blue; - a = in_pixel.alpha; - - dp->transform_list->mod(dp->transform_list, &in_pixel, pp, dp); - - /* Read the output pixel and compare it to what we got, we don't - * use the error field here, so no need to update sBIT. - */ - image_pixel_init(&out_pixel, pRow, out_ct, out_bd, x, out_palette); - - /* We don't expect changes to the index here even if the bit depth is - * changed. - */ - if (in_ct == PNG_COLOR_TYPE_PALETTE && - out_ct == PNG_COLOR_TYPE_PALETTE) - { - if (in_pixel.palette_index != out_pixel.palette_index) - png_error(pp, "unexpected transformed palette index"); - } - - /* Check the colours for palette images too - in fact the palette could - * be separately verified itself in most cases. - */ - if (in_pixel.red != out_pixel.red) - transform_range_check(pp, r, g, b, a, in_pixel.red, in_pixel.redf, - out_pixel.red, sample_depth, in_pixel.rede, "red/gray", - digitization_error); - - if ((out_ct & PNG_COLOR_MASK_COLOR) != 0 && - in_pixel.green != out_pixel.green) - transform_range_check(pp, r, g, b, a, in_pixel.green, - in_pixel.greenf, out_pixel.green, sample_depth, in_pixel.greene, - "green", digitization_error); - - if ((out_ct & PNG_COLOR_MASK_COLOR) != 0 && - in_pixel.blue != out_pixel.blue) - transform_range_check(pp, r, g, b, a, in_pixel.blue, in_pixel.bluef, - out_pixel.blue, sample_depth, in_pixel.bluee, "blue", - digitization_error); - - if ((out_ct & PNG_COLOR_MASK_ALPHA) != 0 && - in_pixel.alpha != out_pixel.alpha) - transform_range_check(pp, r, g, b, a, in_pixel.alpha, - in_pixel.alphaf, out_pixel.alpha, sample_depth, in_pixel.alphae, - "alpha", digitization_error); - } /* pixel (x) loop */ - } /* row (y) loop */ - - /* Record that something was actually checked to avoid a false positive. */ - dp->this.ps->validated = 1; -} - -static void -transform_end(png_structp pp, png_infop pi) -{ - transform_display *dp = png_get_progressive_ptr(pp); - - transform_image_validate(dp, pp, pi); -} - -/* A single test run. */ -static void -transform_test(png_modifier *pmIn, PNG_CONST png_uint_32 idIn, - PNG_CONST image_transform* transform_listIn, PNG_CONST char *name) -{ - transform_display d; - context(&pmIn->this, fault); - - transform_display_init(&d, pmIn, idIn, transform_listIn); - - Try - { - png_structp pp; - png_infop pi; - - /* Get a png_struct for reading the image. */ - pp = set_modifier_for_read(d.pm, &pi, d.this.id, name); - standard_palette_init(&d.this); - -# if 0 - /* Logging (debugging only) */ - { - char buffer[256]; - - (void)store_message(&d.pm->this, pp, buffer, sizeof buffer, 0, - "running test"); - - fprintf(stderr, "%s\n", buffer); - } -# endif - - /* Introduce the correct read function. */ - if (d.pm->this.progressive) - { - /* Share the row function with the standard implementation. */ - png_set_progressive_read_fn(pp, &d, transform_info, progressive_row, - transform_end); - - /* Now feed data into the reader until we reach the end: */ - modifier_progressive_read(d.pm, pp, pi); - } - else - { - /* modifier_read expects a png_modifier* */ - png_set_read_fn(pp, d.pm, modifier_read); - - /* Check the header values: */ - png_read_info(pp, pi); - - /* Process the 'info' requirements. Only one image is generated */ - transform_info_imp(&d, pp, pi); - - sequential_row(&d.this, pp, pi, -1, 0); - - if (!d.this.speed) - transform_image_validate(&d, pp, pi); - } - - modifier_reset(d.pm); - } - - Catch(fault) - modifier_reset((png_modifier*)fault); -} - -/* The transforms: */ -#define ITSTRUCT(name) image_transform_##name -#define IT(name)\ -static image_transform ITSTRUCT(name) =\ -{\ - #name,\ - 1, /*enable*/\ - &PT, /*list*/\ - 0, /*global_use*/\ - 0, /*local_use*/\ - 0, /*next*/\ - image_transform_png_set_##name##_set,\ - image_transform_png_set_##name##_mod,\ - image_transform_png_set_##name##_add\ -} -#define PT ITSTRUCT(end) /* stores the previous transform */ - -/* To save code: */ -static int -image_transform_default_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return 1; -} - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_palette_to_rgb */ -static void -image_transform_png_set_palette_to_rgb_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_palette_to_rgb(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_palette_to_rgb_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_palette_to_rgb_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return colour_type == PNG_COLOR_TYPE_PALETTE; -} - -IT(palette_to_rgb); -#undef PT -#define PT ITSTRUCT(palette_to_rgb) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_tRNS_to_alpha */ -static void -image_transform_png_set_tRNS_to_alpha_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_tRNS_to_alpha(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_tRNS_to_alpha_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - /* LIBPNG BUG: this always forces palette images to RGB. */ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - /* This effectively does an 'expand' only if there is some transparency to - * convert to an alpha channel. - */ - if (that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - /* LIBPNG BUG: otherwise libpng still expands to 8 bits! */ - else - { - if (that->bit_depth < 8) - that->bit_depth =8; - if (that->sample_depth < 8) - that->sample_depth = 8; - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_tRNS_to_alpha_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - /* We don't know yet whether there will be a tRNS chunk, but we know that - * this transformation should do nothing if there already is an alpha - * channel. - */ - return (colour_type & PNG_COLOR_MASK_ALPHA) == 0; -} - -IT(tRNS_to_alpha); -#undef PT -#define PT ITSTRUCT(tRNS_to_alpha) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED -/* png_set_gray_to_rgb */ -static void -image_transform_png_set_gray_to_rgb_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_gray_to_rgb(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_gray_to_rgb_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - /* NOTE: we can actually pend the tRNS processing at this point because we - * can correctly recognize the original pixel value even though we have - * mapped the one gray channel to the three RGB ones, but in fact libpng - * doesn't do this, so we don't either. - */ - if ((that->colour_type & PNG_COLOR_MASK_COLOR) == 0 && that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - /* Simply expand the bit depth and alter the colour type as required. */ - if (that->colour_type == PNG_COLOR_TYPE_GRAY) - { - /* RGB images have a bit depth at least equal to '8' */ - if (that->bit_depth < 8) - that->sample_depth = that->bit_depth = 8; - - /* And just changing the colour type works here because the green and blue - * channels are being maintained in lock-step with the red/gray: - */ - that->colour_type = PNG_COLOR_TYPE_RGB; - } - - else if (that->colour_type == PNG_COLOR_TYPE_GRAY_ALPHA) - that->colour_type = PNG_COLOR_TYPE_RGB_ALPHA; - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_gray_to_rgb_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return (colour_type & PNG_COLOR_MASK_COLOR) == 0; -} - -IT(gray_to_rgb); -#undef PT -#define PT ITSTRUCT(gray_to_rgb) -#endif /* PNG_READ_GRAY_TO_RGB_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_expand */ -static void -image_transform_png_set_expand_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_expand(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_expand_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - /* The general expand case depends on what the colour type is: */ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - else if (that->bit_depth < 8) /* grayscale */ - that->sample_depth = that->bit_depth = 8; - - if (that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_expand_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - /* 'expand' should do nothing for RGBA or GA input - no tRNS and the bit - * depth is at least 8 already. - */ - return (colour_type & PNG_COLOR_MASK_ALPHA) == 0; -} - -IT(expand); -#undef PT -#define PT ITSTRUCT(expand) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_SUPPORTED -/* png_set_expand_gray_1_2_4_to_8 - * LIBPNG BUG: this just does an 'expand' - */ -static void -image_transform_png_set_expand_gray_1_2_4_to_8_set( - PNG_CONST image_transform *this, transform_display *that, png_structp pp, - png_infop pi) -{ - png_set_expand_gray_1_2_4_to_8(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_expand_gray_1_2_4_to_8_mod( - PNG_CONST image_transform *this, image_pixel *that, png_structp pp, - PNG_CONST transform_display *display) -{ - image_transform_png_set_expand_mod(this, that, pp, display); -} - -static int -image_transform_png_set_expand_gray_1_2_4_to_8_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - return image_transform_png_set_expand_add(this, that, colour_type, - bit_depth); -} - -IT(expand_gray_1_2_4_to_8); -#undef PT -#define PT ITSTRUCT(expand_gray_1_2_4_to_8) -#endif /* PNG_READ_EXPAND_SUPPORTED */ - -#ifdef PNG_READ_EXPAND_16_SUPPORTED -/* png_set_expand_16 */ -static void -image_transform_png_set_expand_16_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_expand_16(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_expand_16_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - /* Expect expand_16 to expand everything to 16 bits as a result of also - * causing 'expand' to happen. - */ - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - if (that->have_tRNS) - image_pixel_add_alpha(that, &display->this); - - if (that->bit_depth < 16) - that->sample_depth = that->bit_depth = 16; - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_expand_16_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - - this->next = *that; - *that = this; - - /* expand_16 does something unless the bit depth is already 16. */ - return bit_depth < 16; -} - -IT(expand_16); -#undef PT -#define PT ITSTRUCT(expand_16) -#endif /* PNG_READ_EXPAND_16_SUPPORTED */ - -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED /* API added in 1.5.4 */ -/* png_set_scale_16 */ -static void -image_transform_png_set_scale_16_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_scale_16(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_scale_16_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - if (that->bit_depth == 16) - { - that->sample_depth = that->bit_depth = 8; - if (that->red_sBIT > 8) that->red_sBIT = 8; - if (that->green_sBIT > 8) that->green_sBIT = 8; - if (that->blue_sBIT > 8) that->blue_sBIT = 8; - if (that->alpha_sBIT > 8) that->alpha_sBIT = 8; - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_scale_16_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - - this->next = *that; - *that = this; - - return bit_depth > 8; -} - -IT(scale_16); -#undef PT -#define PT ITSTRUCT(scale_16) -#endif /* PNG_READ_SCALE_16_TO_8_SUPPORTED (1.5.4 on) */ - -#ifdef PNG_READ_16_TO_8_SUPPORTED /* the default before 1.5.4 */ -/* png_set_strip_16 */ -static void -image_transform_png_set_strip_16_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_strip_16(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_strip_16_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - if (that->bit_depth == 16) - { - that->sample_depth = that->bit_depth = 8; - if (that->red_sBIT > 8) that->red_sBIT = 8; - if (that->green_sBIT > 8) that->green_sBIT = 8; - if (that->blue_sBIT > 8) that->blue_sBIT = 8; - if (that->alpha_sBIT > 8) that->alpha_sBIT = 8; - - /* Prior to 1.5.4 png_set_strip_16 would use an 'accurate' method if this - * configuration option is set. From 1.5.4 the flag is never set and the - * 'scale' API (above) must be used. - */ -# ifdef PNG_READ_ACCURATE_SCALE_SUPPORTED -# if PNG_LIBPNG_VER >= 10504 -# error PNG_READ_ACCURATE_SCALE should not be set -# endif - - /* The strip 16 algorithm drops the low 8 bits rather than calculating - * 1/257, so we need to adjust the permitted errors appropriately: - * Notice that this is only relevant prior to the addition of the - * png_set_scale_16 API in 1.5.4 (but 1.5.4+ always defines the above!) - */ - { - PNG_CONST double d = (255-128.5)/65535; - that->rede += d; - that->greene += d; - that->bluee += d; - that->alphae += d; - } -# endif - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_strip_16_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(colour_type) - - this->next = *that; - *that = this; - - return bit_depth > 8; -} - -IT(strip_16); -#undef PT -#define PT ITSTRUCT(strip_16) -#endif /* PNG_READ_16_TO_8_SUPPORTED */ - -#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED -/* png_set_strip_alpha */ -static void -image_transform_png_set_strip_alpha_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_strip_alpha(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_strip_alpha_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - if (that->colour_type == PNG_COLOR_TYPE_GRAY_ALPHA) - that->colour_type = PNG_COLOR_TYPE_GRAY; - else if (that->colour_type == PNG_COLOR_TYPE_RGB_ALPHA) - that->colour_type = PNG_COLOR_TYPE_RGB; - - that->have_tRNS = 0; - that->alphaf = 1; - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_strip_alpha_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return (colour_type & PNG_COLOR_MASK_ALPHA) != 0; -} - -IT(strip_alpha); -#undef PT -#define PT ITSTRUCT(strip_alpha) -#endif /* PNG_READ_STRIP_ALPHA_SUPPORTED */ - -#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED -/* png_set_rgb_to_gray(png_structp, int err_action, double red, double green) - * png_set_rgb_to_gray_fixed(png_structp, int err_action, png_fixed_point red, - * png_fixed_point green) - * png_get_rgb_to_gray_status - * - * At present the APIs are simply tested using the 16.16 fixed point conversion - * values known to be used inside libpng: - * - * red: 6968 - * green: 23434 - * blue: 2366 - * - * NOTE: this currently ignores the gamma because no gamma is being set, the - * tests on gamma need to happen in the gamma test set. - */ -static void -image_transform_png_set_rgb_to_gray_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - PNG_CONST int error_action = 1; /* no error, no defines in png.h */ - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_rgb_to_gray(pp, error_action, -1, -1); -# else - png_set_rgb_to_gray_fixed(pp, error_action, -1, -1); -# endif - - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_rgb_to_gray_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - if ((that->colour_type & PNG_COLOR_MASK_COLOR) != 0) - { - if (that->colour_type == PNG_COLOR_TYPE_PALETTE) - image_pixel_convert_PLTE(that); - - /* Image now has RGB channels... */ - that->bluef = that->greenf = that->redf = (that->redf * 6968 + - that->greenf * 23434 + that->bluef * 2366) / 32768; - that->bluee = that->greene = that->rede = (that->rede * 6968 + - that->greene * 23434 + that->bluee * 2366) / 32768 * - (1 + DBL_EPSILON * 6); - - /* The sBIT is the minium of the three colour channel sBITs. */ - if (that->red_sBIT > that->green_sBIT) - that->red_sBIT = that->green_sBIT; - if (that->red_sBIT > that->blue_sBIT) - that->red_sBIT = that->blue_sBIT; - that->blue_sBIT = that->green_sBIT = that->red_sBIT; - - /* And zap the colour bit in the type: */ - if (that->colour_type == PNG_COLOR_TYPE_RGB) - that->colour_type = PNG_COLOR_TYPE_GRAY; - else if (that->colour_type == PNG_COLOR_TYPE_RGB_ALPHA) - that->colour_type = PNG_COLOR_TYPE_GRAY_ALPHA; - } - - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_rgb_to_gray_add(image_transform *this, - PNG_CONST image_transform **that, png_byte colour_type, png_byte bit_depth) -{ - UNUSED(bit_depth) - - this->next = *that; - *that = this; - - return (colour_type & PNG_COLOR_MASK_COLOR) != 0; -} - -IT(rgb_to_gray); -#undef PT -#define PT ITSTRUCT(rgb_to_gray) -#endif /* PNG_READ_RGB_TO_GRAY_SUPPORTED */ - -#ifdef PNG_READ_BACKGROUND_SUPPORTED -/* png_set_background(png_structp, png_const_color_16p background_color, - * int background_gamma_code, int need_expand, double background_gamma) - * png_set_background_fixed(png_structp, png_const_color_16p background_color, - * int background_gamma_code, int need_expand, - * png_fixed_point background_gamma) - * - * As with rgb_to_gray this ignores the gamma. -*/ -static void -image_transform_png_set_background_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_byte colour_type, bit_depth; - png_byte random_bytes[8]; /* 8 bytes - 64 bits - the biggest pixel */ - png_color_16 back; - - /* We need a background colour, because we don't know exactly what transforms - * have been set we have to supply the colour in the original file format and - * so we need to know what that is! The background colour is stored in the - * transform_display. - */ - RANDOMIZE(random_bytes); - - /* Read the random value, for colour type 3 the background colour is actually - * expressed as a 24bit rgb, not an index. - */ - colour_type = that->this.colour_type; - if (colour_type == 3) - { - colour_type = PNG_COLOR_TYPE_RGB; - bit_depth = 8; - } - - else - bit_depth = that->this.bit_depth; - - image_pixel_init(&that->background_colour, random_bytes, colour_type, - bit_depth, 0/*x*/, 0/*unused: palette*/); - - /* Extract the background colour from this image_pixel, but make sure the - * unused fields of 'back' are garbage. - */ - RANDOMIZE(back); - - if (colour_type & PNG_COLOR_MASK_COLOR) - { - back.red = (png_uint_16)that->background_colour.red; - back.green = (png_uint_16)that->background_colour.green; - back.blue = (png_uint_16)that->background_colour.blue; - } - - else - back.gray = (png_uint_16)that->background_colour.red; - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_background(pp, &back, PNG_BACKGROUND_GAMMA_FILE, 1/*need expand*/, - 0); -# else - png_set_background_fixed(pp, &back, PNG_BACKGROUND_GAMMA_FILE, - 1/*need expand*/, 0); -# endif - - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_background_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - /* Check for tRNS first: */ - if (that->have_tRNS && that->colour_type != PNG_COLOR_TYPE_PALETTE) - image_pixel_add_alpha(that, &display->this); - - /* This is only necessary if the alpha value is less than 1. */ - if (that->alphaf < 1) - { - PNG_CONST image_pixel *back = &display->background_colour; - - /* Now we do the background calculation without any gamma correction. */ - if (that->alphaf <= 0) - { - that->redf = back->redf; - that->greenf = back->greenf; - that->bluef = back->bluef; - - that->rede = back->rede; - that->greene = back->greene; - that->bluee = back->bluee; - - that->red_sBIT= back->red_sBIT; - that->green_sBIT= back->green_sBIT; - that->blue_sBIT= back->blue_sBIT; - } - - else /* 0 < alpha < 1 */ - { - double alf = 1 - that->alphaf; - - that->redf = that->redf * that->alphaf + back->redf * alf; - that->rede = that->rede * that->alphaf + back->rede * alf + - DBL_EPSILON; - that->greenf = that->greenf * that->alphaf + back->greenf * alf; - that->greene = that->greene * that->alphaf + back->greene * alf + - DBL_EPSILON; - that->bluef = that->bluef * that->alphaf + back->bluef * alf; - that->bluee = that->bluee * that->alphaf + back->bluee * alf + - DBL_EPSILON; - } - - /* Remove the alpha type and set the alpha (not in that order.) */ - that->alphaf = 1; - that->alphae = 0; - - if (that->colour_type == PNG_COLOR_TYPE_RGB_ALPHA) - that->colour_type = PNG_COLOR_TYPE_RGB; - else if (that->colour_type == PNG_COLOR_TYPE_GRAY_ALPHA) - that->colour_type = PNG_COLOR_TYPE_GRAY; - /* PNG_COLOR_TYPE_PALETTE is not changed */ - } - - this->next->mod(this->next, that, pp, display); -} - -#define image_transform_png_set_background_add image_transform_default_add - -IT(background); -#undef PT -#define PT ITSTRUCT(background) -#endif /* PNG_READ_BACKGROUND_SUPPORTED */ - -/* This may just be 'end' if all the transforms are disabled! */ -static image_transform *PNG_CONST image_transform_first = &PT; - -static void -transform_enable(PNG_CONST char *name) -{ - /* Everything starts out enabled, so if we see an 'enable' disabled - * everything else the first time round. - */ - static int all_disabled = 0; - int found_it = 0; - image_transform *list = image_transform_first; - - while (list != &image_transform_end) - { - if (strcmp(list->name, name) == 0) - { - list->enable = 1; - found_it = 1; - } - else if (!all_disabled) - list->enable = 0; - - list = list->list; - } - - all_disabled = 1; - - if (!found_it) - { - fprintf(stderr, "pngvalid: --transform-enable=%s: unknown transform\n", - name); - exit(1); - } -} - -static void -transform_disable(PNG_CONST char *name) -{ - image_transform *list = image_transform_first; - - while (list != &image_transform_end) - { - if (strcmp(list->name, name) == 0) - { - list->enable = 0; - return; - } - - list = list->list; - } - - fprintf(stderr, "pngvalid: --transform-disable=%s: unknown transform\n", - name); - exit(1); -} - -static void -image_transform_reset_count(void) -{ - image_transform *next = image_transform_first; - int count = 0; - - while (next != &image_transform_end) - { - next->local_use = 0; - next->next = 0; - next = next->list; - ++count; - } - - /* This can only happen if we every have more than 32 transforms (excluding - * the end) in the list. - */ - if (count > 32) abort(); -} - -static int -image_transform_test_counter(png_uint_32 counter, unsigned int max) -{ - /* Test the list to see if there is any point contining, given a current - * counter and a 'max' value. - */ - image_transform *next = image_transform_first; - - while (next != &image_transform_end) - { - /* For max 0 or 1 continue until the counter overflows: */ - counter >>= 1; - - /* Continue if any entry hasn't reacked the max. */ - if (max > 1 && next->local_use < max) - return 1; - next = next->list; - } - - return max <= 1 && counter == 0; -} - -static png_uint_32 -image_transform_add(PNG_CONST image_transform **this, unsigned int max, - png_uint_32 counter, char *name, size_t sizeof_name, size_t *pos, - png_byte colour_type, png_byte bit_depth) -{ - for (;;) /* until we manage to add something */ - { - png_uint_32 mask; - image_transform *list; - - /* Find the next counter value, if the counter is zero this is the start - * of the list. This routine always returns the current counter (not the - * next) so it returns 0 at the end and expects 0 at the beginning. - */ - if (counter == 0) /* first time */ - { - image_transform_reset_count(); - if (max <= 1) - counter = 1; - else - counter = random_32(); - } - else /* advance the counter */ - { - switch (max) - { - case 0: ++counter; break; - case 1: counter <<= 1; break; - default: counter = random_32(); break; - } - } - - /* Now add all these items, if possible */ - *this = &image_transform_end; - list = image_transform_first; - mask = 1; - - /* Go through the whole list adding anything that the counter selects: */ - while (list != &image_transform_end) - { - if ((counter & mask) != 0 && list->enable && - (max == 0 || list->local_use < max)) - { - /* Candidate to add: */ - if (list->add(list, this, colour_type, bit_depth) || max == 0) - { - /* Added, so add to the name too. */ - *pos = safecat(name, sizeof_name, *pos, " +"); - *pos = safecat(name, sizeof_name, *pos, list->name); - } - - else - { - /* Not useful and max>0, so remvoe it from *this: */ - *this = list->next; - list->next = 0; - - /* And, since we know it isn't useful, stop it being added again - * in this run: - */ - list->local_use = max; - } - } - - mask <<= 1; - list = list->list; - } - - /* Now if anything was added we have something to do. */ - if (*this != &image_transform_end) - return counter; - - /* Nothing added, but was there anything in there to add? */ - if (!image_transform_test_counter(counter, max)) - return 0; - } -} - -#ifdef THIS_IS_THE_PROFORMA -static void -image_transform_png_set_@_set(PNG_CONST image_transform *this, - transform_display *that, png_structp pp, png_infop pi) -{ - png_set_@(pp); - this->next->set(this->next, that, pp, pi); -} - -static void -image_transform_png_set_@_mod(PNG_CONST image_transform *this, - image_pixel *that, png_structp pp, PNG_CONST transform_display *display) -{ - this->next->mod(this->next, that, pp, display); -} - -static int -image_transform_png_set_@_add(image_transform *this, - PNG_CONST image_transform **that, char *name, size_t sizeof_name, - size_t *pos, png_byte colour_type, png_byte bit_depth) -{ - this->next = *that; - *that = this; - - *pos = safecat(name, sizeof_name, *pos, " +@"); - - return 1; -} - -IT(@); -#endif - -/* png_set_quantize(png_structp, png_colorp palette, int num_palette, - * int maximum_colors, png_const_uint_16p histogram, int full_quantize) - * - * Very difficult to validate this! - */ -/*NOTE: TBD NYI */ - -/* The data layout transforms are handled by swapping our own channel data, - * necessarily these need to happen at the end of the transform list because the - * semantic of the channels changes after these are executed. Some of these, - * like set_shift and set_packing, can't be done at present because they change - * the layout of the data at the sub-sample level so sample() won't get the - * right answer. - */ -/* png_set_invert_alpha */ -/*NOTE: TBD NYI */ - -/* png_set_bgr */ -/*NOTE: TBD NYI */ - -/* png_set_swap_alpha */ -/*NOTE: TBD NYI */ - -/* png_set_swap */ -/*NOTE: TBD NYI */ - -/* png_set_filler, (png_structp png_ptr, png_uint_32 filler, int flags)); */ -/*NOTE: TBD NYI */ - -/* png_set_add_alpha, (png_structp png_ptr, png_uint_32 filler, int flags)); */ -/*NOTE: TBD NYI */ - -/* png_set_packing */ -/*NOTE: TBD NYI */ - -/* png_set_packswap */ -/*NOTE: TBD NYI */ - -/* png_set_invert_mono */ -/*NOTE: TBD NYI */ - -/* png_set_shift(png_structp, png_const_color_8p true_bits) */ -/*NOTE: TBD NYI */ - -static void -perform_transform_test(png_modifier *pm) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - int palette_number = 0; - - while (next_format(&colour_type, &bit_depth, &palette_number)) - { - png_uint_32 counter = 0; - size_t base_pos; - char name[64]; - - base_pos = safecat(name, sizeof name, 0, "transform:"); - - for (;;) - { - size_t pos = base_pos; - PNG_CONST image_transform *list = 0; - - /* 'max' is currently hardwired to '1'; this should be settable on the - * command line. - */ - counter = image_transform_add(&list, 1/*max*/, counter, - name, sizeof name, &pos, colour_type, bit_depth); - - if (counter == 0) - break; - - /* The command line can change this to checking interlaced images. */ - transform_test(pm, FILEID(colour_type, bit_depth, palette_number, - pm->interlace_type, 0, 0, 0), list, name); - - if (fail(pm)) - return; - } - } -} -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -/********************************* GAMMA TESTS ********************************/ -#ifdef PNG_READ_GAMMA_SUPPORTED -/* Gamma test images. */ -typedef struct gamma_modification -{ - png_modification this; - png_fixed_point gamma; -} gamma_modification; - -static int -gamma_modify(png_modifier *pm, png_modification *me, int add) -{ - UNUSED(add) - /* This simply dumps the given gamma value into the buffer. */ - png_save_uint_32(pm->buffer, 4); - png_save_uint_32(pm->buffer+4, CHUNK_gAMA); - png_save_uint_32(pm->buffer+8, ((gamma_modification*)me)->gamma); - return 1; -} - -static void -gamma_modification_init(gamma_modification *me, png_modifier *pm, double gammad) -{ - double g; - - modification_init(&me->this); - me->this.chunk = CHUNK_gAMA; - me->this.modify_fn = gamma_modify; - me->this.add = CHUNK_PLTE; - g = floor(gammad * 100000 + .5); - me->gamma = (png_fixed_point)g; - me->this.next = pm->modifications; - pm->modifications = &me->this; -} - -typedef struct srgb_modification -{ - png_modification this; - png_byte intent; -} srgb_modification; - -static int -srgb_modify(png_modifier *pm, png_modification *me, int add) -{ - UNUSED(add) - /* As above, ignore add and just make a new chunk */ - png_save_uint_32(pm->buffer, 1); - png_save_uint_32(pm->buffer+4, CHUNK_sRGB); - pm->buffer[8] = ((srgb_modification*)me)->intent; - return 1; -} - -static void -srgb_modification_init(srgb_modification *me, png_modifier *pm, png_byte intent) -{ - modification_init(&me->this); - me->this.chunk = CHUNK_sBIT; - - if (intent <= 3) /* if valid, else *delete* sRGB chunks */ - { - me->this.modify_fn = srgb_modify; - me->this.add = CHUNK_PLTE; - me->intent = intent; - } - - else - { - me->this.modify_fn = 0; - me->this.add = 0; - me->intent = 0; - } - - me->this.next = pm->modifications; - pm->modifications = &me->this; -} - -typedef struct sbit_modification -{ - png_modification this; - png_byte sbit; -} sbit_modification; - -static int -sbit_modify(png_modifier *pm, png_modification *me, int add) -{ - png_byte sbit = ((sbit_modification*)me)->sbit; - if (pm->bit_depth > sbit) - { - int cb = 0; - switch (pm->colour_type) - { - case 0: - cb = 1; - break; - - case 2: - case 3: - cb = 3; - break; - - case 4: - cb = 2; - break; - - case 6: - cb = 4; - break; - - default: - png_error(pm->this.pread, - "unexpected colour type in sBIT modification"); - } - - png_save_uint_32(pm->buffer, cb); - png_save_uint_32(pm->buffer+4, CHUNK_sBIT); - - while (cb > 0) - (pm->buffer+8)[--cb] = sbit; - - return 1; - } - else if (!add) - { - /* Remove the sBIT chunk */ - pm->buffer_count = pm->buffer_position = 0; - return 1; - } - else - return 0; /* do nothing */ -} - -static void -sbit_modification_init(sbit_modification *me, png_modifier *pm, png_byte sbit) -{ - modification_init(&me->this); - me->this.chunk = CHUNK_sBIT; - me->this.modify_fn = sbit_modify; - me->this.add = CHUNK_PLTE; - me->sbit = sbit; - me->this.next = pm->modifications; - pm->modifications = &me->this; -} - -/* Reader callbacks and implementations, where they differ from the standard - * ones. - */ -typedef struct gamma_display -{ - standard_display this; - - /* Parameters */ - png_modifier* pm; - double file_gamma; - double screen_gamma; - double background_gamma; - png_byte sbit; - int threshold_test; - int use_input_precision; - int scale16; - int expand16; - int do_background; - png_color_16 background_color; - - /* Local variables */ - double maxerrout; - double maxerrpc; - double maxerrabs; -} gamma_display; - -#define ALPHA_MODE_OFFSET 4 - -static void -gamma_display_init(gamma_display *dp, png_modifier *pm, png_uint_32 id, - double file_gamma, double screen_gamma, png_byte sbit, int threshold_test, - int use_input_precision, int scale16, int expand16, - int do_background, PNG_CONST png_color_16 *pointer_to_the_background_color, - double background_gamma) -{ - /* Standard fields */ - standard_display_init(&dp->this, &pm->this, id, 0/*do_interlace*/); - - /* Parameter fields */ - dp->pm = pm; - dp->file_gamma = file_gamma; - dp->screen_gamma = screen_gamma; - dp->background_gamma = background_gamma; - dp->sbit = sbit; - dp->threshold_test = threshold_test; - dp->use_input_precision = use_input_precision; - dp->scale16 = scale16; - dp->expand16 = expand16; - dp->do_background = do_background; - if (do_background && pointer_to_the_background_color != 0) - dp->background_color = *pointer_to_the_background_color; - else - memset(&dp->background_color, 0, sizeof dp->background_color); - - /* Local variable fields */ - dp->maxerrout = dp->maxerrpc = dp->maxerrabs = 0; -} - -static void -gamma_info_imp(gamma_display *dp, png_structp pp, png_infop pi) -{ - /* Reuse the standard stuff as appropriate. */ - standard_info_part1(&dp->this, pp, pi); - - /* If requested strip 16 to 8 bits - this is handled automagically below - * because the output bit depth is read from the library. Note that there - * are interactions with sBIT but, internally, libpng makes sbit at most - * PNG_MAX_GAMMA_8 when doing the following. - */ - if (dp->scale16) -# ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_set_scale_16(pp); -# else - /* The following works both in 1.5.4 and earlier versions: */ -# ifdef PNG_READ_16_TO_8_SUPPORTED - png_set_strip_16(pp); -# else - png_error(pp, "scale16 (16 to 8 bit conversion) not supported"); -# endif -# endif - - if (dp->expand16) -# ifdef PNG_READ_EXPAND_16_SUPPORTED - png_set_expand_16(pp); -# else - png_error(pp, "expand16 (8 to 16 bit conversion) not supported"); -# endif - - if (dp->do_background >= ALPHA_MODE_OFFSET) - { -# ifdef PNG_READ_ALPHA_MODE_SUPPORTED - { - /* This tests the alpha mode handling, if supported. */ - int mode = dp->do_background - ALPHA_MODE_OFFSET; - - /* The gamma value is the output gamma, and is in the standard, - * non-inverted, represenation. It provides a default for the PNG file - * gamma, but since the file has a gAMA chunk this does not matter. - */ - PNG_CONST double sg = dp->screen_gamma; -# ifndef PNG_FLOATING_POINT_SUPPORTED - PNG_CONST png_fixed_point g = (png_fixed_point)(sg*100000+.5); -# endif - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_alpha_mode(pp, mode, sg); -# else - png_set_alpha_mode_fixed(pp, mode, g); -# endif - - /* However, for the standard Porter-Duff algorithm the output defaults - * to be linear, so if the test requires non-linear output it must be - * corrected here. - */ - if (mode == PNG_ALPHA_STANDARD && sg != 1) - { -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_gamma(pp, sg, dp->file_gamma); -# else - png_fixed_point f = (png_fixed_point)(dp->file_gamma*100000+.5); - png_set_gamma_fixed(pp, g, f); -# endif - } - } -# else - png_error(pp, "alpha mode handling not supported"); -# endif - } - - else - { - /* Set up gamma processing. */ -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_gamma(pp, dp->screen_gamma, dp->file_gamma); -# else - { - png_fixed_point s = (png_fixed_point)(dp->screen_gamma*100000+.5); - png_fixed_point f = (png_fixed_point)(dp->file_gamma*100000+.5); - png_set_gamma_fixed(pp, s, f); - } -# endif - - if (dp->do_background) - { -# ifdef PNG_READ_BACKGROUND_SUPPORTED - /* NOTE: this assumes the caller provided the correct background gamma! - */ - PNG_CONST double bg = dp->background_gamma; -# ifndef PNG_FLOATING_POINT_SUPPORTED - PNG_CONST png_fixed_point g = (png_fixed_point)(bg*100000+.5); -# endif - -# ifdef PNG_FLOATING_POINT_SUPPORTED - png_set_background(pp, &dp->background_color, dp->do_background, - 0/*need_expand*/, bg); -# else - png_set_background_fixed(pp, &dp->background_color, - dp->do_background, 0/*need_expand*/, g); -# endif -# else - png_error(pp, "png_set_background not supported"); -# endif - } - } - - png_read_update_info(pp, pi); - - /* Now we may get a different cbRow: */ - standard_info_part2(&dp->this, pp, pi, 1 /*images*/); -} - -static void -gamma_info(png_structp pp, png_infop pi) -{ - gamma_info_imp(png_get_progressive_ptr(pp), pp, pi); -} - -/* Validate a single component value - the routine gets the input and output - * sample values as unscaled PNG component values along with a cache of all the - * information required to validate the values. - */ -typedef struct validate_info -{ - png_structp pp; - gamma_display *dp; - png_byte sbit; - int use_input_precision; - int do_background; - int scale16; - unsigned int sbit_max; - unsigned int isbit_shift; - unsigned int outmax; - - double gamma_correction; /* Overall correction required. */ - double file_inverse; /* Inverse of file gamma. */ - double screen_gamma; - double screen_inverse; /* Inverse of screen gamma. */ - - double background_red; /* Linear background value, red or gray. */ - double background_green; - double background_blue; - - double maxabs; - double maxpc; - double maxcalc; - double maxout; - double maxout_total; /* Total including quantization error */ - double outlog; - int outquant; -} -validate_info; - -static void -init_validate_info(validate_info *vi, gamma_display *dp, png_struct *pp, - int in_depth, int out_depth) -{ - PNG_CONST unsigned int outmax = (1U<pp = pp; - vi->dp = dp; - - if (dp->sbit > 0 && dp->sbit < in_depth) - { - vi->sbit = dp->sbit; - vi->isbit_shift = in_depth - dp->sbit; - } - - else - { - vi->sbit = (png_byte)in_depth; - vi->isbit_shift = 0; - } - - vi->sbit_max = (1U << vi->sbit)-1; - - /* This mimics the libpng threshold test, '0' is used to prevent gamma - * correction in the validation test. - */ - vi->screen_gamma = dp->screen_gamma; - if (fabs(vi->screen_gamma-1) < PNG_GAMMA_THRESHOLD) - vi->screen_gamma = vi->screen_inverse = 0; - else - vi->screen_inverse = 1/vi->screen_gamma; - - vi->use_input_precision = dp->use_input_precision; - vi->outmax = outmax; - vi->maxabs = abserr(dp->pm, in_depth, out_depth); - vi->maxpc = pcerr(dp->pm, in_depth, out_depth); - vi->maxcalc = calcerr(dp->pm, in_depth, out_depth); - vi->maxout = outerr(dp->pm, in_depth, out_depth); - vi->outquant = output_quantization_factor(dp->pm, in_depth, out_depth); - vi->maxout_total = vi->maxout + vi->outquant * .5; - vi->outlog = outlog(dp->pm, in_depth, out_depth); - - if ((dp->this.colour_type & PNG_COLOR_MASK_ALPHA) != 0 || - (dp->this.colour_type == 3 && dp->this.is_transparent)) - { - vi->do_background = dp->do_background; - - if (vi->do_background != 0) - { - PNG_CONST double bg_inverse = 1/dp->background_gamma; - double r, g, b; - - /* Caller must at least put the gray value into the red channel */ - r = dp->background_color.red; r /= outmax; - g = dp->background_color.green; g /= outmax; - b = dp->background_color.blue; b /= outmax; - -# if 0 - /* libpng doesn't do this optimization, if we do pngvalid will fail. - */ - if (fabs(bg_inverse-1) >= PNG_GAMMA_THRESHOLD) -# endif - { - r = pow(r, bg_inverse); - g = pow(g, bg_inverse); - b = pow(b, bg_inverse); - } - - vi->background_red = r; - vi->background_green = g; - vi->background_blue = b; - } - } - else - vi->do_background = 0; - - if (vi->do_background == 0) - vi->background_red = vi->background_green = vi->background_blue = 0; - - vi->gamma_correction = 1/(dp->file_gamma*dp->screen_gamma); - if (fabs(vi->gamma_correction-1) < PNG_GAMMA_THRESHOLD) - vi->gamma_correction = 0; - - vi->file_inverse = 1/dp->file_gamma; - if (fabs(vi->file_inverse-1) < PNG_GAMMA_THRESHOLD) - vi->file_inverse = 0; - - vi->scale16 = dp->scale16; -} - -/* This function handles composition of a single non-alpha component. The - * argument is the input sample value, in the range 0..1, and the alpha value. - * The result is the composed, linear, input sample. If alpha is less than zero - * this is the alpha component and the function should not be called! - */ -static double -gamma_component_compose(int do_background, double input_sample, double alpha, - double background, int *compose) -{ - switch (do_background) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - case PNG_BACKGROUND_GAMMA_FILE: - case PNG_BACKGROUND_GAMMA_UNIQUE: - /* Standard PNG background processing. */ - if (alpha < 1) - { - if (alpha > 0) - { - input_sample = input_sample * alpha + background * (1-alpha); - if (compose != NULL) - *compose = 1; - } - - else - input_sample = background; - } - break; - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - case ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD: - case ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN: - /* The components are premultiplied in either case and the output is - * gamma encoded (to get standard Porter-Duff we expect the output - * gamma to be set to 1.0!) - */ - case ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED: - /* The optimization is that the partial-alpha entries are linear - * while the opaque pixels are gamma encoded, but this only affects the - * output encoding. - */ - if (alpha < 1) - { - if (alpha > 0) - { - input_sample *= alpha; - if (compose != NULL) - *compose = 1; - } - - else - input_sample = 0; - } - break; -#endif - - default: - /* Standard cases where no compositing is done (so the component - * value is already correct.) - */ - break; - } - - return input_sample; -} - -/* This API returns the encoded *input* component, in the range 0..1 */ -static double -gamma_component_validate(PNG_CONST char *name, PNG_CONST validate_info *vi, - PNG_CONST unsigned int id, PNG_CONST unsigned int od, - PNG_CONST double alpha /* <0 for the alpha channel itself */, - PNG_CONST double background /* component background value */) -{ - PNG_CONST unsigned int isbit = id >> vi->isbit_shift; - PNG_CONST unsigned int sbit_max = vi->sbit_max; - PNG_CONST unsigned int outmax = vi->outmax; - PNG_CONST int do_background = vi->do_background; - - double i; - - /* First check on the 'perfect' result obtained from the digitized input - * value, id, and compare this against the actual digitized result, 'od'. - * 'i' is the input result in the range 0..1: - */ - i = isbit; i /= sbit_max; - - /* Check for the fast route: if we don't do any background composition or if - * this is the alpha channel ('alpha' < 0) or if the pixel is opaque then - * just use the gamma_correction field to correct to the final output gamma. - */ - if (alpha == 1 /* opaque pixel component */ || !do_background -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - || do_background == ALPHA_MODE_OFFSET + PNG_ALPHA_PNG -#endif - || (alpha < 0 /* alpha channel */ -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - && do_background != ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN -#endif - )) - { - /* Then get the gamma corrected version of 'i' and compare to 'od', any - * error less than .5 is insignificant - just quantization of the output - * value to the nearest digital value (nevertheless the error is still - * recorded - it's interesting ;-) - */ - double encoded_sample = i; - double encoded_error; - - /* alpha less than 0 indicates the alpha channel, which is always linear - */ - if (alpha >= 0 && vi->gamma_correction > 0) - encoded_sample = pow(encoded_sample, vi->gamma_correction); - encoded_sample *= outmax; - - encoded_error = fabs(od-encoded_sample); - - if (encoded_error > vi->dp->maxerrout) - vi->dp->maxerrout = encoded_error; - - if (encoded_error < vi->maxout_total && encoded_error < vi->outlog) - return i; - } - - /* The slow route - attempt to do linear calculations. */ - /* There may be an error, or background processing is required, so calculate - * the actual sample values - unencoded light intensity values. Note that in - * practice these are not completely unencoded because they include a - * 'viewing correction' to decrease or (normally) increase the perceptual - * contrast of the image. There's nothing we can do about this - we don't - * know what it is - so assume the unencoded value is perceptually linear. - */ - { - double input_sample = i; /* In range 0..1 */ - double output, error, encoded_sample, encoded_error; - double es_lo, es_hi; - int compose = 0; /* Set to one if composition done */ - int output_is_encoded; /* Set if encoded to screen gamma */ - int log_max_error = 1; /* Check maximum error values */ - png_const_charp pass = 0; /* Reason test passes (or 0 for fail) */ - - /* Convert to linear light (with the above caveat.) The alpha channel is - * already linear. - */ - if (alpha >= 0) - { - int tcompose; - - if (vi->file_inverse > 0) - input_sample = pow(input_sample, vi->file_inverse); - - /* Handle the compose processing: */ - tcompose = 0; - input_sample = gamma_component_compose(do_background, input_sample, - alpha, background, &tcompose); - - if (tcompose) - compose = 1; - } - - /* And similarly for the output value, but we need to check the background - * handling to linearize it correctly. - */ - output = od; - output /= outmax; - - output_is_encoded = vi->screen_gamma > 0; - - if (alpha < 0) /* The alpha channel */ - { -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - if (do_background != ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN) -#endif - { - /* In all other cases the output alpha channel is linear already, - * don't log errors here, they are much larger in linear data. - */ - output_is_encoded = 0; - log_max_error = 0; - } - } - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - else /* A component */ - { - if (do_background == ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED && - alpha < 1) /* the optimized case - linear output */ - { - if (alpha > 0) log_max_error = 0; - output_is_encoded = 0; - } - } -#endif - - if (output_is_encoded) - output = pow(output, vi->screen_gamma); - - /* Calculate (or recalculate) the encoded_sample value and repeat the - * check above (unnecessary if we took the fast route, but harmless.) - */ - encoded_sample = input_sample; - if (output_is_encoded) - encoded_sample = pow(encoded_sample, vi->screen_inverse); - encoded_sample *= outmax; - - encoded_error = fabs(od-encoded_sample); - - /* Don't log errors in the alpha channel, or the 'optimized' case, - * neither are significant to the overall perception. - */ - if (log_max_error && encoded_error > vi->dp->maxerrout) - vi->dp->maxerrout = encoded_error; - - if (encoded_error < vi->maxout_total) - { - if (encoded_error < vi->outlog) - return i; - - /* Test passed but error is bigger than the log limit, record why the - * test passed: - */ - pass = "less than maxout:\n"; - } - - /* i: the original input value in the range 0..1 - * - * pngvalid calculations: - * input_sample: linear result; i linearized and composed, range 0..1 - * encoded_sample: encoded result; input_sample scaled to ouput bit depth - * - * libpng calculations: - * output: linear result; od scaled to 0..1 and linearized - * od: encoded result from libpng - */ - - /* Now we have the numbers for real errors, both absolute values as as a - * percentage of the correct value (output): - */ - error = fabs(input_sample-output); - - if (log_max_error && error > vi->dp->maxerrabs) - vi->dp->maxerrabs = error; - - /* The following is an attempt to ignore the tendency of quantization to - * dominate the percentage errors for lower result values: - */ - if (log_max_error && input_sample > .5) - { - double percentage_error = error/input_sample; - if (percentage_error > vi->dp->maxerrpc) - vi->dp->maxerrpc = percentage_error; - } - - /* Now calculate the digitization limits for 'encoded_sample' using the - * 'max' values. Note that maxout is in the encoded space but maxpc and - * maxabs are in linear light space. - * - * First find the maximum error in linear light space, range 0..1: - */ - { - double tmp = input_sample * vi->maxpc; - if (tmp < vi->maxabs) tmp = vi->maxabs; - /* If 'compose' is true the composition was done in linear space using - * integer arithmetic. This introduces an extra error of +/- 0.5 (at - * least) in the integer space used. 'maxcalc' records this, taking - * into account the possibility that even for 16 bit output 8 bit space - * may have been used. - */ - if (compose && tmp < vi->maxcalc) tmp = vi->maxcalc; - - /* The 'maxout' value refers to the encoded result, to compare with - * this encode input_sample adjusted by the maximum error (tmp) above. - */ - es_lo = encoded_sample - vi->maxout; - - if (es_lo > 0 && input_sample-tmp > 0) - { - double low_value = input_sample-tmp; - if (output_is_encoded) - low_value = pow(low_value, vi->screen_inverse); - low_value *= outmax; - if (low_value < es_lo) es_lo = low_value; - - /* Quantize this appropriately: */ - es_lo = ceil(es_lo / vi->outquant - .5) * vi->outquant; - } - - else - es_lo = 0; - - es_hi = encoded_sample + vi->maxout; - - if (es_hi < outmax && input_sample+tmp < 1) - { - double high_value = input_sample+tmp; - if (output_is_encoded) - high_value = pow(high_value, vi->screen_inverse); - high_value *= outmax; - if (high_value > es_hi) es_hi = high_value; - - es_hi = floor(es_hi / vi->outquant + .5) * vi->outquant; - } - - else - es_hi = outmax; - } - - /* The primary test is that the final encoded value returned by the - * library should be between the two limits (inclusive) that were - * calculated above. - */ - if (od >= es_lo && od <= es_hi) - { - /* The value passes, but we may need to log the information anyway. */ - if (encoded_error < vi->outlog) - return i; - - if (pass == 0) - pass = "within digitization limits:\n"; - } - - { - /* There has been an error in processing, or we need to log this - * value. - */ - double is_lo, is_hi; - - /* pass is set at this point if either of the tests above would have - * passed. Don't do these additional tests here - just log the - * original [es_lo..es_hi] values. - */ - if (pass == 0 && vi->use_input_precision) - { - /* Ok, something is wrong - this actually happens in current libpng - * 16-to-8 processing. Assume that the input value (id, adjusted - * for sbit) can be anywhere between value-.5 and value+.5 - quite a - * large range if sbit is low. - */ - double tmp = (isbit - .5)/sbit_max; - - if (tmp <= 0) - tmp = 0; - - else if (alpha >= 0 && vi->file_inverse > 0 && tmp < 1) - tmp = pow(tmp, vi->file_inverse); - - tmp = gamma_component_compose(do_background, tmp, alpha, background, - NULL); - - if (output_is_encoded && tmp > 0 && tmp < 1) - tmp = pow(tmp, vi->screen_inverse); - - is_lo = ceil(outmax * tmp - vi->maxout_total); - - if (is_lo < 0) - is_lo = 0; - - tmp = (isbit + .5)/sbit_max; - - if (tmp <= 0) - tmp = 0; - - else if (alpha >= 0 && vi->file_inverse > 0 && tmp < 1) - tmp = pow(tmp, vi->file_inverse); - - tmp = gamma_component_compose(do_background, tmp, alpha, background, - NULL); - - if (output_is_encoded && tmp > 0 && tmp < 1) - tmp = pow(tmp, vi->screen_inverse); - - is_hi = floor(outmax * tmp + vi->maxout_total); - - if (is_hi > outmax) - is_hi = outmax; - - if (!(od < is_lo || od > is_hi)) - { - if (encoded_error < vi->outlog) - return i; - - pass = "within input precision limits:\n"; - } - - /* One last chance. If this is an alpha channel and the 16to8 - * option has been used and 'inaccurate' scaling is used then the - * bit reduction is obtained by simply using the top 8 bits of the - * value. - * - * This is only done for older libpng versions when the 'inaccurate' - * (chop) method of scaling was used. - */ -# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED -# if PNG_LIBPNG_VER < 10504 - /* This may be required for other components in the future, - * but at present the presence of gamma correction effectively - * prevents the errors in the component scaling (I don't quite - * understand why, but since it's better this way I care not - * to ask, JB 20110419.) - */ - if (pass == 0 && alpha < 0 && vi->scale16 && vi->sbit > 8 && - vi->sbit + vi->isbit_shift == 16) - { - tmp = ((id >> 8) - .5)/255; - - if (tmp > 0) - { - is_lo = ceil(outmax * tmp - vi->maxout_total); - if (is_lo < 0) is_lo = 0; - } - - else - is_lo = 0; - - tmp = ((id >> 8) + .5)/255; - - if (tmp < 1) - { - is_hi = floor(outmax * tmp + vi->maxout_total); - if (is_hi > outmax) is_hi = outmax; - } - - else - is_hi = outmax; - - if (!(od < is_lo || od > is_hi)) - { - if (encoded_error < vi->outlog) - return i; - - pass = "within 8 bit limits:\n"; - } - } -# endif -# endif - } - else /* !use_input_precision */ - is_lo = es_lo, is_hi = es_hi; - - /* Attempt to output a meaningful error/warning message: the message - * output depends on the background/composite operation being performed - * because this changes what parameters were actually used above. - */ - { - size_t pos = 0; - /* Need either 1/255 or 1/65535 precision here; 3 or 6 decimal - * places. Just use outmax to work out which. - */ - int precision = (outmax >= 1000 ? 6 : 3); - int use_input=1, use_background=0, do_compose=0; - char msg[256]; - - if (pass != 0) - pos = safecat(msg, sizeof msg, pos, "\n\t"); - - /* Set up the various flags, the output_is_encoded flag above - * is also used below. do_compose is just a double check. - */ - switch (do_background) - { - case PNG_BACKGROUND_GAMMA_SCREEN: - case PNG_BACKGROUND_GAMMA_FILE: - case PNG_BACKGROUND_GAMMA_UNIQUE: - use_background = (alpha >= 0 && alpha < 1); - /*FALL THROUGH*/ -# ifdef PNG_READ_ALPHA_MODE_SUPPORTED - case ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD: - case ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN: - case ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED: -# endif /* ALPHA_MODE_SUPPORTED */ - do_compose = (alpha >= 0 && alpha < 1); - use_input = (alpha != 0); - break; - - default: - break; - } - - /* Check the 'compose' flag */ - if (compose != do_compose) - png_error(vi->pp, "internal error (compose)"); - - /* 'name' is the component name */ - pos = safecat(msg, sizeof msg, pos, name); - pos = safecat(msg, sizeof msg, pos, "("); - pos = safecatn(msg, sizeof msg, pos, id); - if (use_input || pass != 0/*logging*/) - { - if (isbit != id) - { - /* sBIT has reduced the precision of the input: */ - pos = safecat(msg, sizeof msg, pos, ", sbit("); - pos = safecatn(msg, sizeof msg, pos, vi->sbit); - pos = safecat(msg, sizeof msg, pos, "): "); - pos = safecatn(msg, sizeof msg, pos, isbit); - } - pos = safecat(msg, sizeof msg, pos, "/"); - /* The output is either "id/max" or "id sbit(sbit): isbit/max" */ - pos = safecatn(msg, sizeof msg, pos, vi->sbit_max); - } - pos = safecat(msg, sizeof msg, pos, ")"); - - /* A component may have been multiplied (in linear space) by the - * alpha value, 'compose' says whether this is relevant. - */ - if (compose || pass != 0) - { - /* If any form of composition is being done report our - * calculated linear value here (the code above doesn't record - * the input value before composition is performed, so what - * gets reported is the value after composition.) - */ - if (use_input || pass != 0) - { - if (vi->file_inverse > 0) - { - pos = safecat(msg, sizeof msg, pos, "^"); - pos = safecatd(msg, sizeof msg, pos, vi->file_inverse, 2); - } - - else - pos = safecat(msg, sizeof msg, pos, "[linear]"); - - pos = safecat(msg, sizeof msg, pos, "*(alpha)"); - pos = safecatd(msg, sizeof msg, pos, alpha, precision); - } - - /* Now record the *linear* background value if it was used - * (this function is not passed the original, non-linear, - * value but it is contained in the test name.) - */ - if (use_background) - { - pos = safecat(msg, sizeof msg, pos, use_input ? "+" : " "); - pos = safecat(msg, sizeof msg, pos, "(background)"); - pos = safecatd(msg, sizeof msg, pos, background, precision); - pos = safecat(msg, sizeof msg, pos, "*"); - pos = safecatd(msg, sizeof msg, pos, 1-alpha, precision); - } - } - - /* Report the calculated value (input_sample) and the linearized - * libpng value (output) unless this is just a component gamma - * correction. - */ - if (compose || alpha < 0 || pass != 0) - { - pos = safecat(msg, sizeof msg, pos, - pass != 0 ? " =\n\t" : " = "); - pos = safecatd(msg, sizeof msg, pos, input_sample, precision); - pos = safecat(msg, sizeof msg, pos, " (libpng: "); - pos = safecatd(msg, sizeof msg, pos, output, precision); - pos = safecat(msg, sizeof msg, pos, ")"); - - /* Finally report the output gamma encoding, if any. */ - if (output_is_encoded) - { - pos = safecat(msg, sizeof msg, pos, " ^"); - pos = safecatd(msg, sizeof msg, pos, vi->screen_inverse, 2); - pos = safecat(msg, sizeof msg, pos, "(to screen) ="); - } - - else - pos = safecat(msg, sizeof msg, pos, " [screen is linear] ="); - } - - if ((!compose && alpha >= 0) || pass != 0) - { - if (pass != 0) /* logging */ - pos = safecat(msg, sizeof msg, pos, "\n\t[overall:"); - - /* This is the non-composition case, the internal linear - * values are irrelevant (though the log below will reveal - * them.) Output a much shorter warning/error message and report - * the overall gamma correction. - */ - if (vi->gamma_correction > 0) - { - pos = safecat(msg, sizeof msg, pos, " ^"); - pos = safecatd(msg, sizeof msg, pos, vi->gamma_correction, 2); - pos = safecat(msg, sizeof msg, pos, "(gamma correction) ="); - } - - else - pos = safecat(msg, sizeof msg, pos, - " [no gamma correction] ="); - - if (pass != 0) - pos = safecat(msg, sizeof msg, pos, "]"); - } - - /* This is our calculated encoded_sample which should (but does - * not) match od: - */ - pos = safecat(msg, sizeof msg, pos, pass != 0 ? "\n\t" : " "); - pos = safecatd(msg, sizeof msg, pos, is_lo, 1); - pos = safecat(msg, sizeof msg, pos, " < "); - pos = safecatd(msg, sizeof msg, pos, encoded_sample, 1); - pos = safecat(msg, sizeof msg, pos, " (libpng: "); - pos = safecatn(msg, sizeof msg, pos, od); - pos = safecat(msg, sizeof msg, pos, ")"); - pos = safecat(msg, sizeof msg, pos, "/"); - pos = safecatn(msg, sizeof msg, pos, outmax); - pos = safecat(msg, sizeof msg, pos, " < "); - pos = safecatd(msg, sizeof msg, pos, is_hi, 1); - - if (pass == 0) /* The error condition */ - { -# ifdef PNG_WARNINGS_SUPPORTED - png_warning(vi->pp, msg); -# else - store_warning(vi->pp, msg); -# endif - } - - else /* logging this value */ - store_verbose(&vi->dp->pm->this, vi->pp, pass, msg); - } - } - } - - return i; -} - -static void -gamma_image_validate(gamma_display *dp, png_structp pp, png_infop pi) -{ - /* Get some constants derived from the input and output file formats: */ - PNG_CONST png_store* PNG_CONST ps = dp->this.ps; - PNG_CONST png_byte in_ct = dp->this.colour_type; - PNG_CONST png_byte in_bd = dp->this.bit_depth; - PNG_CONST png_uint_32 w = dp->this.w; - PNG_CONST png_uint_32 h = dp->this.h; - PNG_CONST size_t cbRow = dp->this.cbRow; - PNG_CONST png_byte out_ct = png_get_color_type(pp, pi); - PNG_CONST png_byte out_bd = png_get_bit_depth(pp, pi); - - /* There are three sources of error, firstly the quantization in the - * file encoding, determined by sbit and/or the file depth, secondly - * the output (screen) gamma and thirdly the output file encoding. - * - * Since this API receives the screen and file gamma in double - * precision it is possible to calculate an exact answer given an input - * pixel value. Therefore we assume that the *input* value is exact - - * sample/maxsample - calculate the corresponding gamma corrected - * output to the limits of double precision arithmetic and compare with - * what libpng returns. - * - * Since the library must quantize the output to 8 or 16 bits there is - * a fundamental limit on the accuracy of the output of +/-.5 - this - * quantization limit is included in addition to the other limits - * specified by the paramaters to the API. (Effectively, add .5 - * everywhere.) - * - * The behavior of the 'sbit' paramter is defined by section 12.5 - * (sample depth scaling) of the PNG spec. That section forces the - * decoder to assume that the PNG values have been scaled if sBIT is - * present: - * - * png-sample = floor( input-sample * (max-out/max-in) + .5); - * - * This means that only a subset of the possible PNG values should - * appear in the input. However, the spec allows the encoder to use a - * variety of approximations to the above and doesn't require any - * restriction of the values produced. - * - * Nevertheless the spec requires that the upper 'sBIT' bits of the - * value stored in a PNG file be the original sample bits. - * Consequently the code below simply scales the top sbit bits by - * (1<this.palette; - PNG_CONST int in_is_transparent = dp->this.is_transparent; - int out_npalette = -1; - int out_is_transparent = 0; /* Just refers to the palette case */ - store_palette out_palette; - validate_info vi; - - /* Check for row overwrite errors */ - store_image_check(dp->this.ps, pp, 0); - - /* Supply the input and output sample depths here - 8 for an indexed image, - * otherwise the bit depth. - */ - init_validate_info(&vi, dp, pp, in_ct==3?8:in_bd, out_ct==3?8:out_bd); - - processing = (vi.gamma_correction > 0 && !dp->threshold_test) - || in_bd != out_bd || in_ct != out_ct || vi.do_background; - - /* TODO: FIX THIS: MAJOR BUG! If the transformations all happen inside - * the palette there is no way of finding out, because libpng fails to - * update the palette on png_read_update_info. Indeed, libpng doesn't - * even do the required work until much later, when it doesn't have any - * info pointer. Oops. For the moment 'processing' is turned off if - * out_ct is palette. - */ - if (in_ct == 3 && out_ct == 3) - processing = 0; - - if (processing && out_ct == 3) - out_is_transparent = read_palette(out_palette, &out_npalette, pp, pi); - - for (y=0; ythis.palette[in_index].alpha : - sample(std, in_ct, in_bd, x, samples_per_pixel); - - unsigned int output_alpha = 65536 /* as a flag value */; - - if (out_ct == 3) - { - if (out_is_transparent) - output_alpha = out_palette[out_index].alpha; - } - - else if ((out_ct & PNG_COLOR_MASK_ALPHA) != 0) - output_alpha = sample(pRow, out_ct, out_bd, x, - samples_per_pixel); - - if (output_alpha != 65536) - alpha = gamma_component_validate("alpha", &vi, input_alpha, - output_alpha, -1/*alpha*/, 0/*background*/); - - else /* no alpha in output */ - { - /* This is a copy of the calculation of 'i' above in order to - * have the alpha value to use in the background calculation. - */ - alpha = input_alpha >> vi.isbit_shift; - alpha /= vi.sbit_max; - } - } - - /* Handle greyscale or RGB components. */ - if ((in_ct & PNG_COLOR_MASK_COLOR) == 0) /* greyscale */ - (void)gamma_component_validate("gray", &vi, - sample(std, in_ct, in_bd, x, 0), - sample(pRow, out_ct, out_bd, x, 0), alpha/*component*/, - vi.background_red); - else /* RGB or palette */ - { - (void)gamma_component_validate("red", &vi, - in_ct == 3 ? in_palette[in_index].red : - sample(std, in_ct, in_bd, x, 0), - out_ct == 3 ? out_palette[out_index].red : - sample(pRow, out_ct, out_bd, x, 0), - alpha/*component*/, vi.background_red); - - (void)gamma_component_validate("green", &vi, - in_ct == 3 ? in_palette[in_index].green : - sample(std, in_ct, in_bd, x, 1), - out_ct == 3 ? out_palette[out_index].green : - sample(pRow, out_ct, out_bd, x, 1), - alpha/*component*/, vi.background_green); - - (void)gamma_component_validate("blue", &vi, - in_ct == 3 ? in_palette[in_index].blue : - sample(std, in_ct, in_bd, x, 2), - out_ct == 3 ? out_palette[out_index].blue : - sample(pRow, out_ct, out_bd, x, 2), - alpha/*component*/, vi.background_blue); - } - } - } - - else if (memcmp(std, pRow, cbRow) != 0) - { - char msg[64]; - - /* No transform is expected on the threshold tests. */ - sprintf(msg, "gamma: below threshold row %d changed", y); - - png_error(pp, msg); - } - } /* row (y) loop */ - - dp->this.ps->validated = 1; -} - -static void -gamma_end(png_structp pp, png_infop pi) -{ - gamma_display *dp = png_get_progressive_ptr(pp); - - if (!dp->this.speed) - gamma_image_validate(dp, pp, pi); -} - -/* A single test run checking a gamma transformation. - * - * maxabs: maximum absolute error as a fraction - * maxout: maximum output error in the output units - * maxpc: maximum percentage error (as a percentage) - */ -static void -gamma_test(png_modifier *pmIn, PNG_CONST png_byte colour_typeIn, - PNG_CONST png_byte bit_depthIn, PNG_CONST int palette_numberIn, - PNG_CONST int interlace_typeIn, - PNG_CONST double file_gammaIn, PNG_CONST double screen_gammaIn, - PNG_CONST png_byte sbitIn, PNG_CONST int threshold_testIn, - PNG_CONST char *name, - PNG_CONST int use_input_precisionIn, PNG_CONST int scale16In, - PNG_CONST int expand16In, PNG_CONST int do_backgroundIn, - PNG_CONST png_color_16 *bkgd_colorIn, double bkgd_gammaIn) -{ - gamma_display d; - context(&pmIn->this, fault); - - gamma_display_init(&d, pmIn, FILEID(colour_typeIn, bit_depthIn, - palette_numberIn, interlace_typeIn, 0, 0, 0), - file_gammaIn, screen_gammaIn, sbitIn, - threshold_testIn, use_input_precisionIn, scale16In, - expand16In, do_backgroundIn, bkgd_colorIn, bkgd_gammaIn); - - Try - { - png_structp pp; - png_infop pi; - gamma_modification gamma_mod; - srgb_modification srgb_mod; - sbit_modification sbit_mod; - - /* Make an appropriate modifier to set the PNG file gamma to the - * given gamma value and the sBIT chunk to the given precision. - */ - d.pm->modifications = NULL; - gamma_modification_init(&gamma_mod, d.pm, d.file_gamma); - srgb_modification_init(&srgb_mod, d.pm, 127 /*delete*/); - if (d.sbit > 0) - sbit_modification_init(&sbit_mod, d.pm, d.sbit); - - modification_reset(d.pm->modifications); - - /* Get a png_struct for writing the image. */ - pp = set_modifier_for_read(d.pm, &pi, d.this.id, name); - standard_palette_init(&d.this); - - /* Introduce the correct read function. */ - if (d.pm->this.progressive) - { - /* Share the row function with the standard implementation. */ - png_set_progressive_read_fn(pp, &d, gamma_info, progressive_row, - gamma_end); - - /* Now feed data into the reader until we reach the end: */ - modifier_progressive_read(d.pm, pp, pi); - } - else - { - /* modifier_read expects a png_modifier* */ - png_set_read_fn(pp, d.pm, modifier_read); - - /* Check the header values: */ - png_read_info(pp, pi); - - /* Process the 'info' requirements. Only one image is generated */ - gamma_info_imp(&d, pp, pi); - - sequential_row(&d.this, pp, pi, -1, 0); - - if (!d.this.speed) - gamma_image_validate(&d, pp, pi); - } - - modifier_reset(d.pm); - - if (d.pm->log && !d.threshold_test && !d.this.speed) - fprintf(stderr, "%d bit %s %s: max error %f (%.2g, %2g%%)\n", - d.this.bit_depth, colour_types[d.this.colour_type], name, - d.maxerrout, d.maxerrabs, 100*d.maxerrpc); - - /* Log the summary values too. */ - if (d.this.colour_type == 0 || d.this.colour_type == 4) - { - switch (d.this.bit_depth) - { - case 1: - break; - - case 2: - if (d.maxerrout > d.pm->error_gray_2) - d.pm->error_gray_2 = d.maxerrout; - - break; - - case 4: - if (d.maxerrout > d.pm->error_gray_4) - d.pm->error_gray_4 = d.maxerrout; - - break; - - case 8: - if (d.maxerrout > d.pm->error_gray_8) - d.pm->error_gray_8 = d.maxerrout; - - break; - - case 16: - if (d.maxerrout > d.pm->error_gray_16) - d.pm->error_gray_16 = d.maxerrout; - - break; - - default: - png_error(pp, "bad bit depth (internal: 1)"); - } - } - - else if (d.this.colour_type == 2 || d.this.colour_type == 6) - { - switch (d.this.bit_depth) - { - case 8: - - if (d.maxerrout > d.pm->error_color_8) - d.pm->error_color_8 = d.maxerrout; - - break; - - case 16: - - if (d.maxerrout > d.pm->error_color_16) - d.pm->error_color_16 = d.maxerrout; - - break; - - default: - png_error(pp, "bad bit depth (internal: 2)"); - } - } - - else if (d.this.colour_type == 3) - { - if (d.maxerrout > d.pm->error_indexed) - d.pm->error_indexed = d.maxerrout; - } - } - - Catch(fault) - modifier_reset((png_modifier*)fault); -} - -static void gamma_threshold_test(png_modifier *pm, png_byte colour_type, - png_byte bit_depth, int interlace_type, double file_gamma, - double screen_gamma) -{ - size_t pos = 0; - char name[64]; - pos = safecat(name, sizeof name, pos, "threshold "); - pos = safecatd(name, sizeof name, pos, file_gamma, 3); - pos = safecat(name, sizeof name, pos, "/"); - pos = safecatd(name, sizeof name, pos, screen_gamma, 3); - - (void)gamma_test(pm, colour_type, bit_depth, 0/*palette*/, interlace_type, - file_gamma, screen_gamma, 0/*sBIT*/, 1/*threshold test*/, name, - 0 /*no input precision*/, - 0 /*no scale16*/, 0 /*no expand16*/, 0 /*no background*/, 0 /*hence*/, - 0 /*no background gamma*/); -} - -static void -perform_gamma_threshold_tests(png_modifier *pm) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - int palette_number = 0; - - /* Don't test more than one instance of each palette - it's pointless, in - * fact this test is somewhat excessive since libpng doesn't make this - * decision based on colour type or bit depth! - */ - while (next_format(&colour_type, &bit_depth, &palette_number)) - if (palette_number == 0) - { - double test_gamma = 1.0; - while (test_gamma >= .4) - { - /* There's little point testing the interlacing vs non-interlacing, - * but this can be set from the command line. - */ - gamma_threshold_test(pm, colour_type, bit_depth, pm->interlace_type, - test_gamma, 1/test_gamma); - test_gamma *= .95; - } - - /* And a special test for sRGB */ - gamma_threshold_test(pm, colour_type, bit_depth, pm->interlace_type, - .45455, 2.2); - - if (fail(pm)) - return; - } -} - -static void gamma_transform_test(png_modifier *pm, - PNG_CONST png_byte colour_type, PNG_CONST png_byte bit_depth, - PNG_CONST int palette_number, - PNG_CONST int interlace_type, PNG_CONST double file_gamma, - PNG_CONST double screen_gamma, PNG_CONST png_byte sbit, - PNG_CONST int use_input_precision, PNG_CONST int scale16) -{ - size_t pos = 0; - char name[64]; - - if (sbit != bit_depth && sbit != 0) - { - pos = safecat(name, sizeof name, pos, "sbit("); - pos = safecatn(name, sizeof name, pos, sbit); - pos = safecat(name, sizeof name, pos, ") "); - } - - else - pos = safecat(name, sizeof name, pos, "gamma "); - - if (scale16) - pos = safecat(name, sizeof name, pos, "16to8 "); - - pos = safecatd(name, sizeof name, pos, file_gamma, 3); - pos = safecat(name, sizeof name, pos, "->"); - pos = safecatd(name, sizeof name, pos, screen_gamma, 3); - - gamma_test(pm, colour_type, bit_depth, palette_number, interlace_type, - file_gamma, screen_gamma, sbit, 0, name, use_input_precision, - scale16, pm->test_gamma_expand16, 0 , 0, 0); -} - -static void perform_gamma_transform_tests(png_modifier *pm) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - int palette_number = 0; - - while (next_format(&colour_type, &bit_depth, &palette_number)) - { - unsigned int i, j; - - for (i=0; ingammas; ++i) for (j=0; jngammas; ++j) if (i != j) - { - gamma_transform_test(pm, colour_type, bit_depth, palette_number, - pm->interlace_type, 1/pm->gammas[i], pm->gammas[j], 0/*sBIT*/, - pm->use_input_precision, 0 /*do not scale16*/); - - if (fail(pm)) - return; - } - } -} - -static void perform_gamma_sbit_tests(png_modifier *pm) -{ - png_byte sbit; - - /* The only interesting cases are colour and grayscale, alpha is ignored here - * for overall speed. Only bit depths where sbit is less than the bit depth - * are tested. - */ - for (sbit=pm->sbitlow; sbit<(1<ngammas; ++i) - { - unsigned int j; - - for (j=0; jngammas; ++j) if (i != j) - { - gamma_transform_test(pm, colour_type, bit_depth, npalette, - pm->interlace_type, 1/pm->gammas[i], pm->gammas[j], - sbit, pm->use_input_precision_sbit, 0 /*scale16*/); - - if (fail(pm)) - return; - } - } - } - } -} - -/* Note that this requires a 16 bit source image but produces 8 bit output, so - * we only need the 16bit write support, but the 16 bit images are only - * generated if DO_16BIT is defined. - */ -#ifdef DO_16BIT -static void perform_gamma_scale16_tests(png_modifier *pm) -{ -# ifndef PNG_MAX_GAMMA_8 -# define PNG_MAX_GAMMA_8 11 -# endif - /* Include the alpha cases here. Note that sbit matches the internal value - * used by the library - otherwise we will get spurious errors from the - * internal sbit style approximation. - * - * The threshold test is here because otherwise the 16 to 8 conversion will - * proceed *without* gamma correction, and the tests above will fail (but not - * by much) - this could be fixed, it only appears with the -g option. - */ - unsigned int i, j; - for (i=0; ingammas; ++i) - { - for (j=0; jngammas; ++j) - { - if (i != j && - fabs(pm->gammas[j]/pm->gammas[i]-1) >= PNG_GAMMA_THRESHOLD) - { - gamma_transform_test(pm, 0, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - - gamma_transform_test(pm, 2, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - - gamma_transform_test(pm, 4, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - - gamma_transform_test(pm, 6, 16, 0, pm->interlace_type, - 1/pm->gammas[i], pm->gammas[j], PNG_MAX_GAMMA_8, - pm->use_input_precision_16to8, 1 /*scale16*/); - - if (fail(pm)) - return; - } - } - } -} -#endif /* 16 to 8 bit conversion */ - -#if defined PNG_READ_BACKGROUND_SUPPORTED ||\ - defined PNG_READ_ALPHA_MODE_SUPPORTED -static void gamma_composition_test(png_modifier *pm, - PNG_CONST png_byte colour_type, PNG_CONST png_byte bit_depth, - PNG_CONST int palette_number, - PNG_CONST int interlace_type, PNG_CONST double file_gamma, - PNG_CONST double screen_gamma, - PNG_CONST int use_input_precision, PNG_CONST int do_background, - PNG_CONST int expand_16) -{ - size_t pos = 0; - png_const_charp base; - double bg; - char name[128]; - png_color_16 background; - - /* Make up a name and get an appropriate background gamma value. */ - switch (do_background) - { - default: - base = ""; - bg = 4; /* should not be used */ - break; - case PNG_BACKGROUND_GAMMA_SCREEN: - base = " bckg(Screen):"; - bg = 1/screen_gamma; - break; - case PNG_BACKGROUND_GAMMA_FILE: - base = " bckg(File):"; - bg = file_gamma; - break; - case PNG_BACKGROUND_GAMMA_UNIQUE: - base = " bckg(Unique):"; - /* This tests the handling of a unique value, the math is such that the - * value tends to be <1, but is neither screen nor file (even if they - * match!) - */ - bg = (file_gamma + screen_gamma) / 3; - break; -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - case ALPHA_MODE_OFFSET + PNG_ALPHA_PNG: - base = " alpha(PNG)"; - bg = 4; /* should not be used */ - break; - case ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD: - base = " alpha(Porter-Duff)"; - bg = 4; /* should not be used */ - break; - case ALPHA_MODE_OFFSET + PNG_ALPHA_OPTIMIZED: - base = " alpha(Optimized)"; - bg = 4; /* should not be used */ - break; - case ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN: - base = " alpha(Broken)"; - bg = 4; /* should not be used */ - break; -#endif - } - - /* Use random background values - the background is always presented in the - * output space (8 or 16 bit components). - */ - if (expand_16 || bit_depth == 16) - { - png_uint_32 r = random_32(); - - background.red = (png_uint_16)r; - background.green = (png_uint_16)(r >> 16); - r = random_32(); - background.blue = (png_uint_16)r; - background.gray = (png_uint_16)(r >> 16); - } - - else /* 8 bit colors */ - { - png_uint_32 r = random_32(); - - background.red = (png_byte)r; - background.green = (png_byte)(r >> 8); - background.blue = (png_byte)(r >> 16); - background.gray = (png_byte)(r >> 24); - } - - background.index = 193; /* rgb(193,193,193) to detect errors */ - if (!(colour_type & PNG_COLOR_MASK_COLOR)) - { - /* Grayscale input, we do not convert to RGB (TBD), so we must set the - * background to gray - else libpng seems to fail. - */ - background.red = background.green = background.blue = background.gray; - } - - pos = safecat(name, sizeof name, pos, "gamma "); - pos = safecatd(name, sizeof name, pos, file_gamma, 3); - pos = safecat(name, sizeof name, pos, "->"); - pos = safecatd(name, sizeof name, pos, screen_gamma, 3); - - pos = safecat(name, sizeof name, pos, base); - if (do_background < ALPHA_MODE_OFFSET) - { - /* Include the background color and gamma in the name: */ - pos = safecat(name, sizeof name, pos, "("); - /* This assumes no expand gray->rgb - the current code won't handle that! - */ - if (colour_type & PNG_COLOR_MASK_COLOR) - { - pos = safecatn(name, sizeof name, pos, background.red); - pos = safecat(name, sizeof name, pos, ","); - pos = safecatn(name, sizeof name, pos, background.green); - pos = safecat(name, sizeof name, pos, ","); - pos = safecatn(name, sizeof name, pos, background.blue); - } - else - pos = safecatn(name, sizeof name, pos, background.gray); - pos = safecat(name, sizeof name, pos, ")^"); - pos = safecatd(name, sizeof name, pos, bg, 3); - } - - gamma_test(pm, colour_type, bit_depth, palette_number, interlace_type, - file_gamma, screen_gamma, 0/*sBIT*/, 0, name, use_input_precision, - 0/*strip 16*/, expand_16, do_background, &background, bg); -} - - -static void -perform_gamma_composition_tests(png_modifier *pm, int do_background, - int expand_16) -{ - png_byte colour_type = 0; - png_byte bit_depth = 0; - int palette_number = 0; - - /* Skip the non-alpha cases - there is no setting of a transparency colour at - * present. - */ - while (next_format(&colour_type, &bit_depth, &palette_number)) - if ((colour_type & PNG_COLOR_MASK_ALPHA) != 0) - { - unsigned int i, j; - - /* Don't skip the i==j case here - it's relevant. */ - for (i=0; ingammas; ++i) for (j=0; jngammas; ++j) - { - gamma_composition_test(pm, colour_type, bit_depth, palette_number, - pm->interlace_type, 1/pm->gammas[i], pm->gammas[j], - pm->use_input_precision, do_background, expand_16); - - if (fail(pm)) - return; - } - } -} -#endif /* READ_BACKGROUND || READ_ALPHA_MODE */ - -static void -init_gamma_errors(png_modifier *pm) -{ - pm->error_gray_2 = pm->error_gray_4 = pm->error_gray_8 = 0; - pm->error_color_8 = 0; - pm->error_indexed = 0; - pm->error_gray_16 = pm->error_color_16 = 0; -} - -static void -summarize_gamma_errors(png_modifier *pm, png_const_charp who, int low_bit_depth) -{ - if (who) - printf("Gamma correction with %s:\n", who); - - if (low_bit_depth) - { - printf(" 2 bit gray: %.5f\n", pm->error_gray_2); - printf(" 4 bit gray: %.5f\n", pm->error_gray_4); - printf(" 8 bit gray: %.5f\n", pm->error_gray_8); - printf(" 8 bit color: %.5f\n", pm->error_color_8); - printf(" indexed: %.5f\n", pm->error_indexed); - } - -#ifdef DO_16BIT - printf(" 16 bit gray: %.5f\n", pm->error_gray_16); - printf(" 16 bit color: %.5f\n", pm->error_color_16); -#endif -} - -static void -perform_gamma_test(png_modifier *pm, int summary) -{ - /*TODO: remove this*/ - /* Save certain values for the temporary overrides below. */ - unsigned int calculations_use_input_precision = - pm->calculations_use_input_precision; - double maxout8 = pm->maxout8; - - /* First some arbitrary no-transform tests: */ - if (!pm->this.speed && pm->test_gamma_threshold) - { - perform_gamma_threshold_tests(pm); - - if (fail(pm)) - return; - } - - /* Now some real transforms. */ - if (pm->test_gamma_transform) - { - init_gamma_errors(pm); - /*TODO: remove this. Necessary because the current libpng - * implementation works in 8 bits: - */ - if (pm->test_gamma_expand16) - pm->calculations_use_input_precision = 1; - perform_gamma_transform_tests(pm); - if (!calculations_use_input_precision) - pm->calculations_use_input_precision = 0; - - if (summary) - { - printf("Gamma correction error summary\n\n"); - printf("The printed value is the maximum error in the pixel values\n"); - printf("calculated by the libpng gamma correction code. The error\n"); - printf("is calculated as the difference between the output pixel\n"); - printf("value (always an integer) and the ideal value from the\n"); - printf("libpng specification (typically not an integer).\n\n"); - - printf("Expect this value to be less than .5 for 8 bit formats,\n"); - printf("less than 1 for formats with fewer than 8 bits and a small\n"); - printf("number (typically less than 5) for the 16 bit formats.\n"); - printf("For performance reasons the value for 16 bit formats\n"); - printf("increases when the image file includes an sBIT chunk.\n\n"); - - summarize_gamma_errors(pm, 0/*who*/, 1); - } - } - - /* The sbit tests produce much larger errors: */ - if (pm->test_gamma_sbit) - { - init_gamma_errors(pm); - perform_gamma_sbit_tests(pm); - - if (summary) - summarize_gamma_errors(pm, "sBIT", pm->sbitlow < 8U); - } - -#ifdef DO_16BIT /* Should be READ_16BIT_SUPPORTED */ - if (pm->test_gamma_scale16) - { - /* The 16 to 8 bit strip operations: */ - init_gamma_errors(pm); - perform_gamma_scale16_tests(pm); - - if (summary) - { - printf("Gamma correction with 16 to 8 bit reduction:\n"); - printf(" 16 bit gray: %.5f\n", pm->error_gray_16); - printf(" 16 bit color: %.5f\n", pm->error_color_16); - } - } -#endif - -#ifdef PNG_READ_BACKGROUND_SUPPORTED - if (pm->test_gamma_background) - { - init_gamma_errors(pm); - - /*TODO: remove this. Necessary because the current libpng - * implementation works in 8 bits: - */ - if (pm->test_gamma_expand16) - { - pm->calculations_use_input_precision = 1; - pm->maxout8 = .499; /* because the 16 bit background is smashed */ - } - perform_gamma_composition_tests(pm, PNG_BACKGROUND_GAMMA_UNIQUE, - pm->test_gamma_expand16); - if (!calculations_use_input_precision) - pm->calculations_use_input_precision = 0; - pm->maxout8 = maxout8; - - if (summary) - summarize_gamma_errors(pm, "background", 1); - } -#endif - -#ifdef PNG_READ_ALPHA_MODE_SUPPORTED - if (pm->test_gamma_alpha_mode) - { - int do_background; - - init_gamma_errors(pm); - - /*TODO: remove this. Necessary because the current libpng - * implementation works in 8 bits: - */ - if (pm->test_gamma_expand16) - pm->calculations_use_input_precision = 1; - for (do_background = ALPHA_MODE_OFFSET + PNG_ALPHA_STANDARD; - do_background <= ALPHA_MODE_OFFSET + PNG_ALPHA_BROKEN && !fail(pm); - ++do_background) - perform_gamma_composition_tests(pm, do_background, - pm->test_gamma_expand16); - if (!calculations_use_input_precision) - pm->calculations_use_input_precision = 0; - - if (summary) - summarize_gamma_errors(pm, "alpha mode", 1); - } -#endif -} -#endif /* PNG_READ_GAMMA_SUPPORTED */ - -/* INTERLACE MACRO VALIDATION */ -/* This is copied verbatim from the specification, it is simply the pass - * number in which each pixel in each 8x8 tile appears. The array must - * be indexed adam7[y][x] and notice that the pass numbers are based at - * 1, not 0 - the base libpng uses. - */ -static PNG_CONST -png_byte adam7[8][8] = -{ - { 1,6,4,6,2,6,4,6 }, - { 7,7,7,7,7,7,7,7 }, - { 5,6,5,6,5,6,5,6 }, - { 7,7,7,7,7,7,7,7 }, - { 3,6,4,6,3,6,4,6 }, - { 7,7,7,7,7,7,7,7 }, - { 5,6,5,6,5,6,5,6 }, - { 7,7,7,7,7,7,7,7 } -}; - -/* This routine validates all the interlace support macros in png.h for - * a variety of valid PNG widths and heights. It uses a number of similarly - * named internal routines that feed off the above array. - */ -static png_uint_32 -png_pass_start_row(int pass) -{ - int x, y; - ++pass; - for (y=0; y<8; ++y) for (x=0; x<8; ++x) if (adam7[y][x] == pass) - return y; - return 0xf; -} - -static png_uint_32 -png_pass_start_col(int pass) -{ - int x, y; - ++pass; - for (x=0; x<8; ++x) for (y=0; y<8; ++y) if (adam7[y][x] == pass) - return x; - return 0xf; -} - -static int -png_pass_row_shift(int pass) -{ - int x, y, base=(-1), inc=8; - ++pass; - for (y=0; y<8; ++y) for (x=0; x<8; ++x) if (adam7[y][x] == pass) - { - if (base == (-1)) - base = y; - else if (base == y) - {} - else if (inc == y-base) - base=y; - else if (inc == 8) - inc = y-base, base=y; - else if (inc != y-base) - return 0xff; /* error - more than one 'inc' value! */ - } - - if (base == (-1)) return 0xfe; /* error - no row in pass! */ - - /* The shift is always 1, 2 or 3 - no pass has all the rows! */ - switch (inc) - { -case 2: return 1; -case 4: return 2; -case 8: return 3; -default: break; - } - - /* error - unrecognized 'inc' */ - return (inc << 8) + 0xfd; -} - -static int -png_pass_col_shift(int pass) -{ - int x, y, base=(-1), inc=8; - ++pass; - for (x=0; x<8; ++x) for (y=0; y<8; ++y) if (adam7[y][x] == pass) - { - if (base == (-1)) - base = x; - else if (base == x) - {} - else if (inc == x-base) - base=x; - else if (inc == 8) - inc = x-base, base=x; - else if (inc != x-base) - return 0xff; /* error - more than one 'inc' value! */ - } - - if (base == (-1)) return 0xfe; /* error - no row in pass! */ - - /* The shift is always 1, 2 or 3 - no pass has all the rows! */ - switch (inc) - { -case 1: return 0; /* pass 7 has all the columns */ -case 2: return 1; -case 4: return 2; -case 8: return 3; -default: break; - } - - /* error - unrecognized 'inc' */ - return (inc << 8) + 0xfd; -} - -static png_uint_32 -png_row_from_pass_row(png_uint_32 yIn, int pass) -{ - /* By examination of the array: */ - switch (pass) - { -case 0: return yIn * 8; -case 1: return yIn * 8; -case 2: return yIn * 8 + 4; -case 3: return yIn * 4; -case 4: return yIn * 4 + 2; -case 5: return yIn * 2; -case 6: return yIn * 2 + 1; -default: break; - } - - return 0xff; /* bad pass number */ -} - -static png_uint_32 -png_col_from_pass_col(png_uint_32 xIn, int pass) -{ - /* By examination of the array: */ - switch (pass) - { -case 0: return xIn * 8; -case 1: return xIn * 8 + 4; -case 2: return xIn * 4; -case 3: return xIn * 4 + 2; -case 4: return xIn * 2; -case 5: return xIn * 2 + 1; -case 6: return xIn; -default: break; - } - - return 0xff; /* bad pass number */ -} - -static int -png_row_in_interlace_pass(png_uint_32 y, int pass) -{ - /* Is row 'y' in pass 'pass'? */ - int x; - y &= 7; - ++pass; - for (x=0; x<8; ++x) if (adam7[y][x] == pass) - return 1; - - return 0; -} - -static int -png_col_in_interlace_pass(png_uint_32 x, int pass) -{ - /* Is column 'x' in pass 'pass'? */ - int y; - x &= 7; - ++pass; - for (y=0; y<8; ++y) if (adam7[y][x] == pass) - return 1; - - return 0; -} - -static png_uint_32 -png_pass_rows(png_uint_32 height, int pass) -{ - png_uint_32 tiles = height>>3; - png_uint_32 rows = 0; - unsigned int x, y; - - height &= 7; - ++pass; - for (y=0; y<8; ++y) for (x=0; x<8; ++x) if (adam7[y][x] == pass) - { - rows += tiles; - if (y < height) ++rows; - break; /* i.e. break the 'x', column, loop. */ - } - - return rows; -} - -static png_uint_32 -png_pass_cols(png_uint_32 width, int pass) -{ - png_uint_32 tiles = width>>3; - png_uint_32 cols = 0; - unsigned int x, y; - - width &= 7; - ++pass; - for (x=0; x<8; ++x) for (y=0; y<8; ++y) if (adam7[y][x] == pass) - { - cols += tiles; - if (x < width) ++cols; - break; /* i.e. break the 'y', row, loop. */ - } - - return cols; -} - -static void -perform_interlace_macro_validation(void) -{ - /* The macros to validate, first those that depend only on pass: - * - * PNG_PASS_START_ROW(pass) - * PNG_PASS_START_COL(pass) - * PNG_PASS_ROW_SHIFT(pass) - * PNG_PASS_COL_SHIFT(pass) - */ - int pass; - - for (pass=0; pass<7; ++pass) - { - png_uint_32 m, f, v; - - m = PNG_PASS_START_ROW(pass); - f = png_pass_start_row(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_START_ROW(%d) = %u != %x\n", pass, m, f); - exit(1); - } - - m = PNG_PASS_START_COL(pass); - f = png_pass_start_col(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_START_COL(%d) = %u != %x\n", pass, m, f); - exit(1); - } - - m = PNG_PASS_ROW_SHIFT(pass); - f = png_pass_row_shift(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_ROW_SHIFT(%d) = %u != %x\n", pass, m, f); - exit(1); - } - - m = PNG_PASS_COL_SHIFT(pass); - f = png_pass_col_shift(pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_COL_SHIFT(%d) = %u != %x\n", pass, m, f); - exit(1); - } - - /* Macros that depend on the image or sub-image height too: - * - * PNG_PASS_ROWS(height, pass) - * PNG_PASS_COLS(width, pass) - * PNG_ROW_FROM_PASS_ROW(yIn, pass) - * PNG_COL_FROM_PASS_COL(xIn, pass) - * PNG_ROW_IN_INTERLACE_PASS(y, pass) - * PNG_COL_IN_INTERLACE_PASS(x, pass) - */ - for (v=0;;) - { - /* First the base 0 stuff: */ - m = PNG_ROW_FROM_PASS_ROW(v, pass); - f = png_row_from_pass_row(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_ROW_FROM_PASS_ROW(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(1); - } - - m = PNG_COL_FROM_PASS_COL(v, pass); - f = png_col_from_pass_col(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_COL_FROM_PASS_COL(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(1); - } - - m = PNG_ROW_IN_INTERLACE_PASS(v, pass); - f = png_row_in_interlace_pass(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_ROW_IN_INTERLACE_PASS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(1); - } - - m = PNG_COL_IN_INTERLACE_PASS(v, pass); - f = png_col_in_interlace_pass(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_COL_IN_INTERLACE_PASS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(1); - } - - /* Then the base 1 stuff: */ - ++v; - m = PNG_PASS_ROWS(v, pass); - f = png_pass_rows(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_ROWS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(1); - } - - m = PNG_PASS_COLS(v, pass); - f = png_pass_cols(v, pass); - if (m != f) - { - fprintf(stderr, "PNG_PASS_COLS(%u, %d) = %u != %x\n", - v, pass, m, f); - exit(1); - } - - /* Move to the next v - the stepping algorithm starts skipping - * values above 1024. - */ - if (v > 1024) - { - if (v == PNG_UINT_31_MAX) - break; - - v = (v << 1) ^ v; - if (v >= PNG_UINT_31_MAX) - v = PNG_UINT_31_MAX-1; - } - } - } -} - -/* main program */ -int main(int argc, PNG_CONST char **argv) -{ - volatile int summary = 1; /* Print the error summary at the end */ - volatile int memstats = 0; /* Print memory statistics at the end */ - - /* Create the given output file on success: */ - PNG_CONST char *volatile touch = NULL; - - /* This is an array of standard gamma values (believe it or not I've seen - * every one of these mentioned somewhere.) - * - * In the following list the most useful values are first! - */ - static double - gammas[]={2.2, 1.0, 2.2/1.45, 1.8, 1.5, 2.4, 2.5, 2.62, 2.9}; - - /* This records the command and arguments: */ - size_t cp = 0; - char command[1024]; - - png_modifier pm; - context(&pm.this, fault); - - modifier_init(&pm); - - /* Preallocate the image buffer, because we know how big it needs to be, - * note that, for testing purposes, it is deliberately mis-aligned by tag - * bytes either side. All rows have an additional five bytes of padding for - * overwrite checking. - */ - store_ensure_image(&pm.this, NULL, 2, TRANSFORM_ROWMAX, TRANSFORM_HEIGHTMAX); - - /* Don't give argv[0], it's normally some horrible libtool string: */ - cp = safecat(command, sizeof command, cp, "pngvalid"); - - /* Default to error on warning: */ - pm.this.treat_warnings_as_errors = 1; - - /* Store the test gammas */ - pm.gammas = gammas; - pm.ngammas = 0; /* default to off */ - pm.sbitlow = 8U; /* because libpng doesn't do sBIT below 8! */ - /* The following allows results to pass if they correspond to anything in the - * transformed range [input-.5,input+.5]; this is is required because of the - * way libpng treates the 16_TO_8 flag when building the gamma tables. - * - * TODO: review this - */ - pm.use_input_precision_16to8 = 1U; - - /* Some default values (set the behavior for 'make check' here). - * These values simply control the maximum error permitted in the gamma - * transformations. The practial limits for human perception are described - * below (the setting for maxpc16), however for 8 bit encodings it isn't - * possible to meet the accepted capabilities of human vision - i.e. 8 bit - * images can never be good enough, regardless of encoding. - */ - pm.maxout8 = .1; /* Arithmetic error in *encoded* value */ - pm.maxabs8 = .00005; /* 1/20000 */ - pm.maxcalc8 = .004; /* +/-1 in 8 bits for compose errors */ - pm.maxpc8 = .499; /* I.e., .499% fractional error */ - pm.maxout16 = .499; /* Error in *encoded* value */ - pm.maxabs16 = .00005;/* 1/20000 */ - pm.maxcalc16 =.000015;/* +/-1 in 16 bits for compose errors */ - - /* NOTE: this is a reasonable perceptual limit. We assume that humans can - * perceive light level differences of 1% over a 100:1 range, so we need to - * maintain 1 in 10000 accuracy (in linear light space), which is what the - * following guarantees. It also allows significantly higher errors at - * higher 16 bit values, which is important for performance. The actual - * maximum 16 bit error is about +/-1.9 in the fixed point implementation but - * this is only allowed for values >38149 by the following: - */ - pm.maxpc16 = .005; /* I.e., 1/200% - 1/20000 */ - - /* Now parse the command line options. */ - while (--argc >= 1) - { - int catmore = 0; /* Set if the argument has an argument. */ - - /* Record each argument for posterity: */ - cp = safecat(command, sizeof command, cp, " "); - cp = safecat(command, sizeof command, cp, *++argv); - - if (strcmp(*argv, "-v") == 0) - pm.this.verbose = 1; - - else if (strcmp(*argv, "-l") == 0) - pm.log = 1; - - else if (strcmp(*argv, "-q") == 0) - summary = pm.this.verbose = pm.log = 0; - - else if (strcmp(*argv, "-w") == 0) - pm.this.treat_warnings_as_errors = 0; - - else if (strcmp(*argv, "--speed") == 0) - pm.this.speed = 1, pm.ngammas = (sizeof gammas)/(sizeof gammas[0]), - pm.test_standard = 0, summary = 0; - - else if (strcmp(*argv, "--memory") == 0) - memstats = 1; - - else if (strcmp(*argv, "--size") == 0) - pm.test_size = 1; - - else if (strcmp(*argv, "--nosize") == 0) - pm.test_size = 0; - - else if (strcmp(*argv, "--standard") == 0) - pm.test_standard = 1; - - else if (strcmp(*argv, "--nostandard") == 0) - pm.test_standard = 0; - - else if (strcmp(*argv, "--transform") == 0) - pm.test_transform = 1; - - else if (strcmp(*argv, "--notransform") == 0) - pm.test_transform = 0; - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - else if (strncmp(*argv, "--transform-disable=", - sizeof "--transform-disable") == 0) - { - pm.test_transform = 1; - transform_disable(*argv + sizeof "--transform-disable"); - } - - else if (strncmp(*argv, "--transform-enable=", - sizeof "--transform-enable") == 0) - { - pm.test_transform = 1; - transform_enable(*argv + sizeof "--transform-enable"); - } -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - - else if (strcmp(*argv, "--gamma") == 0) - { - /* Just do two gamma tests here (2.2 and linear) for speed: */ - pm.ngammas = 2U; - pm.test_gamma_threshold = 1; - pm.test_gamma_transform = 1; - pm.test_gamma_sbit = 1; - pm.test_gamma_scale16 = 1; - pm.test_gamma_background = 1; - pm.test_gamma_alpha_mode = 1; - } - - else if (strcmp(*argv, "--nogamma") == 0) - pm.ngammas = 0; - - else if (strcmp(*argv, "--gamma-threshold") == 0) - pm.ngammas = 2U, pm.test_gamma_threshold = 1; - - else if (strcmp(*argv, "--nogamma-threshold") == 0) - pm.test_gamma_threshold = 0; - - else if (strcmp(*argv, "--gamma-transform") == 0) - pm.ngammas = 2U, pm.test_gamma_transform = 1; - - else if (strcmp(*argv, "--nogamma-transform") == 0) - pm.test_gamma_transform = 0; - - else if (strcmp(*argv, "--gamma-sbit") == 0) - pm.ngammas = 2U, pm.test_gamma_sbit = 1; - - else if (strcmp(*argv, "--nogamma-sbit") == 0) - pm.test_gamma_sbit = 0; - - else if (strcmp(*argv, "--gamma-16-to-8") == 0) - pm.ngammas = 2U, pm.test_gamma_scale16 = 1; - - else if (strcmp(*argv, "--nogamma-16-to-8") == 0) - pm.test_gamma_scale16 = 0; - - else if (strcmp(*argv, "--gamma-background") == 0) - pm.ngammas = 2U, pm.test_gamma_background = 1; - - else if (strcmp(*argv, "--nogamma-background") == 0) - pm.test_gamma_background = 0; - - else if (strcmp(*argv, "--gamma-alpha-mode") == 0) - pm.ngammas = 2U, pm.test_gamma_alpha_mode = 1; - - else if (strcmp(*argv, "--nogamma-alpha-mode") == 0) - pm.test_gamma_alpha_mode = 0; - - else if (strcmp(*argv, "--expand16") == 0) - pm.test_gamma_expand16 = 1; - - else if (strcmp(*argv, "--noexpand16") == 0) - pm.test_gamma_expand16 = 0; - - else if (strcmp(*argv, "--more-gammas") == 0) - pm.ngammas = 3U; - - else if (strcmp(*argv, "--all-gammas") == 0) - pm.ngammas = (sizeof gammas)/(sizeof gammas[0]); - - else if (strcmp(*argv, "--progressive-read") == 0) - pm.this.progressive = 1; - - else if (strcmp(*argv, "--interlace") == 0) - pm.interlace_type = PNG_INTERLACE_ADAM7; - - else if (strcmp(*argv, "--use-input-precision") == 0) - pm.use_input_precision = 1; - - else if (strcmp(*argv, "--calculations-use-input-precision") == 0) - pm.calculations_use_input_precision = 1; - - else if (strcmp(*argv, "--assume-16-bit-calculations") == 0) - pm.assume_16_bit_calculations = 1; - - else if (strcmp(*argv, "--calculations-follow-bit-depth") == 0) - pm.calculations_use_input_precision = - pm.assume_16_bit_calculations = 0; - - else if (argc > 1 && strcmp(*argv, "--sbitlow") == 0) - --argc, pm.sbitlow = (png_byte)atoi(*++argv), catmore = 1; - - else if (argc > 1 && strcmp(*argv, "--touch") == 0) - --argc, touch = *++argv, catmore = 1; - - else if (argc > 1 && strncmp(*argv, "--max", 5) == 0) - { - --argc; - - if (strcmp(5+*argv, "abs8") == 0) - pm.maxabs8 = atof(*++argv); - - else if (strcmp(5+*argv, "abs16") == 0) - pm.maxabs16 = atof(*++argv); - - else if (strcmp(5+*argv, "calc8") == 0) - pm.maxcalc8 = atof(*++argv); - - else if (strcmp(5+*argv, "calc16") == 0) - pm.maxcalc16 = atof(*++argv); - - else if (strcmp(5+*argv, "out8") == 0) - pm.maxout8 = atof(*++argv); - - else if (strcmp(5+*argv, "out16") == 0) - pm.maxout16 = atof(*++argv); - - else if (strcmp(5+*argv, "pc8") == 0) - pm.maxpc8 = atof(*++argv); - - else if (strcmp(5+*argv, "pc16") == 0) - pm.maxpc16 = atof(*++argv); - - else - { - fprintf(stderr, "pngvalid: %s: unknown 'max' option\n", *argv); - exit(1); - } - - catmore = 1; - } - - else if (strcmp(*argv, "--log8") == 0) - --argc, pm.log8 = atof(*++argv), catmore = 1; - - else if (strcmp(*argv, "--log16") == 0) - --argc, pm.log16 = atof(*++argv), catmore = 1; - - else - { - fprintf(stderr, "pngvalid: %s: unknown argument\n", *argv); - exit(1); - } - - if (catmore) /* consumed an extra *argv */ - { - cp = safecat(command, sizeof command, cp, " "); - cp = safecat(command, sizeof command, cp, *argv); - } - } - - /* If pngvalid is run with no arguments default to a reasonable set of the - * tests. - */ - if (pm.test_standard == 0 && pm.test_size == 0 && pm.test_transform == 0 && - pm.ngammas == 0) - { - /* Make this do all the tests done in the test shell scripts with the same - * parameters, where possible. The limitation is that all the progressive - * read and interlace stuff has to be done in separate runs, so only the - * basic 'standard' and 'size' tests are done. - */ - pm.test_standard = 1; - pm.test_size = 1; - pm.test_transform = 1; - pm.ngammas = 2U; - } - - if (pm.ngammas > 0 && - pm.test_gamma_threshold == 0 && pm.test_gamma_transform == 0 && - pm.test_gamma_sbit == 0 && pm.test_gamma_scale16 == 0 && - pm.test_gamma_background == 0 && pm.test_gamma_alpha_mode == 0) - { - pm.test_gamma_threshold = 1; - pm.test_gamma_transform = 1; - pm.test_gamma_sbit = 1; - pm.test_gamma_scale16 = 1; - pm.test_gamma_background = 1; - pm.test_gamma_alpha_mode = 1; - } - - else if (pm.ngammas == 0) - { - /* Nothing to test so turn everything off: */ - pm.test_gamma_threshold = 0; - pm.test_gamma_transform = 0; - pm.test_gamma_sbit = 0; - pm.test_gamma_scale16 = 0; - pm.test_gamma_background = 0; - pm.test_gamma_alpha_mode = 0; - } - - Try - { - /* Make useful base images */ - make_transform_images(&pm.this); - - /* Perform the standard and gamma tests. */ - if (pm.test_standard) - { - perform_interlace_macro_validation(); - perform_formatting_test(&pm.this); - perform_standard_test(&pm); - perform_error_test(&pm); - } - - /* Various oddly sized images: */ - if (pm.test_size) - { - make_size_images(&pm.this); - perform_size_test(&pm); - } - -#ifdef PNG_READ_TRANSFORMS_SUPPORTED - /* Combinatorial transforms: */ - if (pm.test_transform) - perform_transform_test(&pm); -#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ - -#ifdef PNG_READ_GAMMA_SUPPORTED - if (pm.ngammas > 0) - perform_gamma_test(&pm, summary); -#endif - } - - Catch(fault) - { - fprintf(stderr, "pngvalid: test aborted (probably failed in cleanup)\n"); - if (!pm.this.verbose) - { - if (pm.this.error[0] != 0) - fprintf(stderr, "pngvalid: first error: %s\n", pm.this.error); - - fprintf(stderr, "pngvalid: run with -v to see what happened\n"); - } - exit(1); - } - - if (summary) - { - printf("%s: %s (%s point arithmetic)\n", - (pm.this.nerrors || (pm.this.treat_warnings_as_errors && - pm.this.nwarnings)) ? "FAIL" : "PASS", - command, -#if defined(PNG_FLOATING_ARITHMETIC_SUPPORTED) || PNG_LIBPNG_VER < 10500 - "floating" -#else - "fixed" -#endif - ); - } - - if (memstats) - { - printf("Allocated memory statistics (in bytes):\n" - "\tread %lu maximum single, %lu peak, %lu total\n" - "\twrite %lu maximum single, %lu peak, %lu total\n", - (unsigned long)pm.this.read_memory_pool.max_max, - (unsigned long)pm.this.read_memory_pool.max_limit, - (unsigned long)pm.this.read_memory_pool.max_total, - (unsigned long)pm.this.write_memory_pool.max_max, - (unsigned long)pm.this.write_memory_pool.max_limit, - (unsigned long)pm.this.write_memory_pool.max_total); - } - - /* Do this here to provoke memory corruption errors in memory not directly - * allocated by libpng - not a complete test, but better than nothing. - */ - store_delete(&pm.this); - - /* Error exit if there are any errors, and maybe if there are any - * warnings. - */ - if (pm.this.nerrors || (pm.this.treat_warnings_as_errors && - pm.this.nwarnings)) - { - if (!pm.this.verbose) - fprintf(stderr, "pngvalid: %s\n", pm.this.error); - - fprintf(stderr, "pngvalid: %d errors, %d warnings\n", pm.this.nerrors, - pm.this.nwarnings); - - exit(1); - } - - /* Success case. */ - if (touch != NULL) - { - FILE *fsuccess = fopen(touch, "wt"); - - if (fsuccess != NULL) - { - int error = 0; - fprintf(fsuccess, "PNG validation succeeded\n"); - fflush(fsuccess); - error = ferror(fsuccess); - - if (fclose(fsuccess) || error) - { - fprintf(stderr, "%s: write failed\n", touch); - exit(1); - } - } - } - - return 0; -} diff --git a/l4/pkg/libpng/lib/dist/scripts/list b/l4/pkg/libpng/lib/dist/scripts/list deleted file mode 100644 index 3a2c56330..000000000 --- a/l4/pkg/libpng/lib/dist/scripts/list +++ /dev/null @@ -1,23 +0,0 @@ -vers.dfn -symbols.dfn -sym.dfn -pnglibconf.h.prebuilt -pnglibconf.dfa -options.awk -makefile.netbsd -makefile.solaris-x86 -makefile.solaris -makefile.so9 -makefile.sgi -makefile.sggcc -makefile.openbsd -makefile.sco -makefile.linux -makefile.hpux -makefile.hpgcc -makefile.elf -makefile.dec -makefile.beos -makefile.64sunu -makefile.32sunu -def.dfn diff --git a/l4/pkg/libpng/lib/dist/scripts/makefile.watcom b/l4/pkg/libpng/lib/dist/scripts/makefile.watcom deleted file mode 100644 index 983b4e309..000000000 --- a/l4/pkg/libpng/lib/dist/scripts/makefile.watcom +++ /dev/null @@ -1,122 +0,0 @@ -# Makefile for libpng -# Watcom C/C++ 10.0 and later, 32-bit protected mode, flat memory model - -# Copyright (C) 2000, Pawel Mrochen, based on makefile.msc which is -# copyright 1995 Guy Eric Schalnat, Group 42, Inc. -# -# This code is released under the libpng license. -# For conditions of distribution and use, see the disclaimer -# and license in png.h - -# To use, do "wmake /f scripts\makefile.watcom" - - -# ---------------------- Watcom C/C++ 10.0 and later ----------------------- - -# Where the zlib library and include files are located -ZLIBLIB=..\zlib -ZLIBINC=..\zlib - -# Target OS -OS=DOS -#OS=NT - -# Target CPU -CPU=6 # Pentium Pro -#CPU=5 # Pentium - -# Calling convention -CALLING=r # registers -#CALLING=s # stack - -# Uncomment next to put error messages in a file -#ERRFILE=>>pngerrs - -# -------------------------------------------------------------------------- - - -CC=wcc386 -CFLAGS=-$(CPU)$(CALLING) -fp$(CPU) -fpi87 -oneatx -mf -bt=$(OS) -i=$(ZLIBINC) -zq -LD=wcl386 -LDFLAGS=-zq - -O=.obj - -OBJS1=png$(O) pngset$(O) pngget$(O) pngrutil$(O) pngtrans$(O) pngwutil$(O) -OBJS2=pngmem$(O) pngpread$(O) pngread$(O) pngerror$(O) pngwrite$(O) -OBJS3=pngrtran$(O) pngwtran$(O) pngrio$(O) pngwio$(O) - - -all: test - -# see scripts/pnglibconf.mak for more options -# to support watcom calling conventions it is necessary to set PNG_API_RULE to 2 -# in pnglibconf.h - copy scripts/pnglibconf.h.prebuilt, delete the first line and change -# the definition of PNG_API_RULE from 0 to 2. -# -# If you know how to do this with the Watcom build system please supply a patch -# for this makefile to the PNG implementation list. -pnglibconf.h: scripts/pnglibconf.h.prebuilt - @echo please copy scripts/pnglibconf.h.prebuilt and change PNG_API_RULE to 2 - -png$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngset$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngget$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngpread$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngerror$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngmem$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngrio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwio$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngtest$(O): png.h pngconf.h pnglibconf.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngtrans$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwrite$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwtran$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -pngwutil$(O): png.h pngconf.h pnglibconf.h pngpriv.h pngstruct.h pnginfo.h pngdebug.h - $(CC) $(CFLAGS) $*.c $(ERRFILE) - -libpng.lib: $(OBJS1) $(OBJS2) $(OBJS3) - wlib -b -c -n -q libpng.lib $(OBJS1) - wlib -b -c -q libpng.lib $(OBJS2) - wlib -b -c -q libpng.lib $(OBJS3) - -pngtest.exe: pngtest.obj libpng.lib - $(LD) $(LDFLAGS) pngtest.obj libpng.lib $(ZLIBLIB)\zlib.lib - -test: pngtest.exe .symbolic - pngtest.exe - - -# End of makefile for libpng diff --git a/l4/pkg/libstdc++-headers/include-4.1.0/Makefile b/l4/pkg/libstdc++-headers/include-4.1.0/Makefile deleted file mode 100644 index 3c58a8b04..000000000 --- a/l4/pkg/libstdc++-headers/include-4.1.0/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -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.1.0/bits/c++config.h b/l4/pkg/libstdc++-headers/include-4.1.0/bits/c++config.h deleted file mode 100644 index 33cb1c77a..000000000 --- a/l4/pkg/libstdc++-headers/include-4.1.0/bits/c++config.h +++ /dev/null @@ -1,293 +0,0 @@ -#pragma once - - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// The current version of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20090321 - -#ifdef __PIC__ -#define __GXX_WEAK__ 1 -#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 -// _GLIBCXX_VISIBILITY_ATTR -#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY default - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V))) -#else -# define _GLIBCXX_VISIBILITY_ATTR(V) -#endif - -// Macros for deprecated. -// _GLIBCXX_DEPRECATED -// _GLIBCXX_DEPRECATED_ATTR -#ifndef _GLIBCXX_DEPRECATED -# define _GLIBCXX_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__) -# define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED_ATTR -#endif - -// Macros for activating various namespace association modes. -// _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -// _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL -// _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION - -// Guide to libstdc++ namespaces. -/* - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __norm { } // __normative, __shadow, __replaced - namespace __cxx1998 { } - - namespace tr1 { } - } -*/ - -#ifdef _GLIBCXX_DEBUG -# define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1 -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1 -#endif - -// works with gcc 4.3.3 -//#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 1 - -#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0 - -// Defined if any namespace association modes are active. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \ - || _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \ - || _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION -# define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1 -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it. -// _GLIBCXX_STD -// _GLIBCXX_STD_D -// _GLIBCXX_STD_P - -// -// Macros for enclosing namespaces and possibly nested namespaces. -// _GLIBCXX_BEGIN_NAMESPACE -// _GLIBCXX_END_NAMESPACE -// _GLIBCXX_BEGIN_NESTED_NAMESPACE -// _GLIBCXX_END_NESTED_NAMESPACE -// _GLIBCXX_BEGIN_POTENTIAL_NESTED_NAMESPACE -// _GLIBCXX_END_POTENTIAL_NESTED_NAMESPACE -#ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION -# define _GLIBCXX_STD_D _GLIBCXX_STD -# define _GLIBCXX_STD_P _GLIBCXX_STD -# define _GLIBCXX_STD std -# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X) -# define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -#else - -# if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else -# define _GLIBCXX_STD_D _GLIBCXX_STD -# define _GLIBCXX_STD_P _GLIBCXX_STD -# define _GLIBCXX_STD _6 -# define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6) -# define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE -# endif - -// debug -# if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL -# define _GLIBCXX_STD_D __norm -# define _GLIBCXX_STD_P _GLIBCXX_STD -# define _GLIBCXX_STD __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -# define _GLIBCXX_EXTERN_TEMPLATE 0 -# endif - -// parallel -# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -# define _GLIBCXX_STD_D _GLIBCXX_STD -# define _GLIBCXX_STD_P __norm -# define _GLIBCXX_STD __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -# define _GLIBCXX_EXTERN_TEMPLATE 0 -# endif - -// debug + parallel -# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -# define _GLIBCXX_STD_D __norm -# define _GLIBCXX_STD_P __norm -# define _GLIBCXX_STD __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -# define _GLIBCXX_EXTERN_TEMPLATE 0 -# endif - -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using namespace associated mode which may fail \ - without inlining due to lack of weak symbols -# endif - -# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NESTED_NAMESPACE } } -#endif - -// Namespace associations for debug mode. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -namespace std -{ - namespace __norm { } - namespace __debug { } - namespace __cxx1998 { } - - using namespace __debug __attribute__ ((strong)); - using namespace __cxx1998 __attribute__ ((strong)); -} -#endif - -// Namespace associations for parallel mode. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL -namespace std -{ - namespace __norm { } - namespace __parallel { } - namespace __cxx1998 { } - - using namespace __parallel __attribute__ ((strong)); - using namespace __cxx1998 __attribute__ ((strong)); -} -#endif - -// Namespace associations for versioning mode. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION -namespace std -{ - namespace _6 { } - using namespace _6 __attribute__ ((strong)); -} - -namespace __gnu_cxx -{ - namespace _6 { } - using namespace _6 __attribute__ ((strong)); -} - -namespace std -{ - namespace tr1 - { - namespace _6 { } - using namespace _6 __attribute__ ((strong)); - } -} -#endif - -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// XXX GLIBCXX_ABI Deprecated -// Namespace associations for long double 128 mode. -_GLIBCXX_BEGIN_NAMESPACE(std) -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_LDBL_NAMESPACE } - namespace __gnu_cxx_ldbl128 { } - using namespace __gnu_cxx_ldbl128 __attribute__((__strong__)); -#else -# define _GLIBCXX_LDBL_NAMESPACE -# define _GLIBCXX_BEGIN_LDBL_NAMESPACE -# define _GLIBCXX_END_LDBL_NAMESPACE -#endif -_GLIBCXX_END_NAMESPACE - - -// Allow use of "export template." This is currently not a feature -// that g++ supports. -// #define _GLIBCXX_EXPORT_TEMPLATE 1 - -// Allow use of the GNU syntax extension, "extern template." This -// extension is fully documented in the g++ manual, but in a nutshell, -// 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. -#ifndef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE 1 -#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 - -// Macro used to indicate that the native "C" includes, when compiled -// as "C++", have declarations in namespace std and not the global -// namespace. Note, this is unrelated to possible "C" compatibility -// includes that inject C90/C99 names into the global namespace. -#if __cplusplus == 199711L -# define _GLIBCXX_NAMESPACE_GLOBAL_INJECTION 1 -#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 discovered settings follow. - - -#define _GLIBCXX_HOSTED 1 -#ifndef L4_MINIMAL_LIBC -# define _GLIBCXX__PTHREADS 1 -#endif -#define _GLIBCXX_HAVE_UNISTD_H 1 -// L4: for ARM builtins are usually linux specific functions, if at all -// available -#if defined(ARCH_x86) || defined(ARCH_amd64) -# define _GLIBCXX_ATOMIC_BUILTINS 1 -#endif - -#ifdef __USING_SJLJ_EXCEPTIONS__ -# define _GLIBCXX_SJLJ_EXCEPTIONS 1 -#endif diff --git a/l4/pkg/libstdc++-headers/include-4.3.3/Makefile b/l4/pkg/libstdc++-headers/include-4.3.3/Makefile deleted file mode 100644 index 3c58a8b04..000000000 --- a/l4/pkg/libstdc++-headers/include-4.3.3/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -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.3.3/bits/c++config.h b/l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h deleted file mode 100644 index de3492e1b..000000000 --- a/l4/pkg/libstdc++-headers/include-4.3.3/bits/c++config.h +++ /dev/null @@ -1,1400 +0,0 @@ -#pragma once - - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// The current version of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20090321 - -#ifdef __PIC__ -#define __GXX_WEAK__ 1 -#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 -// _GLIBCXX_VISIBILITY_ATTR -#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY default - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V))) -#else -# define _GLIBCXX_VISIBILITY_ATTR(V) -#endif - -// Macros for deprecated. -// _GLIBCXX_DEPRECATED -// _GLIBCXX_DEPRECATED_ATTR -#ifndef _GLIBCXX_DEPRECATED -# define _GLIBCXX_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__) -# define _GLIBCXX_DEPRECATED_ATTR __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED_ATTR -#endif - -// Macros for activating various namespace association modes. -// _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -// _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL -// _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION - -// Guide to libstdc++ namespaces. -/* - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __norm { } // __normative, __shadow, __replaced - namespace __cxx1998 { } - - namespace tr1 { } - } -*/ - -#ifdef _GLIBCXX_DEBUG -# define _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG 1 -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL 1 -#endif - -// works with gcc 4.3.3 -//#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 1 - -#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0 - -// Defined if any namespace association modes are active. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \ - || _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL \ - || _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION -# define _GLIBCXX_USE_NAMESPACE_ASSOCIATION 1 -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it. -// _GLIBCXX_STD -// _GLIBCXX_STD_D -// _GLIBCXX_STD_P - -// -// Macros for enclosing namespaces and possibly nested namespaces. -// _GLIBCXX_BEGIN_NAMESPACE -// _GLIBCXX_END_NAMESPACE -// _GLIBCXX_BEGIN_NESTED_NAMESPACE -// _GLIBCXX_END_NESTED_NAMESPACE -// _GLIBCXX_BEGIN_POTENTIAL_NESTED_NAMESPACE -// _GLIBCXX_END_POTENTIAL_NESTED_NAMESPACE -#ifndef _GLIBCXX_USE_NAMESPACE_ASSOCIATION -# define _GLIBCXX_STD_D _GLIBCXX_STD -# define _GLIBCXX_STD_P _GLIBCXX_STD -# define _GLIBCXX_STD std -# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) _GLIBCXX_BEGIN_NAMESPACE(X) -# define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -#else - -# if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION // && not anything else -# define _GLIBCXX_STD_D _GLIBCXX_STD -# define _GLIBCXX_STD_P _GLIBCXX_STD -# define _GLIBCXX_STD _6 -# define _GLIBCXX_BEGIN_NAMESPACE(X) _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, _6) -# define _GLIBCXX_END_NAMESPACE _GLIBCXX_END_NESTED_NAMESPACE -# endif - -// debug -# if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG && !_GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL -# define _GLIBCXX_STD_D __norm -# define _GLIBCXX_STD_P _GLIBCXX_STD -# define _GLIBCXX_STD __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -# define _GLIBCXX_EXTERN_TEMPLATE 0 -# endif - -// parallel -# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && !_GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -# define _GLIBCXX_STD_D _GLIBCXX_STD -# define _GLIBCXX_STD_P __norm -# define _GLIBCXX_STD __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -# define _GLIBCXX_EXTERN_TEMPLATE 0 -# endif - -// debug + parallel -# if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL && _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -# define _GLIBCXX_STD_D __norm -# define _GLIBCXX_STD_P __norm -# define _GLIBCXX_STD __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NAMESPACE } -# define _GLIBCXX_EXTERN_TEMPLATE 0 -# endif - -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using namespace associated mode which may fail \ - without inlining due to lack of weak symbols -# endif - -# define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X, Y) namespace X { namespace Y _GLIBCXX_VISIBILITY_ATTR(default) { -# define _GLIBCXX_END_NESTED_NAMESPACE } } -#endif - -// Namespace associations for debug mode. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG -namespace std -{ - namespace __norm { } - namespace __debug { } - namespace __cxx1998 { } - - using namespace __debug __attribute__ ((strong)); - using namespace __cxx1998 __attribute__ ((strong)); -} -#endif - -// Namespace associations for parallel mode. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_PARALLEL -namespace std -{ - namespace __norm { } - namespace __parallel { } - namespace __cxx1998 { } - - using namespace __parallel __attribute__ ((strong)); - using namespace __cxx1998 __attribute__ ((strong)); -} -#endif - -// Namespace associations for versioning mode. -#if _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION -namespace std -{ - namespace _6 { } - using namespace _6 __attribute__ ((strong)); -} - -namespace __gnu_cxx -{ - namespace _6 { } - using namespace _6 __attribute__ ((strong)); -} - -namespace std -{ - namespace tr1 - { - namespace _6 { } - using namespace _6 __attribute__ ((strong)); - } -} -#endif - -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// XXX GLIBCXX_ABI Deprecated -// Namespace associations for long double 128 mode. -_GLIBCXX_BEGIN_NAMESPACE(std) -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_LDBL_NAMESPACE } - namespace __gnu_cxx_ldbl128 { } - using namespace __gnu_cxx_ldbl128 __attribute__((__strong__)); -#else -# define _GLIBCXX_LDBL_NAMESPACE -# define _GLIBCXX_BEGIN_LDBL_NAMESPACE -# define _GLIBCXX_END_LDBL_NAMESPACE -#endif -_GLIBCXX_END_NAMESPACE - - -// Allow use of "export template." This is currently not a feature -// that g++ supports. -// #define _GLIBCXX_EXPORT_TEMPLATE 1 - -// Allow use of the GNU syntax extension, "extern template." This -// extension is fully documented in the g++ manual, but in a nutshell, -// 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. -#ifndef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE 1 -#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 - -// Macro used to indicate that the native "C" includes, when compiled -// as "C++", have declarations in namespace std and not the global -// namespace. Note, this is unrelated to possible "C" compatibility -// includes that inject C90/C99 names into the global namespace. -#if __cplusplus == 199711L -# define _GLIBCXX_NAMESPACE_GLOBAL_INJECTION 1 -#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 - - - -#define _GLIBCXX_HOSTED 1 -#ifndef L4_MINIMAL_LIBC -# define _GLIBCXX__PTHREADS 1 -#endif -#define _GLIBCXX_HAVE_UNISTD_H 1 -// L4: for ARM builtins are usually linux specific functions, if at all -// available -#if defined(ARCH_x86) || defined(ARCH_amd64) -# define _GLIBCXX_ATOMIC_BUILTINS 1 -#endif - -#ifdef __USING_SJLJ_EXCEPTIONS__ -# define _GLIBCXX_SJLJ_EXCEPTIONS 1 -#endif - -// End of prewritten config; the discovered settings follow. -/* 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 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 `copysign' function. */ -#define _GLIBCXX_HAVE_COPYSIGN 1 - -/* Define to 1 if you have the `copysignf' function. */ -#define _GLIBCXX_HAVE_COPYSIGNF 1 - -/* Define to 1 if you have the `copysignl' function. */ -#define _GLIBCXX_HAVE_COPYSIGNL 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 to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_ENDIAN_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 to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_GCONF_H */ - -/* Define to 1 if you have the header file. */ -//#define _GLIBCXX_HAVE_GCONV_H 1 - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define to 1 if you have the `getpagesize' function. */ -#define _GLIBCXX_HAVE_GETPAGESIZE 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 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 - -/* Define to 1 if you have the `m' library (-lm). */ -#define _GLIBCXX_HAVE_LIBM 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 a working `mmap' system call. */ -#define _GLIBCXX_HAVE_MMAP 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 if sigsetjmp is available. */ -#define _GLIBCXX_HAVE_SIGSETJMP 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 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. */ -/* #undef _GLIBCXX_HAVE_SYS_PARAM_H */ - -/* 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. */ -//#define _GLIBCXX_HAVE_TLS 1 - -/* 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 -#endif - -/* Defined if wcstof exists. */ -//#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -//#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* 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 `_copysign' function. */ -/* #undef _GLIBCXX_HAVE__COPYSIGN */ - -/* Define to 1 if you have the `_copysignl' function. */ -/* #undef _GLIBCXX_HAVE__COPYSIGNL */ - -/* 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 if the compiler/host combination has __builtin_abs. */ -#define _GLIBCXX_HAVE___BUILTIN_ABS 1 - -/* Define if the compiler/host combination has __builtin_cos. */ -#define _GLIBCXX_HAVE___BUILTIN_COS 1 - -/* Define if the compiler/host combination has __builtin_cosf. */ -#define _GLIBCXX_HAVE___BUILTIN_COSF 1 - -/* Define if the compiler/host combination has __builtin_cosl. */ -#define _GLIBCXX_HAVE___BUILTIN_COSL 1 - -/* Define if the compiler/host combination has __builtin_fabs. */ -#define _GLIBCXX_HAVE___BUILTIN_FABS 1 - -/* Define if the compiler/host combination has __builtin_fabsf. */ -#define _GLIBCXX_HAVE___BUILTIN_FABSF 1 - -/* Define if the compiler/host combination has __builtin_fabsl. */ -#define _GLIBCXX_HAVE___BUILTIN_FABSL 1 - -/* Define if the compiler/host combination has __builtin_labs. */ -#define _GLIBCXX_HAVE___BUILTIN_LABS 1 - -/* Define if the compiler/host combination has __builtin_sin. */ -#define _GLIBCXX_HAVE___BUILTIN_SIN 1 - -/* Define if the compiler/host combination has __builtin_sinf. */ -#define _GLIBCXX_HAVE___BUILTIN_SINF 1 - -/* Define if the compiler/host combination has __builtin_sinl. */ -#define _GLIBCXX_HAVE___BUILTIN_SINL 1 - -/* Define if the compiler/host combination has __builtin_sqrt. */ -#define _GLIBCXX_HAVE___BUILTIN_SQRT 1 - -/* Define if the compiler/host combination has __builtin_sqrtf. */ -#define _GLIBCXX_HAVE___BUILTIN_SQRTF 1 - -/* Define if the compiler/host combination has __builtin_sqrtl. */ -#define _GLIBCXX_HAVE___BUILTIN_SQRTL 1 - -/* Define to 1 if you have the `__signbit' function. */ -#define _GLIBCXX_HAVE___SIGNBIT 1 - -/* Define to 1 if you have the `__signbitf' function. */ -#define _GLIBCXX_HAVE___SIGNBITF 1 - -/* Define to 1 if you have the `__signbitl' function. */ -#define _GLIBCXX_HAVE___SIGNBITL 1 - -/* 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 version of this package. */ -#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Version number of package */ -/* #undef _GLIBCXX_VERSION */ - -/* Define if builtin atomic operations are supported on this host. */ -//#define _GLIBCXX_ATOMIC_BUILTINS 1 - -/* 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 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 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 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 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 - -#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 - -/* 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 - -/* 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__COPYSIGN) && ! defined (_GLIBCXX_HAVE_COPYSIGN) -# define _GLIBCXX_HAVE_COPYSIGN 1 -# define copysign _copysign -#endif - -#if defined (_GLIBCXX_HAVE__COPYSIGNL) && ! defined (_GLIBCXX_HAVE_COPYSIGNL) -# define _GLIBCXX_HAVE_COPYSIGNL 1 -# define copysignl _copysignl -#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 diff --git a/l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 b/l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 deleted file mode 100644 index 07cdab4b0..000000000 --- a/l4/pkg/libstdc++-v3/build/src/Makefile-4.1.0 +++ /dev/null @@ -1,6 +0,0 @@ - -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) - $(LN) -sf $< $@ diff --git a/l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 b/l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 deleted file mode 100644 index 3c0ee23d1..000000000 --- a/l4/pkg/libstdc++-v3/build/src/Makefile-4.3.3 +++ /dev/null @@ -1,16 +0,0 @@ - -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 -SRC_CC_sparc += 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/gcc-4.1.0/coretypes.h b/l4/pkg/libstdc++-v3/contrib/gcc-4.1.0/coretypes.h deleted file mode 100644 index 935f66021..000000000 --- a/l4/pkg/libstdc++-v3/contrib/gcc-4.1.0/coretypes.h +++ /dev/null @@ -1,76 +0,0 @@ -/* GCC core type declarations. - Copyright (C) 2002, 2004 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 2, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING. If not, write to the Free -Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA. */ - -/* 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 - -#define GTY(x) /* nothing - marker for gengtype */ - -#ifndef USED_FOR_TARGET - -struct rtx_def; -typedef struct rtx_def *rtx; -struct rtvec_def; -typedef struct rtvec_def *rtvec; -union tree_node; -typedef union tree_node *tree; - -/* 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 typedef remains part of cpplib.h. */ - -struct cpp_reader; - -/* 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_GLOBAL_DYNAMIC, - TLS_MODEL_LOCAL_DYNAMIC, - TLS_MODEL_INITIAL_EXEC, - TLS_MODEL_LOCAL_EXEC -}; - -#else - -struct _dont_use_rtx_here_; -struct _dont_use_rtvec_here_; -union _dont_use_tree_here_; -#define rtx struct _dont_use_rtx_here_ * -#define rtvec struct _dont_use_rtvec_here * -#define tree union _dont_use_tree_here_ * - -#endif - -#endif /* coretypes.h */ - diff --git a/l4/pkg/libstdc++-v3/contrib/gcc-4.1.0/unwind-pe.h b/l4/pkg/libstdc++-v3/contrib/gcc-4.1.0/unwind-pe.h deleted file mode 100644 index 8cd3fcdfb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/gcc-4.1.0/unwind-pe.h +++ /dev/null @@ -1,291 +0,0 @@ -/* Exception handling and frame unwind runtime interface routines. - Copyright (C) 2001, 2002, 2003, 2004 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 2, or (at your option) - any later version. - - In addition to the permissions in the GNU General Public License, the - Free Software Foundation gives you unlimited permission to link the - compiled version of this file into combinations with other programs, - and to distribute those combinations without any restriction coming - from the use of this file. (The General Public License restrictions - do apply in other respects; for example, they cover modification of - the file, and distribution when not linked into a combined - executable.) - - GCC is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with GCC; see the file COPYING. If not, write to the Free - Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* @@@ 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) -{ - 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, _Unwind_Word *val) -{ - unsigned int shift = 0; - unsigned char byte; - _Unwind_Word result; - - result = 0; - do - { - byte = *p++; - result |= ((_Unwind_Word)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, _Unwind_Sword *val) -{ - unsigned int shift = 0; - unsigned char byte; - _Unwind_Word result; - - result = 0; - do - { - byte = *p++; - result |= ((_Unwind_Word)byte & 0x7f) << shift; - shift += 7; - } - while (byte & 0x80); - - /* Sign-extend a negative value. */ - if (shift < 8 * sizeof(result) && (byte & 0x40) != 0) - result |= -(((_Unwind_Word)1L) << shift); - - *val = (_Unwind_Sword) 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: - { - _Unwind_Word tmp; - p = read_uleb128 (p, &tmp); - result = (_Unwind_Internal_Ptr) tmp; - } - break; - - case DW_EH_PE_sleb128: - { - _Unwind_Sword 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/gcc-4.3.3/coretypes.h b/l4/pkg/libstdc++-v3/contrib/gcc-4.3.3/coretypes.h deleted file mode 100644 index 03eb0decc..000000000 --- a/l4/pkg/libstdc++-v3/contrib/gcc-4.3.3/coretypes.h +++ /dev/null @@ -1,93 +0,0 @@ -/* GCC core type declarations. - Copyright (C) 2002, 2004, 2007 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. - -You should have received a copy of the GNU General Public License -along with GCC; see the file COPYING3. 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 - -#define GTY(x) /* nothing - marker for gengtype */ - -#ifndef USED_FOR_TARGET - -struct bitmap_head_def; -typedef struct bitmap_head_def *bitmap; -typedef const struct bitmap_head_def *const_bitmap; -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; -typedef const union tree_node *const_tree; -union section; -typedef union section section; - -/* 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 typedef remains part of cpplib.h. */ - -struct cpp_reader; - -/* 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_GLOBAL_DYNAMIC, - TLS_MODEL_LOCAL_DYNAMIC, - TLS_MODEL_INITIAL_EXEC, - TLS_MODEL_LOCAL_EXEC -}; - -#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.3.3/unwind-pe.h b/l4/pkg/libstdc++-v3/contrib/gcc-4.3.3/unwind-pe.h deleted file mode 100644 index 4171d3f82..000000000 --- a/l4/pkg/libstdc++-v3/contrib/gcc-4.3.3/unwind-pe.h +++ /dev/null @@ -1,305 +0,0 @@ -/* Exception handling and frame unwind runtime interface routines. - Copyright (C) 2001, 2002, 2003, 2004 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 2, or (at your option) - any later version. - - In addition to the permissions in the GNU General Public License, the - Free Software Foundation gives you unlimited permission to link the - compiled version of this file into combinations with other programs, - and to distribute those combinations without any restriction coming - from the use of this file. (The General Public License restrictions - do apply in other respects; for example, they cover modification of - the file, and distribution when not linked into a combined - executable.) - - GCC is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public - License for more details. - - You should have received a copy of the GNU General Public License - along with GCC; see the file COPYING. If not, write to the Free - Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ - -/* @@@ 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 - -#ifndef __NOT_FOR_L4__ -#if !defined(_uleb128_t) -#if __SIZEOF_LONG__ >= __SIZEOF_POINTER__ - typedef long _sleb128_t; - typedef unsigned long _uleb128_t; -#elif __SIZEOF_LONG_LONG__ >= __SIZEOF_POINTER__ - typedef long long _sleb128_t; - typedef unsigned long long _uleb128_t; -#else -# error "What type shall we use for _sleb128_t?" -#endif -#endif -#endif - -/* 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) -{ - 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.1.0/ChangeLog b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog deleted file mode 100644 index b63bbaeb2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog +++ /dev/null @@ -1,5101 +0,0 @@ -2006-02-28 Release Manager - - * GCC 4.1.0 released. - -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-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-01 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-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 - - * docs/html/ext/tr1.html: Add note. - * docs/html/faq/index.html: Fix link to tr1.html text; fix - formatting. - * docs/html/faq/index.txt: Update. - -2006-01-25 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 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-19 Benjamin Kosnik - - * acinclude.m4: Use -Wl,-z,relro if possible. - * configure: Regenerate. - -2006-01-19 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. - - * include/ext/vstring_util.h (struct __alloc_swap<>): Add, swaps - allocators, optimized to nothing in case they are empty. - (__vstring_utility<>::_Alloc_hider): Clean-up. - * include/ext/rc_string_base.h (__rc_string_base<>::_M_swap): Call - __alloc_swap<>::_S_do_it. - * include/ext/sso_string_base.h (__sso_string_base<>::_M_swap): Same. - -2006-01-18 Paul Brook - - * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Use std::abort. - -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-12 Jan Beulich - - * crossconfig.m4: Add AC_DEFINE-s for HAVE_HYPOT, HAVE_ISINF, and - HAVE_ISNAN for *-*-netware*. - * configure: Refresh. - -2006-01-10 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. - -2006-01-10 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. - -2006-01-09 Benjamin Kosnik - - PR libstdc++/25472 - * include/c_std/std_cstdlib.h: Fix for freestanding. - -2006-01-09 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. - -2006-01-08 Paolo Carlini - - * testsuite/testsuite_hooks.h (test_tm): New. - * testsuite/testsuite_hooks.cc (test_tm)): 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-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. - -2005-12-28 Paolo Carlini - - * 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 - - * 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_allocator.h (check_deallocate_null): Return - true. - * 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/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-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-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-08 Richard Guenther - - Backport from mainline - 2005-11-23 Paolo Carlini - - PR libstdc++/24975 (basic_string) - * include/bits/basic_string.h (_Rep::_S_empty_rep): Avoid - strict-aliasing warnings. - -2005-12-07 Paolo Carlini - - * docs/html/configopts.html ([--enable-libstdcxx-allocator]): - Mention the SGI pooled allocator. - -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-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 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.1.0/ChangeLog-1998 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-1998 deleted file mode 100644 index 2549db484..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-1998 +++ /dev/null @@ -1,942 +0,0 @@ -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.1.0/ChangeLog-1999 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-1999 deleted file mode 100644 index b0334dcd4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-1999 +++ /dev/null @@ -1,3545 +0,0 @@ -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. Loewis - - * 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.1.0/ChangeLog-2000 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2000 deleted file mode 100644 index 98b74025a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2000 +++ /dev/null @@ -1,5644 +0,0 @@ -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.1.0/ChangeLog-2001 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2001 deleted file mode 100644 index e7d658feb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2001 +++ /dev/null @@ -1,6067 +0,0 @@ -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.1.0/ChangeLog-2002 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2002
deleted file mode 100644
index 337056ec8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2002
+++ /dev/null
@@ -1,5590 +0,0 @@
-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.1.0/ChangeLog-2003 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2003
deleted file mode 100644
index 4a976be6c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2003
+++ /dev/null
@@ -1,8619 +0,0 @@
-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. Loewis  
-
-	* 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.1.0/ChangeLog-2004 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2004
deleted file mode 100644
index 9b58b9ed9..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/ChangeLog-2004
+++ /dev/null
@@ -1,6707 +0,0 @@
-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.1.0/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/Makefile.am
deleted file mode 100644
index 031f34a35..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/Makefile.am
+++ /dev/null
@@ -1,112 +0,0 @@
-## Makefile for the toplevel directory of the GNU C++ Standard library.
-##
-## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-## 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
-
-if GLIBCXX_HOSTED
-  hosted_source = libmath src po testsuite
-endif
-## Keep this list sync'd with acinclude.m4:GLIBCXX_CONFIGURE.
-SUBDIRS = include libsupc++ $(hosted_source)
-
-ACLOCAL_AMFLAGS = -I . -I .. -I ../config
-
-# These rules are messy, but are hella worth it.
-doxygen:
-	-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-	  builddir=`${PWD_COMMAND}`; \
-	  ${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
-	            --host_alias=${host_alias} \
-	            --mode=user $${srcdir} $${builddir})
-
-doxygen-maint:
-	-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-	  builddir=`${PWD_COMMAND}`; \
-	  ${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
-	            --host_alias=${host_alias} \
-	            --mode=maint $${srcdir} $${builddir})
-
-doxygen-man:
-	-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-	  builddir=`${PWD_COMMAND}`; \
-	  ${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
-	            --host_alias=${host_alias} \
-	            --mode=man $${srcdir} $${builddir})
-
-.PHONY: doxygen doxygen-maint doxygen-man
-
-# Handy forwarding targets.
-check-%:
-	cd testsuite && $(MAKE) $@
-
-# 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.1.0/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/Makefile.in
deleted file mode 100644
index 5d5e744d1..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/Makefile.in
+++ /dev/null
@@ -1,785 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  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@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = .
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-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 = README $(am__configure_deps) $(srcdir)/../config.guess \
-	$(srcdir)/../config.sub $(srcdir)/../install-sh \
-	$(srcdir)/../ltmain.sh $(srcdir)/../missing \
-	$(srcdir)/../mkinstalldirs $(srcdir)/Makefile.am \
-	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure $(top_srcdir)/fragment.am \
-	$(top_srcdir)/scripts/testsuite_flags.in ChangeLog
-subdir = .
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \
-	$(top_srcdir)/../config/lead-dot.m4 \
-	$(top_srcdir)/../config/no-executables.m4 \
-	$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
-	$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.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 configure.status.lineno
-CONFIG_HEADER = config.h
-CONFIG_CLEAN_FILES = scripts/testsuite_flags
-depcomp =
-am__depfiles_maybe =
-SOURCES =
-DIST_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-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
-ETAGS = etags
-CTAGS = ctags
-DIST_SUBDIRS = include libsupc++ libmath src po testsuite
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-distdir = $(PACKAGE)-$(VERSION)
-top_distdir = $(distdir)
-am__remove_distdir = \
-  { test ! -d $(distdir) \
-    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr $(distdir); }; }
-DIST_ARCHIVES = $(distdir).tar.gz
-GZIP_ENV = --best
-distuninstallcheck_listfiles = find . -type f -print
-distcleancheck_listfiles = find . -type f -print
-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_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@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-C_INCLUDE_DIR = @C_INCLUDE_DIR@
-DEBUG_FLAGS = @DEBUG_FLAGS@
-DEFS = @DEFS@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENABLE_SYMVERS_DARWIN_EXPORT_FALSE = @ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@
-ENABLE_SYMVERS_DARWIN_EXPORT_TRUE = @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@
-ENABLE_SYMVERS_GNU_FALSE = @ENABLE_SYMVERS_GNU_FALSE@
-ENABLE_SYMVERS_GNU_TRUE = @ENABLE_SYMVERS_GNU_TRUE@
-EXEEXT = @EXEEXT@
-EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@
-GLIBCXX_BUILD_DEBUG_FALSE = @GLIBCXX_BUILD_DEBUG_FALSE@
-GLIBCXX_BUILD_DEBUG_TRUE = @GLIBCXX_BUILD_DEBUG_TRUE@
-GLIBCXX_BUILD_PCH_FALSE = @GLIBCXX_BUILD_PCH_FALSE@
-GLIBCXX_BUILD_PCH_TRUE = @GLIBCXX_BUILD_PCH_TRUE@
-GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE = @GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@
-GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE = @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@
-GLIBCXX_C_HEADERS_C_FALSE = @GLIBCXX_C_HEADERS_C_FALSE@
-GLIBCXX_C_HEADERS_C_STD_FALSE = @GLIBCXX_C_HEADERS_C_STD_FALSE@
-GLIBCXX_C_HEADERS_C_STD_TRUE = @GLIBCXX_C_HEADERS_C_STD_TRUE@
-GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HEADERS_C_TRUE@
-GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@
-GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@
-GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LIBICONV = @LIBICONV@
-LIBMATHOBJS = @LIBMATHOBJS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-OBJEXT = @OBJEXT@
-OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@
-OPT_LDFLAGS = @OPT_LDFLAGS@
-OS_INC_SRCDIR = @OS_INC_SRCDIR@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SECTION_FLAGS = @SECTION_FLAGS@
-SECTION_LDFLAGS = @SECTION_LDFLAGS@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-SYMVER_MAP = @SYMVER_MAP@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WARN_FLAGS = @WARN_FLAGS@
-WERROR = @WERROR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__leading_dot = @am__leading_dot@
-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@
-check_msgfmt = @check_msgfmt@
-datadir = @datadir@
-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@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-libtool_VERSION = @libtool_VERSION@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-multi_basedir = @multi_basedir@
-oldincludedir = @oldincludedir@
-port_specific_symbol_files = @port_specific_symbol_files@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-toplevel_srcdir = @toplevel_srcdir@
-
-# 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 = libmath src po testsuite
-SUBDIRS = include libsupc++ $(hosted_source)
-ACLOCAL_AMFLAGS = -I . -I .. -I ../config
-
-# 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'; \
-	      cd $(srcdir) && $(AUTOMAKE) --foreign  --ignore-deps \
-		&& exit 0; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  --ignore-deps Makefile'; \
-	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)
-	cd $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
-
-config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) 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) 
-	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 $@
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-
-# 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)
-uninstall-info-am:
-
-# 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):
-	@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; \
-	  (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"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-	@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; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	  || eval $$failcom; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (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; } \
-	       END { 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)
-	tags=; \
-	here=`pwd`; \
-	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; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	$(am__remove_distdir)
-	mkdir $(distdir)
-	$(mkdir_p) $(distdir)/.. $(distdir)/../config $(distdir)/scripts
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkdir_p) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || 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; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
-	|| chmod -R a+r $(distdir)
-dist-gzip: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-	$(am__remove_distdir)
-
-dist-tarZ: distdir
-	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-	$(am__remove_distdir)
-
-dist-shar: distdir
-	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-	$(am__remove_distdir)
-
-dist-zip: distdir
-	-rm -f $(distdir).zip
-	zip -rq $(distdir).zip $(distdir)
-	$(am__remove_distdir)
-
-dist dist-all: distdir
-	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-	$(am__remove_distdir)
-
-# This target untars the dist file and tries a VPATH configuration.  Then
-# it guarantees that the distribution is self-contained by making another
-# tarfile.
-distcheck: dist
-	case '$(DIST_ARCHIVES)' in \
-	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
-	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
-	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
-	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
-	*.zip*) \
-	  unzip $(distdir).zip ;;\
-	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
-	mkdir $(distdir)/_build
-	mkdir $(distdir)/_inst
-	chmod a-w $(distdir)
-	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
-	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-	  && cd $(distdir)/_build \
-	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
-	    $(DISTCHECK_CONFIGURE_FLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) \
-	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
-	  && $(MAKE) $(AM_MAKEFLAGS) check \
-	  && $(MAKE) $(AM_MAKEFLAGS) install \
-	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
-	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
-	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
-	        distuninstallcheck \
-	  && chmod -R a-w "$$dc_install_base" \
-	  && ({ \
-	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
-	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
-	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
-	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
-	  && rm -rf "$$dc_destdir" \
-	  && $(MAKE) $(AM_MAKEFLAGS) dist \
-	  && rm -rf $(DIST_ARCHIVES) \
-	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
-	$(am__remove_distdir)
-	@(echo "$(distdir) archives ready for distribution: "; \
-	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
-distuninstallcheck:
-	@cd $(distuninstallcheck_dir) \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
-	   || { echo "ERROR: files left after uninstall:" ; \
-	        if test -n "$(DESTDIR)"; then \
-	          echo "  (check DESTDIR support)"; \
-	        fi ; \
-	        $(distuninstallcheck_listfiles) ; \
-	        exit 1; } >&2
-distcleancheck: distclean
-	@if test '$(srcdir)' = . ; then \
-	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
-	  exit 1 ; \
-	fi
-	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
-	  || { echo "ERROR: files left in build directory after distclean:" ; \
-	       $(distcleancheck_listfiles) ; \
-	       exit 1; } >&2
-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)
-
-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: dvi-recursive
-
-dvi-am:
-
-html: html-recursive
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-exec-am: install-multi
-
-install-info: install-info-recursive
-
-install-man:
-
-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: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-multi \
-	am--refresh check check-am clean clean-generic clean-libtool \
-	clean-multi clean-recursive ctags ctags-recursive dist \
-	dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ dist-zip \
-	distcheck distclean distclean-generic distclean-hdr \
-	distclean-libtool distclean-multi distclean-recursive \
-	distclean-tags distcleancheck distdir distuninstallcheck dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-exec install-exec-am \
-	install-info install-info-am install-man install-multi \
-	install-strip installcheck installcheck-am installdirs \
-	installdirs-am maintainer-clean maintainer-clean-generic \
-	maintainer-clean-multi maintainer-clean-recursive mostlyclean \
-	mostlyclean-generic mostlyclean-libtool mostlyclean-multi \
-	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
-	uninstall uninstall-am uninstall-info-am
-
-
-# These rules are messy, but are hella worth it.
-doxygen:
-	-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-	  builddir=`${PWD_COMMAND}`; \
-	  ${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
-	            --host_alias=${host_alias} \
-	            --mode=user $${srcdir} $${builddir})
-
-doxygen-maint:
-	-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-	  builddir=`${PWD_COMMAND}`; \
-	  ${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
-	            --host_alias=${host_alias} \
-	            --mode=maint $${srcdir} $${builddir})
-
-doxygen-man:
-	-(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \
-	  builddir=`${PWD_COMMAND}`; \
-	  ${SHELL} ${srcdir}/docs/doxygen/run_doxygen \
-	            --host_alias=${host_alias} \
-	            --mode=man $${srcdir} $${builddir})
-
-.PHONY: doxygen doxygen-maint doxygen-man
-
-# Handy forwarding targets.
-check-%:
-	cd testsuite && $(MAKE) $@
-
-# 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.1.0/README b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/README
deleted file mode 100644
index 1064095fb..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/README
+++ /dev/null
@@ -1,96 +0,0 @@
-file: libstdc++-v3/README
-
-New users may wish to point their web browsers to the file
-documentation.html in the 'docs/html' subdirectory.  It contains brief
-building instructions and notes on how to configure the library in
-interesting ways.
-
-Instructions for configuring and building appear in
-docs/html/install.html.
-
-This directory contains the files needed to create an ISO Standard C++
-Library.
-
-It has subdirectories:
-
-  docs
-    Files in HTML and text format that document usage, quirks of the
-    implementation, and contributor checklists.
-
-  include
-    All header files for the C++ library are within this directory,
-    modulo specific runtime-related files that are in the libsupc++
-    directory.
-
-    include/std
-      Files meant to be found by #include  directives in
-      standard-conforming user programs.  
-
-    include/c
-      Headers intended to directly include standard C headers. 
-      [NB: this can be enabled via --enable-cheaders=c]
-
-    include/c_std
-      Headers intended to include standard C headers, and put select
-      names into the std:: namespace.
-      [NB: this is the default, and is the same as --enable-cheaders=c_std]
-
-    include/bits
-      Files included by standard headers and by other files in
-      the bits directory. 
-
-    include/backward
-      Headers provided for backward compatibility, such as .
-      They are not used in this library.
-
-    include/ext
-      Headers that define extensions to the standard library.  No
-      standard header refers to any of them.
-
-  scripts
-    Scripts that are used during the configure, build, make, or test
-    process.
-
-  src
-    Files that are used in constructing the library, but are not
-    installed.
-
-  testsuites/[backward, demangle, ext, performance, thread, 17_* to 27_*]
-    Test programs are here, and may be used to begin to exercise the 
-    library.  Support for "make check" and "make check-install" is
-    complete, and runs through all the subdirectories here when this
-    command is issued from the build directory.  Please note that
-    "make check" requires DejaGNU 1.4 or later to be installed.  Please
-    note that "make check-script" calls the script mkcheck, which
-    requires bash, and which may need the paths to bash adjusted to
-    work properly, as /bin/bash is assumed.
-
-Other subdirectories contain variant versions of certain files
-that are meant to be copied or linked by the configure script.
-Currently these are:
-
-  config/abi
-  config/cpu
-  config/io
-  config/locale
-  config/os
-
-In addition, two subdirectories are convenience libraries:
-
-  libmath
-    Support routines needed for C++ math. Only needed if the
-    underlying "C" implementation is non-existent, in particular
-    required or optimal long double, long long, and C99 functionality.
-
-  libsupc++
-    Contains the runtime library for C++, including exception
-    handling and memory allocation and deallocation, RTTI, terminate
-    handlers, etc.
-
-Note that glibc also has a bits/ subdirectory.  We will either
-need to be careful not to collide with names in its bits/
-directory; or rename bits to (e.g.) cppbits/.
-
-In files throughout the system, lines marked with an "XXX" indicate
-a bug or incompletely-implemented feature.  Lines marked "XXX MT"
-indicate a place that may require attention for multi-thread safety.
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/acinclude.m4 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/acinclude.m4
deleted file mode 100644
index 1c70d3479..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/acinclude.m4
+++ /dev/null
@@ -1,1896 +0,0 @@
-
-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 libmath libsupc++ src 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]))
-
-  # We're almost certainly being configured before anything else which uses
-  # C++, so all of our AC_PROG_* discoveries will be cached.  It's vital that
-  # we not cache the value of CXX that we "discover" here, because it's set
-  # to something unique for us and libjava.  Other target libraries need to
-  # find CXX for themselves.  We yank the rug out from under the normal AC_*
-  # process by sneakily renaming the cache variable.  This also lets us debug
-  # the value of "our" CXX in postmortems.
-  #
-  # We must also force CXX to /not/ be a precious variable, otherwise the
-  # wrong (non-multilib-adjusted) value will be used in multilibs.  This
-  # little trick also affects CPPFLAGS, CXXFLAGS, and LDFLAGS.  And as a side
-  # effect, CXXFLAGS is no longer automagically subst'd, so we have to do
-  # that ourselves.  Un-preciousing AC_PROG_CC also affects CC and CFLAGS.
-  #
-  # -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.
-
-  m4_define([ac_cv_prog_CXX],[glibcxx_cv_prog_CXX])
-  m4_rename([_AC_ARG_VAR_PRECIOUS],[glibcxx_PRECIOUS])
-  m4_define([_AC_ARG_VAR_PRECIOUS],[])
-  save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS="$CXXFLAGS -fno-builtin"
-  AC_PROG_CC
-  AC_PROG_CXX
-  CXXFLAGS="$save_CXXFLAGS"
-  m4_rename([glibcxx_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
-  AC_SUBST(CFLAGS)
-  AC_SUBST(CXXFLAGS)
-
-  # 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
-  need_libmath=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='-Werror -ffunction-sections -fdata-sections'
-  AC_TRY_COMPILE(, [int foo;], [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_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.
-  changequote(,)
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-  changequote([,])
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    AC_MSG_CHECKING([for ld that supports -Wl,--gc-sections])
-    AC_TRY_RUN([
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-    ], [ac_sectionLDflags=yes],[ac_sectionLDflags=no], [ac_sectionLDflags=yes])
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    AC_MSG_RESULT($ac_sectionLDflags)
-  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 to see if this target can enable the iconv specializations.
-dnl If --disable-c-mbchar was given, no wchar_t specialization is enabled.  
-dnl (This must have been previously checked, along with the rest of C99 
-dnl support.) By default, iconv support is disabled.
-dnl
-dnl Defines:
-dnl  _GLIBCXX_USE_ICONV if all the bits are found.
-dnl Substs:
-dnl  LIBICONV to a -l string containing the iconv library, if needed.
-dnl
-AC_DEFUN([GLIBCXX_CHECK_ICONV_SUPPORT], [
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    AC_CHECK_HEADER(iconv.h, ac_has_iconv_h=yes, ac_has_iconv_h=no)
-    AC_CHECK_HEADER(langinfo.h, ac_has_langinfo_h=yes, ac_has_langinfo_h=no)
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    AC_CHECK_LIB(iconv, iconv, LIBICONV="-liconv")
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-    AC_SUBST(LIBICONV)
-
-    AC_CHECK_FUNCS([iconv_open iconv_close iconv nl_langinfo],
-    [ac_XPG2funcs=yes], [ac_XPG2funcs=no])
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-      AC_DEFINE([_GLIBCXX_USE_ICONV],1,
-	        [Define if iconv and related functions exist and are usable.])
-      enable_iconv=yes
-    fi
-  fi
-  AC_MSG_CHECKING([for enabled iconv specializations])
-  AC_MSG_RESULT($enable_iconv)
-])
-
-
-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(ac_setrlimit, [
-      AC_TRY_COMPILE(
-        [#include 
-         #include 
-         #include 
-        ],
-        [struct rlimit r;
-         setrlimit(0, &r);],
-        [ac_setrlimit=yes], [ac_setrlimit=no])
-    ])
-  fi
-
-  AC_MSG_CHECKING([for testsuite resource limits support])
-  if test $setrlimit_have_headers = yes && test $ac_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_MSG_CHECKING([for S_ISREG or S_IFREG])
-  AC_CACHE_VAL(glibcxx_cv_S_ISREG, [
-    AC_TRY_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, [
-    AC_TRY_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)
-])
-
-
-dnl
-dnl Check whether poll is available in , and define HAVE_POLL.
-dnl
-AC_DEFUN([GLIBCXX_CHECK_POLL], [
-  AC_MSG_CHECKING([for poll])
-  AC_CACHE_VAL(glibcxx_cv_POLL, [
-    AC_TRY_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)
-])
-
-
-dnl
-dnl Check whether writev is available in , and define HAVE_WRITEV.
-dnl
-AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
-  AC_MSG_CHECKING([for writev])
-  AC_CACHE_VAL(glibcxx_cv_WRITEV, [
-    AC_TRY_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)
-])
-
-
-dnl
-dnl Check whether int64_t is available in , and define HAVE_INT64_T.
-dnl
-AC_DEFUN([GLIBCXX_CHECK_INT64_T], [
-  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 .])
-  fi
-  AC_MSG_RESULT($glibcxx_cv_INT64_T)
-])
-
-
-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, [
-    AC_TRY_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/${abi_baseline_pair}\$(MULTISUBDIR)"
-  AC_SUBST(baseline_dir)
-])
-
-
-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...
-  # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
-  OPTIMIZE_CXXFLAGS=
-  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
-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='${prefix}/include/c++/${gcc_version}'
-  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,_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])
-
-  # Test wchar.h for mbstate_t, which is needed for char_traits and fpos
-  # even if C99 support is turned off.
-  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 ],
-  [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
-
-  if test x"$enable_c99" = x"yes"; then
-
-  AC_LANG_SAVE
-  AC_LANG_CPLUSPLUS
-
-  # Check for the existence of  functions used if C99 is enabled.
-  AC_MSG_CHECKING([for ISO C99 support in ])
-  AC_CACHE_VAL(ac_c99_math, [
-  AC_TRY_COMPILE([#include ],
-	         [fpclassify(0.0);
-	          isfinite(0.0); 
-		  isinf(0.0);
-	          isnan(0.0);
-		  isnormal(0.0);
-	  	  signbit(0.0);
-	 	  isgreater(0.0,0.0);
-		  isgreaterequal(0.0,0.0);
-		  isless(0.0,0.0);
-		  islessequal(0.0,0.0);
-		  islessgreater(0.0,0.0);
-		  islessgreater(0.0,0.0);
-		  isunordered(0.0,0.0);
-		 ],[ac_c99_math=yes], [ac_c99_math=no])
-  ])
-  AC_MSG_RESULT($ac_c99_math)
-  if test x"$ac_c99_math" = x"yes"; then
-    AC_DEFINE(_GLIBCXX_USE_C99_MATH, 1,
-              [Define if C99 functions or macros in  should be imported
-              in  in namespace std.])
-  fi
-
-  # Check for the existence of  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(complex.h, ac_has_complex_h=yes, ac_has_complex_h=no)
-  ac_c99_complex=no;
-  if test x"$ac_has_complex_h" = x"yes"; then
-    AC_MSG_CHECKING([for ISO C99 support in ])
-    AC_TRY_COMPILE([#include ],
-	           [typedef __complex__ float float_type; float_type tmpf;
-	            cabsf(tmpf);
-		    cargf(tmpf);
-		    ccosf(tmpf);
-  		    ccoshf(tmpf);
-		    cexpf(tmpf);
-	            clogf(tmpf);
-		    csinf(tmpf);
-		    csinhf(tmpf);
-		    csqrtf(tmpf);
-		    ctanf(tmpf);
-		    ctanhf(tmpf);
-		    cpowf(tmpf, tmpf);
-		    typedef __complex__ double double_type; double_type tmpd;
-	            cabs(tmpd);
-		    carg(tmpd);
-		    ccos(tmpd);
-  		    ccosh(tmpd);
-		    cexp(tmpd);
-	            clog(tmpd);
-		    csin(tmpd);
-		    csinh(tmpd);
-		    csqrt(tmpd);
-		    ctan(tmpd);
-		    ctanh(tmpd);
-		    cpow(tmpd, tmpd);
-		    typedef __complex__ long double ld_type; ld_type tmpld;
-	            cabsl(tmpld);
-		    cargl(tmpld);
-		    ccosl(tmpld);
-  		    ccoshl(tmpld);
-		    cexpl(tmpld);
-	            clogl(tmpld);
-		    csinl(tmpld);
-		    csinhl(tmpld);
-		    csqrtl(tmpld);
-		    ctanl(tmpld);
-		    ctanhl(tmpld);
-		    cpowl(tmpld, tmpld);
-		   ],[ac_c99_complex=yes], [ac_c99_complex=no])
-  fi
-  AC_MSG_RESULT($ac_c99_complex)
-  if test x"$ac_c99_complex" = x"yes"; then
-    AC_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.])
-  fi
-
-  # Check for the existence in  of vscanf, et. al.
-  AC_MSG_CHECKING([for ISO C99 support in ])
-  AC_CACHE_VAL(ac_c99_stdio, [
-  AC_TRY_COMPILE([#include 
-		  #include 
-                  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");],
-		 [ac_c99_stdio=yes], [ac_c99_stdio=no])
-  ])
-  AC_MSG_RESULT($ac_c99_stdio)
-
-  # Check for the existence in  of lldiv_t, et. al.
-  AC_MSG_CHECKING([for ISO C99 support in ])
-  AC_CACHE_VAL(ac_c99_stdlib, [
-  AC_TRY_COMPILE([#include ],
-                 [char* tmp;
-	    	  strtof("gnu", &tmp);
-		  strtold("gnu", &tmp);
-	          strtoll("gnu", &tmp, 10);
-	          strtoull("gnu", &tmp, 10);
-	          llabs(10);
-		  lldiv(10,1);
-		  atoll("10");
-		  _Exit(0);
-		  lldiv_t mydivt;],[ac_c99_stdlib=yes], [ac_c99_stdlib=no])
-  ])
-  AC_MSG_RESULT($ac_c99_stdlib)
-
-  # Check for the existence in  of wcstoull, WEOF, etc.
-  AC_CHECK_HEADERS(wctype.h, ac_has_wctype_h=yes, ac_has_wctype_h=no)
-  ac_c99_wchar=no;
-  if test x"$ac_has_wchar_h" = xyes &&
-     test x"$ac_has_wctype_h" = xyes; then
-    AC_TRY_COMPILE([#include 
-                    #include 
-                    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 ::wcstold;
-		      using ::wcstoll;
-		      using ::wcstoul; 
-		      using ::wcstoull;
-		      using ::wcsxfrm; 
-		      using ::wctob; 
-		      using ::wmemchr;
-		      using ::wmemcmp;
-		      using ::wmemcpy;
-		      using ::wmemmove;
-		      using ::wmemset;
-		      using ::wprintf; 
-		      using ::wscanf; 
-		    }
-		   ],[],[ac_c99_wchar=yes], [ac_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 
-                    namespace test { using ::vfwscanf; } ], [],
- 	    	   [AC_DEFINE(HAVE_VFWSCANF,1,
-			[Defined if vfwscanf exists.])],[])
-
-    AC_TRY_COMPILE([#include 
-                    namespace test { using ::vswscanf; } ], [],
- 	    	   [AC_DEFINE(HAVE_VSWSCANF,1,
-			[Defined if vswscanf exists.])],[])
-
-    AC_TRY_COMPILE([#include 
-                    namespace test { using ::vwscanf; } ], [],
- 	    	   [AC_DEFINE(HAVE_VWSCANF,1,[Defined if vwscanf exists.])],[])
-
-    AC_TRY_COMPILE([#include 
-                    namespace test { using ::wcstof; } ], [],
- 	    	   [AC_DEFINE(HAVE_WCSTOF,1,[Defined if wcstof exists.])],[])
-
-    AC_TRY_COMPILE([#include ],
-                   [ wint_t t; int i = iswblank(t);], 
- 	    	   [AC_DEFINE(HAVE_ISWBLANK,1,
-			[Defined if iswblank exists.])],[])
-
-    AC_MSG_CHECKING([for ISO C99 support in ])
-    AC_MSG_RESULT($ac_c99_wchar)
-  fi
-
-  # Option parsed, now set things appropriately.
-  if test x"$ac_c99_math" = x"no" ||
-     test x"$ac_c99_complex" = x"no" ||
-     test x"$ac_c99_stdio" = x"no" ||
-     test x"$ac_c99_stdlib" = x"no" ||
-     test x"$ac_c99_wchar" = x"no"; then
-    enable_c99=no;
-  else
-    AC_DEFINE(_GLIBCXX_USE_C99, 1,
-    [Define if C99 functions or macros from , ,
-    , , and  can be used or exposed.])
-  fi
-
-  AC_LANG_RESTORE
-  fi	
-
-  AC_MSG_CHECKING([for fully enabled ISO C99 support])
-  AC_MSG_RESULT($enable_c99)
-])
-
-
-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'.
-dnl
-AC_DEFUN([GLIBCXX_ENABLE_CHEADERS], [
-  GLIBCXX_ENABLE(cheaders,$1,[=KIND],
-    [construct "C" headers for g++], [permit c|c_std])
-  AC_MSG_NOTICE("C" header strategy set to $enable_cheaders)
-
-  C_INCLUDE_DIR='${glibcxx_srcdir}/include/'$enable_cheaders
-
-  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_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], [
-  AC_MSG_CHECKING([for C locale to use])
-  GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
-    [use MODEL for target locale package],
-    [permit generic|gnu|ieee_1003.1-2001|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_clocale = no || test $enable_clocale = yes; then
-     enable_clocale=auto
-  fi
-
-  # Either a known package, or "auto"
-  enable_clocale_flag=$enable_clocale
-
-  # Probe for locale support if no specific model is specified.
-  # Default to "generic".
-  if test $enable_clocale_flag = auto; then
-    case ${target_os} in
-      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-        AC_EGREP_CPP([_GLIBCXX_ok], [
-        #include 
-        #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
-          _GLIBCXX_ok
-        #endif
-        ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
-
-        # Test for bugs early in glibc-2.2.x series
-          if test $enable_clocale_flag = gnu; then
-          AC_TRY_RUN([
-          #define _GNU_SOURCE 1
-          #include 
-          #include 
-          #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-          extern __typeof(newlocale) __newlocale;
-          extern __typeof(duplocale) __duplocale;
-          extern __typeof(strcoll_l) __strcoll_l;
-          #endif
-          int main()
-          {
-              const char __one[] = "Äuglein Augmen";
-              const char __two[] = "Äuglein";
-              int i;
-              int j;
-              __locale_t        loc;
-               __locale_t        loc_dup;
-              loc = __newlocale(1 << LC_ALL, "de_DE", 0);
-              loc_dup = __duplocale(loc);
-              i = __strcoll_l(__one, __two, loc);
-              j = __strcoll_l(__one, __two, loc_dup);
-              return 0;
-          }
-          ],
-          [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
-          [enable_clocale_flag=generic])
-          fi
-
-        # ... at some point put __strxfrm_l tests in as well.
-        ;;
-      darwin* | freebsd*)
-        enable_clocale_flag=darwin
-	;;
-      *)
-        enable_clocale_flag=generic
-        ;;
-    esac
-  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
-  AC_ARG_ENABLE(nls,
-    AC_HELP_STRING([--enable-nls],[use Native Language Support (default)]),
-    [],
-    [enable_nls=yes])
-
-  # Set configure bits for specified locale package
-  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 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 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 (probed along with C99 support) must also be present.
-dnl
-AC_DEFUN([GLIBCXX_ENABLE_WCHAR_T], [
-  GLIBCXX_ENABLE(wchar_t,$1,,[enable template specializations for 'wchar_t'])
-  if test x"$ac_c99_wchar" = x"yes" && 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 ' > 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 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 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|darwin-export])
-
-# 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])
-
-# Turn a 'yes' into a suitable default.
-if test x$enable_symvers = xyes ; then
-  if test $enable_shared = no ||
-     test "x$LD" = x ; then
-    enable_symvers=no
-  elif test $with_gnu_ld = yes ; then
-    enable_symvers=gnu
-  else
-    case ${target_os} in
-      darwin*)
-	enable_symvers=darwin-export ;;
-      *)
-      AC_MSG_WARN([=== You have requested some kind of symbol versioning, but])
-      AC_MSG_WARN([=== you are not using a supported linker.])
-      AC_MSG_WARN([=== Symbol versioning will be disabled.])
-	enable_symvers=no ;;
-    esac
-  fi
-fi
-
-# Check to see if 'gnu' can win.
-if test $enable_symvers = gnu; 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 <&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 ; 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_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_MAP=config/linker-map.dummy
-    ;;
-  gnu)
-    SYMVER_MAP=config/linker-map.gnu
-    AC_DEFINE(_GLIBCXX_SYMVER, 1, 
-              [Define to use GNU symbol versioning in the shared library.])
-    ;;
-  darwin-export)
-    SYMVER_MAP=config/linker-map.gnu
-    ;;
-esac
-
-# 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])
-
-AC_SUBST(SYMVER_MAP)
-AC_SUBST(port_specific_symbol_files)
-GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_GNU, test $enable_symvers = gnu)
-GLIBCXX_CONDITIONAL(ENABLE_SYMVERS_DARWIN_EXPORT, dnl
-  test $enable_symvers = darwin-export)
-AC_MSG_NOTICE(versioning on shared library symbols is $enable_symvers)
-])
-
-
-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 -in
-dnl and process to  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)
-])
-
-
-# Check whether LC_MESSAGES is available in .
-# Ulrich Drepper , 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.
-
-# serial 1
-AC_DEFUN([AC_LC_MESSAGES], [
-  AC_CHECK_HEADER(locale.h, [
-    AC_CACHE_CHECK([for LC_MESSAGES], ac_cv_val_LC_MESSAGES,
-      [AC_TRY_LINK([#include ], [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 .])
-    fi
-  ])
-])
-
-# Macros from the top-level gcc directory.
-m4_include([../config/tls.m4])
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/aclocal.m4 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/aclocal.m4
deleted file mode 100644
index 8f4ca5225..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/aclocal.m4
+++ /dev/null
@@ -1,647 +0,0 @@
-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
-
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 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.
-
-# 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.
-
-# Copyright (C) 2002, 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_AUTOMAKE_VERSION(VERSION)
-# ----------------------------
-# Automake X.Y traces this macro to ensure aclocal.m4 has been
-# generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
-
-# AM_SET_CURRENT_AUTOMAKE_VERSION
-# -------------------------------
-# Call AM_AUTOMAKE_VERSION so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
-AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.9.6])])
-
-# 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
-# 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 7
-
-# 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])
-AC_SUBST([$1_FALSE])
-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
-# 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 12
-
-# 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.58])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
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
-   test -f $srcdir/config.status; then
-  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
-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
- 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)
-AM_PROG_INSTALL_SH
-AM_PROG_INSTALL_STRIP
-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
-])
-])
-
-
-# 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_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $1 | $1:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
-
-# 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_SH
-# ------------------
-# Define $install_sh.
-AC_DEFUN([AM_PROG_INSTALL_SH],
-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-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
-# 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
-
-AC_DEFUN([AM_MAINTAINER_MODE],
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-  dnl maintainer-mode is disabled by default
-  AC_ARG_ENABLE(maintainer-mode,
-[  --enable-maintainer-mode  enable make rules and dependencies not useful
-			  (and sometimes confusing) to the casual installer],
-      USE_MAINTAINER_MODE=$enableval,
-      USE_MAINTAINER_MODE=no)
-  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, 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 4
-
-# 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
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# 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  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 whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-#
-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
-# created by `make install' are always world readable, even if the
-# installer happens to have an overly restrictive umask (e.g. 077).
-# This was a mistake.  There are at least two reasons why we must not
-# use `-m 0755':
-#   - it causes special bits like SGID to be ignored,
-#   - it may be too restrictive (some setups expect 775 directories).
-#
-# Do not use -m 0755 and let people choose whatever they expect by
-# setting umask.
-#
-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
-# Some implementations (such as Solaris 8's) are not thread-safe: if a
-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
-# concurrently, both version can detect that a/ is missing, but only
-# one can create it and the other will error out.  Consequently we
-# restrict ourselves to GNU make (using the --version option ensures
-# this.)
-AC_DEFUN([AM_PROG_MKDIR_P],
-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # We used to keeping the `.' as first argument, in order to
-  # allow $(mkdir_p) to be used without argument.  As in
-  #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.  However this is wrong
-  # for two reasons:
-  #  1. if the package is installed by a user who cannot write `.'
-  #     make install will fail,
-  #  2. the above comment should most certainly read
-  #     $(mkdir_p) $(DESTDIR)$(somedir)
-  #     so it does not work when $(somedir) is undefined and
-  #     $(DESTDIR) is not.
-  #  To support the latter case, we have to write
-  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
-  #  so the `.' trick is pointless.
-  mkdir_p='mkdir -p --'
-else
-  # On NextStep and OpenStep, the `mkdir' command does not
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
-  done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
-  else
-    mkdir_p='$(install_sh) -d'
-  fi
-fi
-AC_SUBST([mkdir_p])])
-
-# Copyright (C) 1998, 1999, 2000, 2001, 2003, 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 5
-
-# AM_ENABLE_MULTILIB([MAKEFILE], [REL-TO-TOP-SRCDIR])
-# ---------------------------------------------------
-# Add --enable-multilib to configure.
-AC_DEFUN([AM_ENABLE_MULTILIB],
-[# Default to --enable-multilib
-AC_ARG_ENABLE(multilib,
-[  --enable-multilib       build many library versions (default)],
-[case "$enableval" in
-  yes) multilib=yes ;;
-  no)  multilib=no ;;
-  *)   AC_MSG_ERROR([bad value $enableval for multilib option]) ;;
- esac],
-	      [multilib=yes])
-
-# 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../$2"
-  else
-    multi_basedir="$srcdir/$with_multisrctop$2"
-  fi
-else
-  multi_basedir="$srcdir/$2"
-fi
-AC_SUBST(multi_basedir)
-
-AC_OUTPUT_COMMANDS([
-# Only add multilib support code if we just rebuilt the top-level
-# Makefile.
-case " $CONFIG_FILES " in
- *" ]m4_default([$1],Makefile)[ "*)
-   ac_file=]m4_default([$1],Makefile)[ . ${multi_basedir}/config-ml.in
-   ;;
-esac],
-		   [
-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"])])dnl
-
-# Helper functions for option handling.                     -*- Autoconf -*-
-
-# Copyright (C) 2001, 2002, 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.
-
-# serial 3
-
-# _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],
-[AC_FOREACH([_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
-# 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_SANITY_CHECK
-# ---------------
-AC_DEFUN([AM_SANITY_CHECK],
-[AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# 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="\${SHELL} \$(install_sh) -c -s"
-AC_SUBST([INSTALL_STRIP_PROGRAM])])
-
-# 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 /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/enable.m4])
-m4_include([../config/lead-dot.m4])
-m4_include([../config/no-executables.m4])
-m4_include([../libtool.m4])
-m4_include([crossconfig.m4])
-m4_include([linkage.m4])
-m4_include([acinclude.m4])
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config.h.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config.h.in
deleted file mode 100644
index 2aa1341ec..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config.h.in
+++ /dev/null
@@ -1,1032 +0,0 @@
-/* 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 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  header file. */
-#undef HAVE_COMPLEX_H
-
-/* Define to 1 if you have the `copysign' function. */
-#undef HAVE_COPYSIGN
-
-/* Define to 1 if you have the `copysignf' function. */
-#undef HAVE_COPYSIGNF
-
-/* Define to 1 if you have the `copysignl' function. */
-#undef HAVE_COPYSIGNL
-
-/* 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  header file. */
-#undef HAVE_ENDIAN_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 `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  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  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 to 1 if you have the  header file. */
-#undef HAVE_GCONV_H
-
-/* Define to 1 if you have the `getpagesize' function. */
-#undef HAVE_GETPAGESIZE
-
-/* 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 to 1 if you have the `iconv' function. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the `iconv_close' function. */
-#undef HAVE_ICONV_CLOSE
-
-/* Define to 1 if you have the `iconv_open' function. */
-#undef HAVE_ICONV_OPEN
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_IEEEFP_H
-
-/* Define if int64_t is available in . */
-#undef HAVE_INT64_T
-
-/* Define to 1 if you have the  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 . */
-#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  header file. */
-#undef HAVE_LIBINTL_H
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* 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 to 1 if you have the  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  header file. */
-#undef HAVE_MACHINE_ENDIAN_H
-
-/* Define to 1 if you have the  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  header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* 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  header file. */
-#undef HAVE_NAN_H
-
-/* Define to 1 if you have the `nl_langinfo' function. */
-#undef HAVE_NL_LANGINFO
-
-/* Define if poll is available in . */
-#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 if sigsetjmp is available. */
-#undef HAVE_SIGSETJMP
-
-/* 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  header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the  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 to 1 if you have the  header file. */
-#undef HAVE_SYS_FILIO_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_IOCTL_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_IPC_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_ISA_DEFS_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_MACHINE_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_PARAM_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_RESOURCE_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_SEM_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_SYS_UIO_H
-
-/* Define if S_IFREG is available in . */
-#undef HAVE_S_IFREG
-
-/* Define if S_IFREG is available in . */
-#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 the target supports thread-local storage. */
-#undef HAVE_TLS
-
-/* Define to 1 if you have the  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  header file. */
-#undef HAVE_WCHAR_H
-
-/* Defined if wcstof exists. */
-#undef HAVE_WCSTOF
-
-/* Define to 1 if you have the  header file. */
-#undef HAVE_WCTYPE_H
-
-/* Define if writev is available in . */
-#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 `_copysign' function. */
-#undef HAVE__COPYSIGN
-
-/* Define to 1 if you have the `_copysignl' function. */
-#undef HAVE__COPYSIGNL
-
-/* 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 if the compiler/host combination has __builtin_abs. */
-#undef HAVE___BUILTIN_ABS
-
-/* Define if the compiler/host combination has __builtin_cos. */
-#undef HAVE___BUILTIN_COS
-
-/* Define if the compiler/host combination has __builtin_cosf. */
-#undef HAVE___BUILTIN_COSF
-
-/* Define if the compiler/host combination has __builtin_cosl. */
-#undef HAVE___BUILTIN_COSL
-
-/* Define if the compiler/host combination has __builtin_fabs. */
-#undef HAVE___BUILTIN_FABS
-
-/* Define if the compiler/host combination has __builtin_fabsf. */
-#undef HAVE___BUILTIN_FABSF
-
-/* Define if the compiler/host combination has __builtin_fabsl. */
-#undef HAVE___BUILTIN_FABSL
-
-/* Define if the compiler/host combination has __builtin_labs. */
-#undef HAVE___BUILTIN_LABS
-
-/* Define if the compiler/host combination has __builtin_sin. */
-#undef HAVE___BUILTIN_SIN
-
-/* Define if the compiler/host combination has __builtin_sinf. */
-#undef HAVE___BUILTIN_SINF
-
-/* Define if the compiler/host combination has __builtin_sinl. */
-#undef HAVE___BUILTIN_SINL
-
-/* Define if the compiler/host combination has __builtin_sqrt. */
-#undef HAVE___BUILTIN_SQRT
-
-/* Define if the compiler/host combination has __builtin_sqrtf. */
-#undef HAVE___BUILTIN_SQRTF
-
-/* Define if the compiler/host combination has __builtin_sqrtl. */
-#undef HAVE___BUILTIN_SQRTL
-
-/* Define to 1 if you have the `__signbit' function. */
-#undef HAVE___SIGNBIT
-
-/* Define to 1 if you have the `__signbitf' function. */
-#undef HAVE___SIGNBITF
-
-/* Define to 1 if you have the `__signbitl' function. */
-#undef HAVE___SIGNBITL
-
-/* 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 version of this package. */
-#undef PACKAGE_VERSION
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Version number of package */
-#undef VERSION
-
-/* 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 to 1 if a full hosted library is built, or 0 if freestanding. */
-#undef _GLIBCXX_HOSTED
-
-/* 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 use GNU symbol versioning in the shared library. */
-#undef _GLIBCXX_SYMVER
-
-/* Define if C99 functions or macros from , , ,
-   , and  can be used or exposed. */
-#undef _GLIBCXX_USE_C99
-
-/* Define if C99 functions in  should be used in . Using
-   compiler builtins for these functions requires corresponding C99 library
-   functions to be present. */
-#undef _GLIBCXX_USE_C99_COMPLEX
-
-/* Define if C99 functions or macros in  should be imported in 
-   in namespace std. */
-#undef _GLIBCXX_USE_C99_MATH
-
-/* Define if iconv and related functions exist and are usable. */
-#undef _GLIBCXX_USE_ICONV
-
-/* 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
-
-/* Define if NLS translations are to be used. */
-#undef _GLIBCXX_USE_NLS
-
-/* 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__COPYSIGN) && ! defined (HAVE_COPYSIGN)
-# define HAVE_COPYSIGN 1
-# define copysign _copysign
-#endif
-
-#if defined (HAVE__COPYSIGNL) && ! defined (HAVE_COPYSIGNL)
-# define HAVE_COPYSIGNL 1
-# define copysignl _copysignl
-#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.1.0/config/abi/alpha-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/alpha-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 3a4568bfe..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/alpha-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
-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:_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_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:_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:_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_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_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
-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_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_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_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_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
-FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@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:_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:_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:_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:_ZNSs6assignEmc@@GLIBCXX_3.4
-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_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:_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:_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:_ZNSsaSEc@@GLIBCXX_3.4
-FUNC:_ZNSsixEm@@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:_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:_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_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_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:_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_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_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_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_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:_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_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:_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_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:_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_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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:_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: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: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:_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:_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:_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:_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:_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:_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_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:_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.1.0/config/abi/compatibility.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/compatibility.h
deleted file mode 100644
index 48abcde3d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/compatibility.h
+++ /dev/null
@@ -1,214 +0,0 @@
-// Compatibility symbols for previous versions -*- C++ -*-
-
-// Copyright (C) 2005
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-// 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 __gnu_internal
-{
-_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIcSt11char_traitsIcEEppEv,
-		      _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv)
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-_GLIBCXX_APPLY_SYMVER(_ZNSt21istreambuf_iteratorXXIwSt11char_traitsIwEEppEv,
-		      _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv)
-#endif
-} // namespace std
-
-/* 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 __gnu_internal
-{
-_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
-}
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/hppa-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/hppa-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index f4ea1e3a1..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/hppa-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/i386-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/i386-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 6ee44ab04..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/i386-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3147 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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
-OBJECT:0:CXXABI_1.3
-OBJECT:0:CXXABI_1.3.1
-OBJECT:0:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/i486-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/i486-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 6ee44ab04..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/i486-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3147 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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
-OBJECT:0:CXXABI_1.3
-OBJECT:0:CXXABI_1.3.1
-OBJECT:0:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/ia64-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/ia64-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 2e3c5e507..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/ia64-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3147 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
-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:_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_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:_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:_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_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_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
-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_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_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_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_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
-FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@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:_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:_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:_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:_ZNSs6assignEmc@@GLIBCXX_3.4
-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_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:_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:_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:_ZNSsaSEc@@GLIBCXX_3.4
-FUNC:_ZNSsixEm@@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:_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:_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_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_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:_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_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_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_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_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:_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_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:_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_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:_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_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:__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
-OBJECT:0:CXXABI_1.3
-OBJECT:0:CXXABI_1.3.1
-OBJECT:0:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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:_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:_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:_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: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:_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: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: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:_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:_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:_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_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:_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:_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.1.0/config/abi/mips-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/mips-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index f4ea1e3a1..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/mips-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/powerpc-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index f4ea1e3a1..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/powerpc64-linux-gnu/32/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc64-linux-gnu/32/baseline_symbols.txt
deleted file mode 100644
index f4ea1e3a1..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc64-linux-gnu/32/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/powerpc64-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc64-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 3a4568bfe..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/powerpc64-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
-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:_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_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:_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:_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_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_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
-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_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_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_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_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
-FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@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:_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:_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:_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:_ZNSs6assignEmc@@GLIBCXX_3.4
-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_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:_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:_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:_ZNSsaSEc@@GLIBCXX_3.4
-FUNC:_ZNSsixEm@@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:_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:_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_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_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:_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_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_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_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_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:_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_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:_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_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:_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_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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:_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: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: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:_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:_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:_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:_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:_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:_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_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:_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.1.0/config/abi/s390-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/s390-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 8c0278771..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/s390-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
-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:_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_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:_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:_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_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_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
-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_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_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_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_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
-FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@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:_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:_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:_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:_ZNSs6assignEmc@@GLIBCXX_3.4
-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_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:_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:_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:_ZNSsaSEc@@GLIBCXX_3.4
-FUNC:_ZNSsixEm@@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_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_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_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:_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:_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_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_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:_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_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_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_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_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:_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_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:_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_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:_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_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:_Znam@@GLIBCXX_3.4
-FUNC:_ZnamRKSt9nothrow_t@@GLIBCXX_3.4
-FUNC:_Znwm@@GLIBCXX_3.4
-FUNC:_ZnwmRKSt9nothrow_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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/s390x-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/s390x-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 3a4568bfe..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/s390x-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
-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:_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_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:_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:_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_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_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
-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_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_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_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_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
-FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@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:_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:_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:_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:_ZNSs6assignEmc@@GLIBCXX_3.4
-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_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:_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:_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:_ZNSsaSEc@@GLIBCXX_3.4
-FUNC:_ZNSsixEm@@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:_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:_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_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_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:_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_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_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_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_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:_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_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:_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_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:_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_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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:_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: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: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:_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:_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:_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:_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:_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:_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_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:_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.1.0/config/abi/sparc-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/sparc-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index f4ea1e3a1..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/sparc-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3169 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/x86_64-linux-gnu/32/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/x86_64-linux-gnu/32/baseline_symbols.txt
deleted file mode 100644
index 6ee44ab04..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/x86_64-linux-gnu/32/baseline_symbols.txt
+++ /dev/null
@@ -1,3147 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_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:_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:_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:_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:_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:_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_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_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_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_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_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_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:_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_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:_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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
-OBJECT:0:CXXABI_1.3
-OBJECT:0:CXXABI_1.3.1
-OBJECT:0:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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.1.0/config/abi/x86_64-linux-gnu/baseline_symbols.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/x86_64-linux-gnu/baseline_symbols.txt
deleted file mode 100644
index 699360653..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/abi/x86_64-linux-gnu/baseline_symbols.txt
+++ /dev/null
@@ -1,3147 +0,0 @@
-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_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_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:_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_filebufIwSt11char_traitsIwEE4fileEv@@GLIBCXX_3.4.2
-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__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_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:_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:_ZNKSt12strstreambuf6pcountEv@@GLIBCXX_3.4
-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:_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_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:_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:_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_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_traitsIwESaIwEE6assignEmw@@GLIBCXX_3.4
-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_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_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_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_traitsIwESaIwEEaSEw@@GLIBCXX_3.4
-FUNC:_ZNSbIwSt11char_traitsIwESaIwEEixEm@@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:_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:_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:_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:_ZNSs6assignEmc@@GLIBCXX_3.4
-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_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:_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:_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:_ZNSsaSEc@@GLIBCXX_3.4
-FUNC:_ZNSsixEm@@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:_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:_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_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_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:_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_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_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_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_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:_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_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:_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_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:_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_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_base17register_callbackEPFvNS_5eventERS_iEi@@GLIBCXX_3.4
-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:_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:_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__throw_bad_castv@@GLIBCXX_3.4
-FUNC:_ZSt17__throw_bad_allocv@@GLIBCXX_3.4
-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__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:__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
-OBJECT:0:CXXABI_1.3
-OBJECT:0:CXXABI_1.3.1
-OBJECT:0:GLIBCXX_3.4
-OBJECT:0:GLIBCXX_3.4.1
-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: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:_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:_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: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: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:_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:_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:_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:_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:_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:_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_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:_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.1.0/config/allocator/bitmap_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/bitmap_allocator_base.h
deleted file mode 100644
index 573b45477..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/bitmap_allocator_base.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Base to std::allocator -*- C++ -*-
-
-// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _CXX_ALLOCATOR_H
-#define _CXX_ALLOCATOR_H 1
-
-// Define bitmap_allocator as the base class to std::allocator.
-#include 
-#define __glibcxx_base_allocator  __gnu_cxx::bitmap_allocator
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/malloc_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/malloc_allocator_base.h
deleted file mode 100644
index 028f4ad82..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/malloc_allocator_base.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Base to std::allocator -*- C++ -*-
-
-// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _CXX_ALLOCATOR_H
-#define _CXX_ALLOCATOR_H 1
-
-// Define new_allocator as the base class to std::allocator.
-#include 
-#define __glibcxx_base_allocator  __gnu_cxx::malloc_allocator
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/mt_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/mt_allocator_base.h
deleted file mode 100644
index ade2a6209..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/mt_allocator_base.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Base to std::allocator -*- C++ -*-
-
-// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _CXX_ALLOCATOR_H
-#define _CXX_ALLOCATOR_H 1
-
-// Define mt_allocator as the base class to std::allocator.
-#include 
-#define __glibcxx_base_allocator  __gnu_cxx::__mt_alloc
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/new_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/new_allocator_base.h
deleted file mode 100644
index 47a0af1af..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/new_allocator_base.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Base to std::allocator -*- C++ -*-
-
-// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _CXX_ALLOCATOR_H
-#define _CXX_ALLOCATOR_H 1
-
-// Define new_allocator as the base class to std::allocator.
-#include 
-#define __glibcxx_base_allocator  __gnu_cxx::new_allocator
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/pool_allocator_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/pool_allocator_base.h
deleted file mode 100644
index da0f63bec..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/allocator/pool_allocator_base.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Base to std::allocator -*- C++ -*-
-
-// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _CXX_ALLOCATOR_H
-#define _CXX_ALLOCATOR_H 1
-
-// Define new_allocator as the base class to std::allocator.
-#include 
-#define __glibcxx_base_allocator  __gnu_cxx::__pool_alloc
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/alpha/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/alpha/atomic_word.h
deleted file mode 100644
index a9cc1b80d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/alpha/atomic_word.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/cpu/alpha/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/alpha/atomicity.h
deleted file mode 100644
index f45b92b91..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/alpha/atomicity.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Low-level functions for atomic operations: Alpha version  -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  { return __sync_fetch_and_add(__mem, __val); }
-
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __sync_fetch_and_add(__mem, __val); }
-} // namespace __gnu_cxx
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/arm/cxxabi_tweaks.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/arm/cxxabi_tweaks.h
deleted file mode 100644
index 76c8a3640..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/arm/cxxabi_tweaks.h
+++ /dev/null
@@ -1,73 +0,0 @@
-// Control various target specific ABI tweaks.  ARM version.
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _CXXABI_TWEAKS_H
-#define _CXXABI_TWEAKS_H 1
-
-#ifdef __cplusplus
-namespace __cxxabiv1
-{
-#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
-  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
-  __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 // __cxxabiv1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/cris/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/cris/atomic_word.h
deleted file mode 100644
index 32565e19c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/cris/atomic_word.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/cpu/cris/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/cris/atomicity.h
deleted file mode 100644
index f0d8f025d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/cris/atomicity.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// Low-level functions for atomic operations: CRIS version  -*- C++ -*-
-
-// Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  {
-    int __tmp;
-    _Atomic_word __result;
-
-#if (__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)
-  { __exchange_and_add(__mem, __val); }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/atomic_word.h
deleted file mode 100644
index 43074499e..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/atomic_word.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/cpu/generic/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/atomicity.h
deleted file mode 100644
index ddeea4afb..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/atomicity.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Low-level functions for atomic operations: Generic version  -*- C++ -*-
-
-// Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-#include 
-
-namespace __gnu_internal
-{
-  __glibcxx_mutex_define_initialized(atomic_mutex);
-} // namespace __gnu_internal
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  {
-    __glibcxx_mutex_lock(__gnu_internal::atomic_mutex);
-    _Atomic_word __result;
-    __result = *__mem;
-    *__mem += __val;
-    __glibcxx_mutex_unlock(__gnu_internal::atomic_mutex);
-    return __result;
-  }
-
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __exchange_and_add(__mem, __val); }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cpu_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cpu_defines.h
deleted file mode 100644
index 0fea9bd47..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cpu_defines.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _GLIBCXX_CPU_DEFINES
-#define _GLIBCXX_CPU_DEFINES 1
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cxxabi_tweaks.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cxxabi_tweaks.h
deleted file mode 100644
index 4b74805d8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/generic/cxxabi_tweaks.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Control various target specific ABI tweaks.  Generic version.
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _CXXABI_TWEAKS_H
-#define _CXXABI_TWEAKS_H 1
-
-#ifdef __cplusplus
-namespace __cxxabiv1
-{
-#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
-  __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 // __cxxabiv1
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/hppa/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/hppa/atomicity.h
deleted file mode 100644
index 721dd03f6..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/hppa/atomicity.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Low-level functions for atomic operations: PA-RISC version  -*- C++ -*-
-
-// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-#include 
-
-namespace __gnu_cxx
-{
-  template
-    struct _Atomicity_lock
-    {
-      static volatile int _S_atomicity_lock;
-    };
-  
-  template
-  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)
-  {
-    _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;
-    /* Reset lock with PA 2.0 "ordered" store.  */
-    __asm__ __volatile__ ("stw,ma %1,0(%0)"
-			  : : "r" (&lock), "r" (tmp) : "memory");
-    return result;
-  }
-  
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  {
-    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;
-    /* Reset lock with PA 2.0 "ordered" store.  */
-    __asm__ __volatile__ ("stw,ma %1,0(%0)"
-			  : : "r" (&lock), "r" (tmp) : "memory");
-  }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i386/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i386/atomicity.h
deleted file mode 100644
index b670509f2..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i386/atomicity.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Low-level functions for atomic operations: x86, x >= 3 version  -*- C++ -*-
-
-// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  template
-    struct _Atomicity_lock
-    {
-      static volatile _Atomic_word _S_atomicity_lock;
-    };
-
-  template
-  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)
-  {
-    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)
-  { __exchange_and_add(__mem, __val); }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i486/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i486/atomicity.h
deleted file mode 100644
index 977070d32..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/i486/atomicity.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Low-level functions for atomic operations: x86, x >= 4 version  -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word 
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  {
-    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)
-  {
-    __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}"
-			  : "=m" (*__mem) : "ir" (__val), "m" (*__mem));
-  }
-} // namespace __gnu_cxx
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/ia64/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/ia64/atomic_word.h
deleted file mode 100644
index ca6fa26b2..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/ia64/atomic_word.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _GLIBCXX_ATOMIC_WORD_H
-#define _GLIBCXX_ATOMIC_WORD_H	1
-
-#include 
-
-typedef int _Atomic_word;
-
-namespace __gnu_cxx
-{
-  // 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(__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(__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.1.0/config/cpu/ia64/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/ia64/atomicity.h
deleted file mode 100644
index 0fd9b3b5a..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/ia64/atomicity.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Low-level functions for atomic operations: IA64 version  -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2003, 2004, 2005
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word 
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  { return __sync_fetch_and_add(__mem, __val); }
-
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __sync_fetch_and_add(__mem, __val); }
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/m68k/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/m68k/atomicity.h
deleted file mode 100644
index 880a37114..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/m68k/atomicity.h
+++ /dev/null
@@ -1,133 +0,0 @@
-// Low-level functions for atomic operations: m68k version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-#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)
-  {
-    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)
-  {
-    _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
-    struct _Atomicity_lock
-    {
-      static volatile unsigned char _S_atomicity_lock;
-    };
-
-  template
-  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)
-  {
-    _Atomic_word __result;
-    
-    // bset with no immediate addressing (not SMP-safe)
-#if defined(__mcf5200__) || defined(__mcf5300__)
-    __asm__ __volatile__("1: bset.b #7,%0@\n\tjbne 1b"
-			 : /* no outputs */
-			 : "a"(&_Atomicity_lock<0>::_S_atomicity_lock)
-			 : "cc", "memory");
-    
-    // CPU32 and MCF5400 support test-and-set (SMP-safe).
-#elif defined(__mcpu32__) || defined(__mcf5400__)
-    __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)
-  {
-    // Careful: using add.l with a memory destination is not
-    // architecturally guaranteed to be atomic.
-    __exchange_and_add(__mem, __val);
-  }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/mips/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/mips/atomicity.h
deleted file mode 100644
index 561cd35f4..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/mips/atomicity.h
+++ /dev/null
@@ -1,83 +0,0 @@
-// Low-level functions for atomic operations: MIPS version  -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  {
-    _Atomic_word __result, __tmp;
-    
-    __asm__ __volatile__
-      ("/* Inline exchange & add */\n\t"
-       "1:\n\t"
-       ".set	push\n\t"
-#if _MIPS_SIM == _ABIO32
-       ".set	mips2\n\t"
-#endif
-       "ll	%0,0(%2)\n\t"
-       "addu	%1,%3,%0\n\t"
-       "sc	%1,0(%2)\n\t"
-       ".set	pop\n\t"
-       "beqz	%1,1b\n\t"
-       "/* End exchange & add */"
-       : "=&r"(__result), "=&r"(__tmp)
-       : "r"(__mem), "r"(__val)
-       :  "memory" );
-    
-    return __result;
-  }
-  
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  {
-    _Atomic_word __result;
-    
-    __asm__ __volatile__
-      ("/* Inline atomic add */\n\t"
-       "1:\n\t"
-       ".set	push\n\t"
-#if _MIPS_SIM == _ABIO32
-       ".set	mips2\n\t"
-#endif
-       "ll	%0,0(%1)\n\t"
-       "addu	%0,%2,%0\n\t"
-       "sc	%0,0(%1)\n\t"
-       ".set	pop\n\t"
-       "beqz	%0,1b\n\t"
-       "/* End atomic add */"
-       : "=&r"(__result)
-       : "r"(__mem), "r"(__val)
-       : "memory" );
-  }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomic_word.h
deleted file mode 100644
index 2a5d192c5..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomic_word.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _GLIBCXX_ATOMIC_WORD_H
-#define _GLIBCXX_ATOMIC_WORD_H	1
-
-typedef int _Atomic_word;
-
-#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory")
-#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("lwsync":::"memory")
-
-#endif 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomicity.h
deleted file mode 100644
index 49ad71888..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/atomicity.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Low-level functions for atomic operations: PowerPC version  -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  { return __sync_fetch_and_add(__mem, __val); }
-  
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __sync_fetch_and_add(__mem, __val); }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/cpu_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/cpu_defines.h
deleted file mode 100644
index 95cc498f1..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/powerpc/cpu_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/cpu/s390/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/s390/atomicity.h
deleted file mode 100644
index 1332012d3..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/s390/atomicity.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Low-level functions for atomic operations: S/390 version  -*- C++ -*-
-
-// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word 
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  { return __sync_fetch_and_add(__mem, __val); }
-  
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __sync_fetch_and_add(__mem, __val); }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sh/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sh/atomicity.h
deleted file mode 100644
index 8760c8b39..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sh/atomicity.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// Low-level functions for atomic operations: Generic version  -*- C++ -*-
-
-// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#ifndef _BITS_ATOMICITY_H
-#define _BITS_ATOMICITY_H	1
-
-#ifdef __SH4A__
-
-typedef int _Atomic_word;
-
-static inline _Atomic_word
-__attribute__ ((__unused__))
-__exchange_and_add (volatile _Atomic_word* __mem, int __val)
-{
-  _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;
-}
-
-
-static inline void
-__attribute__ ((__unused__))
-__atomic_add (volatile _Atomic_word* __mem, int __val)
-{
-  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");
-}
-
-#else /* !__SH4A__ */
-
-/* This is generic/atomicity.h */
-
-#include 
-#include 
-
-namespace __gnu_internal
-{
-  __glibcxx_mutex_define_initialized(atomic_mutex);
-} // namespace __gnu_internal
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  {
-    __glibcxx_mutex_lock(__gnu_internal::atomic_mutex);
-    _Atomic_word __result;
-    __result = *__mem;
-    *__mem += __val;
-    __glibcxx_mutex_unlock(__gnu_internal::atomic_mutex);
-    return __result;
-  }
-
-  void
-  __attribute__ ((__unused__))
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __exchange_and_add(__mem, __val); }
-} // namespace __gnu_cxx
-
-#endif /* !__SH4A__ */
-
-#endif /* atomicity.h */
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sparc/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sparc/atomic_word.h
deleted file mode 100644
index b146045a5..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sparc/atomic_word.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/cpu/sparc/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sparc/atomicity.h
deleted file mode 100644
index e49db77eb..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/cpu/sparc/atomicity.h
+++ /dev/null
@@ -1,125 +0,0 @@
-// Low-level functions for atomic operations: Sparc version  -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-namespace __gnu_cxx
-{
-#ifdef __arch64__
-  _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  {
-    _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)
-  {
-    _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
-    struct _Atomicity_lock
-    {
-      static unsigned char _S_atomicity_lock;
-    };
-
-  template
-  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)
-  {
-    _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)
-  {
-    _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__ */
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.cc
deleted file mode 100644
index 071d0b317..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.cc
+++ /dev/null
@@ -1,373 +0,0 @@
-// Wrapper of C-language FILE struct -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 27.8  File-based streams
-//
-
-#include 
-#include 
-#include 
-
-#ifdef _GLIBCXX_HAVE_POLL
-#include 
-#endif
-
-// Pick up ioctl on Solaris 2.8
-#ifdef _GLIBCXX_HAVE_UNISTD_H
-#include 
-#endif
-
-// Pick up FIONREAD on Solaris 2
-#ifdef _GLIBCXX_HAVE_SYS_IOCTL_H
-#define BSD_COMP 
-#include 
-#endif
-
-// Pick up FIONREAD on Solaris 2.5.
-#ifdef _GLIBCXX_HAVE_SYS_FILIO_H
-#include 
-#endif
-
-#ifdef _GLIBCXX_HAVE_SYS_UIO_H
-#include 
-#endif
-
-#if defined(_GLIBCXX_HAVE_S_ISREG) || defined(_GLIBCXX_HAVE_S_IFREG)
-# include 
-# 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  // For ::max() and min() and ::max()
-
-namespace __gnu_internal
-{
-  // 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
-      };
-    
-    switch (mode & (in|out|trunc|app|binary))
-      {
-      case (   out                 ): return "w";  
-      case (   out      |app       ): return "a";  
-      case (   out|trunc           ): return "w";  
-      case (in                     ): return "r";  
-      case (in|out                 ): return "r+"; 
-      case (in|out|trunc           ): return "w+"; 
-	
-      case (   out          |binary): return "wb"; 
-      case (   out      |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";
-	
-      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(__s2);
-    __iov[1].iov_len = __n2;
-
-    for (;;)
-      {
-	__iov[0].iov_base = const_cast(__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
-} // namespace __gnu_internal
-
-namespace std 
-{
-  // Definitions for __basic_file.
-  __basic_file::__basic_file(__c_lock* /*__lock*/) 
-  : _M_cfile(NULL), _M_cfile_created(false) { }
-
-  __basic_file::~__basic_file()
-  { this->close(); }
-      
-  __basic_file*
-  __basic_file::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*
-  __basic_file::sys_open(int __fd, ios_base::openmode __mode)
-  {
-    __basic_file* __ret = NULL;
-    const char* __c_mode = __gnu_internal::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* 
-  __basic_file::open(const char* __name, ios_base::openmode __mode, 
-			   int /*__prot*/)
-  {
-    __basic_file* __ret = NULL;
-    const char* __c_mode = __gnu_internal::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::is_open() const 
-  { return _M_cfile != 0; }
-  
-  int 
-  __basic_file::fd() 
-  { return fileno(_M_cfile); }
-  
-  __c_file*
-  __basic_file::file() 
-  { return _M_cfile; }
-  
-  __basic_file* 
-  __basic_file::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::xsgetn(char* __s, streamsize __n)
-  {
-    streamsize __ret;
-    do
-      __ret = read(this->fd(), __s, __n);
-    while (__ret == -1L && errno == EINTR);
-    return __ret;
-  }
-
-  streamsize 
-  __basic_file::xsputn(const char* __s, streamsize __n)
-  { return __gnu_internal::xwrite(this->fd(), __s, __n); }
-
-  streamsize 
-  __basic_file::xsputn_2(const char* __s1, streamsize __n1,
-			       const char* __s2, streamsize __n2)
-  {
-    streamsize __ret = 0;
-#ifdef _GLIBCXX_HAVE_WRITEV
-    __ret = __gnu_internal::xwritev(this->fd(), __s1, __n1, __s2, __n2);
-#else
-    if (__n1)
-      __ret = __gnu_internal::xwrite(this->fd(), __s1, __n1);
-
-    if (__ret == __n1)
-      __ret += __gnu_internal::xwrite(this->fd(), __s2, __n2);
-#endif
-    return __ret;
-  }
-
-  streamoff
-  __basic_file::seekoff(streamoff __off, ios_base::seekdir __way)
-  {
-#ifdef _GLIBCXX_USE_LFS
-    return lseek64(this->fd(), __off, __way);
-#else
-    if (__off > numeric_limits::max()
-	|| __off < numeric_limits::min())
-      return -1L;
-    return lseek(this->fd(), __off, __way);
-#endif
-  }
-
-  int 
-  __basic_file::sync() 
-  { return fflush(_M_cfile); }
-
-  streamsize
-  __basic_file::showmanyc()
-  {
-#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    
-
-#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::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;
-  }
-}  // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.h
deleted file mode 100644
index 7264f0386..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/basic_file_stdio.h
+++ /dev/null
@@ -1,110 +0,0 @@
-// Wrapper of C-language FILE struct -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 27.8  File-based streams
-//
-
-/** @file basic_file.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- */
-
-#ifndef _BASIC_FILE_STDIO_H
-#define _BASIC_FILE_STDIO_H 1
-
-#pragma GCC system_header
-
-#include 
-#include 
-
-namespace std 
-{
-  // Generic declaration.
-  template
-    class __basic_file; 
-
-  // Specialization.
-  template<>
-    class __basic_file
-    {
-      // 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);
-
-      __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);
-
-      __basic_file* 
-      close(); 
-
-      bool 
-      is_open() const;
-
-      int 
-      fd();
-
-      __c_file*
-      file();
-
-      ~__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);
-
-      int 
-      sync();
-
-      streamsize
-      showmanyc();
-    };
-}  // namespace std
-
-#endif	
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/c_io_stdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/c_io_stdio.h
deleted file mode 100644
index b756ebda2..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/io/c_io_stdio.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// underlying io library  -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-// c_io_stdio.h - Defines for using "C" stdio.h
-
-#ifndef _C_IO_STDIO_H
-#define _C_IO_STDIO_H 1
-
-#include 
-#include 
-#include 
-
-namespace std 
-{
-  typedef __gthread_mutex_t __c_lock;
-
-  // for basic_file.h
-  typedef FILE __c_file;
-
-  // XXX GLIBCXX_ABI Deprecated
-  // for ios_base.h
-  struct __ios_flags
-  {
-    typedef short __int_type;
-
-    static const __int_type _S_boolalpha =	0x0001;
-    static const __int_type _S_dec =		0x0002;
-    static const __int_type _S_fixed = 		0x0004;
-    static const __int_type _S_hex =		0x0008;
-    static const __int_type _S_internal = 	0x0010;
-    static const __int_type _S_left =   	0x0020;
-    static const __int_type _S_oct =		0x0040;
-    static const __int_type _S_right =		0x0080;
-    static const __int_type _S_scientific =	0x0100;
-    static const __int_type _S_showbase =       0x0200;
-    static const __int_type _S_showpoint =	0x0400;
-    static const __int_type _S_showpos =	0x0800;
-    static const __int_type _S_skipws =		0x1000;
-    static const __int_type _S_unitbuf =	0x2000;
-    static const __int_type _S_uppercase =	0x4000;
-    static const __int_type _S_adjustfield =	0x0020 | 0x0080 | 0x0010;
-    static const __int_type _S_basefield =	0x0002 | 0x0040 | 0x0008;
-    static const __int_type _S_floatfield =	0x0100 | 0x0004;
-
-    // 27.4.2.1.3  Type ios_base::iostate
-    static const __int_type _S_badbit =		0x01;
-    static const __int_type _S_eofbit =		0x02;
-    static const __int_type _S_failbit =       	0x04;
-
-    // 27.4.2.1.4  Type openmode
-    static const __int_type _S_app =		0x01;
-    static const __int_type _S_ate =		0x02;
-    static const __int_type _S_bin =		0x04;
-    static const __int_type _S_in =		0x08;
-    static const __int_type _S_out =		0x10;
-    static const __int_type _S_trunc =		0x20;
-  };
-}
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.dummy b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.dummy
deleted file mode 100644
index 58e141353..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.dummy
+++ /dev/null
@@ -1,7 +0,0 @@
-# 
-# This is a placeholder file.  It does nothing and is not used.
-# 
-# If you are seeing this file as your linker script (named linker.map), then
-# either 1) the configuration process determined that symbol versioning should
-# not be done, or 2) you specifically turned it off.
-# 
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.gnu b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.gnu
deleted file mode 100644
index fa13a614e..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/linker-map.gnu
+++ /dev/null
@@ -1,702 +0,0 @@
-## Linker script for GNU ld 2.13.91+ only.
-##
-## Copyright (C) 2002, 2003, 2004, 2005 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 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.
-
-GLIBCXX_3.4 {
-
-  global:
-
-    # Names inside the 'extern' block are demangled names.
-    extern "C++"
-    {
-      std::[A-Za]*;
-      std::ba[a-r]*;
-      std::basic_[a-e]*;
-      std::basic_f[a-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_[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::[d-h]*;
-      std::i[a-n]*;
-      std::ios_base::[A-Ha-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*;
-      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::set_new_handler*;
-      std::set_terminate*;
-      std::set_unexpected*;
-#     std::string
-      std::strstream*;
-      std::strstreambuf*;
-      std::[A-Zt-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::__throw_*;
-      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::_Safe_iterator_base*;
-      __gnu_debug::_Safe_sequence_base*;
-      __gnu_debug::_Error_formatter*;
-      __gnu_norm::_List_node_base::hook*;
-      __gnu_norm::_List_node_base::swap*;
-      __gnu_norm::_List_node_base::unhook*;
-      __gnu_norm::_List_node_base::reverse*;
-      __gnu_norm::_List_node_base::transfer*
-    };
-
-    # Names not in an 'extern' block are mangled names.
-
-    # std::string
-    _ZNSsC*;
-    _ZNSsD*;
-    _ZNSs[0-9][a-z]*;
-    _ZNSs12_Alloc_hiderC*;
-    _ZNSs12_M_leak_hardEv;
-    _ZNSs12_S_constructE[jm]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[jm][jm]*;
-    _ZNSs7_M_dataEPc;
-    _ZNSs7_M_leakEv;
-    _ZNSs9_M_mutateE[jm][jm][jm];
-    _ZNSs4_Rep20_S_empty_rep_storageE;
-    _ZNSs4_Rep11_S_max_sizeE;
-    _ZNSs4_Rep11_S_terminalE;
-    _ZNSsaSE*;
-    _ZNSsixE*;
-    _ZNSspLE*;
-    _ZNKSs[0-9][a-z]*;
-    _ZNKSs[0-9][0-9][a-z]*;
-    _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*;
-
-    # std::wstring
-    _ZNSbIwSt11char_traitsIwESaIwEEC*;
-    _ZNSbIwSt11char_traitsIwESaIwEED*;
-    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][a-z]*;
-    _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC*;
-    _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv;
-    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructE[jm]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[jm][jm]*;
-    _ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw;
-    _ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv;
-    _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateE[jm][jm][jm];
-    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE;
-    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE;
-    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE;
-    _ZNSbIwSt11char_traitsIwESaIwEEaSE*;
-    _ZNSbIwSt11char_traitsIwESaIwEEixE*;
-    _ZNSbIwSt11char_traitsIwESaIwEEpLE*;
-    _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][a-z]*;
-    _ZNKSbIwSt11char_traitsIwESaIwEE[0-9][0-9][a-z]*;
-    _ZNKSbIwSt11char_traitsIwESaIwEE[a-z]*;
-    _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*;
-
-    # std::basic_stringbuf
-    _ZNSt15basic_stringbufI[cw]St11char_traitsI[cw]ESaI[cw]EE[CD]*;
-    _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-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_fstream
-    _ZNSt13basic_fstreamI[cw]St11char_traitsI[cw]EEC*;
-    _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]EE4open*;
-    _ZNKSt13basic_fstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
-
-    # std::basic_ifstream
-    _ZNSt14basic_ifstreamI[cw]St11char_traitsI[cw]EEC*;
-    _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]EE4open*;
-    _ZNKSt14basic_ifstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
-
-    # std::basic_ofstream
-    _ZNSt14basic_ofstreamI[cw]St11char_traitsI[cw]EEC*;
-    _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]EE4open*;
-    _ZNKSt14basic_ofstreamI[cw]St11char_traitsI[cw]EE5rdbufEv;
-
-    # std::basic_istream
-    _ZNSiC*;
-    _ZNSiD*;
-    _ZNKSi[0-9][a-z]*;
-    _ZNSi[0-9][a-h]*;
-    _ZNSi[0-9][j-z]*;
-    _ZNSi6ignoreE[il][il];
-    _ZNSirsE*;
-
-    # std::basic_istream
-    _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[il][ijlm];
-    _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*;
-
-    # std::istream operators and inserters
-    _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::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_facet*;
-
-    # std::num_get
-    _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
-
-    # std::money_get
-    _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
-
-    # 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_v*;
-
-    # __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_add*;
-    _ZN9__gnu_cxx18__exchange_and_add*;
-
-    # 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;
-
-    # virtual table
-    _ZTVNSt8ios_base7failureE;
-    _ZTVNSt6locale5facetE;
-    _ZTVS[a-z];
-    _ZTVSt[0-9][A-Za-z]*;
-    _ZTVSt[0-9][0-9][A-Za-z]*;
-    _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];
-    _ZTINSt8ios_base7failureE;
-    _ZTINSt6locale5facetE;
-    _ZTISt[0-9][A-Za-z]*;
-    _ZTISt[0-9][0-9][A-Za-z]*;
-    _ZTISt11__timepunctI[cw]E;
-    _ZTISt10__num_base;
-    _ZTISt21__ctype_abstract_baseI[cw]E;
-    _ZTISt23__codecvt_abstract_baseI[cw]c11__mbstate_tE;
-    _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]*;
-    _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;
-
-    # function-scope static objects requires a guard variable.
-    _ZGVNSt*;
-
-    # 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;
-    __signbit;
-    __signbitf;
-    __signbitl;
-
-   # GLIBCXX_ABI compatibility only.
-    # std::string
-    _ZNKSs11_M_disjunctEPKc;
-    _ZNKSs15_M_check_lengthE[jm][jm]PKc;
-    _ZNSs4_Rep26_M_set_length_and_sharableE*;
-    _ZNSs7_M_copyEPcPKc[jm];
-    _ZNSs7_M_moveEPcPKc[jm];
-    _ZNSs9_M_assignEPc[jm]c;
-
-    # std::wstring
-    _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw;
-    _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthE[jm][jm]PKc;
-    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableE*;
-    _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKw[jm];
-    _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKw[jm];
-    _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPw[jm]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[ilv];
-    _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilv];
-
-    _ZNSt11char_traitsI[cw]E2eqERK[cw]S2_;
-
-    _ZNSt19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEppEv;
-
-    # 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[jm];
-    _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listE[jm];
-    _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[jm][jm];
-    _ZN9__gnu_cxx6__poolILb[01]EE16_M_reclaim_blockEPc[jm];
-    _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[jm][jm]PKc;
-    _ZNSs4_Rep26_M_set_length_and_sharableE*;
-    _ZNSs7_M_copyEPcPKc[jm];
-    _ZNSs7_M_moveEPcPKc[jm];
-    _ZNSs9_M_assignEPc[jm]c;
-
-    # std::wstring
-    _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw;
-    _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthE[jm][jm]PKc;
-    _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableE*;
-    _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKw[jm];
-    _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKw[jm];
-    _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPw[jm]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[ilv];
-    _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[ilv];
-
-    _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]EEiPSt15basic_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;
-
-    _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv;
-
-    _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv;
-
-} GLIBCXX_3.4.5;
-
-GLIBCXX_3.4.7 {
-
-    _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetE[jm];
-
-} GLIBCXX_3.4.6;
-
-# 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-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;
-
-    # 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;
-
-    # __gnu_cxx::_verbose_terminate_handler()
-    _ZN9__gnu_cxx27__verbose_terminate_handlerEv;
-
-  local:
-    *;
-};
-
-CXXABI_1.3.1 {
-
-    __cxa_get_exception_ptr;
-
-} CXXABI_1.3;
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/darwin/ctype_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/darwin/ctype_members.cc
deleted file mode 100644
index c2a5c4ac5..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/darwin/ctype_members.cc
+++ /dev/null
@@ -1,171 +0,0 @@
-// std::ctype implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 
-
-namespace std
-{
-  // NB: The other ctype specializations are in src/locale.cc and
-  // various /config/os/* files.
-  template<>
-    ctype_byname::ctype_byname(const char* __s, size_t __refs)
-    : ctype(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); 
-	}
-    }
-
-#ifdef _GLIBCXX_USE_WCHAR_T  
-  ctype::__wmask_type
-  ctype::_M_convert_to_wmask(const mask __m) const
-  {
-    // Darwin uses the same codes for 'char' as 'wchar_t', so this routine
-    // never gets called.
-    return __m;
-  };
-  
-  wchar_t
-  ctype::do_toupper(wchar_t __c) const
-  { return towupper(__c); }
-
-  const wchar_t*
-  ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
-  {
-    while (__lo < __hi)
-      {
-        *__lo = towupper(*__lo);
-        ++__lo;
-      }
-    return __hi;
-  }
-  
-  wchar_t
-  ctype::do_tolower(wchar_t __c) const
-  { return towlower(__c); }
-  
-  const wchar_t*
-  ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
-  {
-    while (__lo < __hi)
-      {
-        *__lo = towlower(*__lo);
-        ++__lo;
-      }
-    return __hi;
-  }
-
-  wchar_t
-  ctype::
-  do_widen(char __c) const
-  { return _M_widen[static_cast(__c)]; }
-
-  const char* 
-  ctype::
-  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-  {
-    while (__lo < __hi)
-      {
-	*__dest = _M_widen[static_cast(*__lo)];
-	++__lo;
-	++__dest;
-      }
-    return __hi;
-  }
-
-  char
-  ctype::
-  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(__c)); 
-  }
-
-  const wchar_t*
-  ctype::
-  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(__c));
-	    }
-	  ++__lo;
-	  ++__dest;
-	}
-    else
-      while (__lo < __hi)
-	{
-	  const int __c = wctob(*__lo);
-	  *__dest = (__c == EOF ? __dfault : static_cast(__c));
-	  ++__lo;
-	  ++__dest;
-	}
-    return __hi;
-  }
-
-  void
-  ctype::_M_initialize_ctype()
-  {
-    wint_t __i;
-    for (__i = 0; __i < 128; ++__i)
-      {
-	const int __c = wctob(__i);
-	if (__c == EOF)
-	  break;
-	else
-	  _M_narrow[__i] = static_cast(__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.1.0/config/locale/generic/c++locale_internal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c++locale_internal.h
deleted file mode 100644
index 2ad85e525..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c++locale_internal.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Locale internal implementation header -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-// The generic locale code doesn't need to do anything here (yet)
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.cc
deleted file mode 100644
index d6f67eeae..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-// Wrapper for underlying C-language localization -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.8  Standard locale categories.
-//
-
-// Written by Benjamin Kosnik 
-
-#include   // For errno
-#include   // For isinf, finite, finitef, fabs
-#include   // For strof, strtold
-#include 
-
-#ifdef _GLIBCXX_HAVE_IEEEFP_H
-#include 
-#endif
-
-namespace std 
-{
-  // Specializations for all types used in num_get.
-  template<>
-    void
-    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-		   const __c_locale&) 	      
-    {
-      // Assumes __s formatted for "C" locale.
-      errno = 0;
-      char* __old = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, "C");
-      char* __sanity;
-#if defined(_GLIBCXX_HAVE_STRTOF)
-      float __f = strtof(__s, &__sanity);
-#else
-      double __d = strtod(__s, &__sanity);
-      float __f = static_cast(__d);
-#ifdef _GLIBCXX_HAVE_FINITEF
-      if (!finitef (__f))
-	errno = ERANGE;
-#elif defined (_GLIBCXX_HAVE_FINITE)
-      if (!finite (static_cast (__f)))
-	errno = ERANGE;
-#elif defined (_GLIBCXX_HAVE_ISINF)
-      if (isinf (static_cast (__f)))
-	errno = ERANGE;
-#else
-      if (fabs(__d) > numeric_limits::max())
-	errno = ERANGE;
-#endif
-#endif
-      if (__sanity != __s && errno != ERANGE)
-	__v = __f;
-      else
-	__err |= ios_base::failbit;
-      setlocale(LC_ALL, __old);
-      free(__old);
-    }
-
-  template<>
-    void
-    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-		   const __c_locale&) 
-    {
-      // Assumes __s formatted for "C" locale.
-      errno = 0;
-      char* __old = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, "C");
-      char* __sanity;
-      double __d = strtod(__s, &__sanity);
-      if (__sanity != __s && errno != ERANGE)
-	__v = __d;
-      else
-	__err |= ios_base::failbit;
-      setlocale(LC_ALL, __old);
-      free(__old);
-    }
-
-  template<>
-    void
-    __convert_to_v(const char* __s, long double& __v, 
-		   ios_base::iostate& __err, const __c_locale&) 
-    {
-      // Assumes __s formatted for "C" locale.
-      errno = 0;
-      char* __old = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, "C");
-#if defined(_GLIBCXX_HAVE_STRTOLD)
-      char* __sanity;
-      long double __ld = strtold(__s, &__sanity);
-      if (__sanity != __s && errno != ERANGE)
-	__v = __ld;
-#else
-      typedef char_traits::int_type int_type;
-      long double __ld;
-      int __p = sscanf(__s, "%Lf", &__ld);
-      if (__p && static_cast(__p) != char_traits::eof()
-	  && errno != ERANGE)
-	__v = __ld;
-#endif
-      else
-	__err |= ios_base::failbit;
-      setlocale(LC_ALL, __old);
-      free(__old);
-    }
-
-  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 = NULL;
-    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 = NULL; }
-
-  __c_locale
-  locale::facet::_S_clone_c_locale(__c_locale&)
-  { return __c_locale(); }
-} // namespace std
-
-namespace __gnu_cxx
-{
-  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
-    {
-      "LC_CTYPE", 
-      "LC_NUMERIC",
-      "LC_TIME",   
-      "LC_COLLATE", 
-      "LC_MONETARY",
-      "LC_MESSAGES"
-    };
-}  
-
-namespace std
-{
-  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
-}  // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.h
deleted file mode 100644
index cf636ae4f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/c_locale.h
+++ /dev/null
@@ -1,86 +0,0 @@
-// Wrapper for underlying C-language localization -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.8  Standard locale categories.
-//
-
-// Written by Benjamin Kosnik 
-
-#ifndef _C_LOCALE_H
-#define _C_LOCALE_H 1
-
-#pragma GCC system_header
-
-#include 
-#include    // get std::strlen
-#include     // get std::snprintf or std::sprintf
-
-#define _GLIBCXX_NUM_CATEGORIES 0
-
-namespace std
-{
-  typedef int*			__c_locale;
-
-  // Convert numeric value of type _Tv to string and return length of
-  // string.  If snprintf is available use it, otherwise fall back to
-  // the unsafe sprintf which, in general, can be dangerous and should
-  // be avoided.
-  template
-    int
-    __convert_from_v(char* __out, 
-		     const int __size __attribute__((__unused__)),
-		     const char* __fmt,
-		     _Tv __v, const __c_locale&, int __prec)
-    {
-      char* __old = std::setlocale(LC_NUMERIC, NULL);
-      char* __sav = NULL;
-      if (std::strcmp(__old, "C"))
-	{
-	  __sav = new char[std::strlen(__old) + 1];
-	  std::strcpy(__sav, __old);
-	  std::setlocale(LC_NUMERIC, "C");
-	}
-
-#ifdef _GLIBCXX_USE_C99
-      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-#else
-      const int __ret = std::sprintf(__out, __fmt, __prec, __v);
-#endif
-      
-      if (__sav)
-	{
-	  std::setlocale(LC_NUMERIC, __sav);
-	  delete [] __sav;
-	}
-      return __ret;
-    }
-}
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/codecvt_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/codecvt_members.cc
deleted file mode 100644
index 3cd35ace8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/codecvt_members.cc
+++ /dev/null
@@ -1,217 +0,0 @@
-// std::codecvt implementation details, generic version -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.2.1.5 - Template class codecvt
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std
-{
-  // Specializations.
-#ifdef _GLIBCXX_USE_WCHAR_T
-  codecvt_base::result
-  codecvt::
-  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(-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(-1))
-	      {
-		__ret = error;
-		break;
-	      }
-	    else if (__conv > static_cast(__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::
-  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(-1))
-	  {
-	    __ret = error;
-	    break;
-	  }
-	else if (__conv == static_cast(-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::
-  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::
-  do_max_length() const throw()
-  {
-    // XXX Probably wrong for stateful encodings.
-    int __ret = MB_CUR_MAX;
-    return __ret;
-  }
-  
-  int 
-  codecvt::
-  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(NULL, __from, __end - __from, &__tmp_state);
-	if (__conv == static_cast(-1))
-	  {
-	    // Invalid source character
-	    break;
-	  }
-	else if (__conv == static_cast(-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
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/collate_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/collate_members.cc
deleted file mode 100644
index d94599ec2..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/collate_members.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-// std::collate implementation details, generic version -*- C++ -*-
-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std
-{
-  // These are basically extensions to char_traits, and perhaps should
-  // be put there instead of here.
-  template<>
-    int 
-    collate::_M_compare(const char* __one, const char* __two) const
-    { 
-      int __cmp = strcoll(__one, __two);
-      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-    }
-  
-  template<>
-    size_t
-    collate::_M_transform(char* __to, const char* __from, 
-				size_t __n) const
-    { return strxfrm(__to, __from, __n); }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<>
-    int 
-    collate::_M_compare(const wchar_t* __one, 
-				 const wchar_t* __two) const
-    {
-      int __cmp = wcscoll(__one, __two);
-      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-    }
-  
-  template<>
-    size_t
-    collate::_M_transform(wchar_t* __to, const wchar_t* __from,
-				   size_t __n) const
-    { return wcsxfrm(__to, __from, __n); }
-#endif
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/ctype_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/ctype_members.cc
deleted file mode 100644
index 246861707..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/ctype_members.cc
+++ /dev/null
@@ -1,267 +0,0 @@
-// std::ctype implementation details, generic version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std
-{
-  // NB: The other ctype specializations are in src/locale.cc and
-  // various /config/os/* files.
-  template<>
-    ctype_byname::ctype_byname(const char* __s, size_t __refs)
-    : ctype(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); 
-	}
-    }
-
-#ifdef _GLIBCXX_USE_WCHAR_T  
-  ctype::__wmask_type
-  ctype::_M_convert_to_wmask(const mask __m) const
-  {
-    __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::do_toupper(wchar_t __c) const
-  { return towupper(__c); }
-
-  const wchar_t*
-  ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
-  {
-    while (__lo < __hi)
-      {
-        *__lo = towupper(*__lo);
-        ++__lo;
-      }
-    return __hi;
-  }
-  
-  wchar_t
-  ctype::do_tolower(wchar_t __c) const
-  { return towlower(__c); }
-  
-  const wchar_t*
-  ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
-  {
-    while (__lo < __hi)
-      {
-        *__lo = towlower(*__lo);
-        ++__lo;
-      }
-    return __hi;
-  }
-
-  bool
-  ctype::
-  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::
-  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::
-  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::
-  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::
-  do_widen(char __c) const
-  { return _M_widen[static_cast(__c)]; }
-  
-  const char* 
-  ctype::
-  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-  {
-    while (__lo < __hi)
-      {
-	*__dest = _M_widen[static_cast(*__lo)];
-	++__lo;
-	++__dest;
-      }
-    return __hi;
-  }
-
-  char
-  ctype::
-  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(__c)); 
-  }
-
-  const wchar_t*
-  ctype::
-  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(__c));
-	    }
-	  ++__lo;
-	  ++__dest;
-	}
-    else
-      while (__lo < __hi)
-	{
-	  const int __c = wctob(*__lo);
-	  *__dest = (__c == EOF ? __dfault : static_cast(__c));
-	  ++__lo;
-	  ++__dest;
-	}
-    return __hi;
-  }
-
-  void
-  ctype::_M_initialize_ctype()
-  {
-    wint_t __i;
-    for (__i = 0; __i < 128; ++__i)
-      {
-	const int __c = wctob(__i);
-	if (__c == EOF)
-	  break;
-	else
-	  _M_narrow[__i] = static_cast(__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(1 << __i);
-	_M_wmask[__i] = _M_convert_to_wmask(_M_bit[__i]);
-      }  
-  }
-#endif //  _GLIBCXX_USE_WCHAR_T
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.cc
deleted file mode 100644
index 96e55c192..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-// std::messages implementation details, generic version -*- C++ -*-
-
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std
-{
-  // Specializations
-  template<>
-    string
-    messages::do_get(catalog, int, int, const string& __dfault) const
-    { return __dfault; }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<>
-    wstring
-    messages::do_get(catalog, int, int, const wstring& __dfault) const
-    { return __dfault; }
-#endif
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.h
deleted file mode 100644
index 2fa173360..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/messages_members.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// std::messages implementation details, generic version -*- C++ -*-
-
-// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-  // Non-virtual member functions.
-  template
-     messages<_CharT>::messages(size_t __refs)
-     : facet(__refs)
-     { _M_c_locale_messages = _S_get_c_locale(); }
-
-  template
-     messages<_CharT>::messages(__c_locale, const char*, size_t __refs) 
-     : facet(__refs)
-     { _M_c_locale_messages = _S_get_c_locale(); }
-
-  template
-    typename messages<_CharT>::catalog 
-    messages<_CharT>::open(const basic_string& __s, const locale& __loc, 
-			   const char*) const
-    { return this->do_open(__s, __loc); }
-
-  // Virtual member functions.
-  template
-    messages<_CharT>::~messages()
-    { _S_destroy_c_locale(_M_c_locale_messages); }
-
-  template
-    typename messages<_CharT>::catalog 
-    messages<_CharT>::do_open(const basic_string&, const locale&) const
-    { return 0; }
-
-  template
-    typename messages<_CharT>::string_type  
-    messages<_CharT>::do_get(catalog, int, int, 
-			     const string_type& __dfault) const
-    { return __dfault; }
-
-  template
-    void    
-    messages<_CharT>::do_close(catalog) const 
-    { }
-
-   // messages_byname
-   template
-     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
-     : messages<_CharT>(__refs) 
-     { 
-	if (std::strcmp(__s, "C") != 0 && std::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); 
-	  }
-     }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/monetary_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/monetary_members.cc
deleted file mode 100644
index 3a9845867..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/monetary_members.cc
+++ /dev/null
@@ -1,171 +0,0 @@
-// std::moneypunct implementation details, generic version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std
-{
-  // 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)
-  { return _S_default_pattern; }
-
-  template<> 
-    void
-    moneypunct::_M_initialize_moneypunct(__c_locale, const char*)
-    {
-      // "C" locale.
-      if (!_M_data)
-	_M_data = new __moneypunct_cache;
-
-      _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::_M_initialize_moneypunct(__c_locale, const char*)
-    {
-      // "C" locale.
-      if (!_M_data)
-	_M_data = new __moneypunct_cache;
-
-      _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::~moneypunct()
-    { delete _M_data; }
-
-  template<> 
-    moneypunct::~moneypunct()
-    { delete _M_data; }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<> 
-    void
-    moneypunct::_M_initialize_moneypunct(__c_locale, 
-							const char*)
-    {
-      // "C" locale
-      if (!_M_data)
-	_M_data = new __moneypunct_cache;
-
-      _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(money_base::_S_atoms[__i]);
-    }
-
-  template<> 
-    void
-    moneypunct::_M_initialize_moneypunct(__c_locale, 
-							 const char*)
-    {
-      // "C" locale
-      if (!_M_data)
-	_M_data = new __moneypunct_cache;
-
-      _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(money_base::_S_atoms[__i]);
-    }
-
-  template<> 
-    moneypunct::~moneypunct()
-    { delete _M_data; }
-
-  template<> 
-    moneypunct::~moneypunct()
-    { delete _M_data; }
-#endif
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/numeric_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/numeric_members.cc
deleted file mode 100644
index cc2fc788b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/numeric_members.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-// std::numpunct implementation details, generic version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std
-{
-  template<> 
-    void
-    numpunct::_M_initialize_numpunct(__c_locale)
-    {
-      // "C" locale
-      if (!_M_data)
-	_M_data = new __numpunct_cache;
-
-      _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::~numpunct()
-    { delete _M_data; }
-      
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<> 
-    void
-    numpunct::_M_initialize_numpunct(__c_locale)
-    {
-      // "C" locale
-      if (!_M_data)
-	_M_data = new __numpunct_cache;
-
-      _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(__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(__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::~numpunct()
-    { delete _M_data; }
-#endif
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.cc
deleted file mode 100644
index f13ea19e4..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-// std::time_get, std::time_put implementation, generic version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// 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 
-
-#include 
-
-namespace std
-{
-  template<>
-    void
-    __timepunct::
-    _M_put(char* __s, size_t __maxlen, const char* __format, 
-	   const tm* __tm) const
-    {
-      char* __old = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, _M_name_timepunct);
-      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-      setlocale(LC_ALL, __old);
-      free(__old);
-      // Make sure __s is null terminated.
-      if (__len == 0)
-	__s[0] = '\0';
-    }
-
-  template<> 
-    void
-    __timepunct::_M_initialize_timepunct(__c_locale)
-    { 
-      // "C" locale.
-      if (!_M_data)
-	_M_data = new __timepunct_cache;
-
-      _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::
-    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-	   const tm* __tm) const
-    {
-      char* __old = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, _M_name_timepunct);
-      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-      setlocale(LC_ALL, __old);
-      free(__old);
-      // Make sure __s is null terminated.
-      if (__len == 0)
-	__s[0] = L'\0';      
-    }
-
-  template<> 
-    void
-    __timepunct::_M_initialize_timepunct(__c_locale)
-    {
-      // "C" locale.
-      if (!_M_data)
-	_M_data = new __timepunct_cache;
-
-      _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
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.h
deleted file mode 100644
index b3112dc4e..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/generic/time_members.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// std::time_get, std::time_put implementation, generic version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// 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 
-
-  template
-    __timepunct<_CharT>::__timepunct(size_t __refs) 
-    : facet(__refs), _M_data(NULL)
-    { 
-      _M_name_timepunct = _S_get_c_name();
-      _M_initialize_timepunct(); 
-    }
-
-  template
-    __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
-    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, 
-				     size_t __refs) 
-    : facet(__refs), _M_data(NULL)
-    { 
-      const size_t __len = std::strlen(__s) + 1;
-      char* __tmp = new char[__len];
-      std::memcpy(__tmp, __s, __len);
-      _M_name_timepunct = __tmp;
-
-      try
-	{ _M_initialize_timepunct(__cloc); }
-      catch(...)
-	{ 
-	  delete [] _M_name_timepunct;
-	  __throw_exception_again;
-	}
-    }
-
-  template
-    __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); 
-    }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c++locale_internal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c++locale_internal.h
deleted file mode 100644
index d9354eb52..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c++locale_internal.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-
-// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-// Written by Jakub Jelinek 
-
-#include 
-#include 
-
-#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.1.0/config/locale/gnu/c_locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c_locale.cc
deleted file mode 100644
index 7a45a6e9f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c_locale.cc
+++ /dev/null
@@ -1,134 +0,0 @@
-// Wrapper for underlying C-language localization -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.8  Standard locale categories.
-//
-
-// Written by Benjamin Kosnik 
-
-#include   // For errno
-#include 
-#include 
-#include 
-#include 
-
-namespace std 
-{
-  template<>
-    void
-    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-		   const __c_locale& __cloc)
-    {
-      char* __sanity;
-      errno = 0;
-      float __f = __strtof_l(__s, &__sanity, __cloc);
-      if (__sanity != __s && errno != ERANGE)
-	__v = __f;
-      else
-	__err |= ios_base::failbit;
-    }
-
-  template<>
-    void
-    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-		   const __c_locale& __cloc)
-    {
-      char* __sanity;
-      errno = 0;
-      double __d = __strtod_l(__s, &__sanity, __cloc);
-      if (__sanity != __s && errno != ERANGE)
-	__v = __d;
-      else
-	__err |= ios_base::failbit;
-    }
-
-  template<>
-    void
-    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
-		   const __c_locale& __cloc)
-    {
-      char* __sanity;
-      errno = 0;
-      long double __ld = __strtold_l(__s, &__sanity, __cloc);
-      if (__sanity != __s && errno != ERANGE)
-	__v = __ld;
-      else
-	__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)
-  { return __duplocale(__cloc); }
-} // namespace std
-
-namespace __gnu_cxx
-{
-  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" 
-    };
-}
-
-namespace std
-{
-  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
-}  // namespace std
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c_locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c_locale.h
deleted file mode 100644
index d28caf8a4..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/c_locale.h
+++ /dev/null
@@ -1,101 +0,0 @@
-// Wrapper for underlying C-language localization -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.8  Standard locale categories.
-//
-
-// Written by Benjamin Kosnik 
-
-#ifndef _C_LOCALE_H
-#define _C_LOCALE_H 1
-
-#pragma GCC system_header
-
-#include               // get std::strlen
-#include                // get std::snprintf or std::sprintf
-#include 
-#include 		// For codecvt
-#include 		// For codecvt using iconv, iconv_t
-#include  		// For messages
-
-#define _GLIBCXX_C_LOCALE_GNU 1
-
-#define _GLIBCXX_NUM_CATEGORIES 6
-
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-namespace __gnu_cxx
-{
-  extern "C" __typeof(uselocale) __uselocale;
-}
-#endif
-
-namespace std
-{
-  typedef __locale_t		__c_locale;
-
-  // Convert numeric value of type _Tv to string and return length of
-  // string.  If snprintf is available use it, otherwise fall back to
-  // the unsafe sprintf which, in general, can be dangerous and should
-  // be avoided.
-  template
-    int
-    __convert_from_v(char* __out, 
-		     const int __size __attribute__ ((__unused__)),
-		     const char* __fmt,
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-		     _Tv __v, const __c_locale& __cloc, int __prec)
-    {
-      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-#else
-		     _Tv __v, const __c_locale&, int __prec)
-    {
-      char* __old = std::setlocale(LC_ALL, NULL);
-      char* __sav = new char[std::strlen(__old) + 1];
-      std::strcpy(__sav, __old);
-      std::setlocale(LC_ALL, "C");
-#endif
-
-#ifdef _GLIBCXX_USE_C99
-      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-#else
-      const int __ret = std::sprintf(__out, __fmt, __prec, __v);
-#endif
-
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-      __gnu_cxx::__uselocale(__old);
-#else
-      std::setlocale(LC_ALL, __sav);
-      delete [] __sav;
-#endif
-      return __ret;
-    }
-}
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/codecvt_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/codecvt_members.cc
deleted file mode 100644
index ae2bc77f3..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/codecvt_members.cc
+++ /dev/null
@@ -1,306 +0,0 @@
-// std::codecvt implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.2.1.5 - Template class codecvt
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 
-
-namespace std
-{
-  // Specializations.
-#ifdef _GLIBCXX_USE_WCHAR_T
-  codecvt_base::result
-  codecvt::
-  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(-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 __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
-	    if (__conv > static_cast(__to_end - __to_next))
-	      __ret = partial;
-	    else
-	      {
-		memcpy(__to_next, __buf, __conv);
-		__state = __tmp_state;
-		__to_next += __conv;
-		++__from_next;
-	      }
-	  }
-      }
-
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-    __uselocale(__old);
-#endif
-
-    return __ret; 
-  }
-  
-  codecvt_base::result
-  codecvt::
-  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(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(-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(-1)
-		    || __conv == static_cast(-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::
-  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::
-  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::
-  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(__builtin_alloca(sizeof(wchar_t) 
-							   * __max));
-    while (__from < __end && __max)
-      {
-	const extern_type* __from_chunk_end;
-	__from_chunk_end = static_cast(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(-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(NULL, __from, __end - __from,
-				 &__tmp_state);
-		if (__conv == static_cast(-1)
-		    || __conv == static_cast(-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
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/collate_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/collate_members.cc
deleted file mode 100644
index a0a08772c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/collate_members.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// std::collate implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 
-
-namespace std
-{
-  // These are basically extensions to char_traits, and perhaps should
-  // be put there instead of here.
-  template<>
-    int 
-    collate::_M_compare(const char* __one, const char* __two) const
-    { 
-      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
-      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-    }
-  
-  template<>
-    size_t
-    collate::_M_transform(char* __to, const char* __from, 
-				size_t __n) const 
-    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<>
-    int 
-    collate::_M_compare(const wchar_t* __one, 
-				 const wchar_t* __two) const
-    {
-      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
-      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-    }
-  
-  template<>
-    size_t
-    collate::_M_transform(wchar_t* __to, const wchar_t* __from,
-				   size_t __n) const
-    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-#endif
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/ctype_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/ctype_members.cc
deleted file mode 100644
index 3082b41f8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/ctype_members.cc
+++ /dev/null
@@ -1,303 +0,0 @@
-// std::ctype implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 
-
-namespace std
-{
-  // NB: The other ctype specializations are in src/locale.cc and
-  // various /config/os/* files.
-  template<>
-    ctype_byname::ctype_byname(const char* __s, size_t __refs)
-    : ctype(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;
-	}
-    }
-
-#ifdef _GLIBCXX_USE_WCHAR_T  
-  ctype::__wmask_type
-  ctype::_M_convert_to_wmask(const mask __m) const
-  {
-    __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::do_toupper(wchar_t __c) const
-  { return __towupper_l(__c, _M_c_locale_ctype); }
-
-  const wchar_t*
-  ctype::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::do_tolower(wchar_t __c) const
-  { return __towlower_l(__c, _M_c_locale_ctype); }
-  
-  const wchar_t*
-  ctype::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::
-  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::
-  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::
-  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::
-  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::
-  do_widen(char __c) const
-  { return _M_widen[static_cast(__c)]; }
-
-  const char* 
-  ctype::
-  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-  {
-    while (__lo < __hi)
-      {
-	*__dest = _M_widen[static_cast(*__lo)];
-	++__lo;
-	++__dest;
-      }
-    return __hi;
-  }
-
-  char
-  ctype::
-  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(__c)); 
-  }
-
-  const wchar_t*
-  ctype::
-  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(__c));
-	    }
-	  ++__lo;
-	  ++__dest;
-	}
-    else
-      while (__lo < __hi)
-	{
-	  const int __c = wctob(*__lo);
-	  *__dest = (__c == EOF ? __dfault : static_cast(__c));
-	  ++__lo;
-	  ++__dest;
-	}
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-    __uselocale(__old);
-#endif
-    return __hi;
-  }
-
-  void
-  ctype::_M_initialize_ctype()
-  {
-#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(__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(_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
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.cc
deleted file mode 100644
index c3fc4b520..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.cc
+++ /dev/null
@@ -1,81 +0,0 @@
-// std::messages implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 
-
-namespace std
-{
-  // Specializations.
-  template<>
-    string
-    messages::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(gettext(__dfault.c_str()));
-      __uselocale(__old);
-      return string(__msg);
-#else
-      char* __old = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, _M_name_messages);
-      const char* __msg = gettext(__dfault.c_str());
-      setlocale(LC_ALL, __old);
-      free(__old);
-      return string(__msg);
-#endif
-    }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<>
-    wstring
-    messages::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 = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, _M_name_messages);
-      char* __msg = gettext(_M_convert_to_char(__dfault));
-      setlocale(LC_ALL, __old);
-      free(__old);
-      return _M_convert_from_char(__msg);
-# endif
-    }
-#endif
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.h
deleted file mode 100644
index 5fb7a999d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/messages_members.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// std::messages implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.7.1.2  messages functions
-//
-
-// Written by Benjamin Kosnik 
-
-  // Non-virtual member functions.
-  template
-     messages<_CharT>::messages(size_t __refs)
-     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 
-       _M_name_messages(_S_get_c_name())
-     { }
-
-  template
-     messages<_CharT>::messages(__c_locale __cloc, const char* __s, 
-				size_t __refs) 
-     : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL)
-     {
-       const size_t __len = std::strlen(__s) + 1;
-       char* __tmp = new char[__len];
-       std::memcpy(__tmp, __s, __len);
-       _M_name_messages = __tmp;
-
-       // Last to avoid leaking memory if new throws.
-       _M_c_locale_messages = _S_clone_c_locale(__cloc);
-     }
-
-  template
-    typename messages<_CharT>::catalog 
-    messages<_CharT>::open(const basic_string& __s, const locale& __loc, 
-			   const char* __dir) const
-    { 
-      bindtextdomain(__s.c_str(), __dir);
-      return this->do_open(__s, __loc); 
-    }
-
-  // Virtual member functions.
-  template
-    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 messages<_CharT>::catalog 
-    messages<_CharT>::do_open(const basic_string& __s, 
-			      const locale&) const
-    { 
-      // No error checking is done, assume the catalog exists and can
-      // be used.
-      textdomain(__s.c_str());
-      return 0;
-    }
-
-  template
-    void    
-    messages<_CharT>::do_close(catalog) const 
-    { }
-
-   // messages_byname
-   template
-     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;
-       char* __tmp = new char[std::strlen(__s) + 1];
-       std::strcpy(__tmp, __s);
-       this->_M_name_messages = __tmp;
-
-       if (std::strcmp(__s, "C") != 0 && std::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); 
-	 }
-     }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/monetary_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/monetary_members.cc
deleted file mode 100644
index ba7e242f9..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/monetary_members.cc
+++ /dev/null
@@ -1,655 +0,0 @@
-// std::moneypunct implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 
-
-namespace std
-{
-  // 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)
-  { 
-    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::_M_initialize_moneypunct(__c_locale __cloc, 
-						     const char*)
-    {
-      if (!_M_data)
-	_M_data = new __moneypunct_cache;
-
-      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_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));
-	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-
-	  char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-	  if (!__nposn)
-	    _M_data->_M_negative_sign = "()";
-	  else
-	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, 
-							__cloc);
-	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-
-	  // _Intl == true
-	  _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-						      __cloc));
-	  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::_M_initialize_moneypunct(__c_locale __cloc, 
-						      const char*)
-    {
-      if (!_M_data)
-	_M_data = new __moneypunct_cache;
-
-      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_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));
-	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-
-	  char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-	  if (!__nposn)
-	    _M_data->_M_negative_sign = "()";
-	  else
-	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
-							__cloc);
-	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-
-	  // _Intl == false
-	  _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-	  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::~moneypunct()
-    { delete _M_data; }
-
-  template<> 
-    moneypunct::~moneypunct()
-    { delete _M_data; }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<> 
-    void
-    moneypunct::_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;
-
-      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_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(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 = strdup(setlocale(LC_ALL, NULL));
-	  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;
-	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-
-	  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);
-
-	  wchar_t* __wcs_ps = 0;
-	  wchar_t* __wcs_ns = 0;
-	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-	  try
-	    {
-	      mbstate_t __state;
-	      size_t __len = strlen(__cpossign);
-	      if (__len)
-		{
-		  ++__len;
-		  memset(&__state, 0, sizeof(mbstate_t));
-		  __wcs_ps = new wchar_t[__len];
-		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__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)
-		{ 
-		  ++__len;
-		  memset(&__state, 0, sizeof(mbstate_t));
-		  __wcs_ns = new wchar_t[__len];
-		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__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)
-		{
-		  ++__len;
-		  memset(&__state, 0, sizeof(mbstate_t));
-		  wchar_t* __wcs = new wchar_t[__len];
-		  mbsrtowcs(__wcs, &__ccurr, __len, &__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 __wcs_ps;
-	      delete __wcs_ns;	      
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-	      __uselocale(__old);
-#else
-	      setlocale(LC_ALL, __old);
-	      free(__old);
-#endif
-	      __throw_exception_again;
-	    } 
-	  
-	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-						      __cloc));
-	  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, __old);
-	  free(__old);
-#endif
-	}
-    }
-
-  template<> 
-  void
-  moneypunct::_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;
-
-    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_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(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 = strdup(setlocale(LC_ALL, NULL));
-	  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;
-	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-
-	  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);
-
-	  wchar_t* __wcs_ps = 0;
-	  wchar_t* __wcs_ns = 0;
-	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-	  try
-            {
-              mbstate_t __state;
-              size_t __len;
-              __len = strlen(__cpossign);
-              if (__len)
-                {
-		  ++__len;
-		  memset(&__state, 0, sizeof(mbstate_t));
-		  __wcs_ps = new wchar_t[__len];
-		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__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)
-		{ 
-		  ++__len;
-		  memset(&__state, 0, sizeof(mbstate_t));
-		  __wcs_ns = new wchar_t[__len];
-		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__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)
-		{
-		  ++__len;
-		  memset(&__state, 0, sizeof(mbstate_t));
-		  wchar_t* __wcs = new wchar_t[__len];
-		  mbsrtowcs(__wcs, &__ccurr, __len, &__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 __wcs_ps;
-	      delete __wcs_ns;	      
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-	      __uselocale(__old);
-#else
-	      setlocale(LC_ALL, __old);
-	      free(__old);
-#endif
-              __throw_exception_again;
-	    }
-
-	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-	  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, __old);
-	  free(__old);
-#endif
-	}
-    }
-
-  template<> 
-    moneypunct::~moneypunct()
-    {
-      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::~moneypunct()
-    {
-      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
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/numeric_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/numeric_members.cc
deleted file mode 100644
index 8e580f50a..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/numeric_members.cc
+++ /dev/null
@@ -1,151 +0,0 @@
-// std::numpunct implementation details, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 
-
-namespace std
-{
-  template<> 
-    void
-    numpunct::_M_initialize_numpunct(__c_locale __cloc)
-    {
-      if (!_M_data)
-	_M_data = new __numpunct_cache;
-
-      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')
-	    _M_data->_M_grouping = "";
-	  else
-	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-	}
-
-      // 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::~numpunct()
-    { delete _M_data; }
-   
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<> 
-    void
-    numpunct::_M_initialize_numpunct(__c_locale __cloc)
-    {
-      if (!_M_data)
-	_M_data = new __numpunct_cache;
-
-      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(__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(__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;
-
-	  if (_M_data->_M_thousands_sep == L'\0')
-	    _M_data->_M_grouping = "";
-	  else
-	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-	}
-
-      // 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::~numpunct()
-    { delete _M_data; }
- #endif
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.cc
deleted file mode 100644
index bd91dc4dc..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.cc
+++ /dev/null
@@ -1,395 +0,0 @@
-// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// 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 
-
-#include 
-#include 
-
-namespace std
-{
-  template<>
-    void
-    __timepunct::
-    _M_put(char* __s, size_t __maxlen, const char* __format, 
-	   const tm* __tm) const
-    {
-#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 = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, _M_name_timepunct);
-      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-      setlocale(LC_ALL, __old);
-      free(__old);
-#endif
-      // Make sure __s is null terminated.
-      if (__len == 0)
-	__s[0] = '\0';
-    }
-
-  template<> 
-    void
-    __timepunct::_M_initialize_timepunct(__c_locale __cloc)
-    {
-      if (!_M_data)
-	_M_data = new __timepunct_cache;
-
-      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::
-    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-	   const tm* __tm) const
-    {
-#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 = strdup(setlocale(LC_ALL, NULL));
-      setlocale(LC_ALL, _M_name_timepunct);
-      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-      setlocale(LC_ALL, __old);
-      free(__old);
-#endif
-      // Make sure __s is null terminated.
-      if (__len == 0)
-	__s[0] = L'\0';
-    }
-
-  template<> 
-    void
-    __timepunct::_M_initialize_timepunct(__c_locale __cloc)
-    {
-      if (!_M_data)
-	_M_data = new __timepunct_cache;
-
-      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
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.h
deleted file mode 100644
index 701463073..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/gnu/time_members.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// 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 
-
-  template
-    __timepunct<_CharT>::__timepunct(size_t __refs) 
-    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-      _M_name_timepunct(_S_get_c_name())
-    { _M_initialize_timepunct(); }
-
-  template
-    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 
-    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), 
-      _M_name_timepunct(_S_get_c_name())
-    { _M_initialize_timepunct(); }
-
-  template
-    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
-				     size_t __refs) 
-    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-      _M_name_timepunct(NULL)
-    { 
-      const size_t __len = std::strlen(__s) + 1;
-      char* __tmp = new char[__len];
-      std::memcpy(__tmp, __s, __len);
-      _M_name_timepunct = __tmp;
-
-      try
-	{ _M_initialize_timepunct(__cloc); }
-      catch(...)
-	{
-	  delete [] _M_name_timepunct;
-	  __throw_exception_again;
-	}
-    }
-
-  template
-    __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); 
-    }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/c_locale.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/c_locale.cc
deleted file mode 100644
index 36db96979..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/c_locale.cc
+++ /dev/null
@@ -1,112 +0,0 @@
-// Wrapper for underlying C-language localization -*- C++ -*-
-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.8  Standard locale categories.
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std 
-{
-  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&)
-  { return __c_locale(); }
-
-  template<> 
-    void
-    numpunct::_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::_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::_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::_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.1.0/config/locale/ieee_1003.1-2001/c_locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/c_locale.h
deleted file mode 100644
index 1be2d0ab0..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/c_locale.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Wrapper for underlying C-language localization -*- C++ -*-
-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.8  Standard locale categories.
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-#include 		// For codecvt
-#include 		// For codecvt using iconv, iconv_t
-#include  		// For messages
-
-namespace std
-{
-  typedef int*			__c_locale;
-}
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/messages_members.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/messages_members.cc
deleted file mode 100644
index c5b9de995..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/messages_members.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-// std::messages implementation details, IEEE 1003.1-200x version -*- C++ -*-
-
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-#include 
-
-namespace std
-{
-  // Specializations
-  template<>
-    string
-    messages::do_get(catalog __c, int __setid, int __msgid, 
-			   const string& __dfault) const
-    {
-      nl_catd __nlc = reinterpret_cast(__c);
-      return string(catgets(__nlc, __setid, __msgid, __dfault.c_str())); 
-    }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-  template<>
-    wstring
-    messages::do_get(catalog, int, int, const wstring& __dfault) const
-    {
-      nl_catd __nlc = reinterpret_cast(__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.1.0/config/locale/ieee_1003.1-2001/messages_members.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/messages_members.h
deleted file mode 100644
index 685218a25..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/locale/ieee_1003.1-2001/messages_members.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// std::messages implementation details, IEEE 1003.1-200x version -*- C++ -*-
-
-// Copyright (C) 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-//
-
-// Written by Benjamin Kosnik 
-
-  // Non-virtual member functions.
-  template
-    typename messages<_CharT>::catalog 
-    messages<_CharT>::open(const basic_string& __s, const locale& __loc, 
-			   const char*) const
-    { return this->do_open(__s, __loc); }
-
-  // Virtual member functions.
-  template
-    messages<_CharT>::~messages()
-    { }
-
-  template
-    typename messages<_CharT>::catalog 
-    messages<_CharT>::do_open(const basic_string& __s, 
-			      const locale&) const
-    { return reinterpret_cast(catopen(__s.c_str(), NL_CAT_LOCALE)); }
-
-  template
-    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(__c);
-      char* __msg = catgets(__nlc, __setid, __msgid, 
-			    _M_convert_to_char(__dfault));
-      return _M_convert_from_char(__msg);
-    }
-
-  template
-    void    
-    messages<_CharT>::do_close(catalog __c) const 
-    { catclose(reinterpret_cast(__c)); }
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/atomic_word.h
deleted file mode 100644
index 9ac823cb6..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/atomic_word.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/os/aix/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/atomicity.h
deleted file mode 100644
index 123766cc8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/atomicity.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// Low-level functions for atomic operations: AIX version  -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-
-/* 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 .  */
-
-extern "C"
-{
-#include 
-}
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __attribute__ ((__unused__))
-  __exchange_and_add (volatile _Atomic_word* __mem, int __val)
-  {
-    return ::fetch_and_add (const_cast(__mem), __val);
-  }
-
-  void
-  __attribute__ ((__unused__))
-  __atomic_add (volatile _Atomic_word* __mem, int __val)
-  {
-    (void) ::fetch_and_add (const_cast(__mem), __val);
-  }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_base.h
deleted file mode 100644
index 1b5264aae..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_inline.h
deleted file mode 100644
index 780d92e37..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_inline.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const 
-  { return __OBJ_DATA(__lc_ctype)->mask[__c] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const 
-  {
-    while (__low < __high)
-      *__vec++ = __OBJ_DATA(__lc_ctype)->mask[*__low++];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const 
-  {
-    while (__low < __high && !this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const 
-  {
-    while (__low < __high && this->is(__m, *__low) != 0)
-      ++__low;
-    return __low;
-  }
-
-
-
-
-
-
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_noninline.h
deleted file mode 100644
index 46e01a065..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/ctype_noninline.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return 0; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char*
-  ctype::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.1.0/config/os/aix/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/os_defines.h
deleted file mode 100644
index c2be9f1b4..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/aix/os_defines.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Specific definitions for AIX  -*- C++ -*-
-
-// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_base.h
deleted file mode 100644
index 95307953b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_base.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// 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
-  
-  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
-  };
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_inline.h
deleted file mode 100644
index 9d1694dc2..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_inline.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { 
-    if (_M_table)
-      return _M_table[static_cast(__c)] & __m;
-    else
-      return __istype(__c, __m);
-  }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    if (_M_table)
-      while (__low < __high)
-	*__vec++ = _M_table[static_cast(*__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::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    if (_M_table)
-      while (__low < __high
-	     && !(_M_table[static_cast(*__low)] & __m))
-	++__low;
-    else
-      while (__low < __high && !this->is(__m, *__low))
-	++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    if (_M_table)
-      while (__low < __high
-	     && (_M_table[static_cast(*__low)] & __m) != 0)
-	++__low;
-    else
-      while (__low < __high && this->is(__m, *__low) != 0)
-	++__low;
-    return __low;
-  }
-
-#ifdef _GLIBCXX_USE_WCHAR_T  
-  inline bool
-  ctype::
-  do_is(mask __m, wchar_t __c) const
-  {
-    return __istype (__c, __m);
-  }
-
-  inline const wchar_t* 
-  ctype::
-  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::
-  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::
-  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
-  {
-    while (__lo < __hi && __istype (*__lo, __m))
-      ++__lo;
-    return __lo;
-  }
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_noninline.h
deleted file mode 100644
index 0eb91d068..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ctype_noninline.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return 0; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/bsd/darwin/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/os_defines.h
deleted file mode 100644
index f95e587c0..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/os_defines.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// Specific definitions for Darwin -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-
-#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.1.0/config/os/bsd/darwin/ppc-extra.ver b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ppc-extra.ver
deleted file mode 100644
index ffe32b656..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/darwin/ppc-extra.ver
+++ /dev/null
@@ -1 +0,0 @@
-  __eprintf;
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_base.h
deleted file mode 100644
index 5d212576e..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_base.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// 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
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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
-  };
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_inline.h
deleted file mode 100644
index 0ccdcf0a3..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_inline.h
+++ /dev/null
@@ -1,143 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { 
-    if (_M_table)
-      return _M_table[static_cast(__c)] & __m;
-    else
-      return __istype(__c, __m);
-  }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    if (_M_table)
-      while (__low < __high)
-	*__vec++ = _M_table[static_cast(*__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::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    if (_M_table)
-      while (__low < __high
-	     && !(_M_table[static_cast(*__low)] & __m))
-	++__low;
-    else
-      while (__low < __high && !this->is(__m, *__low))
-	++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    if (_M_table)
-      while (__low < __high
-	     && (_M_table[static_cast(*__low)] & __m) != 0)
-	++__low;
-    else
-      while (__low < __high && this->is(__m, *__low) != 0)
-	++__low;
-    return __low;
-  }
-
-#ifdef _GLIBCXX_USE_WCHAR_T  
-  inline bool
-  ctype::
-  do_is(mask __m, wchar_t __c) const
-  {
-    return __istype (__c, __m);
-  }
-
-  inline const wchar_t* 
-  ctype::
-  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::
-  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::
-  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
-  {
-    while (__lo < __hi && __istype (*__lo, __m))
-      ++__lo;
-    return __lo;
-  }
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_noninline.h
deleted file mode 100644
index 0eb91d068..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/ctype_noninline.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return 0; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/bsd/freebsd/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/os_defines.h
deleted file mode 100644
index 7f3e7d88c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/freebsd/os_defines.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Specific definitions for BSD  -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-
-#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.1.0/config/os/bsd/netbsd/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_base.h
deleted file mode 100644
index 68a7bf428..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_base.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// 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.
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const unsigned char*	__to_type;
-
-    // NB: Offsets into ctype::_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    	= _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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_inline.h
deleted file mode 100644
index 733dd391f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_inline.h
+++ /dev/null
@@ -1,73 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[(unsigned char)(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[*__low++];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && !this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && this->is(__m, *__low) != 0)
-      ++__low;
-    return __low;
-  }
-
-
-
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_noninline.h
deleted file mode 100644
index 44e2f73eb..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/ctype_noninline.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// 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::classic_table() throw()
-  { return _C_ctype_ + 1; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/bsd/netbsd/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/os_defines.h
deleted file mode 100644
index d40636678..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/bsd/netbsd/os_defines.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Specific definitions for NetBSD  -*- C++ -*-
-
-// Copyright (C) 2000 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/os/djgpp/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_base.h
deleted file mode 100644
index b403769b8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_base.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-  struct ctype_base
-  {
-    typedef unsigned short 	mask;
-    
-    // Non-standard typedefs.
-    typedef unsigned char *     __to_type;
-
-    // NB: Offsets into ctype::_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
-  };
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_inline.h
deleted file mode 100644
index 238332551..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_inline.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const 
-  { return _M_table[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const 
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !(_M_table[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && (_M_table[static_cast(*__low)] & __m) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_noninline.h
deleted file mode 100644
index 0c905492c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/ctype_noninline.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from DJGPP 
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return __dj_ctype_flags+1; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return _M_toupper[static_cast(__c)]; }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_toupper[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return _M_tolower[static_cast(__c)]; }
-
-  const char* 
-  ctype::do_tolower(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_tolower[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/os_defines.h
deleted file mode 100644
index 56bb07222..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/djgpp/os_defines.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// Specific definitions for DJGPP  -*- C++ -*-
-
-// Copyright (C) 2001, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-
-#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.1.0/config/os/generic/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_base.h
deleted file mode 100644
index 5e20386cf..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_base.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Default information, may not be appropriate for specific host.
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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
-  };
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_inline.h
deleted file mode 100644
index d611e3b76..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_inline.h
+++ /dev/null
@@ -1,161 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// 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...
-
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { 
-    if (_M_table)
-      return _M_table[static_cast(__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(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::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    if (_M_table)
-      while (__low < __high)
-	*__vec++ = _M_table[static_cast(*__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(1 << __i);
-		if (this->is(__bit, *__low))
-		  __m |= __bit;
-	      }
-	    *__vec = __m;
-	  }
-      }
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    if (_M_table)
-      while (__low < __high
-	     && !(_M_table[static_cast(*__low)] & __m))
-	++__low;
-    else
-      while (__low < __high && !this->is(__m, *__low))
-	++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    if (_M_table)
-      while (__low < __high
-	     && (_M_table[static_cast(*__low)] & __m) != 0)
-	++__low;
-    else
-      while (__low < __high && this->is(__m, *__low) != 0)
-	++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_noninline.h
deleted file mode 100644
index f85ba07bc..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/ctype_noninline.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
-//  Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return 0; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/generic/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/os_defines.h
deleted file mode 100644
index 8208a36bf..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/generic/os_defines.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2000 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-
-#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.1.0/config/os/gnu-linux/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_base.h
deleted file mode 100644
index 12cfdbfcd..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_base.h
+++ /dev/null
@@ -1,62 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-/** @file ctype_base.h
- *  This is an internal header file, included by other library headers.
- *  You should not attempt to use it directly.
- */
-
-// Information as gleaned from /usr/include/ctype.h
-  
-  /// @brief  Base class for ctype.
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_inline.h
deleted file mode 100644
index a2781e91d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_inline.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !(_M_table[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && (_M_table[static_cast(*__low)] & __m) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_noninline.h
deleted file mode 100644
index b2377d446..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/ctype_noninline.h
+++ /dev/null
@@ -1,159 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-#if _GLIBCXX_C_LOCALE_GNU
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return _S_get_c_locale()->__ctype_b; }
-#else
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  {
-    const ctype_base::mask* __ret;
-    char* __old = strdup(setlocale(LC_CTYPE, NULL));
-    setlocale(LC_CTYPE, "C");
-#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-    __ret = *__ctype_b_loc();
-#else
-    __ret = __ctype_b;
-#endif
-    setlocale(LC_CTYPE, __old);
-    free(__old);
-    return __ret;
-  }
-#endif
-
-#if _GLIBCXX_C_LOCALE_GNU
-  ctype::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) 
-  {
-    memset(_M_widen, 0, sizeof(_M_widen));
-    memset(_M_narrow, 0, sizeof(_M_narrow));
-  }
-#else
-  ctype::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=strdup(setlocale(LC_CTYPE, NULL));
-    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
-    setlocale(LC_CTYPE, __old);
-    free(__old);
-    memset(_M_widen, 0, sizeof(_M_widen));
-    memset(_M_narrow, 0, sizeof(_M_narrow));
-  }
-#endif
-
-#if _GLIBCXX_C_LOCALE_GNU
-  ctype::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) 
-  {
-    memset(_M_widen, 0, sizeof(_M_widen));
-    memset(_M_narrow, 0, sizeof(_M_narrow));
-  }
-#else
-  ctype::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=strdup(setlocale(LC_CTYPE, NULL));
-    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
-    setlocale(LC_CTYPE, __old);
-    free(__old);
-    memset(_M_widen, 0, sizeof(_M_widen));
-    memset(_M_narrow, 0, sizeof(_M_narrow));
-  }
-#endif
-
-  char
-  ctype::do_toupper(char __c) const
-  { return _M_toupper[static_cast(__c)]; }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_toupper[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return _M_tolower[static_cast(__c)]; }
-
-  const char* 
-  ctype::do_tolower(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_tolower[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/os_defines.h
deleted file mode 100644
index 8876d7f5f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/gnu-linux/os_defines.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Specific definitions for GNU/Linux  -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-#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 
-
-// We must not see the optimized string functions GNU libc defines.
-#if defined __GLIBC__ && __GLIBC__ >= 2
-#define __NO_STRING_INLINES
-#endif
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_base.h
deleted file mode 100644
index e8e55afed..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Default information, may not be appropriate for specific host.
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_inline.h
deleted file mode 100644
index a2781e91d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_inline.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !(_M_table[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && (_M_table[static_cast(*__low)] & __m) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_noninline.h
deleted file mode 100644
index b258dfeb8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/ctype_noninline.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return __SB_masks; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/hpux/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/os_defines.h
deleted file mode 100644
index 351b6af72..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/hpux/os_defines.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// Specific definitions for HPUX  -*- C++ -*-
-
-// Copyright (C) 2000, 2002, 2004, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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
-   .  Ugh.
-
-    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.  */
-namespace std 
-{
-#ifndef __LP64__
-  __extension__ extern "C" long long strtoll (const char *, char **, int)
-    __asm  ("__strtoll");
-  __extension__ extern "C" unsigned long long strtoull (const char *, char **, int)
-    __asm  ("__strtoull");
-#else
-  __extension__ extern "C" long long strtoll (const char *, char **, int)
-    __asm  ("strtol");
-  __extension__ extern "C" unsigned long long strtoull (const char *, char **, int)
-    __asm  ("strtoul");
-#endif
-}
-
-#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
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/atomic_word.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/atomic_word.h
deleted file mode 100644
index f27e7e26b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/atomic_word.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// Low-level type for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/os/irix/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/atomicity.h
deleted file mode 100644
index 24b17c994..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/atomicity.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Low-level functions for atomic operations: IRIX version  -*- C++ -*-
-
-// Copyright (C) 2001, 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#include 
-#include 
-
-namespace __gnu_cxx
-{
-  _Atomic_word
-  __exchange_and_add(volatile _Atomic_word* __mem, int __val)
-  { return (_Atomic_word) test_then_add((unsigned long*) const_cast<_Atomic_word*>(__mem), __val); }
-
-  void
-  __atomic_add(volatile _Atomic_word* __mem, int __val)
-  { __exchange_and_add(__mem, __val); }
-} // namespace __gnu_cxx
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_base.h
deleted file mode 100644
index 93363850f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997-1999, 2001 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h on irix 5.2
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef unsigned int*      	__to_type;
-
-    // NB: Offsets into ctype::_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    	= _U;
-    static const mask lower 	= _L;
-    static const mask alpha 	= _U | _L;
-    static const mask digit 	= _N;
-    static const mask xdigit 	= _X;
-    static const mask space 	= _S;
-    static const mask print 	= _U | _L | _N | _P | _B;
-    static const mask graph 	= _U | _L | _N | _P;
-    static const mask cntrl 	= _C;
-    static const mask punct 	= _P;
-    static const mask alnum 	= _U | _L | _N;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_inline.h
deleted file mode 100644
index 0c2e7b29b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_inline.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return (_M_table)[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = (_M_table)[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && ! this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_noninline.h
deleted file mode 100644
index 2990a776e..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/ctype_noninline.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2001, 2002
-//  Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return __ctype + 1; }
-
-  ctype::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 ? classic_table() : __table)
-  { 
-    memset(_M_widen, 0, sizeof(_M_widen));
-    _M_widen_ok = 0;
-    memset(_M_narrow, 0, sizeof(_M_narrow));
-    _M_narrow_ok = 0;
-  }
-
-  ctype::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 ? classic_table() : __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::do_toupper(char __c) const
-  { return _toupper(__c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = do_toupper(*__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return _tolower(__c); }
-
-  const char* 
-  ctype::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.1.0/config/os/irix/irix5.2/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/os_defines.h
deleted file mode 100644
index 2b301ce9f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix5.2/os_defines.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Specific definitions for IRIX  -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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
-//  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
-
-#endif
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_base.h
deleted file mode 100644
index c2930a238..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h on irix 6.5
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef int* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_inline.h
deleted file mode 100644
index 69e1d51ed..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_inline.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return (_M_table)[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = (_M_table)[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && ! this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_noninline.h
deleted file mode 100644
index 5ecf293c6..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/ctype_noninline.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return 0; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return _toupper(__c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = do_toupper(*__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return _tolower(__c); }
-
-  const char* 
-  ctype::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.1.0/config/os/irix/irix6.5/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/os_defines.h
deleted file mode 100644
index 35f29d09a..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/irix/irix6.5/os_defines.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Specific definitions for IRIX  -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-#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
-//  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.1.0/config/os/mingw32/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_base.h
deleted file mode 100644
index c32689d29..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_base.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information, as gleaned from /mingw32/include/ctype.h.
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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    	= _UPPER;
-    static const mask lower 	= _LOWER;
-    static const mask alpha 	= _ALPHA;
-    static const mask digit 	= _DIGIT;
-    static const mask xdigit 	= _HEX;
-    static const mask space 	= _SPACE;
-    static const mask print 	= (_BLANK | _PUNCT| _ALPHA | _DIGIT);
-    static const mask graph 	= (_PUNCT | _ALPHA | _DIGIT);
-    static const mask cntrl 	= _CONTROL;
-    static const mask punct 	= _PUNCT;
-    static const mask alnum 	= (_ALPHA | _DIGIT);
-  };
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_inline.h
deleted file mode 100644
index ee1fff719..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_inline.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-
-
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  {
-	return (_M_table[static_cast(__c) ] & __m); 
-  }
-   
- 
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const 
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && !this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && this->is(__m, *__low) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_noninline.h
deleted file mode 100644
index b61f61688..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/ctype_noninline.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /mingw32/include/ctype.h.
-
-  // This should be in mingw's ctype.h but isn't in older versions
-  // Static classic C-locale table.  _ctype[0] is EOF
-  extern "C"  unsigned short  __declspec(dllimport) _ctype[];
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return _ctype + 1; }  
-
-  ctype::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::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::do_toupper(char __c) const
-  { return (this->is(ctype_base::lower, __c) ? (__c - 'a' + 'A') : __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = this->do_toupper(*__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return (this->is(ctype_base::upper, __c) ? (__c - 'A' + 'a') : __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/mingw32/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/os_defines.h
deleted file mode 100644
index 5852d438b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/mingw32/os_defines.h
+++ /dev/null
@@ -1,51 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-
-#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 stl_algobase.h. 
-#undef NOMINMAX
-#define NOMINMAX 1
-
-// See libstdc++/20806.
-#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_base.h
deleted file mode 100644
index 03a6e713b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_base.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
-
-// Support for Solaris 2.5.1
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_inline.h
deleted file mode 100644
index 459b9174f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_inline.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const 
-  {
-    while (__low < __high && !this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && this->is(__m, *__low) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_noninline.h
deleted file mode 100644
index bc0e2b510..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/ctype_noninline.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return _ctype_ + 1; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { 
-    int __x = __c;
-    return (this->is(ctype_base::lower, __c) ? (__x - 'a' + 'A') : __x);
-  }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = this->do_toupper(*__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { 
-    int __x = __c;
-    return (this->is(ctype_base::upper, __c) ? (__x - 'A' + 'a') : __x);
-  }
-
-  const char* 
-  ctype::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.1.0/config/os/newlib/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/os_defines.h
deleted file mode 100644
index c3f93adfa..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/newlib/os_defines.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// Specific definitions for newlib  -*- C++ -*-
-
-// Copyright (C) 2000, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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
-
-// See libstdc++/20806.
-#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1
-#endif
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_base.h
deleted file mode 100644
index c9076a07b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h.
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const unsigned char*	__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_inline.h
deleted file mode 100644
index 54e058141..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_inline.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[(unsigned char)(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[*__low++];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && !this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && this->is(__m, *__low) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_noninline.h
deleted file mode 100644
index a7bd30d7c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/ctype_noninline.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return 0; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/qnx/qnx6.1/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/os_defines.h
deleted file mode 100644
index c037acd21..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/qnx/qnx6.1/os_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for QNX 6.1  -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-#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.1.0/config/os/solaris/solaris2.5/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_base.h
deleted file mode 100644
index 8ab9867de..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997-1999, 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
-
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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    	= 01;
-    static const mask lower 	= 02;
-    static const mask alpha 	= 01 | 02;
-    static const mask digit 	= 04;
-    static const mask xdigit 	= 0200;
-    static const mask space 	= 010;
-    static const mask print 	= 020 | 01 | 02 | 04 | 0100;
-    static const mask graph 	= 020 | 01 | 02 | 04;
-    static const mask cntrl 	= 040;
-    static const mask punct 	= 020;
-    static const mask alnum 	= 01 | 02 | 04;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_inline.h
deleted file mode 100644
index de457036f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_inline.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997-1999, 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return (_M_table + 1)[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = (_M_table + 1)[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !((_M_table + 1)[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && ((_M_table + 1)[static_cast(*__low)] & __m) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_noninline.h
deleted file mode 100644
index 0ac8e0e4d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/ctype_noninline.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return __ctype; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return ((_M_table + 258)[static_cast(__c)]); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = this->do_toupper(*__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ((_M_table + 258)[static_cast(__c)]); }
-
-  const char* 
-  ctype::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.1.0/config/os/solaris/solaris2.5/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/os_defines.h
deleted file mode 100644
index 0c3c324d0..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.5/os_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for Solaris 2.5  -*- C++ -*-
-
-// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/os/solaris/solaris2.6/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_base.h
deleted file mode 100644
index 0eda8ff7a..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_base.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h. Looks like this
-// only works with solaris2.6.
-
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef long* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_inline.h
deleted file mode 100644
index 8e69b55b7..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_inline.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    const int __bitmasksize = sizeof(mask) * 8;
-    for (;__low < __high; ++__vec, ++__low)
-      {
-	mask __m = _M_table[static_cast(*__low)];
-	int __i = 0; // Lowest bitmask value from ctype_base.
-	while (__i < __bitmasksize && !(__m & static_cast(1 << __i)))
-	  ++__i;
-	*__vec = static_cast(1 << __i);
-      }
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !(_M_table[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && (_M_table[static_cast(*__low)] & __m) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_noninline.h
deleted file mode 100644
index 032dbe995..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/ctype_noninline.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return __ctype_mask; }  
-
-  ctype::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::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::do_toupper(char __c) const
-  { return _M_toupper[static_cast(__c)]; }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_toupper[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return _M_tolower[static_cast(__c)]; }
-
-  const char* 
-  ctype::do_tolower(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_tolower[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/os_defines.h
deleted file mode 100644
index 3a0494b84..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.6/os_defines.h
+++ /dev/null
@@ -1,36 +0,0 @@
-// Specific definitions for Solaris 2.6  -*- C++ -*-
-
-// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/os/solaris/solaris2.7/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_base.h
deleted file mode 100644
index 8988943da..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_base.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// 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!
-
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef int* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_inline.h
deleted file mode 100644
index a2781e91d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_inline.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !(_M_table[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && (_M_table[static_cast(*__low)] & __m) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_noninline.h
deleted file mode 100644
index a0c35ae30..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/ctype_noninline.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  const ctype_base::mask* 
-  ctype::classic_table() throw()
-  { return __ctype_mask; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return _M_toupper[static_cast(__c)]; }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_toupper[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return _M_tolower[static_cast(__c)]; }
-
-  const char* 
-  ctype::do_tolower(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_tolower[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/os_defines.h
deleted file mode 100644
index f2ecd8d81..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/solaris/solaris2.7/os_defines.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Specific definitions for Solaris 7,8  -*- C++ -*-
-
-// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/os/tpf/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_base.h
deleted file mode 100644
index cdb2b992d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_inline.h
deleted file mode 100644
index 8e78a13fa..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_inline.h
+++ /dev/null
@@ -1,69 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-  
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return _M_table[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = _M_table[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !(_M_table[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && (_M_table[static_cast(*__low)] & __m) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_noninline.h
deleted file mode 100644
index c4a4e6c38..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/ctype_noninline.h
+++ /dev/null
@@ -1,103 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  {
-    const ctype_base::mask* __ret;
-    char* __old = strdup(setlocale(LC_CTYPE, NULL));
-    setlocale(LC_CTYPE, "C");
-    __ret = *__ctype_b_loc();
-    setlocale(LC_CTYPE, __old);
-    free(__old);
-    return __ret;
-  }
-
-  ctype::ctype(__c_locale, const mask* __table, bool __del, 
-		     size_t __refs) 
-  : facet(__refs), _M_del(__table != 0 && __del)
-  {
-    char* __old=strdup(setlocale(LC_CTYPE, NULL));
-    setlocale(LC_CTYPE, "C");
-    _M_toupper = *__ctype_toupper_loc();
-    _M_tolower = *__ctype_tolower_loc();
-    _M_table = __table ? __table : *__ctype_b_loc();
-    setlocale(LC_CTYPE, __old);
-    free(__old);
-    _M_c_locale_ctype = _S_get_c_locale();
-  }
-
-  ctype::ctype(const mask* __table, bool __del, size_t __refs)
-  : facet(__refs), _M_del(__table != 0 && __del)
-  {
-    char* __old=strdup(setlocale(LC_CTYPE, NULL));
-    setlocale(LC_CTYPE, "C");
-    _M_toupper = *__ctype_toupper_loc();
-    _M_tolower = *__ctype_tolower_loc();
-    _M_table = __table ? __table : *__ctype_b_loc();
-    setlocale(LC_CTYPE, __old);
-    free(__old);
-    _M_c_locale_ctype = _S_get_c_locale();
-  }
-
-  char
-  ctype::do_toupper(char __c) const
-  { return _M_toupper[static_cast(__c)]; }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_toupper[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return _M_tolower[static_cast(__c)]; }
-
-  const char* 
-  ctype::do_tolower(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = _M_tolower[static_cast(*__low)];
-	++__low;
-      }
-    return __high;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/os_defines.h
deleted file mode 100644
index 4fed12ae3..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/tpf/os_defines.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// Specific definitions for TPF  -*- C++ -*-
-
-// Copyright (C) 2004 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can 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.
-
-#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.1.0/config/os/vxworks/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_base.h
deleted file mode 100644
index abdfbc773..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_base.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information extracted from target/h/ctype.h.
-  
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const unsigned char* 	__to_type;
-
-    // NB: Offsets into ctype::_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;
-  };
-
-
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_inline.h
deleted file mode 100644
index 0da07b321..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_inline.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// 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
-
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { return __ctype[static_cast(__c)] & __m; }
-
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    while (__low < __high)
-      *__vec++ = __ctype[static_cast(*__low++)];
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high 
-	   && !(__ctype[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high
-	   && (__ctype[static_cast(*__low)] & __m))
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_noninline.h
deleted file mode 100644
index 429f43ce8..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/ctype_noninline.h
+++ /dev/null
@@ -1,91 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-// Information as gleaned from target/h/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return __ctype; }
-
-  ctype::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::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::do_toupper(char __c) const
-  { return __toupper(__c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = __toupper(*__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return __tolower(__c); }
-
-  const char* 
-  ctype::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.1.0/config/os/vxworks/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/os_defines.h
deleted file mode 100644
index 4b51ced7c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/vxworks/os_defines.h
+++ /dev/null
@@ -1,37 +0,0 @@
-// Specific definitions for VxWorks  -*- C++ -*-
-
-// Copyright (C) 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// 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.
-
-
-#ifndef _GLIBCPP_OS_DEFINES
-#define _GLIBCPP_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.1.0/config/os/windiss/ctype_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_base.h
deleted file mode 100644
index 5b4c7c1be..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_base.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Default information, may not be appropriate for specific host.
-
-  struct ctype_base
-  {
-    // Non-standard typedefs.
-    typedef const int* 		__to_type;
-
-    // NB: Offsets into ctype::_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    	= _U;
-    static const mask lower 	= _L;
-    static const mask alpha 	= _U | _L;
-    static const mask digit 	= _N;
-    static const mask xdigit 	= _X;
-    static const mask space 	= _S;
-    static const mask print 	= _U | _L | _N | _P | _B;
-    static const mask graph 	= _U | _L | _N | _P;
-    static const mask cntrl 	= _C;
-    static const mask punct 	= _P;
-    static const mask alnum 	= _U | _L | _N;
-  };
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_inline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_inline.h
deleted file mode 100644
index f4a6c4820..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_inline.h
+++ /dev/null
@@ -1,125 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// 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.
-
-  bool
-  ctype::
-  is(mask __m, char __c) const
-  { 
-    bool __ret;
-    switch (__m)
-      {
-      case space:
-	__ret = isspace(__c);
-	break;
-      case print:
-	__ret = isprint(__c);
-	break;
-      case cntrl:
-	__ret = iscntrl(__c);
-	break;
-      case upper:
-	__ret = isupper(__c);
-	break;
-      case lower:
-	__ret = islower(__c);
-	break;
-      case alpha:
-	__ret = isalpha(__c);
-	break;
-      case digit:
-	__ret = isdigit(__c);
-	break;
-      case punct:
-	__ret = ispunct(__c);
-	break;
-      case xdigit:
-	__ret = isxdigit(__c);
-	break;
-      case alnum:
-	__ret = isalnum(__c);
-	break;
-      case graph:
-	__ret = isgraph(__c);
-	break;
-      default:
-	__ret = false;
-	break;
-      }
-    return __ret;
-  }
-   
-  const char*
-  ctype::
-  is(const char* __low, const char* __high, mask* __vec) const
-  {
-    const int __bitmasksize = 11; // Highest bitmask in ctype_base == 10
-    for (;__low < __high; ++__vec, ++__low)
-      {
-	mask __m = 0;
-	int __i = 0; // Lowest bitmask in ctype_base == 0
-	for (;__i < __bitmasksize; ++__i)
-	  {
-	    mask __bit = static_cast(1 << __i);
-	    if (this->is(__bit, *__low))
-	      __m |= __bit;
-	  }
-	*__vec = __m;
-      }
-    return __high;
-  }
-
-  const char*
-  ctype::
-  scan_is(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && !this->is(__m, *__low))
-      ++__low;
-    return __low;
-  }
-
-  const char*
-  ctype::
-  scan_not(mask __m, const char* __low, const char* __high) const
-  {
-    while (__low < __high && this->is(__m, *__low) != 0)
-      ++__low;
-    return __low;
-  }
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_noninline.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_noninline.h
deleted file mode 100644
index e9c1beba3..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/ctype_noninline.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002
-//  Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-//
-// ISO C++ 14882: 22.1  Locales
-//
-  
-// Information as gleaned from /usr/include/ctype.h
-
-  const ctype_base::mask*
-  ctype::classic_table() throw()
-  { return 0; }
-
-  ctype::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 == 0 ? classic_table() : __table) 
-  { 
-    memset(_M_widen, 0, sizeof(_M_widen));
-    _M_widen_ok = 0;
-    memset(_M_narrow, 0, sizeof(_M_narrow));
-    _M_narrow_ok = 0;
-  }
-
-  ctype::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 == 0 ? classic_table() : __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::do_toupper(char __c) const
-  { return ::toupper((int) __c); }
-
-  const char*
-  ctype::do_toupper(char* __low, const char* __high) const
-  {
-    while (__low < __high)
-      {
-	*__low = ::toupper((int) *__low);
-	++__low;
-      }
-    return __high;
-  }
-
-  char
-  ctype::do_tolower(char __c) const
-  { return ::tolower((int) __c); }
-
-  const char* 
-  ctype::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.1.0/config/os/windiss/os_defines.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/os_defines.h
deleted file mode 100644
index 154e03d50..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/config/os/windiss/os_defines.h
+++ /dev/null
@@ -1,38 +0,0 @@
-// Specific definitions for generic platforms  -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 2, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License along
-// with this library; see the file COPYING.  If not, write to the Free
-// Software Foundation, 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.
-
-
-#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 __C9X__ 1 // for sinf etc
-
-#endif
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure
deleted file mode 100755
index 042c520a5..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure
+++ /dev/null
@@ -1,90445 +0,0 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for package-unused version-unused.
-#
-# Copyright (C) 2003 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 Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    $as_unset $as_var
-  fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; 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
-
-
-# Name of the executable.
-as_me=`$as_basename "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)$' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\/\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# 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
-
-# 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
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  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
-
-       ;;
-  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
-    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-	 case $as_dir in
-	 /*)
-	   if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-	     CONFIG_SHELL=$as_dir/$as_base
-	     export CONFIG_SHELL
-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-	   fi;;
-	 esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); 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 sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='	' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
-    as_ln_s='ln -s'
-  fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_executable_p="test -f"
-
-# 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'"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" 	$as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
-
-# 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`
-
-exec 6>&1
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-ac_config_libobj_dir=.
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete.  It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-# Identity of this package.
-PACKAGE_NAME='package-unused'
-PACKAGE_TARNAME='libstdc++'
-PACKAGE_VERSION='version-unused'
-PACKAGE_STRING='package-unused version-unused'
-PACKAGE_BUGREPORT=''
-
-ac_unique_file="src/ios.cc"
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include 
-#if HAVE_SYS_TYPES_H
-# include 
-#endif
-#if HAVE_SYS_STAT_H
-# include 
-#endif
-#if STDC_HEADERS
-# include 
-# include 
-#else
-# if HAVE_STDLIB_H
-#  include 
-# endif
-#endif
-#if HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-#  include 
-# endif
-# include 
-#endif
-#if HAVE_STRINGS_H
-# include 
-#endif
-#if HAVE_INTTYPES_H
-# include 
-#else
-# if HAVE_STDINT_H
-#  include 
-# endif
-#endif
-#if HAVE_UNISTD_H
-# include 
-#endif"
-
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS glibcxx_thread_h WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_MAP port_specific_symbol_files ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_DARWIN_EXPORT_TRUE ENABLE_SYMVERS_DARWIN_EXPORT_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
-ac_subst_files=''
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# 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.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-ac_prev=
-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
-
-  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_option in
-
-  -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 | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    eval "enable_$ac_feature=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_$ac_feature='$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 ;;
-
-  -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 ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    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 ;;
-
-  -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_$ac_package='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/-/_/g'`
-    eval "with_$ac_package=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 ;;
-
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
-    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
-    eval "$ac_envvar='$ac_optarg'"
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      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'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
-  esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-	      localstatedir libdir includedir oldincludedir infodir mandir
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
-  esac
-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
-    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
-
-
-# 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 its parent.
-  ac_confdir=`(dirname "$0") 2>/dev/null ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$0" : 'X\(//\)[^/]' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$0" |
-    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
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-   { (exit 1); exit 1; }; }
-  else
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
-  fi
-fi
-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
-  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
-   { (exit 1); exit 1; }; }
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_CXXCPP_set=${CXXCPP+set}
-ac_env_CXXCPP_value=$CXXCPP
-ac_cv_env_CXXCPP_set=${CXXCPP+set}
-ac_cv_env_CXXCPP_value=$CXXCPP
-ac_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_env_CPPFLAGS_value=$CPPFLAGS
-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
-ac_cv_env_CPPFLAGS_value=$CPPFLAGS
-ac_env_CPP_set=${CPP+set}
-ac_env_CPP_value=$CPP
-ac_cv_env_CPP_set=${CPP+set}
-ac_cv_env_CPP_value=$CPP
-
-#
-# 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 \`..']
-
-_ACEOF
-
-  cat <<_ACEOF
-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]
-  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
-  --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]
-  --infodir=DIR          info documentation [PREFIX/info]
-  --mandir=DIR           man documentation [PREFIX/man]
-_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-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-c99            turns on ISO/IEC 9899:1999 support
-                          [default=yes]
-  --enable-long-long      enable template specializations for 'long long'
-                          [default=yes]
-  --enable-wchar_t        enable template specializations for 'wchar_t'
-                          [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]
-  _g_switchUse thread-local storage
-                          [default=yes]
-  --enable-symvers=STYLE  enables symbol versioning of the shared library
-                          [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-gnu-ld           assume the C compiler uses GNU ld default=no
-  --with-pic              try to use only PIC/non-PIC objects default=use both
-  --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 if you have libraries in a
-              nonstandard directory 
-  CPPFLAGS    C/C++ preprocessor flags, e.g. -I if you have
-              headers in a nonstandard directory 
-  CXX         C++ compiler command
-  CXXFLAGS    C++ compiler flags
-  CXXCPP      C++ preprocessor
-  CPP         C preprocessor
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-_ACEOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  ac_popdir=`pwd`
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d $ac_dir || continue
-    ac_builddir=.
-
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
-
-    cd $ac_dir
-    # Check for guested configure; otherwise get Cygnus style 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
-    elif test -f $ac_srcdir/configure.ac ||
-	   test -f $ac_srcdir/configure.in; then
-      echo
-      $ac_configure --help
-    else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi
-    cd $ac_popdir
-  done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
-  cat <<\_ACEOF
-package-unused configure version-unused
-generated by GNU Autoconf 2.59
-
-Copyright (C) 2003 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 0
-fi
-exec 5>config.log
-cat >&5 <<_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.59.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-{
-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`
-hostinfo               = `(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=.
-  echo "PATH: $as_dir"
-done
-
-} >&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_sep=
-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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-    esac
-    case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
-    2)
-      ac_configure_args1="$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
-      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-      # Get rid of the leading space.
-      ac_sep=" "
-      ;;
-    esac
-  done
-done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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: Be sure not to use single quotes in there, as some shells,
-# such as our DU 5.0 friend, will then `close' the trap.
-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,
-{
-  (set) 2>&1 |
-    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-    *ac_space=\ *)
-      sed -n \
-	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
-      ;;
-    *)
-      sed -n \
-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-      ;;
-    esac;
-}
-    echo
-
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=$`echo $ac_var`
-      echo "$ac_var='"'"'$ac_val'"'"'"
-    done | sort
-    echo
-
-    if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------- ##
-## Output files. ##
-## ------------- ##
-_ASBOX
-      echo
-      for ac_var in $ac_subst_files
-      do
-	eval ac_val=$`echo $ac_var`
-	echo "$ac_var='"'"'$ac_val'"'"'"
-      done | sort
-      echo
-    fi
-
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      echo
-      sed "/^$/d" confdefs.h | sort
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core &&
-  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-     ' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >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
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-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
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . $cache_file;;
-      *)                      . ./$cache_file;;
-    esac
-  fi
-else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-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 `(set) 2>&1 |
-	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-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
-	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-	ac_cache_corrupted=:
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-      ac_arg=$ac_var=`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.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
-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_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:7:0
-
-
-# Find the rest of the source tree framework.
-# Default to --enable-multilib
-# Check whether --enable-multilib or --disable-multilib was given.
-if test "${enable_multilib+set}" = set; then
-  enableval="$enable_multilib"
-  case "$enableval" in
-  yes) multilib=yes ;;
-  no)  multilib=no ;;
-  *)   { { echo "$as_me:$LINENO: error: bad value $enableval for multilib option" >&5
-echo "$as_me: error: bad value $enableval for multilib option" >&2;}
-   { (exit 1); exit 1; }; } ;;
- 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
-
-
-          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
-  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
-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-
-# Make sure we can run config.sub.
-$ac_config_sub sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
-echo "$as_me: error: cannot run $ac_config_sub" >&2;}
-   { (exit 1); exit 1; }; }
-
-echo "$as_me:$LINENO: checking build system type" >&5
-echo $ECHO_N "checking build system type... $ECHO_C" >&6
-if test "${ac_cv_build+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_build_alias=$build_alias
-test -z "$ac_cv_build_alias" &&
-  ac_cv_build_alias=`$ac_config_guess`
-test -z "$ac_cv_build_alias" &&
-  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
-echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
-   { (exit 1); exit 1; }; }
-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6
-build=$ac_cv_build
-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-echo "$as_me:$LINENO: checking host system type" >&5
-echo $ECHO_N "checking host system type... $ECHO_C" >&6
-if test "${ac_cv_host+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_host_alias=$host_alias
-test -z "$ac_cv_host_alias" &&
-  ac_cv_host_alias=$ac_cv_build_alias
-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6
-host=$ac_cv_host
-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-echo "$as_me:$LINENO: checking target system type" >&5
-echo $ECHO_N "checking target system type... $ECHO_C" >&6
-if test "${ac_cv_target+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_target_alias=$target_alias
-test "x$ac_cv_target_alias" = "x" &&
-  ac_cv_target_alias=$ac_cv_host_alias
-ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
-  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5
-echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_target" >&5
-echo "${ECHO_T}$ac_cv_target" >&6
-target=$ac_cv_target
-target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
-
-# 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)
-#  -Wall:  turns on all automake warnings...
-#  -Wno-portability:  ...except this one, since GNU make is now required.
-am__api_version="1.9"
-# 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.
-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$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
-	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-	    break 3
-	  fi
-	fi
-      done
-    done
-    ;;
-esac
-done
-
-
-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.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL=$ac_install_sh
-  fi
-fi
-echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$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'
-
-echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# 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".
-      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
-   fi
-
-   test "$2" = conftest.file
-   )
-then
-   # Ok.
-   :
-else
-   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}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 $.  echo might interpret backslashes.
-# By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm conftest.sed
-
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
-
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
-# Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
-else
-  am_missing_run=
-  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # We used to keeping the `.' as first argument, in order to
-  # allow $(mkdir_p) to be used without argument.  As in
-  #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.  However this is wrong
-  # for two reasons:
-  #  1. if the package is installed by a user who cannot write `.'
-  #     make install will fail,
-  #  2. the above comment should most certainly read
-  #     $(mkdir_p) $(DESTDIR)$(somedir)
-  #     so it does not work when $(somedir) is undefined and
-  #     $(DESTDIR) is not.
-  #  To support the latter case, we have to write
-  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
-  #  so the `.' trick is pointless.
-  mkdir_p='mkdir -p --'
-else
-  # On NextStep and OpenStep, the `mkdir' command does not
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
-  done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
-  else
-    mkdir_p='$(install_sh) -d'
-  fi
-fi
-
-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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AWK+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$AWK" && break
-done
-
-echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
-if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.make <<\_ACEOF
-all:
-	@echo 'ac_maketemp="$(MAKE)"'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
-  eval ac_cv_prog_make_${ac_make}_set=yes
-else
-  eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftest.make
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-  SET_MAKE=
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
-   test -f $srcdir/config.status; then
-  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
-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"}
-
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-
-# 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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  STRIP=$ac_ct_STRIP
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-
-# 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 -'
-
-
-
-
-
-
-
-
-
-
-# Runs configure.host, finds CC, CXX, and assorted other critical bits.  Sets
-# up critical shell variables.
-
-  # 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 libmath libsupc++ src 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 or --without-target-subdir was given.
-if test "${with_target_subdir+set}" = set; then
-  withval="$with_target_subdir"
-
-fi;
-
-
-# Check whether --with-cross-host or --without-cross-host was given.
-if test "${with_cross_host+set}" = set; then
-  withval="$with_cross_host"
-
-fi;
-
-
-# Check whether --with-newlib or --without-newlib was given.
-if test "${with_newlib+set}" = set; then
-  withval="$with_newlib"
-
-fi;
-
-  # We're almost certainly being configured before anything else which uses
-  # C++, so all of our AC_PROG_* discoveries will be cached.  It's vital that
-  # we not cache the value of CXX that we "discover" here, because it's set
-  # to something unique for us and libjava.  Other target libraries need to
-  # find CXX for themselves.  We yank the rug out from under the normal AC_*
-  # process by sneakily renaming the cache variable.  This also lets us debug
-  # the value of "our" CXX in postmortems.
-  #
-  # We must also force CXX to /not/ be a precious variable, otherwise the
-  # wrong (non-multilib-adjusted) value will be used in multilibs.  This
-  # little trick also affects CPPFLAGS, CXXFLAGS, and LDFLAGS.  And as a side
-  # effect, CXXFLAGS is no longer automagically subst'd, so we have to do
-  # that ourselves.  Un-preciousing AC_PROG_CC also affects CC and CFLAGS.
-  #
-  # -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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  CC=$ac_ct_CC
-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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  CC=$ac_ct_CC
-else
-  CC="$ac_cv_prog_CC"
-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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$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"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-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
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl
-  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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$ac_ct_CC" && break
-done
-
-  CC=$ac_ct_CC
-fi
-
-fi
-
-
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO:" \
-     "checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5
-  (eval $ac_compiler --version &5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5
-  (eval $ac_compiler -v &5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5
-  (eval $ac_compiler -V &5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-# FIXME: Cleanup?
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.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.
-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
-  (eval $ac_link_default) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  # Find the output, starting from the most likely.  This scheme is
-# not robust to junk in `.', hence go to wildcards (a.*) only as a last
-# resort.
-
-# Be careful to initialize this variable, since it used to be cached.
-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
-ac_cv_exeext=
-# b.out is created by i960 compilers.
-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
-	;;
-    conftest.$ac_ext )
-	# This is the source file.
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	# FIXME: I believe we export ac_cv_exeext for Libtool,
-	# but it would be cool to find out if it's true.  Does anybody
-	# maintain Libtool? --akim.
-	export ac_cv_exeext
-	break;;
-    * )
-	break;;
-  esac
-done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6
-
-# Check the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-  fi
-fi
-echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-# Check the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6
-
-echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; 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 | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  export ac_cv_exeext
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest$ac_cv_exeext
-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-fi
-echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
-if test "${ac_cv_objext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_compiler_gnu=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_compiler_gnu=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
-GCC=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-CFLAGS="-g"
-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_prog_cc_g=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$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
-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
-if test "${ac_cv_prog_cc_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_prog_cc_stdc=no
-ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-#include 
-#include 
-#include 
-/* 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 -std1 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 -std1.  */
-int osf4_cc_array ['\x00' == 0 ? 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
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX			-qlanglvl=ansi
-# Ultrix and OSF/1	-std1
-# HP-UX 10.20 and later	-Ae
-# HP-UX older versions	-Aa -D_HPUX_SOURCE
-# SVR4			-Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_prog_cc_stdc=$ac_arg
-break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext
-done
-rm -f conftest.$ac_ext conftest.$ac_objext
-CC=$ac_save_CC
-
-fi
-
-case "x$ac_cv_prog_cc_stdc" in
-  x|xno)
-    echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
-  *)
-    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
-    CC="$CC $ac_cv_prog_cc_stdc" ;;
-esac
-
-# Some people use a C++ compiler to compile C.  Since we use `exit',
-# in C++ we need to declare it.  In case someone uses the same compiler
-# for both compiling C and C++ we need to have the C++ compiler decide
-# the declaration of exit, since it's the most demanding environment.
-cat >conftest.$ac_ext <<_ACEOF
-#ifndef __cplusplus
-  choke me
-#endif
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  for ac_declaration in \
-   '' \
-   'extern "C" void std::exit (int) throw (); using std::exit;' \
-   'extern "C" void std::exit (int); using std::exit;' \
-   'extern "C" void exit (int) throw ();' \
-   'extern "C" void exit (int);' \
-   'void exit (int);'
-do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-#include 
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-continue
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
-  echo '#ifdef __cplusplus' >>confdefs.h
-  echo $ac_declaration      >>confdefs.h
-  echo '#endif'             >>confdefs.h
-fi
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&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=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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 -n "$ac_tool_prefix"; then
-  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${glibcxx_cv_prog_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CXX"; then
-  glibcxx_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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    glibcxx_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-CXX=$glibcxx_cv_prog_CXX
-if test -n "$CXX"; then
-  echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  test -n "$ac_ct_CXX" && break
-done
-test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
-
-  CXX=$ac_ct_CXX
-fi
-
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO:" \
-     "checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5
-  (eval $ac_compiler --version &5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5
-  (eval $ac_compiler -v &5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5
-  (eval $ac_compiler -V &5) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-
-echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_compiler_gnu=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_compiler_gnu=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
-GXX=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-CXXFLAGS="-g"
-echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cxx_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_prog_cxx_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_prog_cxx_g=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$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
-for ac_declaration in \
-   '' \
-   'extern "C" void std::exit (int) throw (); using std::exit;' \
-   'extern "C" void std::exit (int); using std::exit;' \
-   'extern "C" void exit (int) throw ();' \
-   'extern "C" void exit (int);' \
-   'void exit (int);'
-do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-#include 
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-continue
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_declaration
-int
-main ()
-{
-exit (42);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
-  echo '#ifdef __cplusplus' >>confdefs.h
-  echo $ac_declaration      >>confdefs.h
-  echo '#endif'             >>confdefs.h
-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"
-
-
-
-
-  # 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.
-  echo "$as_me:$LINENO: checking whether ln -s works" >&5
-echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  echo "$as_me:$LINENO: result: $AS" >&5
-echo "${ECHO_T}$AS" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AS="as"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
-echo "${ECHO_T}$ac_ct_AS" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  AS=$ac_ct_AS
-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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  echo "$as_me:$LINENO: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
-echo "${ECHO_T}$ac_ct_AR" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  AR=$ac_ct_AR
-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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB="ranlib-not-found-in-path-error"
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  RANLIB=$ac_ct_RANLIB
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-
-  echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6
-    # Check whether --enable-maintainer-mode or --disable-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;
-  echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-echo "${ECHO_T}$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
-  need_libmath=no
-
-  # Find platform-specific directories containing configuration info.
-  # Also possibly modify flags used elsewhere, as needed by the platform.
-
-  . $glibcxx_srcdir/configure.host
-  { echo "$as_me:$LINENO: CPU config directory is $cpu_include_dir" >&5
-echo "$as_me: CPU config directory is $cpu_include_dir" >&6;}
-  { echo "$as_me:$LINENO: OS config directory is $os_include_dir" >&5
-echo "$as_me: OS config directory is $os_include_dir" >&6;}
-
-
-
-
-# Check whether --enable-shared or --disable-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.
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_shared=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_shared=yes
-fi;
-# Check whether --enable-static or --disable-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.
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_static=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_static=yes
-fi;
-# Check whether --enable-fast-install or --disable-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.
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
-  for pkg in $enableval; do
-    if test "X$pkg" = "X$p"; then
-      enable_fast_install=yes
-    fi
-  done
-  IFS="$ac_save_ifs"
-  ;;
-esac
-else
-  enable_fast_install=yes
-fi;
-
-# Check whether --with-gnu-ld or --without-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.
-  echo "$as_me:$LINENO: checking for ld used by GCC" >&5
-echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&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
-  echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
-else
-  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
-fi
-if test "${lt_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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
-      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 GNU ld's only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      if "$lt_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
-  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
-  echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 &5; then
-  lt_cv_prog_gnu_ld=yes
-else
-  lt_cv_prog_gnu_ld=no
-fi
-fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
-with_gnu_ld=$lt_cv_prog_gnu_ld
-
-
-echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
-if test "${lt_cv_ld_reload_flag+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_ld_reload_flag='-r'
-fi
-echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
-reload_flag=$lt_cv_ld_reload_flag
-test -n "$reload_flag" && reload_flag=" $reload_flag"
-
-echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
-echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
-if test "${lt_cv_path_NM+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
-  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-    test -z "$ac_dir" && ac_dir=.
-    tmp_nm=$ac_dir/${ac_tool_prefix}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
-      if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then
-	lt_cv_path_NM="$tmp_nm -B"
-	break
-      elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
-	lt_cv_path_NM="$tmp_nm -p"
-	break
-      else
-	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
-      fi
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
-fi
-fi
-
-NM="$lt_cv_path_NM"
-echo "$as_me:$LINENO: result: $NM" >&5
-echo "${ECHO_T}$NM" >&6
-
-echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5
-echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6
-if test "${lt_cv_deplibs_check_method+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 egrep 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*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi4*)
-  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* | mingw* |pw32*)
-  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  # this will be overwritten by pass_all, but leave it in just in case
-  lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  case "$host_os" in
-  rhapsody* | darwin1.012)
-    lt_cv_file_magic_test_file='/System/Library/Frameworks/System.framework/System'
-    ;;
-  *) # Darwin 1.3 on
-    lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
-    ;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | kfreebsd*-gnu)
-  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)/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
-  ;;
-
-hpux10.20*|hpux11*)
-  case $host_cpu in
-  hppa*)
-    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_cmd=/usr/bin/file
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  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_cmd=/usr/bin/file
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  esac
-  ;;
-
-irix5* | irix6*)
-  case $host_os in
-  irix5*)
-    # this will be overridden with pass_all, but let us keep it just in case
-    lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
-    ;;
-  *)
-    case $LD in
-    *-32|*"-32 ") libmagic=32-bit;;
-    *-n32|*"-n32 ") libmagic=N32;;
-    *-64|*"-64 ") libmagic=64-bit;;
-    *) libmagic=never-match;;
-    esac
-    # this will be overridden with pass_all, but let us keep it just in case
-    lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"
-    ;;
-  esac
-  lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*`
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | knetbsd*-gnu)
-  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'
-  fi
-  ;;
-
-newsos6)
-  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
-  ;;
-
-osf3* | osf4* | osf5*)
-  # this will be overridden with pass_all, but let us keep it just in case
-  lt_cv_deplibs_check_method='file_magic COFF format alpha shared library'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  lt_cv_file_magic_test_file=/lib/libc.so
-  ;;
-
-sysv5uw[78]* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-  case $host_vendor in
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  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*`
-    ;;
-  esac
-  ;;
-esac
-
-fi
-echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-
-
-
-
-
-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
-
-# find the maximum length of command line arguments
-echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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
-    ;;
-
-  cygwin* | mingw*)
-    # 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;
-    ;;
-
-  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 *BSD
-    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`
-    ;;
-  esac
-
-fi
-
-if test -n "$lt_cv_sys_max_cmd_len" ; then
-  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
-else
-  echo "$as_me:$LINENO: result: none" >&5
-echo "${ECHO_T}none" >&6
-fi
-
-
-# Only perform the check for file, if the check method requires it
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $MAGIC_CMD in
-  /*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-  ?:/*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-  ;;
-  *)
-  ac_save_MAGIC_CMD="$MAGIC_CMD"
-  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="/usr/bin:$PATH"
-  for ac_dir in $ac_dummy; do
-    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 <&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
-
-EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  MAGIC_CMD="$ac_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-if test -z "$lt_cv_path_MAGIC_CMD"; then
-  if test -n "$ac_tool_prefix"; then
-    echo "$as_me:$LINENO: checking for file" >&5
-echo $ECHO_N "checking for file... $ECHO_C" >&6
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $MAGIC_CMD in
-  /*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-  ?:/*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path.
-  ;;
-  *)
-  ac_save_MAGIC_CMD="$MAGIC_CMD"
-  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS=":"
-  ac_dummy="/usr/bin:$PATH"
-  for ac_dir in $ac_dummy; do
-    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 <&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
-
-EOF
-	  fi ;;
-	esac
-      fi
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  MAGIC_CMD="$ac_save_MAGIC_CMD"
-  ;;
-esac
-fi
-
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  else
-    MAGIC_CMD=:
-  fi
-fi
-
-  fi
-  ;;
-esac
-
-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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_RANLIB="ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  RANLIB=$ac_ct_RANLIB
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  STRIP=$ac_ct_STRIP
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-
-# Check for any special flags to pass to ltconfig.
-libtool_flags="--cache-file=$cache_file"
-test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
-test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
-test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
-test "$GCC" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$lt_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-
-
-# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
-  enableval="$enable_libtool_lock"
-
-fi;
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-
-# Check whether --with-pic or --without-pic was given.
-if test "${with_pic+set}" = set; then
-  withval="$with_pic"
-  pic_mode="$withval"
-else
-  pic_mode=default
-fi;
-test x"$pic_mode" = xyes && libtool_flags="$libtool_flags --prefer-pic"
-test x"$pic_mode" = xno && libtool_flags="$libtool_flags --prefer-non-pic"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '#line 4461 "configure"' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; 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*
-  ;;
-
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case "`/usr/bin/file conftest.o`" in
-    *ELF-32*)
-      HPUX_IA64_MODE="32"
-      ;;
-    *ELF-64*)
-      HPUX_IA64_MODE="64"
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-    case "`/usr/bin/file conftest.o`" in
-    *32-bit*)
-      case $host in
-        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-*linux*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        ppc*-*linux*|powerpc*-*linux*)
-          LD="${LD-ld} -m elf64ppc"
-          ;;
-        s390*-*linux*)
-          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"
-  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
-if test "${lt_cv_cc_needs_belf+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  lt_cv_cc_needs_belf=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-lt_cv_cc_needs_belf=no
-fi
-rm -f 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
-echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
-echo "${ECHO_T}$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
-  ;;
-
-
-esac
-
-
-# Save cache, so that ltconfig can load it
-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, don't put newlines in cache variables' values.
-# 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.
-{
-  (set) 2>&1 |
-    case `(ac_space=' '; set | grep ac_space) 2>&1` in
-    *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 \
-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-      ;;
-    esac;
-} |
-  sed '
-     t clear
-     : clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     /^ac_cv_env/!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" && echo "updating cache $cache_file"
-    cat confcache >$cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-# Actually configure libtool.  ac_aux_dir is where install-sh is found.
-AR="$AR" LTCC="$CC" CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
-AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
-objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
-deplibs_check_method="$deplibs_check_method" file_magic_cmd="$file_magic_cmd" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify --build="$build" $ac_aux_dir/ltmain.sh $host \
-|| { { echo "$as_me:$LINENO: error: libtool configure failed" >&5
-echo "$as_me: error: libtool configure failed" >&2;}
-   { (exit 1); exit 1; }; }
-
-# Reload cache, that may have been modified by ltconfig
-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
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . $cache_file;;
-      *)                      . ./$cache_file;;
-    esac
-  fi
-else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh $ac_aux_dir/ltcf-c.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-
-ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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 "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
-if test -z "$CXXCPP"; then
-  if test "${ac_cv_prog_CXXCPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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  to  if __STDC__ is defined, since
-  #  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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-		     Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # 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
-echo "$as_me:$LINENO: result: $CXXCPP" >&5
-echo "${ECHO_T}$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  to  if __STDC__ is defined, since
-  #  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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-		     Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # 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
-  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-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
-
-
-
-LIBTOOL_DEPS=$LIBTOOL_DEPS" $ac_aux_dir/ltcf-cxx.sh"
-lt_save_CC="$CC"
-lt_save_CFLAGS="$CFLAGS"
-AR="$AR" LTCC="$CC" CC="$CXX" CXX="$CXX" CFLAGS="$CXXFLAGS" CPPFLAGS="$CPPFLAGS" \
-MAGIC_CMD="$MAGIC_CMD" LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" STRIP="$STRIP" \
-AS="$AS" DLLTOOL="$DLLTOOL" OBJDUMP="$OBJDUMP" \
-objext="$OBJEXT" exeext="$EXEEXT" reload_flag="$reload_flag" \
-deplibs_check_method="$deplibs_check_method" \
-file_magic_cmd="$file_magic_cmd" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig -o libtool $libtool_flags \
---build="$build" --add-tag=CXX $ac_aux_dir/ltcf-cxx.sh $host \
-|| { { echo "$as_me:$LINENO: error: libtool tag configuration failed" >&5
-echo "$as_me: error: libtool tag configuration failed" >&2;}
-   { (exit 1); exit 1; }; }
-CC="$lt_save_CC"
-CFLAGS="$lt_save_CFLAGS"
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-
-
-
-
-
-
-
-
-
-# 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 or --disable-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
-    { echo "$as_me:$LINENO: Only freestanding libraries will be built" >&5
-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
-
-
-
-# Check for compiler support that doesn't require linking.
-
-  echo "$as_me:$LINENO: checking for exception model to use" >&5
-echo $ECHO_N "checking for exception model to use... $ECHO_C" >&6
-
-
-  ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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 or --disable-sjlj-exceptions was given.
-if test "${enable_sjlj_exceptions+set}" = set; then
-  enableval="$enable_sjlj_exceptions"
-
-      case "$enableval" in
-       yes|no|auto) ;;
-       *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable sjlj-exceptions" >&5
-echo "$as_me: error: Unknown argument to enable/disable sjlj-exceptions" >&2;}
-   { (exit 1); exit 1; }; } ;;
-                          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 5081 "configure"
-struct S { ~S(); };
-void bar();
-void foo()
-{
-  S s;
-  bar();
-}
-EOF
-    old_CXXFLAGS="$CXXFLAGS"
-    CXXFLAGS=-S
-    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; 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)
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_SJLJ_EXCEPTIONS 1
-_ACEOF
-
-      ac_exception_model_name=sjlj
-      ;;
-    no)
-      ac_exception_model_name="call frame"
-      ;;
-    *)
-      { { echo "$as_me:$LINENO: error: unable to detect exception model" >&5
-echo "$as_me: error: unable to detect exception model" >&2;}
-   { (exit 1); exit 1; }; }
-      ;;
-  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
-
- echo "$as_me:$LINENO: result: $ac_exception_model_name" >&5
-echo "${ECHO_T}$ac_exception_model_name" >&6
-
-
-   # Check whether --enable-libstdcxx-pch or --disable-libstdcxx-pch was given.
-if test "${enable_libstdcxx_pch+set}" = set; then
-  enableval="$enable_libstdcxx_pch"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable libstdcxx-pch must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable libstdcxx-pch must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_libstdcxx_pch=$is_hosted
-fi;
-
-  if test $enable_libstdcxx_pch = yes; then
-    echo "$as_me:$LINENO: checking for compiler with PCH support" >&5
-echo $ECHO_N "checking for compiler with PCH support... $ECHO_C" >&6
-if test "${glibcxx_cv_prog_CXX_pch+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_save_CXXFLAGS="$CXXFLAGS"
-       CXXFLAGS="$CXXFLAGS -Werror -Winvalid-pch -Wno-deprecated"
-
-
-       ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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 ' > 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
-echo "$as_me:$LINENO: result: $glibcxx_cv_prog_CXX_pch" >&5
-echo "${ECHO_T}$glibcxx_cv_prog_CXX_pch" >&6
-    enable_libstdcxx_pch=$glibcxx_cv_prog_CXX_pch
-  fi
-
-  echo "$as_me:$LINENO: checking for enabled PCH" >&5
-echo $ECHO_N "checking for enabled PCH... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_libstdcxx_pch" >&5
-echo "${ECHO_T}$enable_libstdcxx_pch" >&6
-
-
-  if test $enable_libstdcxx_pch = yes; then
-    glibcxx_PCHFLAGS="-include bits/stdc++.h"
-  else
-    glibcxx_PCHFLAGS=""
-  fi
-
-
-
-# Enable all the variable C++ runtime options.
-
-  echo "$as_me:$LINENO: checking for underlying I/O to use" >&5
-echo $ECHO_N "checking for underlying I/O to use... $ECHO_C" >&6
-   # Check whether --enable-cstdio or --disable-cstdio was given.
-if test "${enable_cstdio+set}" = set; then
-  enableval="$enable_cstdio"
-
-      case "$enableval" in
-       stdio) ;;
-       *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable cstdio" >&5
-echo "$as_me: error: Unknown argument to enable/disable cstdio" >&2;}
-   { (exit 1); exit 1; }; } ;;
-                          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
-      echo "$as_me:$LINENO: result: stdio" >&5
-echo "${ECHO_T}stdio" >&6
-      ;;
-  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
-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&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
-  echo $ECHO_N "(cached) $ECHO_C" >&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  to  if __STDC__ is defined, since
-  #  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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-		     Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # 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
-echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$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  to  if __STDC__ is defined, since
-  #  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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-		     Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether non-existent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  # Broken: success on invalid input.
-continue
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # 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
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-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
-
-
-echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
-if test "${ac_cv_prog_egrep+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
-    then ac_cv_prog_egrep='grep -E'
-    else ac_cv_prog_egrep='egrep'
-    fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
- EGREP=$ac_cv_prog_egrep
-
-
-echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-#include 
-#include 
-#include 
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_header_stdc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_stdc=no
-fi
-rm -f 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-
-_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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-
-_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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-#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))
-      exit(2);
-  exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6
-if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
-
-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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_Header=no"
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  echo "$as_me:$LINENO: checking for C locale to use" >&5
-echo $ECHO_N "checking for C locale to use... $ECHO_C" >&6
-   # Check whether --enable-clocale or --disable-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) ;;
-       *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
-echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-   { (exit 1); exit 1; }; } ;;
-                          esac
-
-else
-  enable_clocale=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_clocale = no || test $enable_clocale = yes; then
-     enable_clocale=auto
-  fi
-
-  # Either a known package, or "auto"
-  enable_clocale_flag=$enable_clocale
-
-  # Probe for locale support if no specific model is specified.
-  # Default to "generic".
-  if test $enable_clocale_flag = auto; then
-    case ${target_os} in
-      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-        #include 
-        #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
-          _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*
-
-
-        # Test for bugs early in glibc-2.2.x series
-          if test $enable_clocale_flag = gnu; then
-          if test "$cross_compiling" = yes; then
-  enable_clocale_flag=generic
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-          #define _GNU_SOURCE 1
-          #include 
-          #include 
-          #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
-          extern __typeof(newlocale) __newlocale;
-          extern __typeof(duplocale) __duplocale;
-          extern __typeof(strcoll_l) __strcoll_l;
-          #endif
-          int main()
-          {
-              const char __one[] = "Äuglein Augmen";
-              const char __two[] = "Äuglein";
-              int i;
-              int j;
-              __locale_t        loc;
-               __locale_t        loc_dup;
-              loc = __newlocale(1 << LC_ALL, "de_DE", 0);
-              loc_dup = __duplocale(loc);
-              i = __strcoll_l(__one, __two, loc);
-              j = __strcoll_l(__one, __two, loc_dup);
-              return 0;
-          }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  enable_clocale_flag=gnu
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-enable_clocale_flag=generic
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-          fi
-
-        # ... at some point put __strxfrm_l tests in as well.
-        ;;
-      darwin* | freebsd*)
-        enable_clocale_flag=darwin
-	;;
-      *)
-        enable_clocale_flag=generic
-        ;;
-    esac
-  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 or --disable-nls was given.
-if test "${enable_nls+set}" = set; then
-  enableval="$enable_nls"
-
-else
-  enable_nls=yes
-fi;
-
-  # Set configure bits for specified locale package
-  case ${enable_clocale_flag} in
-    generic)
-      echo "$as_me:$LINENO: result: generic" >&5
-echo "${ECHO_T}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)
-      echo "$as_me:$LINENO: result: darwin or freebsd" >&5
-echo "${ECHO_T}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)
-      echo "$as_me:$LINENO: result: gnu" >&5
-echo "${ECHO_T}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
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_check_msgfmt+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_check_msgfmt="yes"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  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
-  echo "$as_me:$LINENO: result: $check_msgfmt" >&5
-echo "${ECHO_T}$check_msgfmt" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}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)
-      echo "$as_me:$LINENO: result: IEEE 1003.1" >&5
-echo "${ECHO_T}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
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  USE_NLS=no
-fi
-
-done
-
-    echo "$as_me:$LINENO: checking for library containing gettext" >&5
-echo $ECHO_N "checking for library containing gettext... $ECHO_C" >&6
-if test "${ac_cv_search_gettext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-ac_cv_search_gettext=no
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gettext ();
-int
-main ()
-{
-gettext ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_search_gettext="none required"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_gettext" = no; then
-  for ac_lib in intl; do
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char gettext ();
-int
-main ()
-{
-gettext ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_search_gettext="-l$ac_lib"
-break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
-fi
-LIBS=$ac_func_search_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_search_gettext" >&5
-echo "${ECHO_T}$ac_cv_search_gettext" >&6
-if test "$ac_cv_search_gettext" != no; then
-  test "$ac_cv_search_gettext" = "none required" || LIBS="$ac_cv_search_gettext $LIBS"
-
-else
-  USE_NLS=no
-fi
-
-  fi
-  if test $USE_NLS = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_NLS 1
-_ACEOF
-
-  fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for std::allocator base class" >&5
-echo $ECHO_N "checking for std::allocator base class... $ECHO_C" >&6
-   # Check whether --enable-libstdcxx-allocator or --disable-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) ;;
-       *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable libstdcxx-allocator" >&5
-echo "$as_me: error: Unknown argument to enable/disable libstdcxx-allocator" >&2;}
-   { (exit 1); exit 1; }; } ;;
-                          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
-  echo "$as_me:$LINENO: result: $enable_libstdcxx_allocator_flag" >&5
-echo "${ECHO_T}$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 or --disable-cheaders was given.
-if test "${enable_cheaders+set}" = set; then
-  enableval="$enable_cheaders"
-
-      case "$enableval" in
-       c|c_std) ;;
-       *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable cheaders" >&5
-echo "$as_me: error: Unknown argument to enable/disable cheaders" >&2;}
-   { (exit 1); exit 1; }; } ;;
-                          esac
-
-else
-  enable_cheaders=$c_model
-fi;
-
-  { echo "$as_me:$LINENO: \"C\" header strategy set to $enable_cheaders" >&5
-echo "$as_me: \"C\" header strategy set to $enable_cheaders" >&6;}
-
-  C_INCLUDE_DIR='${glibcxx_srcdir}/include/'$enable_cheaders
-
-
-
-
-
-
-
-
-   # Check whether --enable-c99 or --disable-c99 was given.
-if test "${enable_c99+set}" = set; then
-  enableval="$enable_c99"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable c99 must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable c99 must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_c99=yes
-fi;
-
-
-  # Test wchar.h for mbstate_t, which is needed for char_traits and fpos
-  # even if C99 support is turned off.
-
-for ac_header in wchar.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- ac_has_wchar_h=yes
-else
-  ac_has_wchar_h=no
-fi
-
-done
-
-  echo "$as_me:$LINENO: checking for mbstate_t" >&5
-echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-mbstate_t teststate;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  have_mbstate_t=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-have_mbstate_t=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  echo "$as_me:$LINENO: result: $have_mbstate_t" >&5
-echo "${ECHO_T}$have_mbstate_t" >&6
-  if test x"$have_mbstate_t" = xyes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MBSTATE_T 1
-_ACEOF
-
-  fi
-
-  if test x"$enable_c99" = x"yes"; then
-
-
-
-  ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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 for the existence of  functions used if C99 is enabled.
-  echo "$as_me:$LINENO: checking for ISO C99 support in " >&5
-echo $ECHO_N "checking for ISO C99 support in ... $ECHO_C" >&6
-  if test "${ac_c99_math+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-fpclassify(0.0);
-	          isfinite(0.0);
-		  isinf(0.0);
-	          isnan(0.0);
-		  isnormal(0.0);
-	  	  signbit(0.0);
-	 	  isgreater(0.0,0.0);
-		  isgreaterequal(0.0,0.0);
-		  isless(0.0,0.0);
-		  islessequal(0.0,0.0);
-		  islessgreater(0.0,0.0);
-		  islessgreater(0.0,0.0);
-		  isunordered(0.0,0.0);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_c99_math=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_c99_math=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-  echo "$as_me:$LINENO: result: $ac_c99_math" >&5
-echo "${ECHO_T}$ac_c99_math" >&6
-  if test x"$ac_c99_math" = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_C99_MATH 1
-_ACEOF
-
-  fi
-
-  # Check for the existence of  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 complex.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- ac_has_complex_h=yes
-else
-  ac_has_complex_h=no
-fi
-
-done
-
-  ac_c99_complex=no;
-  if test x"$ac_has_complex_h" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ISO C99 support in " >&5
-echo $ECHO_N "checking for ISO C99 support in ... $ECHO_C" >&6
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-typedef __complex__ float float_type; float_type tmpf;
-	            cabsf(tmpf);
-		    cargf(tmpf);
-		    ccosf(tmpf);
-  		    ccoshf(tmpf);
-		    cexpf(tmpf);
-	            clogf(tmpf);
-		    csinf(tmpf);
-		    csinhf(tmpf);
-		    csqrtf(tmpf);
-		    ctanf(tmpf);
-		    ctanhf(tmpf);
-		    cpowf(tmpf, tmpf);
-		    typedef __complex__ double double_type; double_type tmpd;
-	            cabs(tmpd);
-		    carg(tmpd);
-		    ccos(tmpd);
-  		    ccosh(tmpd);
-		    cexp(tmpd);
-	            clog(tmpd);
-		    csin(tmpd);
-		    csinh(tmpd);
-		    csqrt(tmpd);
-		    ctan(tmpd);
-		    ctanh(tmpd);
-		    cpow(tmpd, tmpd);
-		    typedef __complex__ long double ld_type; ld_type tmpld;
-	            cabsl(tmpld);
-		    cargl(tmpld);
-		    ccosl(tmpld);
-  		    ccoshl(tmpld);
-		    cexpl(tmpld);
-	            clogl(tmpld);
-		    csinl(tmpld);
-		    csinhl(tmpld);
-		    csqrtl(tmpld);
-		    ctanl(tmpld);
-		    ctanhl(tmpld);
-		    cpowl(tmpld, tmpld);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_c99_complex=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_c99_complex=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-  fi
-  echo "$as_me:$LINENO: result: $ac_c99_complex" >&5
-echo "${ECHO_T}$ac_c99_complex" >&6
-  if test x"$ac_c99_complex" = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_C99_COMPLEX 1
-_ACEOF
-
-  fi
-
-  # Check for the existence in  of vscanf, et. al.
-  echo "$as_me:$LINENO: checking for ISO C99 support in " >&5
-echo $ECHO_N "checking for ISO C99 support in ... $ECHO_C" >&6
-  if test "${ac_c99_stdio+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		  #include 
-                  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
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_c99_stdio=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_c99_stdio=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-  echo "$as_me:$LINENO: result: $ac_c99_stdio" >&5
-echo "${ECHO_T}$ac_c99_stdio" >&6
-
-  # Check for the existence in  of lldiv_t, et. al.
-  echo "$as_me:$LINENO: checking for ISO C99 support in " >&5
-echo $ECHO_N "checking for ISO C99 support in ... $ECHO_C" >&6
-  if test "${ac_c99_stdlib+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-char* tmp;
-	    	  strtof("gnu", &tmp);
-		  strtold("gnu", &tmp);
-	          strtoll("gnu", &tmp, 10);
-	          strtoull("gnu", &tmp, 10);
-	          llabs(10);
-		  lldiv(10,1);
-		  atoll("10");
-		  _Exit(0);
-		  lldiv_t mydivt;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_c99_stdlib=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_c99_stdlib=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-  echo "$as_me:$LINENO: result: $ac_c99_stdlib" >&5
-echo "${ECHO_T}$ac_c99_stdlib" >&6
-
-  # Check for the existence in  of wcstoull, WEOF, etc.
-
-for ac_header in wctype.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_cxx_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- ac_has_wctype_h=yes
-else
-  ac_has_wctype_h=no
-fi
-
-done
-
-  ac_c99_wchar=no;
-  if test x"$ac_has_wchar_h" = xyes &&
-     test x"$ac_has_wctype_h" = xyes; then
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-                    #include 
-                    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 ::wcstold;
-		      using ::wcstoll;
-		      using ::wcstoul;
-		      using ::wcstoull;
-		      using ::wcsxfrm;
-		      using ::wctob;
-		      using ::wmemchr;
-		      using ::wmemcmp;
-		      using ::wmemcpy;
-		      using ::wmemmove;
-		      using ::wmemset;
-		      using ::wprintf;
-		      using ::wscanf;
-		    }
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_c99_wchar=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_c99_wchar=no
-fi
-rm -f 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 >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-                    namespace test { using ::vfwscanf; }
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_VFWSCANF 1
-_ACEOF
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-                    namespace test { using ::vswscanf; }
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_VSWSCANF 1
-_ACEOF
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-                    namespace test { using ::vwscanf; }
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_VWSCANF 1
-_ACEOF
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-                    namespace test { using ::wcstof; }
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WCSTOF 1
-_ACEOF
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- wint_t t; int i = iswblank(t);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISWBLANK 1
-_ACEOF
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-    echo "$as_me:$LINENO: checking for ISO C99 support in " >&5
-echo $ECHO_N "checking for ISO C99 support in ... $ECHO_C" >&6
-    echo "$as_me:$LINENO: result: $ac_c99_wchar" >&5
-echo "${ECHO_T}$ac_c99_wchar" >&6
-  fi
-
-  # Option parsed, now set things appropriately.
-  if test x"$ac_c99_math" = x"no" ||
-     test x"$ac_c99_complex" = x"no" ||
-     test x"$ac_c99_stdio" = x"no" ||
-     test x"$ac_c99_stdlib" = x"no" ||
-     test x"$ac_c99_wchar" = x"no"; then
-    enable_c99=no;
-  else
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_C99 1
-_ACEOF
-
-  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
-
-  echo "$as_me:$LINENO: checking for fully enabled ISO C99 support" >&5
-echo $ECHO_N "checking for fully enabled ISO C99 support... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_c99" >&5
-echo "${ECHO_T}$enable_c99" >&6
-
-
-   # Check whether --enable-long-long or --disable-long-long was given.
-if test "${enable_long_long+set}" = set; then
-  enableval="$enable_long_long"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable long-long must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable long-long must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_long_long=yes
-fi;
-
-  if test $enable_long_long = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_LONG_LONG 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: checking for enabled long long specializations" >&5
-echo $ECHO_N "checking for enabled long long specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_long_long" >&5
-echo "${ECHO_T}$enable_long_long" >&6
-
-
-   # Check whether --enable-wchar_t or --disable-wchar_t was given.
-if test "${enable_wchar_t+set}" = set; then
-  enableval="$enable_wchar_t"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable wchar_t must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable wchar_t must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_wchar_t=yes
-fi;
-
-  if test x"$ac_c99_wchar" = x"yes" && test x"$enable_wchar_t" = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_WCHAR_T 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: checking for enabled wchar_t specializations" >&5
-echo $ECHO_N "checking for enabled wchar_t specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_wchar_t" >&5
-echo "${ECHO_T}$enable_wchar_t" >&6
-
-
-   # Check whether --enable-concept-checks or --disable-concept-checks was given.
-if test "${enable_concept_checks+set}" = set; then
-  enableval="$enable_concept_checks"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable concept-checks must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable concept-checks must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_concept_checks=no
-fi;
-
-  if test $enable_concept_checks = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_CONCEPT_CHECKS 1
-_ACEOF
-
-  fi
-
-
-   # Check whether --enable-libstdcxx-debug-flags or --disable-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-*)        ;;
-      *)          { { echo "$as_me:$LINENO: error: --enable-libstdcxx-debug-flags needs compiler flags as arguments" >&5
-echo "$as_me: error: --enable-libstdcxx-debug-flags needs compiler flags as arguments" >&2;}
-   { (exit 1); exit 1; }; } ;;
-     esac
-else
-  enable_libstdcxx_debug_flags="-g3 -O0"
-fi;
-
-
-  # Option parsed, now set things appropriately
-  DEBUG_FLAGS="$enable_libstdcxx_debug_flags"
-
-
-  { echo "$as_me:$LINENO: Debug build flags set to $DEBUG_FLAGS" >&5
-echo "$as_me: Debug build flags set to $DEBUG_FLAGS" >&6;}
-
-
-  echo "$as_me:$LINENO: checking for additional debug build" >&5
-echo $ECHO_N "checking for additional debug build... $ECHO_C" >&6
-   # Check whether --enable-libstdcxx-debug or --disable-libstdcxx-debug was given.
-if test "${enable_libstdcxx_debug+set}" = set; then
-  enableval="$enable_libstdcxx_debug"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable libstdcxx-debug must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable libstdcxx-debug must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_libstdcxx_debug=no
-fi;
-
-  echo "$as_me:$LINENO: result: $enable_libstdcxx_debug" >&5
-echo "${ECHO_T}$enable_libstdcxx_debug" >&6
-
-
-  echo "$as_me:$LINENO: checking for extra compiler flags for building" >&5
-echo $ECHO_N "checking for extra compiler flags for building... $ECHO_C" >&6
-   # Check whether --enable-cxx-flags or --disable-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-*)       ;;
-      *)         { { echo "$as_me:$LINENO: error: --enable-cxx-flags needs compiler flags as arguments" >&5
-echo "$as_me: error: --enable-cxx-flags needs compiler flags as arguments" >&2;}
-   { (exit 1); exit 1; }; } ;;
-     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?
-             { { echo "$as_me:$LINENO: error: compiler flags start with a -" >&5
-echo "$as_me: error: compiler flags start with a -" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-    done
-  fi
-
-  EXTRA_CXX_FLAGS="$enable_cxx_flags"
-  echo "$as_me:$LINENO: result: $EXTRA_CXX_FLAGS" >&5
-echo "${ECHO_T}$EXTRA_CXX_FLAGS" >&6
-
-
-
-   # Check whether --enable-fully-dynamic-string or --disable-fully-dynamic-string was given.
-if test "${enable_fully_dynamic_string+set}" = set; then
-  enableval="$enable_fully_dynamic_string"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable fully-dynamic-string must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable fully-dynamic-string must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_fully_dynamic_string=no
-fi;
-
-  if test $enable_fully_dynamic_string = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_FULLY_DYNAMIC_STRING 1
-_ACEOF
-
-  fi
-
-
-# No surprises, no surprises...
-
-  echo "$as_me:$LINENO: checking for thread model used by GCC" >&5
-echo $ECHO_N "checking for thread model used by GCC... $ECHO_C" >&6
-  target_thread_file=`$CXX -v 2>&1 | sed -n 's/^Thread model: //p'`
-  echo "$as_me:$LINENO: result: $target_thread_file" >&5
-echo "${ECHO_T}$target_thread_file" >&6
-
-  if test $target_thread_file != single; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GTHR_DEFAULT 1
-_ACEOF
-
-  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
-
-
-
-if test $atomicity_dir = cpu/generic ; then
-  { echo "$as_me:$LINENO: WARNING: No native atomic operations are provided for this platform." >&5
-echo "$as_me: WARNING: No native atomic operations are provided for this platform." >&2;}
-  if test $target_thread_file = single; then
-    { echo "$as_me:$LINENO: WARNING: They cannot be faked when thread support is disabled." >&5
-echo "$as_me: WARNING: They cannot be faked when thread support is disabled." >&2;}
-    { echo "$as_me:$LINENO: WARNING: Thread-safety of certain classes is not guaranteed." >&5
-echo "$as_me: WARNING: Thread-safety of certain classes is not guaranteed." >&2;}
-  else
-    { echo "$as_me:$LINENO: WARNING: They will be faked using a mutex." >&5
-echo "$as_me: WARNING: They will be faked using a mutex." >&2;}
-    { echo "$as_me:$LINENO: WARNING: Performance of certain classes will degrade as a result." >&5
-echo "$as_me: WARNING: Performance of certain classes will degrade as a result." >&2;}
-  fi
-fi
-
-
-if $GLIBCXX_IS_NATIVE; then
-
-  # We can do more elaborate tests that assume a working linker.
-  CANADIAN=no
-
-  # Check for available headers.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
-  machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
-  sys/types.h sys/ipc.h sys/sem.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  # 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=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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
-  echo "$as_me:$LINENO: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
-echo $ECHO_N "checking for g++ that supports -ffunction-sections -fdata-sections... $ECHO_C" >&6
-  CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-int foo;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_fdsections=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_fdsections=no
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $ac_fdsections" >&5
-echo "${ECHO_T}$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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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'
-
-    echo "$as_me:$LINENO: checking for sin in -lm" >&5
-echo $ECHO_N "checking for sin in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_sin+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char sin ();
-int
-main ()
-{
-sin ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_sin=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_sin=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_sin" >&5
-echo "${ECHO_T}$ac_cv_lib_m_sin" >&6
-if test $ac_cv_lib_m_sin = yes; then
-  libm="-lm"
-fi
-
-  ac_save_LIBS="$LIBS"
-  LIBS="$LIBS $libm"
-
-
-
-  echo "$as_me:$LINENO: checking for isinf declaration" >&5
-echo $ECHO_N "checking for isinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinf_use" >&6
-
-  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
-
-for ac_func in isinf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinf declaration" >&5
-echo $ECHO_N "checking for _isinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinf_use" >&6
-
-    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
-
-for ac_func in _isinf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnan declaration" >&5
-echo $ECHO_N "checking for isnan declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnan_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnan(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnan_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnan_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnan_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnan_use" >&6
-
-  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
-
-for ac_func in isnan
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnan declaration" >&5
-echo $ECHO_N "checking for _isnan declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnan_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnan(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnan_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnan_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnan_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnan_use" >&6
-
-    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
-
-for ac_func in _isnan
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finite declaration" >&5
-echo $ECHO_N "checking for finite declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finite_use+set} != xset; then
-    if test "${glibcxx_cv_func_finite_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finite(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finite_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finite_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finite_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finite_use" >&6
-
-  if test x$glibcxx_cv_func_finite_use = x"yes"; then
-
-for ac_func in finite
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finite declaration" >&5
-echo $ECHO_N "checking for _finite declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finite_use+set} != xset; then
-    if test "${glibcxx_cv_func__finite_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finite(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finite_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finite_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finite_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finite_use" >&6
-
-    if test x$glibcxx_cv_func__finite_use = x"yes"; then
-
-for ac_func in _finite
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for copysign declaration" >&5
-echo $ECHO_N "checking for copysign declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_copysign_use+set} != xset; then
-    if test "${glibcxx_cv_func_copysign_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- copysign(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_copysign_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_copysign_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysign_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_copysign_use" >&6
-
-  if test x$glibcxx_cv_func_copysign_use = x"yes"; then
-
-for ac_func in copysign
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _copysign declaration" >&5
-echo $ECHO_N "checking for _copysign declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__copysign_use+set} != xset; then
-    if test "${glibcxx_cv_func__copysign_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _copysign(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__copysign_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__copysign_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysign_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__copysign_use" >&6
-
-    if test x$glibcxx_cv_func__copysign_use = x"yes"; then
-
-for ac_func in _copysign
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincos declaration" >&5
-echo $ECHO_N "checking for sincos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincos(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincos_use" >&6
-
-  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
-
-for ac_func in sincos
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincos declaration" >&5
-echo $ECHO_N "checking for _sincos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincos(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincos_use" >&6
-
-    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
-
-for ac_func in _sincos
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fpclass declaration" >&5
-echo $ECHO_N "checking for fpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fpclass_use" >&6
-
-  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
-
-for ac_func in fpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fpclass declaration" >&5
-echo $ECHO_N "checking for _fpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fpclass_use" >&6
-
-    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
-
-for ac_func in _fpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for qfpclass declaration" >&5
-echo $ECHO_N "checking for qfpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- qfpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_qfpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_qfpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_qfpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_qfpclass_use" >&6
-
-  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
-
-for ac_func in qfpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _qfpclass declaration" >&5
-echo $ECHO_N "checking for _qfpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _qfpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__qfpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__qfpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__qfpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__qfpclass_use" >&6
-
-    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
-
-for ac_func in _qfpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypot declaration" >&5
-echo $ECHO_N "checking for hypot declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypot_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypot(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypot_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypot_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypot_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypot_use" >&6
-
-  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
-
-for ac_func in hypot
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypot declaration" >&5
-echo $ECHO_N "checking for _hypot declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypot_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypot(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypot_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypot_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypot_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypot_use" >&6
-
-    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
-
-for ac_func in _hypot
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for float trig functions" >&5
-echo $ECHO_N "checking for float trig functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_float_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_float_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _float trig functions" >&5
-echo $ECHO_N "checking for _float trig functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__float_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__float_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for float round functions" >&5
-echo $ECHO_N "checking for float round functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_float_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-ceilf (0); floorf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_float_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_float_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _float round functions" >&5
-echo $ECHO_N "checking for _float round functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__float_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_ceilf (0); _floorf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__float_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__float_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for expf declaration" >&5
-echo $ECHO_N "checking for expf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_expf_use+set} != xset; then
-    if test "${glibcxx_cv_func_expf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- expf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_expf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_expf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_expf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_expf_use" >&6
-
-  if test x$glibcxx_cv_func_expf_use = x"yes"; then
-
-for ac_func in expf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _expf declaration" >&5
-echo $ECHO_N "checking for _expf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__expf_use+set} != xset; then
-    if test "${glibcxx_cv_func__expf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _expf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__expf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__expf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__expf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__expf_use" >&6
-
-    if test x$glibcxx_cv_func__expf_use = x"yes"; then
-
-for ac_func in _expf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnanf declaration" >&5
-echo $ECHO_N "checking for isnanf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnanf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnanf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnanf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnanf_use" >&6
-
-  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
-
-for ac_func in isnanf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnanf declaration" >&5
-echo $ECHO_N "checking for _isnanf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnanf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnanf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnanf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnanf_use" >&6
-
-    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
-
-for ac_func in _isnanf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isinff declaration" >&5
-echo $ECHO_N "checking for isinff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinff(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinff_use" >&6
-
-  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
-
-for ac_func in isinff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinff declaration" >&5
-echo $ECHO_N "checking for _isinff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinff(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinff_use" >&6
-
-    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
-
-for ac_func in _isinff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for atan2f declaration" >&5
-echo $ECHO_N "checking for atan2f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
-    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- atan2f(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_atan2f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_atan2f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_atan2f_use" >&6
-
-  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
-
-for ac_func in atan2f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _atan2f declaration" >&5
-echo $ECHO_N "checking for _atan2f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
-    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _atan2f(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__atan2f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__atan2f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__atan2f_use" >&6
-
-    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
-
-for ac_func in _atan2f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fabsf declaration" >&5
-echo $ECHO_N "checking for fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fabsf_use" >&6
-
-  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
-
-for ac_func in fabsf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fabsf declaration" >&5
-echo $ECHO_N "checking for _fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fabsf_use" >&6
-
-    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
-
-for ac_func in _fabsf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fmodf declaration" >&5
-echo $ECHO_N "checking for fmodf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
-    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- fmodf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fmodf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fmodf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fmodf_use" >&6
-
-  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
-
-for ac_func in fmodf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fmodf declaration" >&5
-echo $ECHO_N "checking for _fmodf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
-    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _fmodf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fmodf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fmodf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fmodf_use" >&6
-
-    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
-
-for ac_func in _fmodf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for frexpf declaration" >&5
-echo $ECHO_N "checking for frexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- frexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_frexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_frexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_frexpf_use" >&6
-
-  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
-
-for ac_func in frexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _frexpf declaration" >&5
-echo $ECHO_N "checking for _frexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _frexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__frexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__frexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__frexpf_use" >&6
-
-    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
-
-for ac_func in _frexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypotf declaration" >&5
-echo $ECHO_N "checking for hypotf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypotf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypotf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypotf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypotf_use" >&6
-
-  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
-
-for ac_func in hypotf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypotf declaration" >&5
-echo $ECHO_N "checking for _hypotf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypotf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypotf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypotf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypotf_use" >&6
-
-    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
-
-for ac_func in _hypotf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for ldexpf declaration" >&5
-echo $ECHO_N "checking for ldexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- ldexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_ldexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_ldexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_ldexpf_use" >&6
-
-  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
-
-for ac_func in ldexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _ldexpf declaration" >&5
-echo $ECHO_N "checking for _ldexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _ldexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__ldexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__ldexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__ldexpf_use" >&6
-
-    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
-
-for ac_func in _ldexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for logf declaration" >&5
-echo $ECHO_N "checking for logf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_logf_use+set} != xset; then
-    if test "${glibcxx_cv_func_logf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- logf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_logf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_logf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_logf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_logf_use" >&6
-
-  if test x$glibcxx_cv_func_logf_use = x"yes"; then
-
-for ac_func in logf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _logf declaration" >&5
-echo $ECHO_N "checking for _logf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__logf_use+set} != xset; then
-    if test "${glibcxx_cv_func__logf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _logf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__logf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__logf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__logf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__logf_use" >&6
-
-    if test x$glibcxx_cv_func__logf_use = x"yes"; then
-
-for ac_func in _logf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for log10f declaration" >&5
-echo $ECHO_N "checking for log10f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
-    if test "${glibcxx_cv_func_log10f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- log10f(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_log10f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_log10f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_log10f_use" >&6
-
-  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
-
-for ac_func in log10f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _log10f declaration" >&5
-echo $ECHO_N "checking for _log10f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
-    if test "${glibcxx_cv_func__log10f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _log10f(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__log10f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__log10f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__log10f_use" >&6
-
-    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
-
-for ac_func in _log10f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modff declaration" >&5
-echo $ECHO_N "checking for modff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modff_use+set} != xset; then
-    if test "${glibcxx_cv_func_modff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modff(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modff_use" >&6
-
-  if test x$glibcxx_cv_func_modff_use = x"yes"; then
-
-for ac_func in modff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modff declaration" >&5
-echo $ECHO_N "checking for _modff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modff_use+set} != xset; then
-    if test "${glibcxx_cv_func__modff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modff(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modff_use" >&6
-
-    if test x$glibcxx_cv_func__modff_use = x"yes"; then
-
-for ac_func in _modff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modf declaration" >&5
-echo $ECHO_N "checking for modf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modf_use+set} != xset; then
-    if test "${glibcxx_cv_func_modf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modf_use" >&6
-
-  if test x$glibcxx_cv_func_modf_use = x"yes"; then
-
-for ac_func in modf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modf declaration" >&5
-echo $ECHO_N "checking for _modf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modf_use+set} != xset; then
-    if test "${glibcxx_cv_func__modf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modf_use" >&6
-
-    if test x$glibcxx_cv_func__modf_use = x"yes"; then
-
-for ac_func in _modf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for powf declaration" >&5
-echo $ECHO_N "checking for powf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_powf_use+set} != xset; then
-    if test "${glibcxx_cv_func_powf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- powf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_powf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_powf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_powf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_powf_use" >&6
-
-  if test x$glibcxx_cv_func_powf_use = x"yes"; then
-
-for ac_func in powf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _powf declaration" >&5
-echo $ECHO_N "checking for _powf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__powf_use+set} != xset; then
-    if test "${glibcxx_cv_func__powf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _powf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__powf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__powf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__powf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__powf_use" >&6
-
-    if test x$glibcxx_cv_func__powf_use = x"yes"; then
-
-for ac_func in _powf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sqrtf declaration" >&5
-echo $ECHO_N "checking for sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sqrtf_use" >&6
-
-  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
-
-for ac_func in sqrtf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sqrtf declaration" >&5
-echo $ECHO_N "checking for _sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sqrtf_use" >&6
-
-    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
-
-for ac_func in _sqrtf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincosf declaration" >&5
-echo $ECHO_N "checking for sincosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincosf(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincosf_use" >&6
-
-  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
-
-for ac_func in sincosf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincosf declaration" >&5
-echo $ECHO_N "checking for _sincosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincosf(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincosf_use" >&6
-
-    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
-
-for ac_func in _sincosf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finitef declaration" >&5
-echo $ECHO_N "checking for finitef declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
-    if test "${glibcxx_cv_func_finitef_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finitef(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finitef_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finitef_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitef_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finitef_use" >&6
-
-  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
-
-for ac_func in finitef
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finitef declaration" >&5
-echo $ECHO_N "checking for _finitef declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
-    if test "${glibcxx_cv_func__finitef_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finitef(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finitef_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finitef_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitef_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finitef_use" >&6
-
-    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
-
-for ac_func in _finitef
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for long double trig functions" >&5
-echo $ECHO_N "checking for long double trig functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_long_double_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_long_double_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _long double trig functions" >&5
-echo $ECHO_N "checking for _long double trig functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__long_double_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__long_double_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for long double round functions" >&5
-echo $ECHO_N "checking for long double round functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-ceill (0); floorl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_long_double_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_long_double_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _long double round functions" >&5
-echo $ECHO_N "checking for _long double round functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_ceill (0); _floorl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__long_double_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__long_double_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnanl declaration" >&5
-echo $ECHO_N "checking for isnanl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnanl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnanl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnanl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnanl_use" >&6
-
-  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
-
-for ac_func in isnanl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnanl declaration" >&5
-echo $ECHO_N "checking for _isnanl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnanl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnanl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnanl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnanl_use" >&6
-
-    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
-
-for ac_func in _isnanl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isinfl declaration" >&5
-echo $ECHO_N "checking for isinfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinfl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinfl_use" >&6
-
-  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
-
-for ac_func in isinfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinfl declaration" >&5
-echo $ECHO_N "checking for _isinfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinfl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinfl_use" >&6
-
-    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
-
-for ac_func in _isinfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for copysignl declaration" >&5
-echo $ECHO_N "checking for copysignl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_copysignl_use+set} != xset; then
-    if test "${glibcxx_cv_func_copysignl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- copysignl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_copysignl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_copysignl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysignl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_copysignl_use" >&6
-
-  if test x$glibcxx_cv_func_copysignl_use = x"yes"; then
-
-for ac_func in copysignl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _copysignl declaration" >&5
-echo $ECHO_N "checking for _copysignl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__copysignl_use+set} != xset; then
-    if test "${glibcxx_cv_func__copysignl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _copysignl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__copysignl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__copysignl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysignl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__copysignl_use" >&6
-
-    if test x$glibcxx_cv_func__copysignl_use = x"yes"; then
-
-for ac_func in _copysignl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for atan2l declaration" >&5
-echo $ECHO_N "checking for atan2l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
-    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- atan2l(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_atan2l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_atan2l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_atan2l_use" >&6
-
-  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
-
-for ac_func in atan2l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _atan2l declaration" >&5
-echo $ECHO_N "checking for _atan2l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
-    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _atan2l(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__atan2l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__atan2l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__atan2l_use" >&6
-
-    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
-
-for ac_func in _atan2l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for expl declaration" >&5
-echo $ECHO_N "checking for expl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_expl_use+set} != xset; then
-    if test "${glibcxx_cv_func_expl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- expl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_expl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_expl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_expl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_expl_use" >&6
-
-  if test x$glibcxx_cv_func_expl_use = x"yes"; then
-
-for ac_func in expl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _expl declaration" >&5
-echo $ECHO_N "checking for _expl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__expl_use+set} != xset; then
-    if test "${glibcxx_cv_func__expl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _expl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__expl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__expl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__expl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__expl_use" >&6
-
-    if test x$glibcxx_cv_func__expl_use = x"yes"; then
-
-for ac_func in _expl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fabsl declaration" >&5
-echo $ECHO_N "checking for fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fabsl_use" >&6
-
-  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
-
-for ac_func in fabsl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fabsl declaration" >&5
-echo $ECHO_N "checking for _fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fabsl_use" >&6
-
-    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
-
-for ac_func in _fabsl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fmodl declaration" >&5
-echo $ECHO_N "checking for fmodl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
-    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- fmodl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fmodl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fmodl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fmodl_use" >&6
-
-  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
-
-for ac_func in fmodl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fmodl declaration" >&5
-echo $ECHO_N "checking for _fmodl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
-    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _fmodl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fmodl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fmodl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fmodl_use" >&6
-
-    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
-
-for ac_func in _fmodl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for frexpl declaration" >&5
-echo $ECHO_N "checking for frexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- frexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_frexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_frexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_frexpl_use" >&6
-
-  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
-
-for ac_func in frexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _frexpl declaration" >&5
-echo $ECHO_N "checking for _frexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _frexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__frexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__frexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__frexpl_use" >&6
-
-    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
-
-for ac_func in _frexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypotl declaration" >&5
-echo $ECHO_N "checking for hypotl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypotl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypotl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypotl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypotl_use" >&6
-
-  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
-
-for ac_func in hypotl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypotl declaration" >&5
-echo $ECHO_N "checking for _hypotl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypotl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypotl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypotl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypotl_use" >&6
-
-    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
-
-for ac_func in _hypotl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for ldexpl declaration" >&5
-echo $ECHO_N "checking for ldexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- ldexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_ldexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_ldexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_ldexpl_use" >&6
-
-  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
-
-for ac_func in ldexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _ldexpl declaration" >&5
-echo $ECHO_N "checking for _ldexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _ldexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__ldexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__ldexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__ldexpl_use" >&6
-
-    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
-
-for ac_func in _ldexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for logl declaration" >&5
-echo $ECHO_N "checking for logl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_logl_use+set} != xset; then
-    if test "${glibcxx_cv_func_logl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- logl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_logl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_logl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_logl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_logl_use" >&6
-
-  if test x$glibcxx_cv_func_logl_use = x"yes"; then
-
-for ac_func in logl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _logl declaration" >&5
-echo $ECHO_N "checking for _logl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__logl_use+set} != xset; then
-    if test "${glibcxx_cv_func__logl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _logl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__logl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__logl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__logl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__logl_use" >&6
-
-    if test x$glibcxx_cv_func__logl_use = x"yes"; then
-
-for ac_func in _logl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for log10l declaration" >&5
-echo $ECHO_N "checking for log10l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
-    if test "${glibcxx_cv_func_log10l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- log10l(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_log10l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_log10l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_log10l_use" >&6
-
-  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
-
-for ac_func in log10l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _log10l declaration" >&5
-echo $ECHO_N "checking for _log10l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
-    if test "${glibcxx_cv_func__log10l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _log10l(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__log10l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__log10l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__log10l_use" >&6
-
-    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
-
-for ac_func in _log10l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modfl declaration" >&5
-echo $ECHO_N "checking for modfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
-    if test "${glibcxx_cv_func_modfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modfl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modfl_use" >&6
-
-  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
-
-for ac_func in modfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modfl declaration" >&5
-echo $ECHO_N "checking for _modfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
-    if test "${glibcxx_cv_func__modfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modfl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modfl_use" >&6
-
-    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
-
-for ac_func in _modfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for powl declaration" >&5
-echo $ECHO_N "checking for powl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_powl_use+set} != xset; then
-    if test "${glibcxx_cv_func_powl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- powl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_powl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_powl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_powl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_powl_use" >&6
-
-  if test x$glibcxx_cv_func_powl_use = x"yes"; then
-
-for ac_func in powl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _powl declaration" >&5
-echo $ECHO_N "checking for _powl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__powl_use+set} != xset; then
-    if test "${glibcxx_cv_func__powl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _powl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__powl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__powl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__powl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__powl_use" >&6
-
-    if test x$glibcxx_cv_func__powl_use = x"yes"; then
-
-for ac_func in _powl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sqrtl declaration" >&5
-echo $ECHO_N "checking for sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sqrtl_use" >&6
-
-  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
-
-for ac_func in sqrtl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sqrtl declaration" >&5
-echo $ECHO_N "checking for _sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sqrtl_use" >&6
-
-    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
-
-for ac_func in _sqrtl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincosl declaration" >&5
-echo $ECHO_N "checking for sincosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincosl(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincosl_use" >&6
-
-  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
-
-for ac_func in sincosl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincosl declaration" >&5
-echo $ECHO_N "checking for _sincosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincosl(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincosl_use" >&6
-
-    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
-
-for ac_func in _sincosl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finitel declaration" >&5
-echo $ECHO_N "checking for finitel declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
-    if test "${glibcxx_cv_func_finitel_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finitel(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finitel_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finitel_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitel_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finitel_use" >&6
-
-  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
-
-for ac_func in finitel
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finitel declaration" >&5
-echo $ECHO_N "checking for _finitel declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
-    if test "${glibcxx_cv_func__finitel_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finitel(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finitel_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finitel_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitel_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finitel_use" >&6
-
-    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
-
-for ac_func in _finitel
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-  LIBS="$ac_save_LIBS"
-  CXXFLAGS="$ac_save_CXXFLAGS"
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_abs declaration" >&5
-echo $ECHO_N "checking for __builtin_abs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_abs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_abs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_abs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_abs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_abs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_use" >&6
-  if test x$glibcxx_cv_func___builtin_abs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_abs linkage" >&5
-echo $ECHO_N "checking for __builtin_abs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_abs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_abs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_abs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_abs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_abs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_abs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_ABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabsf declaration" >&5
-echo $ECHO_N "checking for __builtin_fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabsf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabsf linkage" >&5
-echo $ECHO_N "checking for __builtin_fabsf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabsf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabsf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabsf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabs declaration" >&5
-echo $ECHO_N "checking for __builtin_fabs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabs linkage" >&5
-echo $ECHO_N "checking for __builtin_fabs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabsl declaration" >&5
-echo $ECHO_N "checking for __builtin_fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabsl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabsl linkage" >&5
-echo $ECHO_N "checking for __builtin_fabsl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabsl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabsl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabsl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_labs declaration" >&5
-echo $ECHO_N "checking for __builtin_labs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_labs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_labs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_labs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_labs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_labs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_use" >&6
-  if test x$glibcxx_cv_func___builtin_labs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_labs linkage" >&5
-echo $ECHO_N "checking for __builtin_labs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_labs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_labs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_labs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_labs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_labs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_labs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_LABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrtf declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrtf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrtf linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrtf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrtf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrtf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrtf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRTF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrt declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrt declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrt_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrt_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrt(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrt_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrt_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrt_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrt linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrt linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrt_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrt_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrt(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrt_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrt_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrt_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRT 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrtl declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrtl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrtl linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrtl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrtl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrtl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrtl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRTL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sinf declaration" >&5
-echo $ECHO_N "checking for __builtin_sinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sinf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_use" >&6
-  if test x$glibcxx_cv_func___builtin_sinf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sinf linkage" >&5
-echo $ECHO_N "checking for __builtin_sinf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sinf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sinf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sinf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SINF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sin declaration" >&5
-echo $ECHO_N "checking for __builtin_sin declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sin_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sin_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sin(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sin_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sin_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_use" >&6
-  if test x$glibcxx_cv_func___builtin_sin_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sin linkage" >&5
-echo $ECHO_N "checking for __builtin_sin linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sin_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sin_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sin(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sin_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sin_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sin_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SIN 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sinl declaration" >&5
-echo $ECHO_N "checking for __builtin_sinl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sinl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sinl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_use" >&6
-  if test x$glibcxx_cv_func___builtin_sinl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sinl linkage" >&5
-echo $ECHO_N "checking for __builtin_sinl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sinl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sinl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sinl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SINL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cosf declaration" >&5
-echo $ECHO_N "checking for __builtin_cosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cosf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_use" >&6
-  if test x$glibcxx_cv_func___builtin_cosf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cosf linkage" >&5
-echo $ECHO_N "checking for __builtin_cosf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cosf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cosf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cosf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COSF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cos declaration" >&5
-echo $ECHO_N "checking for __builtin_cos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cos_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cos(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_use" >&6
-  if test x$glibcxx_cv_func___builtin_cos_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cos linkage" >&5
-echo $ECHO_N "checking for __builtin_cos linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cos_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cos_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cos(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cos_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cos_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cos_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cosl declaration" >&5
-echo $ECHO_N "checking for __builtin_cosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cosl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_use" >&6
-  if test x$glibcxx_cv_func___builtin_cosl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cosl linkage" >&5
-echo $ECHO_N "checking for __builtin_cosl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cosl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cosl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cosl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COSL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-
-  ac_test_CXXFLAGS="${CXXFLAGS+set}"
-  ac_save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
-
-
-  echo "$as_me:$LINENO: checking for strtold declaration" >&5
-echo $ECHO_N "checking for strtold declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
-    if test "${glibcxx_cv_func_strtold_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- strtold(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_strtold_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_strtold_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtold_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_strtold_use" >&6
-  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
-
-for ac_func in strtold
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  fi
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for strtof declaration" >&5
-echo $ECHO_N "checking for strtof declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
-    if test "${glibcxx_cv_func_strtof_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- strtof(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_strtof_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_strtof_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtof_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_strtof_use" >&6
-  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
-
-for ac_func in strtof
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  fi
-
-
-
-
-
-  CXXFLAGS="$ac_save_CXXFLAGS"
-
-
-  # For showmanyc_helper().
-
-
-for ac_header in sys/ioctl.h sys/filio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for poll" >&5
-echo $ECHO_N "checking for poll... $ECHO_C" >&6
-  if test "${glibcxx_cv_POLL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct pollfd pfd[1];
-       pfd[0].events = POLLIN;
-       poll(pfd, 1, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_POLL=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_POLL=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_POLL = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_POLL 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_POLL" >&5
-echo "${ECHO_T}$glibcxx_cv_POLL" >&6
-
-
-  echo "$as_me:$LINENO: checking for S_ISREG or S_IFREG" >&5
-echo $ECHO_N "checking for S_ISREG or S_IFREG... $ECHO_C" >&6
-  if test "${glibcxx_cv_S_ISREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_ISREG(buffer.st_mode);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_ISREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_ISREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test "${glibcxx_cv_S_IFREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_IFREG & buffer.st_mode;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_IFREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_IFREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  res=no
-  if test $glibcxx_cv_S_ISREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_ISREG 1
-_ACEOF
-
-    res=S_ISREG
-  elif test $glibcxx_cv_S_IFREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_IFREG 1
-_ACEOF
-
-    res=S_IFREG
-  fi
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-  # For xsputn_2().
-
-for ac_header in sys/uio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for writev" >&5
-echo $ECHO_N "checking for writev... $ECHO_C" >&6
-  if test "${glibcxx_cv_WRITEV+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct iovec iov[2];
-       writev(0, iov, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_WRITEV=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_WRITEV=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_WRITEV = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WRITEV 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_WRITEV" >&5
-echo "${ECHO_T}$glibcxx_cv_WRITEV" >&6
-
-
-  # For the __streamoff_base_type typedef.
-
-  echo "$as_me:$LINENO: checking for int64_t" >&5
-echo $ECHO_N "checking for int64_t... $ECHO_C" >&6
-  if test "${glibcxx_cv_INT64_T+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-int64_t var;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_INT64_T=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_INT64_T=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_INT64_T = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_INT64_T 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_INT64_T" >&5
-echo "${ECHO_T}$glibcxx_cv_INT64_T" >&6
-
-
-  # For LFS support.
-
-
-
-  ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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"
-  echo "$as_me:$LINENO: checking for LFS support" >&5
-echo $ECHO_N "checking for LFS support... $ECHO_C" >&6
-  if test "${glibcxx_cv_LFS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-       #include 
-       #include 
-
-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
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_LFS=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_LFS=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_LFS = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_LFS 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_LFS" >&5
-echo "${ECHO_T}$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 TLS support.
-
-   # Check whether --enable-tls or --disable-tls was given.
-if test "${enable_tls+set}" = set; then
-  enableval="$enable_tls"
-
-      case "$enableval" in
-       yes|no) ;;
-       *) { { echo "$as_me:$LINENO: error: Argument to enable/disable tls must be yes or no" >&5
-echo "$as_me: error: Argument to enable/disable tls must be yes or no" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      esac
-
-else
-  enable_tls=yes
-fi;
-
-  echo "$as_me:$LINENO: checking whether the target supports thread-local storage" >&5
-echo $ECHO_N "checking whether the target supports thread-local storage... $ECHO_C" >&6
-if test "${have_tls+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test "$cross_compiling" = yes; then
-  cat >conftest.$ac_ext <<_ACEOF
-__thread int foo;
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  have_tls=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-have_tls=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-else
-  cat >conftest.$ac_ext <<_ACEOF
-__thread int a; int b; int main() { return a = b; }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-                    save_LDFLAGS="$LDFLAGS"
-      LDFLAGS="-static $LDFLAGS"
-      if test "$cross_compiling" = yes; then
-  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run test program while cross compiling
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-else
-  cat >conftest.$ac_ext <<_ACEOF
-__thread int a; int b; int main() { return a = b; }
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  have_tls=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-have_tls=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-      LDFLAGS="$save_LDFLAGS"
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-have_tls=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $have_tls" >&5
-echo "${ECHO_T}$have_tls" >&6
-  if test "$enable_tls $have_tls" = "yes yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_TLS 1
-_ACEOF
-
-  fi
-
-
-  if test "${ac_cv_header_locale_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for locale.h" >&5
-echo $ECHO_N "checking for locale.h... $ECHO_C" >&6
-if test "${ac_cv_header_locale_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_locale_h" >&5
-echo "${ECHO_T}$ac_cv_header_locale_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking locale.h usability" >&5
-echo $ECHO_N "checking locale.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking locale.h presence" >&5
-echo $ECHO_N "checking locale.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: locale.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: locale.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: locale.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: locale.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: locale.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: locale.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: locale.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: locale.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: locale.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: locale.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: locale.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for locale.h" >&5
-echo $ECHO_N "checking for locale.h... $ECHO_C" >&6
-if test "${ac_cv_header_locale_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_locale_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_locale_h" >&5
-echo "${ECHO_T}$ac_cv_header_locale_h" >&6
-
-fi
-if test $ac_cv_header_locale_h = yes; then
-
-    echo "$as_me:$LINENO: checking for LC_MESSAGES" >&5
-echo $ECHO_N "checking for LC_MESSAGES... $ECHO_C" >&6
-if test "${ac_cv_val_LC_MESSAGES+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-return LC_MESSAGES
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_val_LC_MESSAGES=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_val_LC_MESSAGES=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_val_LC_MESSAGES" >&5
-echo "${ECHO_T}$ac_cv_val_LC_MESSAGES" >&6
-    if test $ac_cv_val_LC_MESSAGES = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_LC_MESSAGES 1
-_ACEOF
-
-    fi
-
-fi
-
-
-
-
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-sigjmp_buf env;
-     while (! sigsetjmp (env, 1))
-       siglongjmp (env, 1);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SIGSETJMP 1
-_ACEOF
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-  if test x$gcc_no_link = xyes; then
-  if test "x${ac_cv_func_mmap_fixed_mapped+set}" != xset; then
-    ac_cv_func_mmap_fixed_mapped=no
-  fi
-fi
-if test "x${ac_cv_func_mmap_fixed_mapped}" != xno; then
-
-
-for ac_header in stdlib.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_func in getpagesize
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-echo "$as_me:$LINENO: checking for working mmap" >&5
-echo $ECHO_N "checking for working mmap... $ECHO_C" >&6
-if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_mmap_fixed_mapped=no
-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
-/* malloc might have been renamed as rpl_malloc. */
-#undef malloc
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
-   Here is a matrix of mmap possibilities:
-	mmap private not fixed
-	mmap private fixed at somewhere currently unmapped
-	mmap private fixed at somewhere already mapped
-	mmap shared not fixed
-	mmap shared fixed at somewhere currently unmapped
-	mmap shared fixed at somewhere already mapped
-   For private mappings, we should verify that changes cannot be read()
-   back from the file, nor mmap's back from the file at a different
-   address.  (There have been systems where private was not correctly
-   implemented like the infamous i386 svr4.0, and systems where the
-   VM page cache was not coherent with the file system buffer cache
-   like early versions of FreeBSD and possibly contemporary NetBSD.)
-   For shared mappings, we should conversely verify that changes get
-   propagated back to all the places they're supposed to be.
-
-   Grep wants private fixed already mapped.
-   The main things grep needs to know about mmap are:
-   * does it exist and is it safe to write into the mmap'd area
-   * how to use it (BSD variants)  */
-
-#include 
-#include 
-
-#if !STDC_HEADERS && !HAVE_STDLIB_H
-char *malloc ();
-#endif
-
-/* This mess was copied from the GNU getpagesize.h.  */
-#if !HAVE_GETPAGESIZE
-/* Assume that all systems that can run configure have sys/param.h.  */
-# if !HAVE_SYS_PARAM_H
-#  define HAVE_SYS_PARAM_H 1
-# endif
-
-# ifdef _SC_PAGESIZE
-#  define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-#  if HAVE_SYS_PARAM_H
-#   include 
-#   ifdef EXEC_PAGESIZE
-#    define getpagesize() EXEC_PAGESIZE
-#   else /* no EXEC_PAGESIZE */
-#    ifdef NBPG
-#     define getpagesize() NBPG * CLSIZE
-#     ifndef CLSIZE
-#      define CLSIZE 1
-#     endif /* no CLSIZE */
-#    else /* no NBPG */
-#     ifdef NBPC
-#      define getpagesize() NBPC
-#     else /* no NBPC */
-#      ifdef PAGESIZE
-#       define getpagesize() PAGESIZE
-#      endif /* PAGESIZE */
-#     endif /* no NBPC */
-#    endif /* no NBPG */
-#   endif /* no EXEC_PAGESIZE */
-#  else /* no HAVE_SYS_PARAM_H */
-#   define getpagesize() 8192	/* punt totally */
-#  endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
-int
-main ()
-{
-  char *data, *data2, *data3;
-  int i, pagesize;
-  int fd;
-
-  pagesize = getpagesize ();
-
-  /* First, make a file with some known garbage in it. */
-  data = (char *) malloc (pagesize);
-  if (!data)
-    exit (1);
-  for (i = 0; i < pagesize; ++i)
-    *(data + i) = rand ();
-  umask (0);
-  fd = creat ("conftest.mmap", 0600);
-  if (fd < 0)
-    exit (1);
-  if (write (fd, data, pagesize) != pagesize)
-    exit (1);
-  close (fd);
-
-  /* Next, try to mmap the file at a fixed address which already has
-     something else allocated at it.  If we can, also make sure that
-     we see the same garbage.  */
-  fd = open ("conftest.mmap", O_RDWR);
-  if (fd < 0)
-    exit (1);
-  data2 = (char *) malloc (2 * pagesize);
-  if (!data2)
-    exit (1);
-  data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1);
-  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
-		     MAP_PRIVATE | MAP_FIXED, fd, 0L))
-    exit (1);
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data2 + i))
-      exit (1);
-
-  /* Finally, make sure that changes to the mapped area do not
-     percolate back to the file as seen by read().  (This is a bug on
-     some variants of i386 svr4.0.)  */
-  for (i = 0; i < pagesize; ++i)
-    *(data2 + i) = *(data2 + i) + 1;
-  data3 = (char *) malloc (pagesize);
-  if (!data3)
-    exit (1);
-  if (read (fd, data3, pagesize) != pagesize)
-    exit (1);
-  for (i = 0; i < pagesize; ++i)
-    if (*(data + i) != *(data3 + i))
-      exit (1);
-  close (fd);
-  exit (0);
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_mmap_fixed_mapped=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
-echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-fi
-rm -f conftest.mmap
-
-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_COMPILER_FEATURES
-  # GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
-  # 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"
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOT 1
-_ACEOF
-
-
-    # GLIBCXX_CHECK_STDLIB_SUPPORT
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_STRTOF 1
-_ACEOF
-
-    # AC_FUNC_MMAP
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LDEXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHF 1
-_ACEOF
-
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_ISREG 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_IFREG 1
-_ACEOF
-
-  else
-
-# Base decisions on target environment.
-case "${host}" in
-  arm*-*-symbianelf*)
-    # This is a freestanding configuration; there is nothing to do here.
-    ;;
-
-  *-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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
-    machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
-    sys/types.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-  # 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=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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
-  echo "$as_me:$LINENO: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
-echo $ECHO_N "checking for g++ that supports -ffunction-sections -fdata-sections... $ECHO_C" >&6
-  CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-int foo;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_fdsections=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_fdsections=no
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $ac_fdsections" >&5
-echo "${ECHO_T}$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
-
-
-
-
-    # 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'
-
-    echo "$as_me:$LINENO: checking for sin in -lm" >&5
-echo $ECHO_N "checking for sin in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_sin+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char sin ();
-int
-main ()
-{
-sin ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_sin=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_sin=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_sin" >&5
-echo "${ECHO_T}$ac_cv_lib_m_sin" >&6
-if test $ac_cv_lib_m_sin = yes; then
-  libm="-lm"
-fi
-
-  ac_save_LIBS="$LIBS"
-  LIBS="$LIBS $libm"
-
-
-
-  echo "$as_me:$LINENO: checking for isinf declaration" >&5
-echo $ECHO_N "checking for isinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinf_use" >&6
-
-  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
-
-for ac_func in isinf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinf declaration" >&5
-echo $ECHO_N "checking for _isinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinf_use" >&6
-
-    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
-
-for ac_func in _isinf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnan declaration" >&5
-echo $ECHO_N "checking for isnan declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnan_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnan(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnan_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnan_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnan_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnan_use" >&6
-
-  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
-
-for ac_func in isnan
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnan declaration" >&5
-echo $ECHO_N "checking for _isnan declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnan_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnan(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnan_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnan_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnan_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnan_use" >&6
-
-    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
-
-for ac_func in _isnan
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finite declaration" >&5
-echo $ECHO_N "checking for finite declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finite_use+set} != xset; then
-    if test "${glibcxx_cv_func_finite_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finite(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finite_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finite_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finite_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finite_use" >&6
-
-  if test x$glibcxx_cv_func_finite_use = x"yes"; then
-
-for ac_func in finite
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finite declaration" >&5
-echo $ECHO_N "checking for _finite declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finite_use+set} != xset; then
-    if test "${glibcxx_cv_func__finite_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finite(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finite_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finite_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finite_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finite_use" >&6
-
-    if test x$glibcxx_cv_func__finite_use = x"yes"; then
-
-for ac_func in _finite
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for copysign declaration" >&5
-echo $ECHO_N "checking for copysign declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_copysign_use+set} != xset; then
-    if test "${glibcxx_cv_func_copysign_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- copysign(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_copysign_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_copysign_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysign_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_copysign_use" >&6
-
-  if test x$glibcxx_cv_func_copysign_use = x"yes"; then
-
-for ac_func in copysign
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _copysign declaration" >&5
-echo $ECHO_N "checking for _copysign declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__copysign_use+set} != xset; then
-    if test "${glibcxx_cv_func__copysign_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _copysign(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__copysign_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__copysign_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysign_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__copysign_use" >&6
-
-    if test x$glibcxx_cv_func__copysign_use = x"yes"; then
-
-for ac_func in _copysign
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincos declaration" >&5
-echo $ECHO_N "checking for sincos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincos(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincos_use" >&6
-
-  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
-
-for ac_func in sincos
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincos declaration" >&5
-echo $ECHO_N "checking for _sincos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincos(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincos_use" >&6
-
-    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
-
-for ac_func in _sincos
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fpclass declaration" >&5
-echo $ECHO_N "checking for fpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fpclass_use" >&6
-
-  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
-
-for ac_func in fpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fpclass declaration" >&5
-echo $ECHO_N "checking for _fpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fpclass_use" >&6
-
-    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
-
-for ac_func in _fpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for qfpclass declaration" >&5
-echo $ECHO_N "checking for qfpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- qfpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_qfpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_qfpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_qfpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_qfpclass_use" >&6
-
-  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
-
-for ac_func in qfpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _qfpclass declaration" >&5
-echo $ECHO_N "checking for _qfpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _qfpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__qfpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__qfpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__qfpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__qfpclass_use" >&6
-
-    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
-
-for ac_func in _qfpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypot declaration" >&5
-echo $ECHO_N "checking for hypot declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypot_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypot(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypot_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypot_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypot_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypot_use" >&6
-
-  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
-
-for ac_func in hypot
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypot declaration" >&5
-echo $ECHO_N "checking for _hypot declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypot_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypot(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypot_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypot_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypot_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypot_use" >&6
-
-    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
-
-for ac_func in _hypot
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for float trig functions" >&5
-echo $ECHO_N "checking for float trig functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_float_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_float_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _float trig functions" >&5
-echo $ECHO_N "checking for _float trig functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__float_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__float_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for float round functions" >&5
-echo $ECHO_N "checking for float round functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_float_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-ceilf (0); floorf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_float_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_float_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _float round functions" >&5
-echo $ECHO_N "checking for _float round functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__float_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_ceilf (0); _floorf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__float_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__float_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for expf declaration" >&5
-echo $ECHO_N "checking for expf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_expf_use+set} != xset; then
-    if test "${glibcxx_cv_func_expf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- expf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_expf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_expf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_expf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_expf_use" >&6
-
-  if test x$glibcxx_cv_func_expf_use = x"yes"; then
-
-for ac_func in expf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _expf declaration" >&5
-echo $ECHO_N "checking for _expf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__expf_use+set} != xset; then
-    if test "${glibcxx_cv_func__expf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _expf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__expf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__expf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__expf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__expf_use" >&6
-
-    if test x$glibcxx_cv_func__expf_use = x"yes"; then
-
-for ac_func in _expf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnanf declaration" >&5
-echo $ECHO_N "checking for isnanf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnanf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnanf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnanf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnanf_use" >&6
-
-  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
-
-for ac_func in isnanf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnanf declaration" >&5
-echo $ECHO_N "checking for _isnanf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnanf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnanf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnanf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnanf_use" >&6
-
-    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
-
-for ac_func in _isnanf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isinff declaration" >&5
-echo $ECHO_N "checking for isinff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinff(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinff_use" >&6
-
-  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
-
-for ac_func in isinff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinff declaration" >&5
-echo $ECHO_N "checking for _isinff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinff(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinff_use" >&6
-
-    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
-
-for ac_func in _isinff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for atan2f declaration" >&5
-echo $ECHO_N "checking for atan2f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
-    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- atan2f(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_atan2f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_atan2f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_atan2f_use" >&6
-
-  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
-
-for ac_func in atan2f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _atan2f declaration" >&5
-echo $ECHO_N "checking for _atan2f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
-    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _atan2f(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__atan2f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__atan2f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__atan2f_use" >&6
-
-    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
-
-for ac_func in _atan2f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fabsf declaration" >&5
-echo $ECHO_N "checking for fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fabsf_use" >&6
-
-  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
-
-for ac_func in fabsf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fabsf declaration" >&5
-echo $ECHO_N "checking for _fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fabsf_use" >&6
-
-    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
-
-for ac_func in _fabsf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fmodf declaration" >&5
-echo $ECHO_N "checking for fmodf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
-    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- fmodf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fmodf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fmodf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fmodf_use" >&6
-
-  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
-
-for ac_func in fmodf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fmodf declaration" >&5
-echo $ECHO_N "checking for _fmodf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
-    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _fmodf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fmodf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fmodf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fmodf_use" >&6
-
-    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
-
-for ac_func in _fmodf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for frexpf declaration" >&5
-echo $ECHO_N "checking for frexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- frexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_frexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_frexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_frexpf_use" >&6
-
-  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
-
-for ac_func in frexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _frexpf declaration" >&5
-echo $ECHO_N "checking for _frexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _frexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__frexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__frexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__frexpf_use" >&6
-
-    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
-
-for ac_func in _frexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypotf declaration" >&5
-echo $ECHO_N "checking for hypotf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypotf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypotf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypotf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypotf_use" >&6
-
-  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
-
-for ac_func in hypotf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypotf declaration" >&5
-echo $ECHO_N "checking for _hypotf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypotf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypotf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypotf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypotf_use" >&6
-
-    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
-
-for ac_func in _hypotf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for ldexpf declaration" >&5
-echo $ECHO_N "checking for ldexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- ldexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_ldexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_ldexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_ldexpf_use" >&6
-
-  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
-
-for ac_func in ldexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _ldexpf declaration" >&5
-echo $ECHO_N "checking for _ldexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _ldexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__ldexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__ldexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__ldexpf_use" >&6
-
-    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
-
-for ac_func in _ldexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for logf declaration" >&5
-echo $ECHO_N "checking for logf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_logf_use+set} != xset; then
-    if test "${glibcxx_cv_func_logf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- logf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_logf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_logf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_logf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_logf_use" >&6
-
-  if test x$glibcxx_cv_func_logf_use = x"yes"; then
-
-for ac_func in logf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _logf declaration" >&5
-echo $ECHO_N "checking for _logf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__logf_use+set} != xset; then
-    if test "${glibcxx_cv_func__logf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _logf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__logf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__logf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__logf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__logf_use" >&6
-
-    if test x$glibcxx_cv_func__logf_use = x"yes"; then
-
-for ac_func in _logf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for log10f declaration" >&5
-echo $ECHO_N "checking for log10f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
-    if test "${glibcxx_cv_func_log10f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- log10f(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_log10f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_log10f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_log10f_use" >&6
-
-  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
-
-for ac_func in log10f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _log10f declaration" >&5
-echo $ECHO_N "checking for _log10f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
-    if test "${glibcxx_cv_func__log10f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _log10f(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__log10f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__log10f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__log10f_use" >&6
-
-    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
-
-for ac_func in _log10f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modff declaration" >&5
-echo $ECHO_N "checking for modff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modff_use+set} != xset; then
-    if test "${glibcxx_cv_func_modff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modff(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modff_use" >&6
-
-  if test x$glibcxx_cv_func_modff_use = x"yes"; then
-
-for ac_func in modff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modff declaration" >&5
-echo $ECHO_N "checking for _modff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modff_use+set} != xset; then
-    if test "${glibcxx_cv_func__modff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modff(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modff_use" >&6
-
-    if test x$glibcxx_cv_func__modff_use = x"yes"; then
-
-for ac_func in _modff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modf declaration" >&5
-echo $ECHO_N "checking for modf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modf_use+set} != xset; then
-    if test "${glibcxx_cv_func_modf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modf_use" >&6
-
-  if test x$glibcxx_cv_func_modf_use = x"yes"; then
-
-for ac_func in modf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modf declaration" >&5
-echo $ECHO_N "checking for _modf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modf_use+set} != xset; then
-    if test "${glibcxx_cv_func__modf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modf_use" >&6
-
-    if test x$glibcxx_cv_func__modf_use = x"yes"; then
-
-for ac_func in _modf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for powf declaration" >&5
-echo $ECHO_N "checking for powf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_powf_use+set} != xset; then
-    if test "${glibcxx_cv_func_powf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- powf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_powf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_powf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_powf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_powf_use" >&6
-
-  if test x$glibcxx_cv_func_powf_use = x"yes"; then
-
-for ac_func in powf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _powf declaration" >&5
-echo $ECHO_N "checking for _powf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__powf_use+set} != xset; then
-    if test "${glibcxx_cv_func__powf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _powf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__powf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__powf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__powf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__powf_use" >&6
-
-    if test x$glibcxx_cv_func__powf_use = x"yes"; then
-
-for ac_func in _powf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sqrtf declaration" >&5
-echo $ECHO_N "checking for sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sqrtf_use" >&6
-
-  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
-
-for ac_func in sqrtf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sqrtf declaration" >&5
-echo $ECHO_N "checking for _sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sqrtf_use" >&6
-
-    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
-
-for ac_func in _sqrtf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincosf declaration" >&5
-echo $ECHO_N "checking for sincosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincosf(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincosf_use" >&6
-
-  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
-
-for ac_func in sincosf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincosf declaration" >&5
-echo $ECHO_N "checking for _sincosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincosf(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincosf_use" >&6
-
-    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
-
-for ac_func in _sincosf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finitef declaration" >&5
-echo $ECHO_N "checking for finitef declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
-    if test "${glibcxx_cv_func_finitef_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finitef(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finitef_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finitef_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitef_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finitef_use" >&6
-
-  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
-
-for ac_func in finitef
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finitef declaration" >&5
-echo $ECHO_N "checking for _finitef declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
-    if test "${glibcxx_cv_func__finitef_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finitef(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finitef_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finitef_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitef_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finitef_use" >&6
-
-    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
-
-for ac_func in _finitef
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for long double trig functions" >&5
-echo $ECHO_N "checking for long double trig functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_long_double_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_long_double_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _long double trig functions" >&5
-echo $ECHO_N "checking for _long double trig functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__long_double_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__long_double_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for long double round functions" >&5
-echo $ECHO_N "checking for long double round functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-ceill (0); floorl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_long_double_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_long_double_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _long double round functions" >&5
-echo $ECHO_N "checking for _long double round functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_ceill (0); _floorl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__long_double_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__long_double_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnanl declaration" >&5
-echo $ECHO_N "checking for isnanl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnanl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnanl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnanl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnanl_use" >&6
-
-  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
-
-for ac_func in isnanl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnanl declaration" >&5
-echo $ECHO_N "checking for _isnanl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnanl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnanl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnanl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnanl_use" >&6
-
-    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
-
-for ac_func in _isnanl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isinfl declaration" >&5
-echo $ECHO_N "checking for isinfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinfl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinfl_use" >&6
-
-  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
-
-for ac_func in isinfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinfl declaration" >&5
-echo $ECHO_N "checking for _isinfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinfl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinfl_use" >&6
-
-    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
-
-for ac_func in _isinfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for copysignl declaration" >&5
-echo $ECHO_N "checking for copysignl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_copysignl_use+set} != xset; then
-    if test "${glibcxx_cv_func_copysignl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- copysignl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_copysignl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_copysignl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysignl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_copysignl_use" >&6
-
-  if test x$glibcxx_cv_func_copysignl_use = x"yes"; then
-
-for ac_func in copysignl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _copysignl declaration" >&5
-echo $ECHO_N "checking for _copysignl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__copysignl_use+set} != xset; then
-    if test "${glibcxx_cv_func__copysignl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _copysignl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__copysignl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__copysignl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysignl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__copysignl_use" >&6
-
-    if test x$glibcxx_cv_func__copysignl_use = x"yes"; then
-
-for ac_func in _copysignl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for atan2l declaration" >&5
-echo $ECHO_N "checking for atan2l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
-    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- atan2l(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_atan2l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_atan2l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_atan2l_use" >&6
-
-  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
-
-for ac_func in atan2l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _atan2l declaration" >&5
-echo $ECHO_N "checking for _atan2l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
-    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _atan2l(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__atan2l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__atan2l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__atan2l_use" >&6
-
-    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
-
-for ac_func in _atan2l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for expl declaration" >&5
-echo $ECHO_N "checking for expl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_expl_use+set} != xset; then
-    if test "${glibcxx_cv_func_expl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- expl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_expl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_expl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_expl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_expl_use" >&6
-
-  if test x$glibcxx_cv_func_expl_use = x"yes"; then
-
-for ac_func in expl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _expl declaration" >&5
-echo $ECHO_N "checking for _expl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__expl_use+set} != xset; then
-    if test "${glibcxx_cv_func__expl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _expl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__expl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__expl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__expl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__expl_use" >&6
-
-    if test x$glibcxx_cv_func__expl_use = x"yes"; then
-
-for ac_func in _expl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fabsl declaration" >&5
-echo $ECHO_N "checking for fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fabsl_use" >&6
-
-  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
-
-for ac_func in fabsl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fabsl declaration" >&5
-echo $ECHO_N "checking for _fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fabsl_use" >&6
-
-    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
-
-for ac_func in _fabsl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fmodl declaration" >&5
-echo $ECHO_N "checking for fmodl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
-    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- fmodl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fmodl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fmodl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fmodl_use" >&6
-
-  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
-
-for ac_func in fmodl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fmodl declaration" >&5
-echo $ECHO_N "checking for _fmodl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
-    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _fmodl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fmodl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fmodl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fmodl_use" >&6
-
-    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
-
-for ac_func in _fmodl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for frexpl declaration" >&5
-echo $ECHO_N "checking for frexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- frexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_frexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_frexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_frexpl_use" >&6
-
-  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
-
-for ac_func in frexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _frexpl declaration" >&5
-echo $ECHO_N "checking for _frexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _frexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__frexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__frexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__frexpl_use" >&6
-
-    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
-
-for ac_func in _frexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypotl declaration" >&5
-echo $ECHO_N "checking for hypotl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypotl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypotl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypotl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypotl_use" >&6
-
-  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
-
-for ac_func in hypotl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypotl declaration" >&5
-echo $ECHO_N "checking for _hypotl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypotl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypotl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypotl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypotl_use" >&6
-
-    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
-
-for ac_func in _hypotl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for ldexpl declaration" >&5
-echo $ECHO_N "checking for ldexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- ldexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_ldexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_ldexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_ldexpl_use" >&6
-
-  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
-
-for ac_func in ldexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _ldexpl declaration" >&5
-echo $ECHO_N "checking for _ldexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _ldexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__ldexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__ldexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__ldexpl_use" >&6
-
-    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
-
-for ac_func in _ldexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for logl declaration" >&5
-echo $ECHO_N "checking for logl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_logl_use+set} != xset; then
-    if test "${glibcxx_cv_func_logl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- logl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_logl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_logl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_logl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_logl_use" >&6
-
-  if test x$glibcxx_cv_func_logl_use = x"yes"; then
-
-for ac_func in logl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _logl declaration" >&5
-echo $ECHO_N "checking for _logl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__logl_use+set} != xset; then
-    if test "${glibcxx_cv_func__logl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _logl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__logl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__logl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__logl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__logl_use" >&6
-
-    if test x$glibcxx_cv_func__logl_use = x"yes"; then
-
-for ac_func in _logl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for log10l declaration" >&5
-echo $ECHO_N "checking for log10l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
-    if test "${glibcxx_cv_func_log10l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- log10l(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_log10l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_log10l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_log10l_use" >&6
-
-  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
-
-for ac_func in log10l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _log10l declaration" >&5
-echo $ECHO_N "checking for _log10l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
-    if test "${glibcxx_cv_func__log10l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _log10l(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__log10l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__log10l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__log10l_use" >&6
-
-    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
-
-for ac_func in _log10l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modfl declaration" >&5
-echo $ECHO_N "checking for modfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
-    if test "${glibcxx_cv_func_modfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modfl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modfl_use" >&6
-
-  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
-
-for ac_func in modfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modfl declaration" >&5
-echo $ECHO_N "checking for _modfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
-    if test "${glibcxx_cv_func__modfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modfl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modfl_use" >&6
-
-    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
-
-for ac_func in _modfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for powl declaration" >&5
-echo $ECHO_N "checking for powl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_powl_use+set} != xset; then
-    if test "${glibcxx_cv_func_powl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- powl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_powl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_powl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_powl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_powl_use" >&6
-
-  if test x$glibcxx_cv_func_powl_use = x"yes"; then
-
-for ac_func in powl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _powl declaration" >&5
-echo $ECHO_N "checking for _powl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__powl_use+set} != xset; then
-    if test "${glibcxx_cv_func__powl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _powl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__powl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__powl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__powl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__powl_use" >&6
-
-    if test x$glibcxx_cv_func__powl_use = x"yes"; then
-
-for ac_func in _powl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sqrtl declaration" >&5
-echo $ECHO_N "checking for sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sqrtl_use" >&6
-
-  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
-
-for ac_func in sqrtl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sqrtl declaration" >&5
-echo $ECHO_N "checking for _sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sqrtl_use" >&6
-
-    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
-
-for ac_func in _sqrtl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincosl declaration" >&5
-echo $ECHO_N "checking for sincosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincosl(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincosl_use" >&6
-
-  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
-
-for ac_func in sincosl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincosl declaration" >&5
-echo $ECHO_N "checking for _sincosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincosl(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincosl_use" >&6
-
-    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
-
-for ac_func in _sincosl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finitel declaration" >&5
-echo $ECHO_N "checking for finitel declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
-    if test "${glibcxx_cv_func_finitel_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finitel(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finitel_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finitel_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitel_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finitel_use" >&6
-
-  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
-
-for ac_func in finitel
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finitel declaration" >&5
-echo $ECHO_N "checking for _finitel declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
-    if test "${glibcxx_cv_func__finitel_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finitel(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finitel_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finitel_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitel_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finitel_use" >&6
-
-    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
-
-for ac_func in _finitel
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-  LIBS="$ac_save_LIBS"
-  CXXFLAGS="$ac_save_CXXFLAGS"
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_abs declaration" >&5
-echo $ECHO_N "checking for __builtin_abs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_abs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_abs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_abs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_abs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_abs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_use" >&6
-  if test x$glibcxx_cv_func___builtin_abs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_abs linkage" >&5
-echo $ECHO_N "checking for __builtin_abs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_abs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_abs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_abs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_abs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_abs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_abs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_ABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabsf declaration" >&5
-echo $ECHO_N "checking for __builtin_fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabsf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabsf linkage" >&5
-echo $ECHO_N "checking for __builtin_fabsf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabsf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabsf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabsf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabs declaration" >&5
-echo $ECHO_N "checking for __builtin_fabs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabs linkage" >&5
-echo $ECHO_N "checking for __builtin_fabs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabsl declaration" >&5
-echo $ECHO_N "checking for __builtin_fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabsl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabsl linkage" >&5
-echo $ECHO_N "checking for __builtin_fabsl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabsl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabsl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabsl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_labs declaration" >&5
-echo $ECHO_N "checking for __builtin_labs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_labs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_labs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_labs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_labs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_labs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_use" >&6
-  if test x$glibcxx_cv_func___builtin_labs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_labs linkage" >&5
-echo $ECHO_N "checking for __builtin_labs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_labs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_labs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_labs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_labs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_labs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_labs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_LABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrtf declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrtf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrtf linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrtf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrtf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrtf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrtf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRTF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrt declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrt declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrt_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrt_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrt(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrt_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrt_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrt_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrt linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrt linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrt_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrt_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrt(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrt_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrt_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrt_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRT 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrtl declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrtl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrtl linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrtl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrtl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrtl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrtl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRTL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sinf declaration" >&5
-echo $ECHO_N "checking for __builtin_sinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sinf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_use" >&6
-  if test x$glibcxx_cv_func___builtin_sinf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sinf linkage" >&5
-echo $ECHO_N "checking for __builtin_sinf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sinf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sinf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sinf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SINF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sin declaration" >&5
-echo $ECHO_N "checking for __builtin_sin declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sin_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sin_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sin(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sin_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sin_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_use" >&6
-  if test x$glibcxx_cv_func___builtin_sin_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sin linkage" >&5
-echo $ECHO_N "checking for __builtin_sin linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sin_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sin_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sin(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sin_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sin_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sin_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SIN 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sinl declaration" >&5
-echo $ECHO_N "checking for __builtin_sinl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sinl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sinl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_use" >&6
-  if test x$glibcxx_cv_func___builtin_sinl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sinl linkage" >&5
-echo $ECHO_N "checking for __builtin_sinl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sinl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sinl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sinl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SINL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cosf declaration" >&5
-echo $ECHO_N "checking for __builtin_cosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cosf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_use" >&6
-  if test x$glibcxx_cv_func___builtin_cosf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cosf linkage" >&5
-echo $ECHO_N "checking for __builtin_cosf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cosf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cosf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cosf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COSF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cos declaration" >&5
-echo $ECHO_N "checking for __builtin_cos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cos_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cos(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_use" >&6
-  if test x$glibcxx_cv_func___builtin_cos_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cos linkage" >&5
-echo $ECHO_N "checking for __builtin_cos linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cos_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cos_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cos(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cos_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cos_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cos_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cosl declaration" >&5
-echo $ECHO_N "checking for __builtin_cosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cosl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_use" >&6
-  if test x$glibcxx_cv_func___builtin_cosl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cosl linkage" >&5
-echo $ECHO_N "checking for __builtin_cosl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cosl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cosl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cosl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COSL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-
-  ac_test_CXXFLAGS="${CXXFLAGS+set}"
-  ac_save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
-
-
-  echo "$as_me:$LINENO: checking for strtold declaration" >&5
-echo $ECHO_N "checking for strtold declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
-    if test "${glibcxx_cv_func_strtold_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- strtold(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_strtold_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_strtold_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtold_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_strtold_use" >&6
-  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
-
-for ac_func in strtold
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  fi
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for strtof declaration" >&5
-echo $ECHO_N "checking for strtof declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
-    if test "${glibcxx_cv_func_strtof_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- strtof(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_strtof_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_strtof_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtof_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_strtof_use" >&6
-  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
-
-for ac_func in strtof
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  fi
-
-
-
-
-
-  CXXFLAGS="$ac_save_CXXFLAGS"
-
-
-    # For showmanyc_helper().
-
-
-for ac_header in sys/ioctl.h sys/filio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for poll" >&5
-echo $ECHO_N "checking for poll... $ECHO_C" >&6
-  if test "${glibcxx_cv_POLL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct pollfd pfd[1];
-       pfd[0].events = POLLIN;
-       poll(pfd, 1, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_POLL=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_POLL=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_POLL = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_POLL 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_POLL" >&5
-echo "${ECHO_T}$glibcxx_cv_POLL" >&6
-
-
-  echo "$as_me:$LINENO: checking for S_ISREG or S_IFREG" >&5
-echo $ECHO_N "checking for S_ISREG or S_IFREG... $ECHO_C" >&6
-  if test "${glibcxx_cv_S_ISREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_ISREG(buffer.st_mode);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_ISREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_ISREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test "${glibcxx_cv_S_IFREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_IFREG & buffer.st_mode;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_IFREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_IFREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  res=no
-  if test $glibcxx_cv_S_ISREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_ISREG 1
-_ACEOF
-
-    res=S_ISREG
-  elif test $glibcxx_cv_S_IFREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_IFREG 1
-_ACEOF
-
-    res=S_IFREG
-  fi
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-    # For xsputn_2().
-
-for ac_header in sys/uio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for writev" >&5
-echo $ECHO_N "checking for writev... $ECHO_C" >&6
-  if test "${glibcxx_cv_WRITEV+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct iovec iov[2];
-       writev(0, iov, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_WRITEV=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_WRITEV=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_WRITEV = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WRITEV 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_WRITEV" >&5
-echo "${ECHO_T}$glibcxx_cv_WRITEV" >&6
-
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LC_MESSAGES 1
-_ACEOF
-
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-sigjmp_buf env;
-       while (! sigsetjmp (env, 1))
-         siglongjmp (env, 1);
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_SIGSETJMP 1
-_ACEOF
-
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-    ;;
-
-  *djgpp)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in float.h ieeefp.h inttypes.h locale.h \
-      memory.h stdint.h stdlib.h strings.h string.h unistd.h \
-      wchar.h wctype.h machine/endian.h sys/ioctl.h sys/param.h \
-      sys/resource.h sys/stat.h sys/time.h sys/types.h sys/uio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  # 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=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&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
-  echo "$as_me:$LINENO: checking for g++ that supports -ffunction-sections -fdata-sections" >&5
-echo $ECHO_N "checking for g++ that supports -ffunction-sections -fdata-sections... $ECHO_C" >&6
-  CXXFLAGS='-Werror -ffunction-sections -fdata-sections'
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-int foo;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_fdsections=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_fdsections=no
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $ac_fdsections" >&5
-echo "${ECHO_T}$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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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'
-
-    echo "$as_me:$LINENO: checking for sin in -lm" >&5
-echo $ECHO_N "checking for sin in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_sin+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char sin ();
-int
-main ()
-{
-sin ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_sin=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_sin=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_sin" >&5
-echo "${ECHO_T}$ac_cv_lib_m_sin" >&6
-if test $ac_cv_lib_m_sin = yes; then
-  libm="-lm"
-fi
-
-  ac_save_LIBS="$LIBS"
-  LIBS="$LIBS $libm"
-
-
-
-  echo "$as_me:$LINENO: checking for isinf declaration" >&5
-echo $ECHO_N "checking for isinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinf_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinf_use" >&6
-
-  if test x$glibcxx_cv_func_isinf_use = x"yes"; then
-
-for ac_func in isinf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinf declaration" >&5
-echo $ECHO_N "checking for _isinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinf_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinf_use" >&6
-
-    if test x$glibcxx_cv_func__isinf_use = x"yes"; then
-
-for ac_func in _isinf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnan declaration" >&5
-echo $ECHO_N "checking for isnan declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnan_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnan_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnan(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnan_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnan_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnan_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnan_use" >&6
-
-  if test x$glibcxx_cv_func_isnan_use = x"yes"; then
-
-for ac_func in isnan
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnan declaration" >&5
-echo $ECHO_N "checking for _isnan declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnan_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnan_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnan(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnan_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnan_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnan_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnan_use" >&6
-
-    if test x$glibcxx_cv_func__isnan_use = x"yes"; then
-
-for ac_func in _isnan
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finite declaration" >&5
-echo $ECHO_N "checking for finite declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finite_use+set} != xset; then
-    if test "${glibcxx_cv_func_finite_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finite(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finite_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finite_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finite_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finite_use" >&6
-
-  if test x$glibcxx_cv_func_finite_use = x"yes"; then
-
-for ac_func in finite
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finite declaration" >&5
-echo $ECHO_N "checking for _finite declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finite_use+set} != xset; then
-    if test "${glibcxx_cv_func__finite_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finite(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finite_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finite_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finite_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finite_use" >&6
-
-    if test x$glibcxx_cv_func__finite_use = x"yes"; then
-
-for ac_func in _finite
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for copysign declaration" >&5
-echo $ECHO_N "checking for copysign declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_copysign_use+set} != xset; then
-    if test "${glibcxx_cv_func_copysign_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- copysign(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_copysign_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_copysign_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysign_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_copysign_use" >&6
-
-  if test x$glibcxx_cv_func_copysign_use = x"yes"; then
-
-for ac_func in copysign
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _copysign declaration" >&5
-echo $ECHO_N "checking for _copysign declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__copysign_use+set} != xset; then
-    if test "${glibcxx_cv_func__copysign_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _copysign(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__copysign_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__copysign_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysign_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__copysign_use" >&6
-
-    if test x$glibcxx_cv_func__copysign_use = x"yes"; then
-
-for ac_func in _copysign
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincos declaration" >&5
-echo $ECHO_N "checking for sincos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincos_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincos(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincos_use" >&6
-
-  if test x$glibcxx_cv_func_sincos_use = x"yes"; then
-
-for ac_func in sincos
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincos declaration" >&5
-echo $ECHO_N "checking for _sincos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincos_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincos(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincos_use" >&6
-
-    if test x$glibcxx_cv_func__sincos_use = x"yes"; then
-
-for ac_func in _sincos
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fpclass declaration" >&5
-echo $ECHO_N "checking for fpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func_fpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fpclass_use" >&6
-
-  if test x$glibcxx_cv_func_fpclass_use = x"yes"; then
-
-for ac_func in fpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fpclass declaration" >&5
-echo $ECHO_N "checking for _fpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func__fpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fpclass_use" >&6
-
-    if test x$glibcxx_cv_func__fpclass_use = x"yes"; then
-
-for ac_func in _fpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for qfpclass declaration" >&5
-echo $ECHO_N "checking for qfpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_qfpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func_qfpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- qfpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_qfpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_qfpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_qfpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_qfpclass_use" >&6
-
-  if test x$glibcxx_cv_func_qfpclass_use = x"yes"; then
-
-for ac_func in qfpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _qfpclass declaration" >&5
-echo $ECHO_N "checking for _qfpclass declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__qfpclass_use+set} != xset; then
-    if test "${glibcxx_cv_func__qfpclass_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _qfpclass(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__qfpclass_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__qfpclass_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__qfpclass_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__qfpclass_use" >&6
-
-    if test x$glibcxx_cv_func__qfpclass_use = x"yes"; then
-
-for ac_func in _qfpclass
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypot declaration" >&5
-echo $ECHO_N "checking for hypot declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypot_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypot_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypot(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypot_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypot_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypot_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypot_use" >&6
-
-  if test x$glibcxx_cv_func_hypot_use = x"yes"; then
-
-for ac_func in hypot
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypot declaration" >&5
-echo $ECHO_N "checking for _hypot declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypot_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypot_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypot(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypot_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypot_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypot_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypot_use" >&6
-
-    if test x$glibcxx_cv_func__hypot_use = x"yes"; then
-
-for ac_func in _hypot
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for float trig functions" >&5
-echo $ECHO_N "checking for float trig functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_float_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-acosf (0); asinf (0); atanf (0); cosf (0); sinf (0); tanf (0); coshf (0); sinhf (0); tanhf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_float_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_float_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _float trig functions" >&5
-echo $ECHO_N "checking for _float trig functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__float_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_acosf (0); _asinf (0); _atanf (0); _cosf (0); _sinf (0); _tanf (0); _coshf (0); _sinhf (0); _tanhf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__float_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__float_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for float round functions" >&5
-echo $ECHO_N "checking for float round functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_float_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-ceilf (0); floorf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_float_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_float_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_float_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _float round functions" >&5
-echo $ECHO_N "checking for _float round functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__float_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_ceilf (0); _floorf (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__float_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__float_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__float_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for expf declaration" >&5
-echo $ECHO_N "checking for expf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_expf_use+set} != xset; then
-    if test "${glibcxx_cv_func_expf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- expf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_expf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_expf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_expf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_expf_use" >&6
-
-  if test x$glibcxx_cv_func_expf_use = x"yes"; then
-
-for ac_func in expf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _expf declaration" >&5
-echo $ECHO_N "checking for _expf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__expf_use+set} != xset; then
-    if test "${glibcxx_cv_func__expf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _expf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__expf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__expf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__expf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__expf_use" >&6
-
-    if test x$glibcxx_cv_func__expf_use = x"yes"; then
-
-for ac_func in _expf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnanf declaration" >&5
-echo $ECHO_N "checking for isnanf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnanf_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnanf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnanf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnanf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnanf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnanf_use" >&6
-
-  if test x$glibcxx_cv_func_isnanf_use = x"yes"; then
-
-for ac_func in isnanf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnanf declaration" >&5
-echo $ECHO_N "checking for _isnanf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnanf_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnanf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnanf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnanf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnanf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnanf_use" >&6
-
-    if test x$glibcxx_cv_func__isnanf_use = x"yes"; then
-
-for ac_func in _isnanf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isinff declaration" >&5
-echo $ECHO_N "checking for isinff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinff_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinff(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinff_use" >&6
-
-  if test x$glibcxx_cv_func_isinff_use = x"yes"; then
-
-for ac_func in isinff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinff declaration" >&5
-echo $ECHO_N "checking for _isinff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinff_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinff(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinff_use" >&6
-
-    if test x$glibcxx_cv_func__isinff_use = x"yes"; then
-
-for ac_func in _isinff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for atan2f declaration" >&5
-echo $ECHO_N "checking for atan2f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_atan2f_use+set} != xset; then
-    if test "${glibcxx_cv_func_atan2f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- atan2f(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_atan2f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_atan2f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_atan2f_use" >&6
-
-  if test x$glibcxx_cv_func_atan2f_use = x"yes"; then
-
-for ac_func in atan2f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _atan2f declaration" >&5
-echo $ECHO_N "checking for _atan2f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__atan2f_use+set} != xset; then
-    if test "${glibcxx_cv_func__atan2f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _atan2f(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__atan2f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__atan2f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__atan2f_use" >&6
-
-    if test x$glibcxx_cv_func__atan2f_use = x"yes"; then
-
-for ac_func in _atan2f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fabsf declaration" >&5
-echo $ECHO_N "checking for fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func_fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fabsf_use" >&6
-
-  if test x$glibcxx_cv_func_fabsf_use = x"yes"; then
-
-for ac_func in fabsf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fabsf declaration" >&5
-echo $ECHO_N "checking for _fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func__fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fabsf_use" >&6
-
-    if test x$glibcxx_cv_func__fabsf_use = x"yes"; then
-
-for ac_func in _fabsf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fmodf declaration" >&5
-echo $ECHO_N "checking for fmodf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fmodf_use+set} != xset; then
-    if test "${glibcxx_cv_func_fmodf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- fmodf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fmodf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fmodf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fmodf_use" >&6
-
-  if test x$glibcxx_cv_func_fmodf_use = x"yes"; then
-
-for ac_func in fmodf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fmodf declaration" >&5
-echo $ECHO_N "checking for _fmodf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fmodf_use+set} != xset; then
-    if test "${glibcxx_cv_func__fmodf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _fmodf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fmodf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fmodf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fmodf_use" >&6
-
-    if test x$glibcxx_cv_func__fmodf_use = x"yes"; then
-
-for ac_func in _fmodf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for frexpf declaration" >&5
-echo $ECHO_N "checking for frexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_frexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func_frexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- frexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_frexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_frexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_frexpf_use" >&6
-
-  if test x$glibcxx_cv_func_frexpf_use = x"yes"; then
-
-for ac_func in frexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _frexpf declaration" >&5
-echo $ECHO_N "checking for _frexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__frexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func__frexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _frexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__frexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__frexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__frexpf_use" >&6
-
-    if test x$glibcxx_cv_func__frexpf_use = x"yes"; then
-
-for ac_func in _frexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypotf declaration" >&5
-echo $ECHO_N "checking for hypotf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypotf_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypotf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypotf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypotf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypotf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypotf_use" >&6
-
-  if test x$glibcxx_cv_func_hypotf_use = x"yes"; then
-
-for ac_func in hypotf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypotf declaration" >&5
-echo $ECHO_N "checking for _hypotf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypotf_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypotf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypotf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypotf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypotf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypotf_use" >&6
-
-    if test x$glibcxx_cv_func__hypotf_use = x"yes"; then
-
-for ac_func in _hypotf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for ldexpf declaration" >&5
-echo $ECHO_N "checking for ldexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_ldexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func_ldexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- ldexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_ldexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_ldexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_ldexpf_use" >&6
-
-  if test x$glibcxx_cv_func_ldexpf_use = x"yes"; then
-
-for ac_func in ldexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _ldexpf declaration" >&5
-echo $ECHO_N "checking for _ldexpf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__ldexpf_use+set} != xset; then
-    if test "${glibcxx_cv_func__ldexpf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _ldexpf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__ldexpf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__ldexpf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__ldexpf_use" >&6
-
-    if test x$glibcxx_cv_func__ldexpf_use = x"yes"; then
-
-for ac_func in _ldexpf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for logf declaration" >&5
-echo $ECHO_N "checking for logf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_logf_use+set} != xset; then
-    if test "${glibcxx_cv_func_logf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- logf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_logf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_logf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_logf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_logf_use" >&6
-
-  if test x$glibcxx_cv_func_logf_use = x"yes"; then
-
-for ac_func in logf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _logf declaration" >&5
-echo $ECHO_N "checking for _logf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__logf_use+set} != xset; then
-    if test "${glibcxx_cv_func__logf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _logf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__logf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__logf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__logf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__logf_use" >&6
-
-    if test x$glibcxx_cv_func__logf_use = x"yes"; then
-
-for ac_func in _logf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for log10f declaration" >&5
-echo $ECHO_N "checking for log10f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_log10f_use+set} != xset; then
-    if test "${glibcxx_cv_func_log10f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- log10f(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_log10f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_log10f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_log10f_use" >&6
-
-  if test x$glibcxx_cv_func_log10f_use = x"yes"; then
-
-for ac_func in log10f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _log10f declaration" >&5
-echo $ECHO_N "checking for _log10f declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__log10f_use+set} != xset; then
-    if test "${glibcxx_cv_func__log10f_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _log10f(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__log10f_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__log10f_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10f_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__log10f_use" >&6
-
-    if test x$glibcxx_cv_func__log10f_use = x"yes"; then
-
-for ac_func in _log10f
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modff declaration" >&5
-echo $ECHO_N "checking for modff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modff_use+set} != xset; then
-    if test "${glibcxx_cv_func_modff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modff(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modff_use" >&6
-
-  if test x$glibcxx_cv_func_modff_use = x"yes"; then
-
-for ac_func in modff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modff declaration" >&5
-echo $ECHO_N "checking for _modff declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modff_use+set} != xset; then
-    if test "${glibcxx_cv_func__modff_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modff(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modff_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modff_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modff_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modff_use" >&6
-
-    if test x$glibcxx_cv_func__modff_use = x"yes"; then
-
-for ac_func in _modff
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modf declaration" >&5
-echo $ECHO_N "checking for modf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modf_use+set} != xset; then
-    if test "${glibcxx_cv_func_modf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modf_use" >&6
-
-  if test x$glibcxx_cv_func_modf_use = x"yes"; then
-
-for ac_func in modf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modf declaration" >&5
-echo $ECHO_N "checking for _modf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modf_use+set} != xset; then
-    if test "${glibcxx_cv_func__modf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modf_use" >&6
-
-    if test x$glibcxx_cv_func__modf_use = x"yes"; then
-
-for ac_func in _modf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for powf declaration" >&5
-echo $ECHO_N "checking for powf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_powf_use+set} != xset; then
-    if test "${glibcxx_cv_func_powf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- powf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_powf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_powf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_powf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_powf_use" >&6
-
-  if test x$glibcxx_cv_func_powf_use = x"yes"; then
-
-for ac_func in powf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _powf declaration" >&5
-echo $ECHO_N "checking for _powf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__powf_use+set} != xset; then
-    if test "${glibcxx_cv_func__powf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _powf(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__powf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__powf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__powf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__powf_use" >&6
-
-    if test x$glibcxx_cv_func__powf_use = x"yes"; then
-
-for ac_func in _powf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sqrtf declaration" >&5
-echo $ECHO_N "checking for sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func_sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sqrtf_use" >&6
-
-  if test x$glibcxx_cv_func_sqrtf_use = x"yes"; then
-
-for ac_func in sqrtf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sqrtf declaration" >&5
-echo $ECHO_N "checking for _sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func__sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sqrtf_use" >&6
-
-    if test x$glibcxx_cv_func__sqrtf_use = x"yes"; then
-
-for ac_func in _sqrtf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincosf declaration" >&5
-echo $ECHO_N "checking for sincosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincosf_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincosf(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincosf_use" >&6
-
-  if test x$glibcxx_cv_func_sincosf_use = x"yes"; then
-
-for ac_func in sincosf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincosf declaration" >&5
-echo $ECHO_N "checking for _sincosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincosf_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincosf(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincosf_use" >&6
-
-    if test x$glibcxx_cv_func__sincosf_use = x"yes"; then
-
-for ac_func in _sincosf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finitef declaration" >&5
-echo $ECHO_N "checking for finitef declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finitef_use+set} != xset; then
-    if test "${glibcxx_cv_func_finitef_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finitef(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finitef_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finitef_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitef_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finitef_use" >&6
-
-  if test x$glibcxx_cv_func_finitef_use = x"yes"; then
-
-for ac_func in finitef
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finitef declaration" >&5
-echo $ECHO_N "checking for _finitef declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finitef_use+set} != xset; then
-    if test "${glibcxx_cv_func__finitef_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finitef(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finitef_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finitef_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitef_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finitef_use" >&6
-
-    if test x$glibcxx_cv_func__finitef_use = x"yes"; then
-
-for ac_func in _finitef
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for long double trig functions" >&5
-echo $ECHO_N "checking for long double trig functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_long_double_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-acosl (0); asinl (0); atanl (0); cosl (0); sinl (0); tanl (0); coshl (0); sinhl (0); tanhl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_long_double_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_long_double_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _long double trig functions" >&5
-echo $ECHO_N "checking for _long double trig functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__long_double_trig_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_acosl (0); _asinl (0); _atanl (0); _cosl (0); _sinl (0); _tanl (0); _coshl (0); _sinhl (0); _tanhl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__long_double_trig_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__long_double_trig_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_trig_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    echo "$as_me:$LINENO: checking for long double round functions" >&5
-echo $ECHO_N "checking for long double round functions... $ECHO_C" >&6
-  if test "${glibcxx_cv_func_long_double_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-    ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-ceill (0); floorl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_long_double_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_long_double_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-    ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_long_double_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-    echo "$as_me:$LINENO: checking for _long double round functions" >&5
-echo $ECHO_N "checking for _long double round functions... $ECHO_C" >&6
-    if test "${glibcxx_cv_func__long_double_round_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-_ceill (0); _floorl (0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__long_double_round_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__long_double_round_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func__long_double_round_use" >&5
-echo "${ECHO_T}$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=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isnanl declaration" >&5
-echo $ECHO_N "checking for isnanl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isnanl_use+set} != xset; then
-    if test "${glibcxx_cv_func_isnanl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isnanl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isnanl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isnanl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isnanl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isnanl_use" >&6
-
-  if test x$glibcxx_cv_func_isnanl_use = x"yes"; then
-
-for ac_func in isnanl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isnanl declaration" >&5
-echo $ECHO_N "checking for _isnanl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isnanl_use+set} != xset; then
-    if test "${glibcxx_cv_func__isnanl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isnanl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isnanl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isnanl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isnanl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isnanl_use" >&6
-
-    if test x$glibcxx_cv_func__isnanl_use = x"yes"; then
-
-for ac_func in _isnanl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for isinfl declaration" >&5
-echo $ECHO_N "checking for isinfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_isinfl_use+set} != xset; then
-    if test "${glibcxx_cv_func_isinfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- isinfl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_isinfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_isinfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_isinfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_isinfl_use" >&6
-
-  if test x$glibcxx_cv_func_isinfl_use = x"yes"; then
-
-for ac_func in isinfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _isinfl declaration" >&5
-echo $ECHO_N "checking for _isinfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__isinfl_use+set} != xset; then
-    if test "${glibcxx_cv_func__isinfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _isinfl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__isinfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__isinfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__isinfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__isinfl_use" >&6
-
-    if test x$glibcxx_cv_func__isinfl_use = x"yes"; then
-
-for ac_func in _isinfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for copysignl declaration" >&5
-echo $ECHO_N "checking for copysignl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_copysignl_use+set} != xset; then
-    if test "${glibcxx_cv_func_copysignl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- copysignl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_copysignl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_copysignl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_copysignl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_copysignl_use" >&6
-
-  if test x$glibcxx_cv_func_copysignl_use = x"yes"; then
-
-for ac_func in copysignl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _copysignl declaration" >&5
-echo $ECHO_N "checking for _copysignl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__copysignl_use+set} != xset; then
-    if test "${glibcxx_cv_func__copysignl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _copysignl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__copysignl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__copysignl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__copysignl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__copysignl_use" >&6
-
-    if test x$glibcxx_cv_func__copysignl_use = x"yes"; then
-
-for ac_func in _copysignl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for atan2l declaration" >&5
-echo $ECHO_N "checking for atan2l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_atan2l_use+set} != xset; then
-    if test "${glibcxx_cv_func_atan2l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- atan2l(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_atan2l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_atan2l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_atan2l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_atan2l_use" >&6
-
-  if test x$glibcxx_cv_func_atan2l_use = x"yes"; then
-
-for ac_func in atan2l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _atan2l declaration" >&5
-echo $ECHO_N "checking for _atan2l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__atan2l_use+set} != xset; then
-    if test "${glibcxx_cv_func__atan2l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _atan2l(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__atan2l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__atan2l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__atan2l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__atan2l_use" >&6
-
-    if test x$glibcxx_cv_func__atan2l_use = x"yes"; then
-
-for ac_func in _atan2l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for expl declaration" >&5
-echo $ECHO_N "checking for expl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_expl_use+set} != xset; then
-    if test "${glibcxx_cv_func_expl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- expl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_expl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_expl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_expl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_expl_use" >&6
-
-  if test x$glibcxx_cv_func_expl_use = x"yes"; then
-
-for ac_func in expl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _expl declaration" >&5
-echo $ECHO_N "checking for _expl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__expl_use+set} != xset; then
-    if test "${glibcxx_cv_func__expl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _expl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__expl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__expl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__expl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__expl_use" >&6
-
-    if test x$glibcxx_cv_func__expl_use = x"yes"; then
-
-for ac_func in _expl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fabsl declaration" >&5
-echo $ECHO_N "checking for fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func_fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fabsl_use" >&6
-
-  if test x$glibcxx_cv_func_fabsl_use = x"yes"; then
-
-for ac_func in fabsl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fabsl declaration" >&5
-echo $ECHO_N "checking for _fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func__fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fabsl_use" >&6
-
-    if test x$glibcxx_cv_func__fabsl_use = x"yes"; then
-
-for ac_func in _fabsl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for fmodl declaration" >&5
-echo $ECHO_N "checking for fmodl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_fmodl_use+set} != xset; then
-    if test "${glibcxx_cv_func_fmodl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- fmodl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_fmodl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_fmodl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_fmodl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_fmodl_use" >&6
-
-  if test x$glibcxx_cv_func_fmodl_use = x"yes"; then
-
-for ac_func in fmodl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _fmodl declaration" >&5
-echo $ECHO_N "checking for _fmodl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__fmodl_use+set} != xset; then
-    if test "${glibcxx_cv_func__fmodl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _fmodl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__fmodl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__fmodl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__fmodl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__fmodl_use" >&6
-
-    if test x$glibcxx_cv_func__fmodl_use = x"yes"; then
-
-for ac_func in _fmodl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for frexpl declaration" >&5
-echo $ECHO_N "checking for frexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_frexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func_frexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- frexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_frexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_frexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_frexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_frexpl_use" >&6
-
-  if test x$glibcxx_cv_func_frexpl_use = x"yes"; then
-
-for ac_func in frexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _frexpl declaration" >&5
-echo $ECHO_N "checking for _frexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__frexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func__frexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _frexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__frexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__frexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__frexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__frexpl_use" >&6
-
-    if test x$glibcxx_cv_func__frexpl_use = x"yes"; then
-
-for ac_func in _frexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for hypotl declaration" >&5
-echo $ECHO_N "checking for hypotl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_hypotl_use+set} != xset; then
-    if test "${glibcxx_cv_func_hypotl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- hypotl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_hypotl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_hypotl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_hypotl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_hypotl_use" >&6
-
-  if test x$glibcxx_cv_func_hypotl_use = x"yes"; then
-
-for ac_func in hypotl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _hypotl declaration" >&5
-echo $ECHO_N "checking for _hypotl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__hypotl_use+set} != xset; then
-    if test "${glibcxx_cv_func__hypotl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _hypotl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__hypotl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__hypotl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__hypotl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__hypotl_use" >&6
-
-    if test x$glibcxx_cv_func__hypotl_use = x"yes"; then
-
-for ac_func in _hypotl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for ldexpl declaration" >&5
-echo $ECHO_N "checking for ldexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_ldexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func_ldexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- ldexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_ldexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_ldexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_ldexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_ldexpl_use" >&6
-
-  if test x$glibcxx_cv_func_ldexpl_use = x"yes"; then
-
-for ac_func in ldexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _ldexpl declaration" >&5
-echo $ECHO_N "checking for _ldexpl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__ldexpl_use+set} != xset; then
-    if test "${glibcxx_cv_func__ldexpl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _ldexpl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__ldexpl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__ldexpl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__ldexpl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__ldexpl_use" >&6
-
-    if test x$glibcxx_cv_func__ldexpl_use = x"yes"; then
-
-for ac_func in _ldexpl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for logl declaration" >&5
-echo $ECHO_N "checking for logl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_logl_use+set} != xset; then
-    if test "${glibcxx_cv_func_logl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- logl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_logl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_logl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_logl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_logl_use" >&6
-
-  if test x$glibcxx_cv_func_logl_use = x"yes"; then
-
-for ac_func in logl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _logl declaration" >&5
-echo $ECHO_N "checking for _logl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__logl_use+set} != xset; then
-    if test "${glibcxx_cv_func__logl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _logl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__logl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__logl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__logl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__logl_use" >&6
-
-    if test x$glibcxx_cv_func__logl_use = x"yes"; then
-
-for ac_func in _logl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for log10l declaration" >&5
-echo $ECHO_N "checking for log10l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_log10l_use+set} != xset; then
-    if test "${glibcxx_cv_func_log10l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- log10l(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_log10l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_log10l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_log10l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_log10l_use" >&6
-
-  if test x$glibcxx_cv_func_log10l_use = x"yes"; then
-
-for ac_func in log10l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _log10l declaration" >&5
-echo $ECHO_N "checking for _log10l declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__log10l_use+set} != xset; then
-    if test "${glibcxx_cv_func__log10l_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _log10l(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__log10l_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__log10l_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__log10l_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__log10l_use" >&6
-
-    if test x$glibcxx_cv_func__log10l_use = x"yes"; then
-
-for ac_func in _log10l
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for modfl declaration" >&5
-echo $ECHO_N "checking for modfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_modfl_use+set} != xset; then
-    if test "${glibcxx_cv_func_modfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- modfl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_modfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_modfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_modfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_modfl_use" >&6
-
-  if test x$glibcxx_cv_func_modfl_use = x"yes"; then
-
-for ac_func in modfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _modfl declaration" >&5
-echo $ECHO_N "checking for _modfl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__modfl_use+set} != xset; then
-    if test "${glibcxx_cv_func__modfl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _modfl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__modfl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__modfl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__modfl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__modfl_use" >&6
-
-    if test x$glibcxx_cv_func__modfl_use = x"yes"; then
-
-for ac_func in _modfl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for powl declaration" >&5
-echo $ECHO_N "checking for powl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_powl_use+set} != xset; then
-    if test "${glibcxx_cv_func_powl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- powl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_powl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_powl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_powl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_powl_use" >&6
-
-  if test x$glibcxx_cv_func_powl_use = x"yes"; then
-
-for ac_func in powl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _powl declaration" >&5
-echo $ECHO_N "checking for _powl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__powl_use+set} != xset; then
-    if test "${glibcxx_cv_func__powl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _powl(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__powl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__powl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__powl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__powl_use" >&6
-
-    if test x$glibcxx_cv_func__powl_use = x"yes"; then
-
-for ac_func in _powl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sqrtl declaration" >&5
-echo $ECHO_N "checking for sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func_sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sqrtl_use" >&6
-
-  if test x$glibcxx_cv_func_sqrtl_use = x"yes"; then
-
-for ac_func in sqrtl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sqrtl declaration" >&5
-echo $ECHO_N "checking for _sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func__sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sqrtl_use" >&6
-
-    if test x$glibcxx_cv_func__sqrtl_use = x"yes"; then
-
-for ac_func in _sqrtl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for sincosl declaration" >&5
-echo $ECHO_N "checking for sincosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_sincosl_use+set} != xset; then
-    if test "${glibcxx_cv_func_sincosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- sincosl(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_sincosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_sincosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_sincosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_sincosl_use" >&6
-
-  if test x$glibcxx_cv_func_sincosl_use = x"yes"; then
-
-for ac_func in sincosl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _sincosl declaration" >&5
-echo $ECHO_N "checking for _sincosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__sincosl_use+set} != xset; then
-    if test "${glibcxx_cv_func__sincosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- _sincosl(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__sincosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__sincosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__sincosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__sincosl_use" >&6
-
-    if test x$glibcxx_cv_func__sincosl_use = x"yes"; then
-
-for ac_func in _sincosl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for finitel declaration" >&5
-echo $ECHO_N "checking for finitel declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_finitel_use+set} != xset; then
-    if test "${glibcxx_cv_func_finitel_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- finitel(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_finitel_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_finitel_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_finitel_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_finitel_use" >&6
-
-  if test x$glibcxx_cv_func_finitel_use = x"yes"; then
-
-for ac_func in finitel
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  else
-
-  echo "$as_me:$LINENO: checking for _finitel declaration" >&5
-echo $ECHO_N "checking for _finitel declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func__finitel_use+set} != xset; then
-    if test "${glibcxx_cv_func__finitel_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-		      #ifdef HAVE_IEEEFP_H
-		      #include 
-		      #endif
-
-int
-main ()
-{
- _finitel(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func__finitel_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func__finitel_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func__finitel_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func__finitel_use" >&6
-
-    if test x$glibcxx_cv_func__finitel_use = x"yes"; then
-
-for ac_func in _finitel
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-    fi
-  fi
-
-
-
-
-
-  LIBS="$ac_save_LIBS"
-  CXXFLAGS="$ac_save_CXXFLAGS"
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_abs declaration" >&5
-echo $ECHO_N "checking for __builtin_abs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_abs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_abs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_abs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_abs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_abs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_use" >&6
-  if test x$glibcxx_cv_func___builtin_abs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_abs linkage" >&5
-echo $ECHO_N "checking for __builtin_abs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_abs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_abs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_abs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_abs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_abs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_abs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_abs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_abs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_ABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabsf declaration" >&5
-echo $ECHO_N "checking for __builtin_fabsf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabsf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabsf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabsf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabsf linkage" >&5
-echo $ECHO_N "checking for __builtin_fabsf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabsf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabsf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabsf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabs declaration" >&5
-echo $ECHO_N "checking for __builtin_fabs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabs linkage" >&5
-echo $ECHO_N "checking for __builtin_fabs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_fabsl declaration" >&5
-echo $ECHO_N "checking for __builtin_fabsl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_fabsl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_fabsl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_use" >&6
-  if test x$glibcxx_cv_func___builtin_fabsl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_fabsl linkage" >&5
-echo $ECHO_N "checking for __builtin_fabsl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_fabsl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_fabsl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_fabsl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_fabsl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_fabsl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_fabsl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_fabsl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_fabsl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_labs declaration" >&5
-echo $ECHO_N "checking for __builtin_labs declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_labs_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_labs_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_labs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_labs_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_labs_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_use" >&6
-  if test x$glibcxx_cv_func___builtin_labs_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_labs linkage" >&5
-echo $ECHO_N "checking for __builtin_labs linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_labs_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_labs_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_labs(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_labs_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_labs_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_labs_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_labs_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_labs_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_LABS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrtf declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrtf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrtf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrtf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrtf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrtf linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrtf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrtf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrtf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrtf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRTF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrt declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrt declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrt_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrt_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrt(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrt_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrt_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrt_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrt linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrt linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrt_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrt_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrt(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrt_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrt_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrt_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrt_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrt_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRT 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sqrtl declaration" >&5
-echo $ECHO_N "checking for __builtin_sqrtl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sqrtl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sqrtl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_use" >&6
-  if test x$glibcxx_cv_func___builtin_sqrtl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sqrtl linkage" >&5
-echo $ECHO_N "checking for __builtin_sqrtl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sqrtl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sqrtl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sqrtl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sqrtl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sqrtl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sqrtl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sqrtl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sqrtl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SQRTL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sinf declaration" >&5
-echo $ECHO_N "checking for __builtin_sinf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sinf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sinf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_use" >&6
-  if test x$glibcxx_cv_func___builtin_sinf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sinf linkage" >&5
-echo $ECHO_N "checking for __builtin_sinf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sinf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sinf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sinf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SINF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sin declaration" >&5
-echo $ECHO_N "checking for __builtin_sin declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sin_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sin_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sin(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sin_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sin_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_use" >&6
-  if test x$glibcxx_cv_func___builtin_sin_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sin linkage" >&5
-echo $ECHO_N "checking for __builtin_sin linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sin_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sin_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sin(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sin_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sin_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sin_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sin_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sin_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SIN 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_sinl declaration" >&5
-echo $ECHO_N "checking for __builtin_sinl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_sinl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_sinl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_use" >&6
-  if test x$glibcxx_cv_func___builtin_sinl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_sinl linkage" >&5
-echo $ECHO_N "checking for __builtin_sinl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_sinl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_sinl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_sinl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_sinl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_sinl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_sinl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_sinl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_sinl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SINL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cosf declaration" >&5
-echo $ECHO_N "checking for __builtin_cosf declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cosf_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cosf_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosf_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosf_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_use" >&6
-  if test x$glibcxx_cv_func___builtin_cosf_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cosf linkage" >&5
-echo $ECHO_N "checking for __builtin_cosf linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cosf_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cosf_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosf(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosf_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosf_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosf_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosf_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cosf_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COSF 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cos declaration" >&5
-echo $ECHO_N "checking for __builtin_cos declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cos_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cos_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cos(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cos_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cos_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_use" >&6
-  if test x$glibcxx_cv_func___builtin_cos_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cos linkage" >&5
-echo $ECHO_N "checking for __builtin_cos linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cos_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cos_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cos(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cos_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cos_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cos_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cos_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cos_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COS 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-  echo "$as_me:$LINENO: checking for __builtin_cosl declaration" >&5
-echo $ECHO_N "checking for __builtin_cosl declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func___builtin_cosl_use+set} != xset; then
-    if test "${glibcxx_cv_func___builtin_cosl_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosl_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosl_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_use" >&6
-  if test x$glibcxx_cv_func___builtin_cosl_use = x"yes"; then
-    echo "$as_me:$LINENO: checking for __builtin_cosl linkage" >&5
-echo $ECHO_N "checking for __builtin_cosl linkage... $ECHO_C" >&6
-    if test x${glibcxx_cv_func___builtin_cosl_link+set} != xset; then
-      if test "${glibcxx_cv_func___builtin_cosl_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-        if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- __builtin_cosl(0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func___builtin_cosl_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func___builtin_cosl_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-    fi
-    echo "$as_me:$LINENO: result: $glibcxx_cv_func___builtin_cosl_link" >&5
-echo "${ECHO_T}$glibcxx_cv_func___builtin_cosl_link" >&6
-
-    if test x$glibcxx_cv_func___builtin_cosl_link = x"yes"; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COSL 1
-_ACEOF
-
-    fi
-
-  fi
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-
-  ac_test_CXXFLAGS="${CXXFLAGS+set}"
-  ac_save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS='-fno-builtin -D_GNU_SOURCE'
-
-
-  echo "$as_me:$LINENO: checking for strtold declaration" >&5
-echo $ECHO_N "checking for strtold declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_strtold_use+set} != xset; then
-    if test "${glibcxx_cv_func_strtold_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- strtold(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_strtold_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_strtold_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtold_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_strtold_use" >&6
-  if test x$glibcxx_cv_func_strtold_use = x"yes"; then
-
-for ac_func in strtold
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  fi
-
-
-
-
-
-  echo "$as_me:$LINENO: checking for strtof declaration" >&5
-echo $ECHO_N "checking for strtof declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_strtof_use+set} != xset; then
-    if test "${glibcxx_cv_func_strtof_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- strtof(0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_strtof_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_strtof_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_strtof_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_strtof_use" >&6
-  if test x$glibcxx_cv_func_strtof_use = x"yes"; then
-
-for ac_func in strtof
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-  fi
-
-
-
-
-
-  CXXFLAGS="$ac_save_CXXFLAGS"
-
-
-  echo "$as_me:$LINENO: checking for S_ISREG or S_IFREG" >&5
-echo $ECHO_N "checking for S_ISREG or S_IFREG... $ECHO_C" >&6
-  if test "${glibcxx_cv_S_ISREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_ISREG(buffer.st_mode);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_ISREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_ISREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test "${glibcxx_cv_S_IFREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_IFREG & buffer.st_mode;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_IFREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_IFREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  res=no
-  if test $glibcxx_cv_S_ISREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_ISREG 1
-_ACEOF
-
-    res=S_ISREG
-  elif test $glibcxx_cv_S_IFREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_IFREG 1
-_ACEOF
-
-    res=S_IFREG
-  fi
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_WRITEV 1
-_ACEOF
-
-    ;;
-
-  *-freebsd*)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h locale.h float.h inttypes.h sys/resource.h sys/stat.h \
-      sys/time.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-    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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LC_MESSAGES 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SETENV 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SIGSETJMP 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITE 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOT 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNAN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANF 1
-_ACEOF
-
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LDEXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHF 1
-_ACEOF
-
-    if test x"long_double_math_on_this_cpu" = x"yes"; then
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANL 1
-_ACEOF
-
-    fi
-    ;;
-  *-hpux*)
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h locale.h float.h inttypes.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-    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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOT 1
-_ACEOF
-
-    case "$target" in
-      *-hpux10*)
-	cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITE 1
-_ACEOF
-
-	cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEF 1
-_ACEOF
-
-	cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINF 1
-_ACEOF
-
-	cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFF 1
-_ACEOF
-
-	cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNAN 1
-_ACEOF
-
-	cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANF 1
-_ACEOF
-
-	;;
-    esac
-    ;;
-  *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h float.h endian.h inttypes.h locale.h float.h stdint.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-    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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-
-    # For LFS.
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_INT64_T 1
-_ACEOF
-
-    case "$target" in
-      *-uclinux*)
-        # Don't enable LFS with uClibc
-        ;;
-      *)
-        cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_LFS 1
-_ACEOF
-
-    esac
-
-    # For showmanyc_helper().
-
-
-for ac_header in sys/ioctl.h sys/filio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for poll" >&5
-echo $ECHO_N "checking for poll... $ECHO_C" >&6
-  if test "${glibcxx_cv_POLL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct pollfd pfd[1];
-       pfd[0].events = POLLIN;
-       poll(pfd, 1, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_POLL=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_POLL=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_POLL = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_POLL 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_POLL" >&5
-echo "${ECHO_T}$glibcxx_cv_POLL" >&6
-
-
-  echo "$as_me:$LINENO: checking for S_ISREG or S_IFREG" >&5
-echo $ECHO_N "checking for S_ISREG or S_IFREG... $ECHO_C" >&6
-  if test "${glibcxx_cv_S_ISREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_ISREG(buffer.st_mode);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_ISREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_ISREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test "${glibcxx_cv_S_IFREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_IFREG & buffer.st_mode;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_IFREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_IFREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  res=no
-  if test $glibcxx_cv_S_ISREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_ISREG 1
-_ACEOF
-
-    res=S_ISREG
-  elif test $glibcxx_cv_S_IFREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_IFREG 1
-_ACEOF
-
-    res=S_IFREG
-  fi
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-    # For xsputn_2().
-
-for ac_header in sys/uio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for writev" >&5
-echo $ECHO_N "checking for writev... $ECHO_C" >&6
-  if test "${glibcxx_cv_WRITEV+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct iovec iov[2];
-       writev(0, iov, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_WRITEV=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_WRITEV=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_WRITEV = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WRITEV 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_WRITEV" >&5
-echo "${ECHO_T}$glibcxx_cv_WRITEV" >&6
-
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITE 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOT 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNAN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINCOS 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINCOSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHF 1
-_ACEOF
-
-    if test x"long_double_math_on_this_cpu" = x"yes"; then
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2L 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOTL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10L 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINCOSL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHL 1
-_ACEOF
-
-    fi
-    ;;
-  *-mingw32*)
-
-
-
-for ac_header in sys/types.h locale.h float.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  # 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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-    ;;
-  *-netbsd*)
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h locale.h float.h inttypes.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-    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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITE 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNAN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANF 1
-_ACEOF
-
-    if test x"long_double_math_on_this_cpu" = x"yes"; then
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANL 1
-_ACEOF
-
-    fi
-    ;;
-  *-netware)
-
-
-
-
-
-
-
-
-for ac_header in nan.h ieeefp.h sys/isa_defs.h sys/machine.h \
-      sys/types.h locale.h float.h inttypes.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-    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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOT 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNAN 1
-_ACEOF
-
-
-    # For showmanyc_helper().
-
-
-for ac_header in sys/ioctl.h sys/filio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for poll" >&5
-echo $ECHO_N "checking for poll... $ECHO_C" >&6
-  if test "${glibcxx_cv_POLL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct pollfd pfd[1];
-       pfd[0].events = POLLIN;
-       poll(pfd, 1, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_POLL=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_POLL=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_POLL = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_POLL 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_POLL" >&5
-echo "${ECHO_T}$glibcxx_cv_POLL" >&6
-
-
-  echo "$as_me:$LINENO: checking for S_ISREG or S_IFREG" >&5
-echo $ECHO_N "checking for S_ISREG or S_IFREG... $ECHO_C" >&6
-  if test "${glibcxx_cv_S_ISREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_ISREG(buffer.st_mode);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_ISREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_ISREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test "${glibcxx_cv_S_IFREG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct stat buffer;
-       fstat(0, &buffer);
-       S_IFREG & buffer.st_mode;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_S_IFREG=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_S_IFREG=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  res=no
-  if test $glibcxx_cv_S_ISREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_ISREG 1
-_ACEOF
-
-    res=S_ISREG
-  elif test $glibcxx_cv_S_IFREG = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_IFREG 1
-_ACEOF
-
-    res=S_IFREG
-  fi
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-    # For xsputn_2().
-
-for ac_header in sys/uio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-  echo "$as_me:$LINENO: checking for writev" >&5
-echo $ECHO_N "checking for writev... $ECHO_C" >&6
-  if test "${glibcxx_cv_WRITEV+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-    if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
-struct iovec iov[2];
-       writev(0, iov, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_WRITEV=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_WRITEV=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-
-fi
-
-  if test $glibcxx_cv_WRITEV = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_WRITEV 1
-_ACEOF
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_WRITEV" >&5
-echo "${ECHO_T}$glibcxx_cv_WRITEV" >&6
-
-    ;;
-  *-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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10L 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHL 1
-_ACEOF
-
-    ;;
-  *-solaris*)
-    case "$target" in
-    #  *-solaris2.5)
-    #    os_include_dir="os/solaris/solaris2.5"
-    #    ;;
-    #  *-solaris2.6)
-    #    os_include_dir="os/solaris/solaris2.6"
-    #    ;;
-      *-solaris2.7 | *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_SIGSETJMP 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_MBSTATE_T 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_POLL 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_S_ISREG 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_LC_MESSAGES 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITE 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_FPCLASS 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_GETPAGESIZE 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_NL_LANGINFO 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICONV 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICONV_CLOSE 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_ICONV_OPEN 1
-_ACEOF
-
-         # Look for the pieces required for wchar_t support in order to
-         # get all the right HAVE_* macros defined.
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-         # All of the dependencies for wide character support are here, so
-         # turn it on.  This requires some syncronization with the
-         # GLIBCXX_CHECK_ICONV_SUPPORT in acinclude.m4
-         cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_WCHAR_T 1
-_ACEOF
-
-         # Are these tested for even when cross?
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOAT_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_IEEEFP_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_INTTYPES_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOCALE_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_NAN_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_FILIO_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_IOCTL_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_ISA_DEFS_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_RESOURCE_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_TIME_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_SYS_TYPES_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_UNISTD_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_WCHAR_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_WCTYPE_H 1
-_ACEOF
-
-         cat >>confdefs.h <<\_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-        ;;
-    esac
-    case "$target" in
-      sparc*-*-solaris2.8 | sparc*-*-solaris2.9 | sparc*-*-solaris2.10)
-        # I saw these on sparc-sun-solaris2.8, but not 2.6, and not on i386
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_ABS 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_LABS 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABS 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSF 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_FABSL 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COS 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_COSF 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SIN 1
-_ACEOF
-
-        cat >>confdefs.h <<\_ACEOF
-#define HAVE___BUILTIN_SINF 1
-_ACEOF
-
-       ;;
-    esac
-    case "$target" in
-      *-*-solaris2.10)
-      # These two C99 functions are present only in Solaris >= 10
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_STRTOF 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_STRTOLD 1
-_ACEOF
-
-     ;;
-    esac
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNAN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOT 1
-_ACEOF
-
-    ;;
-  *-tpf)
-
-
-
-
-
-
-
-
-for ac_header in nan.h endian.h machine/endian.h  \
-      sys/param.h sys/types.h locale.h float.h inttypes.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-    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.
-
-  ldver=`$LD --version 2>/dev/null | head -1 | \
-         sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
-
-  glibcxx_gnu_ld_version=`echo $ldver | \
-         $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
-
-  # Set --gc-sections.
-  if test "$with_gnu_ld" = "notbroken"; then
-    # GNU ld it is!  Joy and bunny rabbits!
-
-    # All these tests are for C++; save the language and the compiler flags.
-    # Need to do this so that g++ won't try to link in libstdc++
-    ac_test_CFLAGS="${CFLAGS+set}"
-    ac_save_CFLAGS="$CFLAGS"
-    CFLAGS='-x c++  -Wl,--gc-sections'
-
-    # Check for -Wl,--gc-sections
-    # XXX This test is broken at the moment, as symbols required for linking
-    # are now in libsupc++ (not built yet).  In addition, this test has
-    # cored on solaris in the past.  In addition, --gc-sections doesn't
-    # really work at the moment (keeps on discarding used sections, first
-    # .eh_frame and now some of the glibc sections for iconv).
-    # Bzzzzt.  Thanks for playing, maybe next time.
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,--gc-sections" >&5
-echo $ECHO_N "checking for ld that supports -Wl,--gc-sections... $ECHO_C" >&6
-    if test "$cross_compiling" = yes; then
-  ac_sectionLDflags=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-     int main(void)
-     {
-       try { throw 1; }
-       catch (...) { };
-       return 0;
-     }
-
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_sectionLDflags=yes
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_sectionLDflags=no
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-    if test "$ac_test_CFLAGS" = set; then
-      CFLAGS="$ac_save_CFLAGS"
-    else
-      # this is the suspicious part
-      CFLAGS=''
-    fi
-    if test "$ac_sectionLDflags" = "yes"; then
-      SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS"
-    fi
-    echo "$as_me:$LINENO: result: $ac_sectionLDflags" >&5
-echo "${ECHO_T}$ac_sectionLDflags" >&6
-  fi
-
-  # Set -z,relro.
-  # Note this is only for shared objects
-  ac_ld_relro=no
-  if test x"$with_gnu_ld" = x"yes"; then
-    echo "$as_me:$LINENO: checking for ld that supports -Wl,-z,relro" >&5
-echo $ECHO_N "checking for ld that supports -Wl,-z,relro... $ECHO_C" >&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
-    echo "$as_me:$LINENO: result: $ac_ld_relro" >&5
-echo "${ECHO_T}$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
-
-
-
-
-
-
-echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-
-int
-main ()
-{
-main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_m_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_m_main=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
-
-  LIBS="-lm $LIBS"
-
-fi
-
-
-for ac_func in copysignf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo"
-fi
-done
-
-
-
-for ac_func in __signbit
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbit.lo"
-fi
-done
-
-
-
-for ac_func in __signbitf
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitf.lo"
-fi
-done
-
-
-          if test x$ac_cv_func_copysignl = x"yes"; then
-
-for ac_func in __signbitl
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  LIBMATHOBJS="$LIBMATHOBJS signbitl.lo"
-fi
-done
-
-  fi
-
-  # Used in libmath/Makefile.am.
-  if test -n "$LIBMATHOBJS"; then
-    need_libmath=yes
-  fi
-
-
-
-
-  enable_iconv=no
-  # Only continue checking if the ISO C99 headers exist and support is on.
-  if test x"$enable_wchar_t" = xyes; then
-
-    # Use iconv for wchar_t to char conversions. As such, check for
-    # X/Open Portability Guide, version 2 features (XPG2).
-    if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking iconv.h usability" >&5
-echo $ECHO_N "checking iconv.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking iconv.h presence" >&5
-echo $ECHO_N "checking iconv.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: iconv.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: iconv.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: iconv.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: iconv.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: iconv.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: iconv.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: iconv.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: iconv.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: iconv.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for iconv.h" >&5
-echo $ECHO_N "checking for iconv.h... $ECHO_C" >&6
-if test "${ac_cv_header_iconv_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_iconv_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_iconv_h" >&5
-echo "${ECHO_T}$ac_cv_header_iconv_h" >&6
-
-fi
-if test $ac_cv_header_iconv_h = yes; then
-  ac_has_iconv_h=yes
-else
-  ac_has_iconv_h=no
-fi
-
-
-    if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking langinfo.h usability" >&5
-echo $ECHO_N "checking langinfo.h usability... $ECHO_C" >&6
-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
-#include 
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking langinfo.h presence" >&5
-echo $ECHO_N "checking langinfo.h presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: langinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: langinfo.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: langinfo.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: langinfo.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: langinfo.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: langinfo.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: langinfo.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: langinfo.h: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for langinfo.h" >&5
-echo $ECHO_N "checking for langinfo.h... $ECHO_C" >&6
-if test "${ac_cv_header_langinfo_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_langinfo_h=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_langinfo_h" >&5
-echo "${ECHO_T}$ac_cv_header_langinfo_h" >&6
-
-fi
-if test $ac_cv_header_langinfo_h = yes; then
-  ac_has_langinfo_h=yes
-else
-  ac_has_langinfo_h=no
-fi
-
-
-
-    # Check for existence of libiconv.a providing XPG2 wchar_t support.
-    echo "$as_me:$LINENO: checking for iconv in -liconv" >&5
-echo $ECHO_N "checking for iconv in -liconv... $ECHO_C" >&6
-if test "${ac_cv_lib_iconv_iconv+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-liconv  $LIBS"
-if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char iconv ();
-int
-main ()
-{
-iconv ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_iconv_iconv=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_iconv_iconv=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_iconv_iconv" >&5
-echo "${ECHO_T}$ac_cv_lib_iconv_iconv" >&6
-if test $ac_cv_lib_iconv_iconv = yes; then
-  LIBICONV="-liconv"
-fi
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-
-
-
-
-
-
-for ac_func in iconv_open iconv_close iconv nl_langinfo
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
- ac_XPG2funcs=yes
-else
-  ac_XPG2funcs=no
-fi
-done
-
-
-    LIBS="$ac_save_LIBS"
-
-    if test x"$ac_has_iconv_h" = xyes &&
-       test x"$ac_has_langinfo_h" = xyes &&
-       test x"$ac_XPG2funcs" = xyes;
-    then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_USE_ICONV 1
-_ACEOF
-
-      enable_iconv=yes
-    fi
-  fi
-  echo "$as_me:$LINENO: checking for enabled iconv specializations" >&5
-echo $ECHO_N "checking for enabled iconv specializations... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $enable_iconv" >&5
-echo "${ECHO_T}$enable_iconv" >&6
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITE 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNAN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINCOS 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINCOSF 1
-_ACEOF
-
-    if test x"long_double_math_on_this_cpu" = x"yes"; then
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_FINITEL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOTL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISINFL 1
-_ACEOF
-
-      cat >>confdefs.h <<\_ACEOF
-#define HAVE_ISNANL 1
-_ACEOF
-
-    fi
-    ;;
-  *-vxworks)
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MMAP 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_HYPOT 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHF 1
-_ACEOF
-
-    ;;
-  *-windiss*)
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2L 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LDEXPF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LDEXPL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10F 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10L 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHF 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHL 1
-_ACEOF
-
-    ;;
-  *)
-    { { echo "$as_me:$LINENO: error: No support for this host/target combination." >&5
-echo "$as_me: error: No support for this host/target combination." >&2;}
-   { (exit 1); exit 1; }; }
-   ;;
-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
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2L 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LDEXPL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10L 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINCOSL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANL 1
-_ACEOF
-
-    cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHL 1
-_ACEOF
-
-  fi
-
-fi
-
-# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
-
-
- # Check whether --enable-symvers or --disable-symvers was given.
-if test "${enable_symvers+set}" = set; then
-  enableval="$enable_symvers"
-
-      case "$enableval" in
-       yes|no|gnu|darwin-export) ;;
-       *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable symvers" >&5
-echo "$as_me: error: Unknown argument to enable/disable symvers" >&2;}
-   { (exit 1); exit 1; }; } ;;
-                          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...
-
-
-# Turn a 'yes' into a suitable default.
-if test x$enable_symvers = xyes ; then
-  if test $enable_shared = no ||
-     test "x$LD" = x ; then
-    enable_symvers=no
-  elif test $with_gnu_ld = yes ; then
-    enable_symvers=gnu
-  else
-    case ${target_os} in
-      darwin*)
-	enable_symvers=darwin-export ;;
-      *)
-      { echo "$as_me:$LINENO: WARNING: === You have requested some kind of symbol versioning, but" >&5
-echo "$as_me: WARNING: === You have requested some kind of symbol versioning, but" >&2;}
-      { echo "$as_me:$LINENO: WARNING: === you are not using a supported linker." >&5
-echo "$as_me: WARNING: === you are not using a supported linker." >&2;}
-      { echo "$as_me:$LINENO: WARNING: === Symbol versioning will be disabled." >&5
-echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
-	enable_symvers=no ;;
-    esac
-  fi
-fi
-
-# Check to see if 'gnu' can win.
-if test $enable_symvers = gnu; then
-  # Check to see if libgcc_s exists, indicating that shared libgcc is possible.
-  echo "$as_me:$LINENO: checking for shared libgcc" >&5
-echo $ECHO_N "checking for shared libgcc... $ECHO_C" >&6
-  ac_save_CFLAGS="$CFLAGS"
-  CFLAGS=' -lgcc_s'
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_shared_libgcc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_shared_libgcc=no
-fi
-rm -f 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 <&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
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_shared_libgcc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-      CFLAGS="$ac_save_CFLAGS"
-    fi
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_shared_libgcc" >&5
-echo "${ECHO_T}$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
-      { echo "$as_me:$LINENO: WARNING: === You have requested GNU symbol versioning, but" >&5
-echo "$as_me: WARNING: === You have requested GNU symbol versioning, but" >&2;}
-      { echo "$as_me:$LINENO: WARNING: === you are not building a shared libgcc_s." >&5
-echo "$as_me: WARNING: === you are not building a shared libgcc_s." >&2;}
-      { echo "$as_me:$LINENO: WARNING: === Symbol versioning will be disabled." >&5
-echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
-      enable_symvers=no
-  elif test $with_gnu_ld != yes ; then
-    # just fail for now
-    { echo "$as_me:$LINENO: WARNING: === You have requested GNU symbol versioning, but" >&5
-echo "$as_me: WARNING: === You have requested GNU symbol versioning, but" >&2;}
-    { echo "$as_me:$LINENO: WARNING: === you are not using the GNU linker." >&5
-echo "$as_me: WARNING: === you are not using the GNU linker." >&2;}
-    { echo "$as_me:$LINENO: WARNING: === Symbol versioning will be disabled." >&5
-echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;}
-    enable_symvers=no
-  elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then
-    # The right tools, the right setup, but too old.  Fallbacks?
-    { echo "$as_me:$LINENO: WARNING: === Linker version $glibcxx_gnu_ld_version is too old for" >&5
-echo "$as_me: WARNING: === Linker version $glibcxx_gnu_ld_version is too old for" >&2;}
-    { echo "$as_me:$LINENO: WARNING: === full symbol versioning support in this release of GCC." >&5
-echo "$as_me: WARNING: === full symbol versioning support in this release of GCC." >&2;}
-    { echo "$as_me:$LINENO: WARNING: === You would need to upgrade your binutils to version" >&5
-echo "$as_me: WARNING: === You would need to upgrade your binutils to version" >&2;}
-    { echo "$as_me:$LINENO: WARNING: === $glibcxx_min_gnu_ld_version or later and rebuild GCC." >&5
-echo "$as_me: WARNING: === $glibcxx_min_gnu_ld_version or later and rebuild GCC." >&2;}
-    { echo "$as_me:$LINENO: WARNING: === Symbol versioning will be disabled." >&5
-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_MAP=config/linker-map.dummy
-    ;;
-  gnu)
-    SYMVER_MAP=config/linker-map.gnu
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_SYMVER 1
-_ACEOF
-
-    ;;
-  darwin-export)
-    SYMVER_MAP=config/linker-map.gnu
-    ;;
-esac
-
-# 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.
-echo "$as_me:$LINENO: checking for size_t as unsigned int" >&5
-echo $ECHO_N "checking for size_t as unsigned int... $ECHO_C" >&6
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS="-Werror"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-__SIZE_TYPE__* stp; unsigned int* uip; stp = uip;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_size_t_is_i=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_size_t_is_i=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS=$ac_save_CFLAGS
-if test "$glibcxx_size_t_is_i" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_SIZE_T_IS_UINT 1
-_ACEOF
-
-fi
-echo "$as_me:$LINENO: result: $glibcxx_size_t_is_i" >&5
-echo "${ECHO_T}$glibcxx_size_t_is_i" >&6
-
-echo "$as_me:$LINENO: checking for ptrdiff_t as int" >&5
-echo $ECHO_N "checking for ptrdiff_t as int... $ECHO_C" >&6
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS="-Werror"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-int
-main ()
-{
-__PTRDIFF_TYPE__* ptp; int* ip; ptp = ip;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_ptrdiff_t_is_i=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_ptrdiff_t_is_i=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS=$ac_save_CFLAGS
-if test "$glibcxx_ptrdiff_t_is_i" = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_PTRDIFF_T_IS_INT 1
-_ACEOF
-
-fi
-echo "$as_me:$LINENO: result: $glibcxx_ptrdiff_t_is_i" >&5
-echo "${ECHO_T}$glibcxx_ptrdiff_t_is_i" >&6
-
-
-
-
-
-{ echo "$as_me:$LINENO: versioning on shared library symbols is $enable_symvers" >&5
-echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;}
-
-
-# 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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-else
-  # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-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
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_header_compiler=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null; then
-  if test -s conftest.err; then
-    ac_cpp_err=$ac_c_preproc_warn_flag
-    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
-  else
-    ac_cpp_err=
-  fi
-else
-  ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-    (
-      cat <<\_ASBOX
-## ----------------------------------------- ##
-## Report this to the package-unused lists.  ##
-## ----------------------------------------- ##
-_ASBOX
-    ) |
-      sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `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.
-
-  echo "$as_me:$LINENO: checking for RLIMIT_DATA" >&5
-echo $ECHO_N "checking for RLIMIT_DATA... $ECHO_C" >&6
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-     #include 
-     #include 
-
-int
-main ()
-{
- int f = RLIMIT_DATA ;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_mresult=1
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_mresult=0
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-  echo "$as_me:$LINENO: checking for RLIMIT_RSS" >&5
-echo $ECHO_N "checking for RLIMIT_RSS... $ECHO_C" >&6
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-     #include 
-     #include 
-
-int
-main ()
-{
- int f = RLIMIT_RSS ;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_mresult=1
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_mresult=0
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-  echo "$as_me:$LINENO: checking for RLIMIT_VMEM" >&5
-echo $ECHO_N "checking for RLIMIT_VMEM... $ECHO_C" >&6
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-     #include 
-     #include 
-
-int
-main ()
-{
- int f = RLIMIT_VMEM ;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_mresult=1
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_mresult=0
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-  echo "$as_me:$LINENO: checking for RLIMIT_AS" >&5
-echo $ECHO_N "checking for RLIMIT_AS... $ECHO_C" >&6
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-     #include 
-     #include 
-
-int
-main ()
-{
- int f = RLIMIT_AS ;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_mresult=1
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_mresult=0
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-  echo "$as_me:$LINENO: checking for RLIMIT_FSIZE" >&5
-echo $ECHO_N "checking for RLIMIT_FSIZE... $ECHO_C" >&6
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-     #include 
-     #include 
-
-int
-main ()
-{
- int f = RLIMIT_FSIZE ;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_mresult=1
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_mresult=0
-fi
-rm -f 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
-  echo "$as_me:$LINENO: result: $res" >&5
-echo "${ECHO_T}$res" >&6
-
-
-    # Check for rlimit, setrlimit.
-    if test "${ac_setrlimit+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-         #include 
-         #include 
-
-int
-main ()
-{
-struct rlimit r;
-         setrlimit(0, &r);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_setrlimit=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_setrlimit=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-
-  fi
-
-  echo "$as_me:$LINENO: checking for testsuite resource limits support" >&5
-echo $ECHO_N "checking for testsuite resource limits support... $ECHO_C" >&6
-  if test $setrlimit_have_headers = yes && test $ac_setrlimit = yes; then
-    ac_res_limits=yes
-
-cat >>confdefs.h <<\_ACEOF
-#define _GLIBCXX_RES_LIMITS 1
-_ACEOF
-
-  else
-    ac_res_limits=no
-  fi
-  echo "$as_me:$LINENO: result: $ac_res_limits" >&5
-echo "${ECHO_T}$ac_res_limits" >&6
-
-
-    # Look for setenv, so that extended locale tests can be performed.
-
-  echo "$as_me:$LINENO: checking for setenv declaration" >&5
-echo $ECHO_N "checking for setenv declaration... $ECHO_C" >&6
-  if test x${glibcxx_cv_func_setenv_use+set} != xset; then
-    if test "${glibcxx_cv_func_setenv_use+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-
-
-      ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include 
-int
-main ()
-{
- setenv(0, 0, 0);
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest.$ac_objext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  glibcxx_cv_func_setenv_use=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-glibcxx_cv_func_setenv_use=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-      ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-fi
-
-  fi
-  echo "$as_me:$LINENO: result: $glibcxx_cv_func_setenv_use" >&5
-echo "${ECHO_T}$glibcxx_cv_func_setenv_use" >&6
-  if test x$glibcxx_cv_func_setenv_use = x"yes"; then
-
-for ac_func in setenv
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-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  declares $ac_func.
-   For example, HP-UX 11i  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  to  if __STDC__ is defined, since
-     exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include 
-#else
-# include 
-#endif
-
-#undef $ac_func
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-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
-#else
-char (*f) () = $ac_func;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != $ac_func;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-eval "$as_ac_var=no"
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 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/${abi_baseline_pair}\$(MULTISUBDIR)"
-
-
-
-# Propagate the target-specific source directories through the build chain.
-ATOMICITY_SRCDIR=config/${atomicity_dir}
-ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
-CPU_DEFINES_SRCDIR=config/${cpu_defines_dir}
-OS_INC_SRCDIR=config/${os_include_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)
-# from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT:
-#AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH,  test $need_libmath = 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 $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_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 = darwin-export; then
-  ENABLE_SYMVERS_DARWIN_EXPORT_TRUE=
-  ENABLE_SYMVERS_DARWIN_EXPORT_FALSE='#'
-else
-  ENABLE_SYMVERS_DARWIN_EXPORT_TRUE='#'
-  ENABLE_SYMVERS_DARWIN_EXPORT_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, don't put newlines in cache variables' values.
-# 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.
-{
-  (set) 2>&1 |
-    case `(ac_space=' '; set | grep ac_space) 2>&1` in
-    *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 \
-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-      ;;
-    esac;
-} |
-  sed '
-     t clear
-     : clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     /^ac_cv_env/!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" && echo "updating cache $cache_file"
-    cat confcache >$cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  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
-
-  echo "$as_me:$LINENO: checking for gxx-include-dir" >&5
-echo $ECHO_N "checking for gxx-include-dir... $ECHO_C" >&6
-
-# Check whether --with-gxx-include-dir or --without-gxx-include-dir was given.
-if test "${with_gxx_include_dir+set}" = set; then
-  withval="$with_gxx_include_dir"
-  case "$withval" in
-      yes) { { echo "$as_me:$LINENO: error: Missing directory for --with-gxx-include-dir" >&5
-echo "$as_me: error: Missing directory for --with-gxx-include-dir" >&2;}
-   { (exit 1); exit 1; }; } ;;
-      no)  gxx_include_dir=no ;;
-      *)   gxx_include_dir=$withval ;;
-     esac
-else
-  gxx_include_dir=no
-fi;
-  echo "$as_me:$LINENO: result: $gxx_include_dir" >&5
-echo "${ECHO_T}$gxx_include_dir" >&6
-
-  echo "$as_me:$LINENO: checking for --enable-version-specific-runtime-libs" >&5
-echo $ECHO_N "checking for --enable-version-specific-runtime-libs... $ECHO_C" >&6
-  # Check whether --enable-version-specific-runtime-libs or --disable-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 ;;
-      *)   { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable version-specific libs" >&5
-echo "$as_me: error: Unknown argument to enable/disable version-specific libs" >&2;}
-   { (exit 1); exit 1; }; };;
-     esac
-else
-  version_specific_libs=no
-fi;
-  echo "$as_me:$LINENO: result: $version_specific_libs" >&5
-echo "${ECHO_T}$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='${prefix}/include/c++/${gcc_version}'
-  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
-
-  echo "$as_me:$LINENO: checking for install location" >&5
-echo $ECHO_N "checking for install location... $ECHO_C" >&6
-  echo "$as_me:$LINENO: result: $gxx_include_dir" >&5
-echo "${ECHO_T}$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...
-  # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
-  OPTIMIZE_CXXFLAGS=
-
-
-  WARN_FLAGS='-Wall -Wextra -Wwrite-strings -Wcast-qual'
-
-
-
-if ${CONFIG_SHELL-/bin/sh} ./libtool --tag CXX --features |
-   grep "enable shared" > /dev/null;
-then
-  LIBSUPCXX_PICFLAGS=-prefer-pic
-else
-  LIBSUPCXX_PICFLAGS=
-fi
-
-
-                                                                      ac_config_files="$ac_config_files Makefile include/Makefile libmath/Makefile libsupc++/Makefile src/Makefile po/Makefile testsuite/Makefile"
-
-          ac_config_files="$ac_config_files scripts/testsuite_flags"
-
-
-          ac_config_commands="$ac_config_commands default"
-
-
-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, don't put newlines in cache variables' values.
-# 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.
-{
-  (set) 2>&1 |
-    case `(ac_space=' '; set | grep ac_space) 2>&1` in
-    *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 \
-	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-      ;;
-    esac;
-} |
-  sed '
-     t clear
-     : clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     /^ac_cv_env/!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" && echo "updating cache $cache_file"
-    cat confcache >$cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  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}'
-
-# 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
-
-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_i=`echo "$ac_i" |
-	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
-  # 2. Add them.
-  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
-done
-LIBOBJS=$ac_libobjs
-
-LTLIBOBJS=$ac_ltlibobjs
-
-
-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${GLIBCXX_HOSTED_TRUE}" && test -z "${GLIBCXX_HOSTED_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_HOSTED\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"GLIBCXX_HOSTED\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${GLIBCXX_BUILD_PCH_TRUE}" && test -z "${GLIBCXX_BUILD_PCH_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_BUILD_PCH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"GLIBCXX_BUILD_PCH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${GLIBCXX_C_HEADERS_C_TRUE}" && test -z "${GLIBCXX_C_HEADERS_C_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_C_HEADERS_C\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"GLIBCXX_C_HEADERS_C\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${GLIBCXX_C_HEADERS_C_STD_TRUE}" && test -z "${GLIBCXX_C_HEADERS_C_STD_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_C_HEADERS_C_STD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"GLIBCXX_C_HEADERS_C_STD\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE}" && test -z "${GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_C_HEADERS_COMPATIBILITY\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"GLIBCXX_C_HEADERS_COMPATIBILITY\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${GLIBCXX_BUILD_DEBUG_TRUE}" && test -z "${GLIBCXX_BUILD_DEBUG_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_BUILD_DEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"GLIBCXX_BUILD_DEBUG\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${ENABLE_SYMVERS_GNU_TRUE}" && test -z "${ENABLE_SYMVERS_GNU_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"ENABLE_SYMVERS_GNU\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"ENABLE_SYMVERS_GNU\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${ENABLE_SYMVERS_DARWIN_EXPORT_TRUE}" && test -z "${ENABLE_SYMVERS_DARWIN_EXPORT_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"ENABLE_SYMVERS_DARWIN_EXPORT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"ENABLE_SYMVERS_DARWIN_EXPORT\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $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}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-DUALCASE=1; export DUALCASE # for MKS sh
-
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-
-# Work around bugs in pre-3.0 UWIN ksh.
-$as_unset ENV MAIL MAILPATH
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    $as_unset $as_var
-  fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1; 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
-
-
-# Name of the executable.
-as_me=`$as_basename "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)$' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\/\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# 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
-
-# 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
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  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
-
-       ;;
-  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
-    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-	 case $as_dir in
-	 /*)
-	   if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
-	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
-	     CONFIG_SHELL=$as_dir/$as_base
-	     export CONFIG_SHELL
-	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-	   fi;;
-	 esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-   { (exit 1); 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 sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='	' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
-    as_ln_s='ln -s'
-  fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-as_executable_p="test -f"
-
-# 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'"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS=" 	$as_nl"
-
-# CDPATH.
-$as_unset CDPATH
-
-exec 6>&1
-
-# Open the log real soon, to keep \$[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.  Logging --version etc. is OK.
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-} >&5
-cat >&5 <<_CSEOF
-
-This file was extended by package-unused $as_me version-unused, which was
-generated by GNU Autoconf 2.59.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-_CSEOF
-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-echo >&5
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
-  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
-  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
-  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
-  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number, then exit
-  -q, --quiet      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 ."
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-ac_cs_version="\\
-package-unused config.status version-unused
-configured by $0, generated by GNU Autoconf 2.59,
-  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright (C) 2003 Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
-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
-    ;;
-  *) # This is not an option, so the user has probably given explicit
-     # arguments.
-     ac_option=$1
-     ac_need_defaults=false;;
-  esac
-
-  case $ac_option in
-  # Handling of the options.
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    ac_cs_recheck=: ;;
-  --version | --vers* | -V )
-    echo "$ac_cs_version"; exit 0 ;;
-  --he | --h)
-    # Conflict between --help and --header
-    { { echo "$as_me:$LINENO: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit 0 ;;
-  --debug | --d* | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    $ac_shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
-    ac_need_defaults=false;;
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil | --si | --s)
-    ac_cs_silent=: ;;
-
-  # This is an error.
-  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; } ;;
-
-  *) ac_config_targets="$ac_config_targets $1" ;;
-
-  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
-if \$ac_cs_recheck; then
-  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
-fi
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-#
-# INIT-COMMANDS section.
-#
-
-
-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"
-
-# Variables needed in config.status (file generation) which aren't already
-# passed by autoconf.
-SUBDIRS="$SUBDIRS"
-
-
-_ACEOF
-
-
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_config_target in $ac_config_targets
-do
-  case "$ac_config_target" in
-  # Handling of arguments.
-  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-  "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
-  "libmath/Makefile" ) CONFIG_FILES="$CONFIG_FILES libmath/Makefile" ;;
-  "libsupc++/Makefile" ) CONFIG_FILES="$CONFIG_FILES libsupc++/Makefile" ;;
-  "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-  "po/Makefile" ) CONFIG_FILES="$CONFIG_FILES po/Makefile" ;;
-  "testsuite/Makefile" ) CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
-  "scripts/testsuite_flags" ) CONFIG_FILES="$CONFIG_FILES scripts/testsuite_flags" ;;
-  "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-  "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
-  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
-  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 to put it here, and in addition,
-# creating and moving files from /tmp can sometimes cause problems.
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-
-{
-  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=./confstat$$-$RANDOM
-  (umask 077 && mkdir $tmp)
-} ||
-{
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
-  # Protect against being on the right side of a sed subst in config.status.
-  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
-   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@DEFS@,$DEFS,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@LIBS@,$LIBS,;t t
-s,@libtool_VERSION@,$libtool_VERSION,;t t
-s,@multi_basedir@,$multi_basedir,;t t
-s,@build@,$build,;t t
-s,@build_cpu@,$build_cpu,;t t
-s,@build_vendor@,$build_vendor,;t t
-s,@build_os@,$build_os,;t t
-s,@host@,$host,;t t
-s,@host_cpu@,$host_cpu,;t t
-s,@host_vendor@,$host_vendor,;t t
-s,@host_os@,$host_os,;t t
-s,@target@,$target,;t t
-s,@target_cpu@,$target_cpu,;t t
-s,@target_vendor@,$target_vendor,;t t
-s,@target_os@,$target_os,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@CYGPATH_W@,$CYGPATH_W,;t t
-s,@PACKAGE@,$PACKAGE,;t t
-s,@VERSION@,$VERSION,;t t
-s,@ACLOCAL@,$ACLOCAL,;t t
-s,@AUTOCONF@,$AUTOCONF,;t t
-s,@AUTOMAKE@,$AUTOMAKE,;t t
-s,@AUTOHEADER@,$AUTOHEADER,;t t
-s,@MAKEINFO@,$MAKEINFO,;t t
-s,@install_sh@,$install_sh,;t t
-s,@STRIP@,$STRIP,;t t
-s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
-s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
-s,@mkdir_p@,$mkdir_p,;t t
-s,@AWK@,$AWK,;t t
-s,@SET_MAKE@,$SET_MAKE,;t t
-s,@am__leading_dot@,$am__leading_dot,;t t
-s,@AMTAR@,$AMTAR,;t t
-s,@am__tar@,$am__tar,;t t
-s,@am__untar@,$am__untar,;t t
-s,@glibcxx_builddir@,$glibcxx_builddir,;t t
-s,@glibcxx_srcdir@,$glibcxx_srcdir,;t t
-s,@toplevel_srcdir@,$toplevel_srcdir,;t t
-s,@CC@,$CC,;t t
-s,@ac_ct_CC@,$ac_ct_CC,;t t
-s,@EXEEXT@,$EXEEXT,;t t
-s,@OBJEXT@,$OBJEXT,;t t
-s,@CXX@,$CXX,;t t
-s,@ac_ct_CXX@,$ac_ct_CXX,;t t
-s,@CFLAGS@,$CFLAGS,;t t
-s,@CXXFLAGS@,$CXXFLAGS,;t t
-s,@LN_S@,$LN_S,;t t
-s,@AS@,$AS,;t t
-s,@ac_ct_AS@,$ac_ct_AS,;t t
-s,@AR@,$AR,;t t
-s,@ac_ct_AR@,$ac_ct_AR,;t t
-s,@RANLIB@,$RANLIB,;t t
-s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
-s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
-s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
-s,@MAINT@,$MAINT,;t t
-s,@LIBTOOL@,$LIBTOOL,;t t
-s,@CXXCPP@,$CXXCPP,;t t
-s,@CPPFLAGS@,$CPPFLAGS,;t t
-s,@enable_shared@,$enable_shared,;t t
-s,@enable_static@,$enable_static,;t t
-s,@GLIBCXX_HOSTED_TRUE@,$GLIBCXX_HOSTED_TRUE,;t t
-s,@GLIBCXX_HOSTED_FALSE@,$GLIBCXX_HOSTED_FALSE,;t t
-s,@GLIBCXX_BUILD_PCH_TRUE@,$GLIBCXX_BUILD_PCH_TRUE,;t t
-s,@GLIBCXX_BUILD_PCH_FALSE@,$GLIBCXX_BUILD_PCH_FALSE,;t t
-s,@glibcxx_PCHFLAGS@,$glibcxx_PCHFLAGS,;t t
-s,@CSTDIO_H@,$CSTDIO_H,;t t
-s,@BASIC_FILE_H@,$BASIC_FILE_H,;t t
-s,@BASIC_FILE_CC@,$BASIC_FILE_CC,;t t
-s,@CPP@,$CPP,;t t
-s,@EGREP@,$EGREP,;t t
-s,@check_msgfmt@,$check_msgfmt,;t t
-s,@glibcxx_MOFILES@,$glibcxx_MOFILES,;t t
-s,@glibcxx_POFILES@,$glibcxx_POFILES,;t t
-s,@glibcxx_localedir@,$glibcxx_localedir,;t t
-s,@USE_NLS@,$USE_NLS,;t t
-s,@CLOCALE_H@,$CLOCALE_H,;t t
-s,@CMESSAGES_H@,$CMESSAGES_H,;t t
-s,@CCODECVT_CC@,$CCODECVT_CC,;t t
-s,@CCOLLATE_CC@,$CCOLLATE_CC,;t t
-s,@CCTYPE_CC@,$CCTYPE_CC,;t t
-s,@CMESSAGES_CC@,$CMESSAGES_CC,;t t
-s,@CMONEY_CC@,$CMONEY_CC,;t t
-s,@CNUMERIC_CC@,$CNUMERIC_CC,;t t
-s,@CTIME_H@,$CTIME_H,;t t
-s,@CTIME_CC@,$CTIME_CC,;t t
-s,@CLOCALE_CC@,$CLOCALE_CC,;t t
-s,@CLOCALE_INTERNAL_H@,$CLOCALE_INTERNAL_H,;t t
-s,@ALLOCATOR_H@,$ALLOCATOR_H,;t t
-s,@ALLOCATOR_NAME@,$ALLOCATOR_NAME,;t t
-s,@C_INCLUDE_DIR@,$C_INCLUDE_DIR,;t t
-s,@GLIBCXX_C_HEADERS_C_TRUE@,$GLIBCXX_C_HEADERS_C_TRUE,;t t
-s,@GLIBCXX_C_HEADERS_C_FALSE@,$GLIBCXX_C_HEADERS_C_FALSE,;t t
-s,@GLIBCXX_C_HEADERS_C_STD_TRUE@,$GLIBCXX_C_HEADERS_C_STD_TRUE,;t t
-s,@GLIBCXX_C_HEADERS_C_STD_FALSE@,$GLIBCXX_C_HEADERS_C_STD_FALSE,;t t
-s,@GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@,$GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE,;t t
-s,@GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@,$GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE,;t t
-s,@DEBUG_FLAGS@,$DEBUG_FLAGS,;t t
-s,@GLIBCXX_BUILD_DEBUG_TRUE@,$GLIBCXX_BUILD_DEBUG_TRUE,;t t
-s,@GLIBCXX_BUILD_DEBUG_FALSE@,$GLIBCXX_BUILD_DEBUG_FALSE,;t t
-s,@EXTRA_CXX_FLAGS@,$EXTRA_CXX_FLAGS,;t t
-s,@glibcxx_thread_h@,$glibcxx_thread_h,;t t
-s,@WERROR@,$WERROR,;t t
-s,@SECTION_FLAGS@,$SECTION_FLAGS,;t t
-s,@SECTION_LDFLAGS@,$SECTION_LDFLAGS,;t t
-s,@OPT_LDFLAGS@,$OPT_LDFLAGS,;t t
-s,@LIBMATHOBJS@,$LIBMATHOBJS,;t t
-s,@LIBICONV@,$LIBICONV,;t t
-s,@SYMVER_MAP@,$SYMVER_MAP,;t t
-s,@port_specific_symbol_files@,$port_specific_symbol_files,;t t
-s,@ENABLE_SYMVERS_GNU_TRUE@,$ENABLE_SYMVERS_GNU_TRUE,;t t
-s,@ENABLE_SYMVERS_GNU_FALSE@,$ENABLE_SYMVERS_GNU_FALSE,;t t
-s,@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@,$ENABLE_SYMVERS_DARWIN_EXPORT_TRUE,;t t
-s,@ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@,$ENABLE_SYMVERS_DARWIN_EXPORT_FALSE,;t t
-s,@baseline_dir@,$baseline_dir,;t t
-s,@ATOMICITY_SRCDIR@,$ATOMICITY_SRCDIR,;t t
-s,@ATOMIC_WORD_SRCDIR@,$ATOMIC_WORD_SRCDIR,;t t
-s,@CPU_DEFINES_SRCDIR@,$CPU_DEFINES_SRCDIR,;t t
-s,@ABI_TWEAKS_SRCDIR@,$ABI_TWEAKS_SRCDIR,;t t
-s,@OS_INC_SRCDIR@,$OS_INC_SRCDIR,;t t
-s,@glibcxx_prefixdir@,$glibcxx_prefixdir,;t t
-s,@gxx_include_dir@,$gxx_include_dir,;t t
-s,@glibcxx_toolexecdir@,$glibcxx_toolexecdir,;t t
-s,@glibcxx_toolexeclibdir@,$glibcxx_toolexeclibdir,;t t
-s,@GLIBCXX_INCLUDES@,$GLIBCXX_INCLUDES,;t t
-s,@TOPLEVEL_INCLUDES@,$TOPLEVEL_INCLUDES,;t t
-s,@OPTIMIZE_CXXFLAGS@,$OPTIMIZE_CXXFLAGS,;t t
-s,@WARN_FLAGS@,$WARN_FLAGS,;t t
-s,@LIBSUPCXX_PICFLAGS@,$LIBSUPCXX_PICFLAGS,;t t
-s,@LIBOBJS@,$LIBOBJS,;t t
-s,@LTLIBOBJS@,$LTLIBOBJS,;t t
-CEOF
-
-_ACEOF
-
-  cat >>$CONFIG_STATUS <<\_ACEOF
-  # Split the substitutions into bite-sized pieces for seds with
-  # small command number limits, like on Digital OSF/1 and HP-UX.
-  ac_max_sed_lines=48
-  ac_sed_frag=1 # Number of current file.
-  ac_beg=1 # First line for current file.
-  ac_end=$ac_max_sed_lines # Line after last line for current file.
-  ac_more_lines=:
-  ac_sed_cmds=
-  while $ac_more_lines; do
-    if test $ac_beg -gt 1; then
-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    else
-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    fi
-    if test ! -s $tmp/subs.frag; then
-      ac_more_lines=false
-    else
-      # The purpose of the label and of the branching condition is to
-      # speed up the sed processing (if there are no `@' at all, there
-      # is no need to browse any of the substitutions).
-      # These are the two extra sed commands mentioned above.
-      (echo ':t
-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-      if test -z "$ac_sed_cmds"; then
-	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-      else
-	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-      fi
-      ac_sed_frag=`expr $ac_sed_frag + 1`
-      ac_beg=$ac_end
-      ac_end=`expr $ac_end + $ac_max_sed_lines`
-    fi
-  done
-  if test -z "$ac_sed_cmds"; then
-    ac_sed_cmds=cat
-  fi
-fi # test -n "$CONFIG_FILES"
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-	cat >$tmp/stdin
-	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-  { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
-  ac_builddir=.
-
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
-
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-  esac
-
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
-  # 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.  */
-  if test x"$ac_file" = x-; then
-    configure_input=
-  else
-    configure_input="$ac_file.  "
-  fi
-  configure_input=$configure_input"Generated from `echo $ac_file_in |
-				     sed 's,.*/,,'` by configure."
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-	 # Absolute (can't be DOS-style, as IFS=:)
-	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 echo "$f";;
-      *) # Relative
-	 if test -f "$f"; then
-	   # Build tree
-	   echo "$f"
-	 elif test -f "$srcdir/$f"; then
-	   # Source tree
-	   echo "$srcdir/$f"
-	 else
-	   # /dev/null tree
-	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t
-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-  rm -f $tmp/stdin
-  if test x"$ac_file" != x-; then
-    mv $tmp/out $ac_file
-  else
-    cat $tmp/out
-    rm -f $tmp/out
-  fi
-
-  # Run the commands associated with the file.
-  case $ac_file in
-    scripts/testsuite_flags ) chmod +x scripts/testsuite_flags ;;
-  esac
-done
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-#
-# CONFIG_HEADER section.
-#
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
-ac_dB='[	 ].*$,\1#\2'
-ac_dC=' '
-ac_dD=',;t'
-# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
-ac_uB='$,\1#\2define\3'
-ac_uC=' '
-ac_uD=',;t'
-
-for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-	cat >$tmp/stdin
-	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-	 # Absolute (can't be DOS-style, as IFS=:)
-	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 # Do quote $f, to prevent DOS paths from being IFS'd.
-	 echo "$f";;
-      *) # Relative
-	 if test -f "$f"; then
-	   # Build tree
-	   echo "$f"
-	 elif test -f "$srcdir/$f"; then
-	   # Source tree
-	   echo "$srcdir/$f"
-	 else
-	   # /dev/null tree
-	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-	 fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-  # Remove the trailing spaces.
-  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
-
-_ACEOF
-
-# Transform confdefs.h into two sed scripts, `conftest.defines' and
-# `conftest.undefs', that substitutes the proper values into
-# config.h.in to produce config.h.  The first handles `#define'
-# templates, and the second `#undef' templates.
-# And first: Protect against being on the right side of a sed subst in
-# config.status.  Protect against being in an unquoted here document
-# in config.status.
-rm -f conftest.defines conftest.undefs
-# Using a here document instead of a string reduces the quoting nightmare.
-# Putting comments in sed scripts is not portable.
-#
-# `end' is used to avoid that the second main sed command (meant for
-# 0-ary CPP macros) applies to n-ary macro definitions.
-# See the Autoconf documentation for `clear'.
-cat >confdef2sed.sed <<\_ACEOF
-s/[\\&,]/\\&/g
-s,[\\$`],\\&,g
-t clear
-: clear
-s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*\)\(([^)]*)\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
-t end
-s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
-: end
-_ACEOF
-# If some macros were called several times there might be several times
-# the same #defines, which is useless.  Nevertheless, we may not want to
-# sort them, since we want the *last* AC-DEFINE to be honored.
-uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
-sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
-rm -f confdef2sed.sed
-
-# This sed command replaces #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.
-cat >>conftest.undefs <<\_ACEOF
-s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
-_ACEOF
-
-# Break up conftest.defines because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
-echo '  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
-echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
-echo '  :' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.defines >/dev/null
-do
-  # Write a limited-size here document to $tmp/defines.sed.
-  echo '  cat >$tmp/defines.sed <>$CONFIG_STATUS
-  # Speed up: don't consider the non `#define' lines.
-  echo '/^[	 ]*#[	 ]*define/!b' >>$CONFIG_STATUS
-  # Work around the forget-to-reset-the-flag bug.
-  echo 't clr' >>$CONFIG_STATUS
-  echo ': clr' >>$CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
-  echo 'CEOF
-  sed -f $tmp/defines.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
-  rm -f conftest.defines
-  mv conftest.tail conftest.defines
-done
-rm -f conftest.defines
-echo '  fi # grep' >>$CONFIG_STATUS
-echo >>$CONFIG_STATUS
-
-# Break up conftest.undefs because some shells have a limit on the size
-# of here documents, and old seds have small limits too (100 cmds).
-echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
-rm -f conftest.tail
-while grep . conftest.undefs >/dev/null
-do
-  # Write a limited-size here document to $tmp/undefs.sed.
-  echo '  cat >$tmp/undefs.sed <>$CONFIG_STATUS
-  # Speed up: don't consider the non `#undef'
-  echo '/^[	 ]*#[	 ]*undef/!b' >>$CONFIG_STATUS
-  # Work around the forget-to-reset-the-flag bug.
-  echo 't clr' >>$CONFIG_STATUS
-  echo ': clr' >>$CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
-  echo 'CEOF
-  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
-  rm -f $tmp/in
-  mv $tmp/out $tmp/in
-' >>$CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
-  rm -f conftest.undefs
-  mv conftest.tail conftest.undefs
-done
-rm -f conftest.undefs
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-  # 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.  */
-  if test x"$ac_file" = x-; then
-    echo "/* Generated by configure.  */" >$tmp/config.h
-  else
-    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
-  fi
-  cat $tmp/in >>$tmp/config.h
-  rm -f $tmp/in
-  if test x"$ac_file" != x-; then
-    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
-      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
-echo "$as_me: $ac_file is unchanged" >&6;}
-    else
-      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_file" : 'X\(//\)[^/]' \| \
-	 X"$ac_file" : 'X\(//\)$' \| \
-	 X"$ac_file" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-      { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
-      rm -f $ac_file
-      mv $tmp/config.h $ac_file
-    fi
-  else
-    cat $tmp/config.h
-    rm -f $tmp/config.h
-  fi
-# Compute $ac_file's index in $config_headers.
-_am_stamp_count=1
-for _am_header in $config_headers :; do
-  case $_am_header in
-    $ac_file | $ac_file:* )
-      break ;;
-    * )
-      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
-  esac
-done
-echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
-$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X$ac_file : 'X\(//\)[^/]' \| \
-	 X$ac_file : 'X\(//\)$' \| \
-	 X$ac_file : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X$ac_file |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`/stamp-h$_am_stamp_count
-done
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-#
-# CONFIG_COMMANDS section.
-#
-for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
-  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
-  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
-  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
-$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$ac_dest" : 'X\(//\)[^/]' \| \
-	 X"$ac_dest" : 'X\(//\)$' \| \
-	 X"$ac_dest" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_dest" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-  { if $as_mkdir_p; then
-    mkdir -p "$ac_dir"
-  else
-    as_dir="$ac_dir"
-    as_dirs=
-    while test ! -d "$as_dir"; do
-      as_dirs="$as_dir $as_dirs"
-      as_dir=`(dirname "$as_dir") 2>/dev/null ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| \
-	 .     : '\(.\)' 2>/dev/null ||
-echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-  	  /^X\(\/\/\)$/{ s//\1/; q; }
-  	  /^X\(\/\).*/{ s//\1/; q; }
-  	  s/.*/./; q'`
-    done
-    test ! -n "$as_dirs" || mkdir $as_dirs
-  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }; }
-
-  ac_builddir=.
-
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-
-# Do not use `cd foo && pwd` to compute absolute paths, because
-# the directories may not exist.
-case `pwd` in
-.) ac_abs_builddir="$ac_dir";;
-*)
-  case "$ac_dir" in
-  .) ac_abs_builddir=`pwd`;;
-  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
-  *) ac_abs_builddir=`pwd`/"$ac_dir";;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_builddir=${ac_top_builddir}.;;
-*)
-  case ${ac_top_builddir}. in
-  .) ac_abs_top_builddir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
-  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_srcdir=$ac_srcdir;;
-*)
-  case $ac_srcdir in
-  .) ac_abs_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
-  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
-  esac;;
-esac
-case $ac_abs_builddir in
-.) ac_abs_top_srcdir=$ac_top_srcdir;;
-*)
-  case $ac_top_srcdir in
-  .) ac_abs_top_srcdir=$ac_abs_builddir;;
-  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
-  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
-  esac;;
-esac
-
-
-  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
-echo "$as_me: executing $ac_dest commands" >&6;}
-  case $ac_dest in
-    default-1 )
-# 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 ;;
-    default ) if test -n "$CONFIG_FILES"; then
-   # 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.
-   cat > vpsed << \_EOF
-s!`test -f '$<' || echo '$(srcdir)/'`!!
-_EOF
-   for i in $SUBDIRS; do
-    case $CONFIG_FILES in
-     *${i}/Makefile*)
-       #echo "Adding MULTISUBDIR to $i/Makefile"
-       sed -f vpsed $i/Makefile > tmp
-       grep '^MULTISUBDIR =' Makefile >> tmp
-       mv tmp $i/Makefile
-       ;;
-    esac
-   done
-   rm vpsed
- fi
- (cd include && ${MAKE-make})
- ;;
-  esac
-done
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-
-# 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 || { (exit 1); exit 1; }
-fi
-
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.ac b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.ac
deleted file mode 100644
index 9db10226d..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.ac
+++ /dev/null
@@ -1,374 +0,0 @@
-# Process this file with autoreconf to produce a configure script.
-
-AC_PREREQ(2.59)
-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:7: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)
-#  -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 -Wall -Wno-portability -Wno-override])
-AH_TEMPLATE(PACKAGE, [Name of package])
-AH_TEMPLATE(VERSION, [Version number of package])
-
-# Runs configure.host, finds CC, CXX, and assorted other critical bits.  Sets
-# up critical shell variables.
-GLIBCXX_CONFIGURE
-
-AC_LIBTOOL_DLOPEN
-AM_PROG_LIBTOOL
-AC_SUBST(enable_shared)
-AC_SUBST(enable_static)
-
-# 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
-
-# Check for compiler support that doesn't require linking.
-GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
-GLIBCXX_ENABLE_PCH($is_hosted)
-
-# Enable all the variable C++ runtime options.  
-GLIBCXX_ENABLE_CSTDIO
-GLIBCXX_ENABLE_CLOCALE
-GLIBCXX_ENABLE_ALLOCATOR
-GLIBCXX_ENABLE_CHEADERS($c_model)  dnl c_model from configure.host
-GLIBCXX_ENABLE_C99([yes])
-GLIBCXX_ENABLE_LONG_LONG([yes])
-GLIBCXX_ENABLE_WCHAR_T([yes])
-GLIBCXX_ENABLE_CONCEPT_CHECKS([no])
-GLIBCXX_ENABLE_DEBUG_FLAGS(["-g3 -O0"])
-GLIBCXX_ENABLE_DEBUG([no])
-GLIBCXX_ENABLE_CXX_FLAGS
-GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING([no])
-
-# No surprises, no surprises...
-GLIBCXX_ENABLE_THREADS
-if test $atomicity_dir = cpu/generic ; then
-  AC_MSG_WARN([No native atomic operations are provided for this platform.])
-  if test $target_thread_file = single; 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
-
-
-if $GLIBCXX_IS_NATIVE; then
-
-  # We can do more elaborate tests that assume a working linker.
-  CANADIAN=no
-
-  # Check for available headers.
-  AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
-  machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
-  sys/types.h sys/ipc.h sys/sem.h])
-
-  GLIBCXX_CHECK_COMPILER_FEATURES
-  GLIBCXX_CHECK_LINKER_FEATURES
-  GLIBCXX_CHECK_MATH_SUPPORT
-  GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
-  GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-  GLIBCXX_CHECK_ICONV_SUPPORT
-  GLIBCXX_CHECK_STDLIB_SUPPORT
-
-  # 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 the __streamoff_base_type typedef.
-  GLIBCXX_CHECK_INT64_T
-
-  # For LFS support.
-  GLIBCXX_CHECK_LFS
-
-  # For TLS support.
-  GCC_CHECK_TLS
-
-  AC_LC_MESSAGES
-
-  AC_TRY_COMPILE(
-    [#include ],
-    [sigjmp_buf env;
-     while (! sigsetjmp (env, 1))
-       siglongjmp (env, 1);
-    ],
-    [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])])
-
-  AC_FUNC_MMAP
-
-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_COMPILER_FEATURES
-  # GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
-  # 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_FUNC_MMAP
-    AC_DEFINE(HAVE_MMAP)
-
-    AC_DEFINE(HAVE_ACOSF)
-    AC_DEFINE(HAVE_ASINF)
-    AC_DEFINE(HAVE_ATAN2F)
-    AC_DEFINE(HAVE_ATANF)
-    AC_DEFINE(HAVE_CEILF)
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    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_S_ISREG)
-    AC_DEFINE(HAVE_S_IFREG)
-  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_COPYSIGNL)
-    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
-
-# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
-GLIBCXX_ENABLE_SYMVERS([yes])
-
-# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
-GLIBCXX_CONFIGURE_TESTSUITE
-
-# Propagate the target-specific source directories through the build chain.
-ATOMICITY_SRCDIR=config/${atomicity_dir}
-ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
-CPU_DEFINES_SRCDIR=config/${cpu_defines_dir}
-OS_INC_SRCDIR=config/${os_include_dir}
-ABI_TWEAKS_SRCDIR=config/${abi_tweaks_dir}
-AC_SUBST(ATOMICITY_SRCDIR)
-AC_SUBST(ATOMIC_WORD_SRCDIR)
-AC_SUBST(CPU_DEFINES_SRCDIR)
-AC_SUBST(ABI_TWEAKS_SRCDIR)
-AC_SUBST(OS_INC_SRCDIR)
-
-# Determine cross-compile flags and AM_CONDITIONALs.
-#AC_SUBST(GLIBCXX_IS_NATIVE)
-#AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
-# from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT:
-#AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH,  test $need_libmath = 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 ${CONFIG_SHELL-/bin/sh} ./libtool --tag CXX --features |
-   grep "enable shared" > /dev/null;
-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_FOREACH([DIR], glibcxx_SUBDIRS, [DIR/Makefile ])
-  )
-AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags])
-
-dnl These commands are run at the end of config.status:
-AC_CONFIG_COMMANDS([default],
-[if test -n "$CONFIG_FILES"; then
-   # 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.
-   cat > vpsed << \_EOF
-s!`test -f '$<' || echo '$(srcdir)/'`!!
-_EOF
-   for i in $SUBDIRS; do
-    case $CONFIG_FILES in
-     *${i}/Makefile*)
-       #echo "Adding MULTISUBDIR to $i/Makefile"
-       sed -f vpsed $i/Makefile > tmp
-       grep '^MULTISUBDIR =' Makefile >> tmp
-       mv tmp $i/Makefile
-       ;;
-    esac
-   done
-   rm vpsed
- fi
- (cd include && ${MAKE-make})
-],
-[
-# Variables needed in config.status (file generation) which aren't already
-# passed by autoconf.
-SUBDIRS="$SUBDIRS"
-])
-
-dnl And this actually makes things happen:
-AC_OUTPUT
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.host b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.host
deleted file mode 100644
index de4851714..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/configure.host
+++ /dev/null
@@ -1,303 +0,0 @@
-# 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_std.
-#
-#   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.
-#
-#   cpu_defines_dir        location of cpu_defines.h
-#                          defaults to 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_std
-c_compatibility=no
-atomic_word_dir=cpu/generic
-cpu_defines_dir=cpu/generic
-
-# HOST-SPECIFIC OVERRIDES
-# Set any CPU-dependent bits.
-# Here we override defaults and catch more general cases due to naming
-# conventions (e.g., chip_name* to catch all variants).
-
-# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
-case "${host_cpu}" in
-  alpha*)
-    try_cpu=alpha
-    ;;
-  arm* | xscale | ep9312)
-    try_cpu=arm
-    ;;
-  i[567]86 | x86_64)
-    try_cpu=i486
-    ;;
-  hppa*)
-    try_cpu=hppa
-    ;;
-  mips*)
-    # NB: cpu/mips/atomicity.h needs MIPS II or above.  
-    # Of course, there is no sane way to test for this, no ABI macro,
-    # and no consistent host_cpu name differentiation. Therefore, only
-    # use it where it is known to be safe, ie it runs linux (see below).
-    try_cpu=generic
-    ;;
-  m680[246]0)
-    try_cpu=m68k
-    ;;
-  powerpc* | rs6000)
-    try_cpu=powerpc
-    ;;
-  s390x)
-    try_cpu=s390
-    ;;
-  sparc* | ultrasparc)
-    try_cpu=sparc
-    ;;
-  *)
-    if test -d ${glibcxx_srcdir}/config/cpu/${host_cpu}; then
-      try_cpu=${host_cpu}
-    else
-      try_cpu=generic
-    fi
-    ;;
-esac
-
-# Set specific CPU overrides for atomic_word_dir. Most can just use generic.
-# THIS TABLE IS SORTED.  KEEP IT THAT WAY.
-case "${host_cpu}" in
-  cris*)
-    atomic_word_dir=cpu/cris
-    ;;
-  sparc* | ultrasparc)
-    atomic_word_dir=cpu/sparc
-    ;;
-esac
-
-# 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
-
-# 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}
-abi_baseline_pair=${try_cpu}-${host_os}
-unset try_cpu
-
-if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/atomicity.h ; then
-  atomicity_dir=$cpu_include_dir
-else
-  atomicity_dir="cpu/generic"
-fi
-
-if test -f ${glibcxx_srcdir}/config/${cpu_include_dir}/cxxabi_tweaks.h ; then
-  abi_tweaks_dir=$cpu_include_dir
-else
-  abi_tweaks_dir="cpu/generic"
-fi
-
-# Set any OS-dependent bits.
-# Set the os_include_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"
-    ;;
-  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"
-    os_include_dir="os/bsd/darwin"
-    ;;
-  *djgpp*)      # leading * picks up "msdosdjgpp"
-    os_include_dir="os/djgpp"
-    ;;
-  freebsd*)
-    os_include_dir="os/bsd/freebsd"
-    ;;
-  gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
-    os_include_dir="os/gnu-linux"
-    ;;
-  hpux*)
-    os_include_dir="os/hpux"
-    ;;
-  irix[1-6] | irix[1-5].* | irix6.[0-4]*)
-    # This is known to work on at least IRIX 5.2 and 6.3.
-    os_include_dir="os/irix/irix5.2"
-    atomicity_dir=os/irix
-    atomic_word_dir=os/irix
-    ;;
-  irix6.5*)
-    os_include_dir="os/irix/irix6.5"
-    atomicity_dir=os/irix
-    atomic_word_dir=os/irix
-    ;;
-  mingw32*)
-    os_include_dir="os/mingw32"
-    ;;
-  netbsd*)
-    os_include_dir="os/bsd/netbsd"
-    ;;
-  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.5 | solaris2.5.[0-9])
-    os_include_dir="os/solaris/solaris2.5"
-    ;;
-  solaris2.6)
-    os_include_dir="os/solaris/solaris2.6"
-    ;;
-  solaris2.[789] | solaris2.1[0-9])
-    os_include_dir="os/solaris/solaris2.7"
-    ;;
-  tpf)
-    os_include_dir="os/tpf"
-    ;;
-  vxworks)
-    os_include_dir="os/vxworks"
-    ;;
-  windiss*)
-    os_include_dir="os/windiss"
-    ;;
-  *)
-    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
-  alpha*-*-freebsd5*)
-    abi_baseline_pair="alpha-freebsd5"
-    ;;
-  arm*-*-linux*)
-    abi_baseline_pair="arm-linux-gnu"
-    ;;
-  i*86-*-freebsd4*)
-    abi_baseline_pair="i386-freebsd4"
-    ;;
-  i*86-*-freebsd5*)
-    abi_baseline_pair="i386-freebsd5"
-    ;;
-  mips*-*-linux*)
-    atomicity_dir="cpu/mips"
-    abi_baseline_pair="mips-linux-gnu"
-    cpu_include_dir="cpu/mips"
-    ;;
-  powerpc*-*-darwin*)
-    port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver"
-    ;;
-  powerpc64-*-linux*)
-    abi_baseline_pair="powerpc64-linux-gnu"
-    ;;
-  s390-*-linux*)
-    abi_baseline_pair="s390-linux-gnu"
-    ;;
-  s390x-*-linux*)
-    abi_baseline_pair="s390x-linux-gnu"
-    ;;
-  sparc*-*-freebsd5*)
-    abi_baseline_pair="sparc-freebsd5"
-    ;;
-  x86_64-*-linux*)
-    abi_baseline_pair="x86_64-linux-gnu"
-    ;;
-esac
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/crossconfig.m4 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/crossconfig.m4
deleted file mode 100644
index ec43775be..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/crossconfig.m4
+++ /dev/null
@@ -1,484 +0,0 @@
-dnl
-dnl This file contains details for non-natives 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.
-    ;;
-
-  *-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.
-    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
-    machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
-    sys/types.h])
-
-    GLIBCXX_CHECK_COMPILER_FEATURES
-    # Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
-    GLIBCXX_CHECK_MATH_SUPPORT
-    GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    GLIBCXX_CHECK_STDLIB_SUPPORT
-
-    # 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
-
-    AC_DEFINE(HAVE_LC_MESSAGES)
-
-    AC_TRY_COMPILE(
-      [#include ],
-      [sigjmp_buf env;
-       while (! sigsetjmp (env, 1))
-         siglongjmp (env, 1);
-    ],
-    [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])])
-
-    AC_DEFINE(HAVE_MMAP)
-    ;;
-
-  *djgpp)
-    AC_CHECK_HEADERS([float.h ieeefp.h inttypes.h locale.h \
-      memory.h stdint.h stdlib.h strings.h string.h unistd.h \
-      wchar.h wctype.h machine/endian.h sys/ioctl.h sys/param.h \
-      sys/resource.h sys/stat.h sys/time.h sys/types.h sys/uio.h])
-    GLIBCXX_CHECK_COMPILER_FEATURES
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_MATH_SUPPORT
-    GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    GLIBCXX_CHECK_STDLIB_SUPPORT
-    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-    AC_DEFINE(HAVE_WRITEV)
-    ;;
-
-  *-freebsd*)
-    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h locale.h float.h inttypes.h sys/resource.h sys/stat.h \
-      sys/time.h unistd.h])
-    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-    AC_SUBST(SECTION_FLAGS) 
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    AC_DEFINE(HAVE_LC_MESSAGES)
-    AC_DEFINE(HAVE_GETPAGESIZE)
-    AC_DEFINE(HAVE_SETENV)
-    AC_DEFINE(HAVE_SIGSETJMP)
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    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_MMAP)
-    AC_DEFINE(HAVE_ACOSF)
-    AC_DEFINE(HAVE_ASINF)
-    AC_DEFINE(HAVE_ATAN2F)
-    AC_DEFINE(HAVE_ATANF)
-    AC_DEFINE(HAVE_CEILF)
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    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*)
-    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h locale.h float.h inttypes.h])
-    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-    AC_SUBST(SECTION_FLAGS)
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    AC_DEFINE(HAVE_FREXPF)
-    AC_DEFINE(HAVE_HYPOT)
-    case "$target" in
-      *-hpux10*)
-	AC_DEFINE(HAVE_FINITE)
-	AC_DEFINE(HAVE_FINITEF)
-	AC_DEFINE(HAVE_ISINF)
-	AC_DEFINE(HAVE_ISINFF)
-	AC_DEFINE(HAVE_ISNAN)
-	AC_DEFINE(HAVE_ISNANF)
-	;;
-    esac
-    ;;
-  *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
-    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
-    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-    AC_SUBST(SECTION_FLAGS)
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-
-    # For LFS.
-    AC_DEFINE(HAVE_INT64_T)
-    case "$target" in
-      *-uclinux*)
-        # Don't enable LFS with uClibc
-        ;;
-      *)
-        AC_DEFINE(_GLIBCXX_USE_LFS)
-    esac
-
-    # 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
-
-    AC_DEFINE(HAVE_ACOSF)
-    AC_DEFINE(HAVE_ASINF)
-    AC_DEFINE(HAVE_ATANF)
-    AC_DEFINE(HAVE_ATAN2F)
-    AC_DEFINE(HAVE_CEILF)
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    AC_DEFINE(HAVE_COSF)
-    AC_DEFINE(HAVE_COSHF)
-    AC_DEFINE(HAVE_EXPF)
-    AC_DEFINE(HAVE_FABSF)
-    AC_DEFINE(HAVE_FINITE)
-    AC_DEFINE(HAVE_FINITEF)
-    AC_DEFINE(HAVE_FLOORF)
-    AC_DEFINE(HAVE_FMODF)
-    AC_DEFINE(HAVE_FREXPF)
-    AC_DEFINE(HAVE_HYPOT)
-    AC_DEFINE(HAVE_HYPOTF)
-    AC_DEFINE(HAVE_ISINF)
-    AC_DEFINE(HAVE_ISINFF)
-    AC_DEFINE(HAVE_ISNAN)
-    AC_DEFINE(HAVE_ISNANF)
-    AC_DEFINE(HAVE_LOGF)
-    AC_DEFINE(HAVE_LOG10F)
-    AC_DEFINE(HAVE_MODFF)
-    AC_DEFINE(HAVE_SINF)
-    AC_DEFINE(HAVE_SINHF)
-    AC_DEFINE(HAVE_SINCOS)
-    AC_DEFINE(HAVE_SINCOSF)
-    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_ACOSL)
-      AC_DEFINE(HAVE_ASINL)
-      AC_DEFINE(HAVE_ATANL)
-      AC_DEFINE(HAVE_ATAN2L)
-      AC_DEFINE(HAVE_CEILL)
-      AC_DEFINE(HAVE_COPYSIGNL)
-      AC_DEFINE(HAVE_COSL)
-      AC_DEFINE(HAVE_COSHL)
-      AC_DEFINE(HAVE_EXPL)
-      AC_DEFINE(HAVE_FABSL)
-      AC_DEFINE(HAVE_FINITEL)
-      AC_DEFINE(HAVE_FLOORL)
-      AC_DEFINE(HAVE_FMODL)
-      AC_DEFINE(HAVE_FREXPL)
-      AC_DEFINE(HAVE_HYPOTL)
-      AC_DEFINE(HAVE_ISINFL)
-      AC_DEFINE(HAVE_ISNANL)
-      AC_DEFINE(HAVE_LOGL)
-      AC_DEFINE(HAVE_LOG10L)
-      AC_DEFINE(HAVE_MODFL)
-      AC_DEFINE(HAVE_POWL)
-      AC_DEFINE(HAVE_SINL)
-      AC_DEFINE(HAVE_SINHL)
-      AC_DEFINE(HAVE_SINCOSL)
-      AC_DEFINE(HAVE_SQRTL)
-      AC_DEFINE(HAVE_TANL)
-      AC_DEFINE(HAVE_TANHL)
-    fi
-    ;;
-  *-mingw32*)
-    AC_CHECK_HEADERS([sys/types.h locale.h float.h])
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    ;;
-  *-netbsd*)
-    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-      fp.h locale.h float.h inttypes.h])
-    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-    AC_SUBST(SECTION_FLAGS) 
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    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)
-    AC_CHECK_HEADERS([nan.h ieeefp.h sys/isa_defs.h sys/machine.h \
-      sys/types.h locale.h float.h inttypes.h])
-    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-    AC_SUBST(SECTION_FLAGS)
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    AC_DEFINE(HAVE_HYPOT)
-    AC_DEFINE(HAVE_ISINF)
-    AC_DEFINE(HAVE_ISNAN)
-
-    # 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
-    ;;
-  *-qnx6.1* | *-qnx6.2*)
-    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-    AC_SUBST(SECTION_FLAGS) 
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    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)
-    ;;
-  *-solaris*)
-    case "$target" in
-    #  *-solaris2.5)
-    #    os_include_dir="os/solaris/solaris2.5"
-    #    ;;
-    #  *-solaris2.6)
-    #    os_include_dir="os/solaris/solaris2.6"
-    #    ;;
-      *-solaris2.7 | *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
-         AC_DEFINE(HAVE_GETPAGESIZE)
-         AC_DEFINE(HAVE_SIGSETJMP)
-         AC_DEFINE(HAVE_MBSTATE_T)
-         AC_DEFINE(HAVE_POLL)
-         AC_DEFINE(HAVE_S_ISREG)
-         AC_DEFINE(HAVE_LC_MESSAGES)
-         AC_DEFINE(HAVE_FINITE)
-         AC_DEFINE(HAVE_FPCLASS)
-         AC_DEFINE(HAVE_GETPAGESIZE)
-         AC_DEFINE(HAVE_NL_LANGINFO)
-         AC_DEFINE(HAVE_ICONV)
-         AC_DEFINE(HAVE_ICONV_CLOSE)
-         AC_DEFINE(HAVE_ICONV_OPEN)
-         # Look for the pieces required for wchar_t support in order to
-         # get all the right HAVE_* macros defined.
-         GLIBCXX_CHECK_ICONV_SUPPORT
-         # All of the dependencies for wide character support are here, so
-         # turn it on.  This requires some syncronization with the
-         # GLIBCXX_CHECK_ICONV_SUPPORT in acinclude.m4
-         AC_DEFINE(_GLIBCXX_USE_WCHAR_T) 
-         # Are these tested for even when cross?
-         AC_DEFINE(HAVE_FLOAT_H)
-         AC_DEFINE(HAVE_IEEEFP_H)
-         AC_DEFINE(HAVE_INTTYPES_H)
-         AC_DEFINE(HAVE_LOCALE_H)
-         AC_DEFINE(HAVE_NAN_H)
-         AC_DEFINE(HAVE_SYS_FILIO_H)
-         AC_DEFINE(HAVE_SYS_IOCTL_H)
-         AC_DEFINE(HAVE_SYS_ISA_DEFS_H)
-         AC_DEFINE(HAVE_SYS_RESOURCE_H)
-         AC_DEFINE(HAVE_SYS_TIME_H)
-         AC_DEFINE(HAVE_SYS_TYPES_H)
-         AC_DEFINE(HAVE_UNISTD_H)
-         AC_DEFINE(HAVE_WCHAR_H)
-         AC_DEFINE(HAVE_WCTYPE_H)
-         AC_DEFINE(HAVE_LIBM)
-        ;;
-    esac
-    case "$target" in
-      sparc*-*-solaris2.8 | sparc*-*-solaris2.9 | sparc*-*-solaris2.10)
-        # I saw these on sparc-sun-solaris2.8, but not 2.6, and not on i386
-        AC_DEFINE(HAVE___BUILTIN_ABS)
-        AC_DEFINE(HAVE___BUILTIN_LABS)
-        AC_DEFINE(HAVE___BUILTIN_FABS)
-        AC_DEFINE(HAVE___BUILTIN_FABSF)
-        AC_DEFINE(HAVE___BUILTIN_FABSL)
-        AC_DEFINE(HAVE___BUILTIN_COS)
-        AC_DEFINE(HAVE___BUILTIN_COSF)
-        AC_DEFINE(HAVE___BUILTIN_SIN)
-        AC_DEFINE(HAVE___BUILTIN_SINF)
-       ;;
-    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_MMAP) 
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_ISNAN)
-    AC_DEFINE(HAVE_ISNANF)
-    AC_DEFINE(HAVE_MODFF)
-    AC_DEFINE(HAVE_HYPOT)
-    ;;
-  *-tpf)
-    AC_CHECK_HEADERS([nan.h endian.h machine/endian.h  \
-      sys/param.h sys/types.h locale.h float.h inttypes.h])
-    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-    AC_SUBST(SECTION_FLAGS)
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-    GLIBCXX_CHECK_ICONV_SUPPORT
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    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_MMAP)
-    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)
-    ;;
-  *-windiss*)
-    AC_DEFINE(HAVE_ACOSF)
-    AC_DEFINE(HAVE_ACOSL)
-    AC_DEFINE(HAVE_ASINF)
-    AC_DEFINE(HAVE_ASINL)
-    AC_DEFINE(HAVE_ATAN2F)
-    AC_DEFINE(HAVE_ATAN2L)
-    AC_DEFINE(HAVE_ATANF)
-    AC_DEFINE(HAVE_ATANL)
-    AC_DEFINE(HAVE_CEILF)
-    AC_DEFINE(HAVE_CEILL)
-    AC_DEFINE(HAVE_COPYSIGN)
-    AC_DEFINE(HAVE_COPYSIGNF)
-    AC_DEFINE(HAVE_COSF)
-    AC_DEFINE(HAVE_COSL)
-    AC_DEFINE(HAVE_COSHF)
-    AC_DEFINE(HAVE_COSHL)
-    AC_DEFINE(HAVE_EXPF)
-    AC_DEFINE(HAVE_EXPL)
-    AC_DEFINE(HAVE_FABSF)
-    AC_DEFINE(HAVE_FABSL)
-    AC_DEFINE(HAVE_FLOORF)
-    AC_DEFINE(HAVE_FLOORL)
-    AC_DEFINE(HAVE_FMODF)
-    AC_DEFINE(HAVE_FMODL)
-    AC_DEFINE(HAVE_FREXPF)
-    AC_DEFINE(HAVE_FREXPL)
-    AC_DEFINE(HAVE_LDEXPF)
-    AC_DEFINE(HAVE_LDEXPL)
-    AC_DEFINE(HAVE_LOG10F)
-    AC_DEFINE(HAVE_LOG10L)
-    AC_DEFINE(HAVE_LOGF)
-    AC_DEFINE(HAVE_MODFF)
-    AC_DEFINE(HAVE_MODFL)
-    AC_DEFINE(HAVE_POWF)
-    AC_DEFINE(HAVE_POWL)
-    AC_DEFINE(HAVE_SINF)
-    AC_DEFINE(HAVE_SINL)
-    AC_DEFINE(HAVE_SINHF)
-    AC_DEFINE(HAVE_SINHL)
-    AC_DEFINE(HAVE_SQRTF)
-    AC_DEFINE(HAVE_SQRTL)
-    AC_DEFINE(HAVE_TANF)
-    AC_DEFINE(HAVE_TANL)
-    AC_DEFINE(HAVE_TANHF)
-    AC_DEFINE(HAVE_TANHL)
-    ;;
-  *)
-    AC_MSG_ERROR([No support for this host/target combination.])
-   ;;
-esac
-])
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/Intro.3 b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/Intro.3
deleted file mode 100644
index 281eda02f..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/Intro.3
+++ /dev/null
@@ -1,141 +0,0 @@
-.\" t
-.\" This man page is released under the FDL as part of libstdc++-v3.
-.TH C++Intro 3 "20 May 2004" "GNU libstdc++-v3" "Standard C++ Library"
-.SH NAME
-C++Intro \- Introduction to the GNU libstdc++-v3 man pages
-.SH DESCRIPTION
-This man page serves as a brief introduction to the GNU implementation of
-the Standard C++ Library.  For a better introduction and more complete
-documentation, see the
-.B libstdc++-v3
-homepage listed at the end.
-.P
-All standard library entities are declared within
-.I namespace std
-and have manual entries beginning with "std::".  For example, to see
-documentation of the template class
-.I std::vector
-one would use "man std::vector".  Some entities do not have a separate man
-page; for those see the main listing in "man Namespace_std".
-.P
-All the man pages are automatically generated by Doxygen.  For more
-information on this tool, see the HTML counterpart to these man pages.
-.P
-Some man pages do not correspond to individual classes or functions.  Rather
-they describe categories of the Standard Library.  (For a more thorough
-introduction to the various categories, consult a text such as Josuttis'
-or Austern's.)  These category pages are:
-.P
-.\" These are separated by ONE TAB.  Nothing else.  I don't like it either.
-.TS
-lB l.
-C++Intro	This page.
-Namespace_std	A listing of the contents of std::.
-Namespace___gnu_cxx	A listing of the contents of __gnu_cxx::.
-Containers	An introduction to container classes.
-Sequences	Linear containers.
-Assoc_containers	Key-based containers.
-Iterator_types	Programatically distinguishing iterators/pointers.
-Intro_functors	An introduction to function objects, or functors.
-Arithmetic_functors	Functors for basic math.
-Binder_functors	Functors which "remember" an argument.
-Comparison_functors	Functors wrapping built-in comparisons.
-Func_ptr_functors	Functors for use with pointers to functions.
-Logical_functors	Functors wrapping the Boolean operations.
-Member_ptr_functor	Functors for use with pointers to members.
-Negation_functors	Functors which negate their contents.
-SGIextensions	A list of the extensions from the SGI STL subset.
-
-.TE
-.P
-The HTML documentation typically goes into much more depth.
-.SH FILES
-Lots!
-.SS Standard Headers
-These headers will be found automatically, unless you instruct the compiler
-otherwise.
-.TS
-lB lB lB lB.
-          
-                 
-             
-             
-             
-            
-646               
-                
-             
-                    
-             
-      
-.TE
-.SS Backwards-Compatibility Headers
-For GCC 3.0 these headers will be found automatically, unless you instruct
-the compiler otherwise.  You should not depend on this, instead you should
-read FAQ 5.4 and use a
-.B backward/
-prefix.
-.TS
-lB lB lB lB.
-                
-       
-         
-                 
-          
-           
-              
-            
-                
-.TE
-.SS Extension Headers
-These headers will only be found automatically if you include the leading
-.B ext/
-in the name.  Otherwise you need to read FAQ 5.4.
-.\" Easy way to generate these columns of headers is to use GNU ls(1):
-.\" ls -w 40 file1 file2... | sed 's=[a-z_][a-z_]*==g'
-.TS
-lB lB.
-                        
-           
-                  
-                        
-                                
-       
-        
-         
-      
-.TE
-.SS Libraries
-.TP
-.I libstdc++.a
-The library implementation in static archive form.  If you did not configure
-libstdc++-v3 to use shared libraries, this will always be used.  Otherwise
-it will only be used if the user requests it.
-.TP
-.I libsupc++.a
-This library contains C++ language support routines.  Usually you will never
-need to know about it, but it can be useful.  See FAQ 2.5.
-.TP
-.I libstdc++.so[.N]
-The library implementation in shared object form.  This will be used in
-preference to the static archive form by default.  N will be a number equal
-to or greater than 3.  If N is in the 2.x series, then you are looking at
-the old libstdc++-v2 library, which we do not maintain.
-.TP
-.I libstdc++.la
-.TP
-.I libsupc++.la
-These are Libtool library files, and should only be used when working with
-that tool.
-.SH CONFORMING TO
-Almost conforming to
-.BI "International Standard ISO/IEC 14882:1998(E), " "Programming Languages --- C++"
-(aka the C++ standard), in addition to corrections proposed by the Library
-Working Group,
-.SM JTC1/SC22/WG21.
-.SH SEE ALSO
-.UR
-http://gcc.gnu.org/libstdc++/
-.UE
-for the Frequently Asked Questions, online documentation, and much, much more!
-.\" vim:ts=8:noet:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/TODO b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/TODO
deleted file mode 100644
index d50c65d8b..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/TODO
+++ /dev/null
@@ -1,70 +0,0 @@
-
-The approach I've been using for a given header is to recursively do each
-of the "bits" headers which make up the standard header.  So, e.g., while
-there are four headers making up , three of them were already
-documented in the course of doing other headers.
-
-"Untouched" means I've deliberately skipped it for various reasons, or
-haven't gotten to it yet.  It /will/ be done (by somebody, eventually.)
-
-If you document an area and need to skip (for whatever reason) a non-trivial
-entity (i.e., one that should be documented), go ahead and add the comment
-markup, and use the homegrown @doctodo tag.  See include/bits/stl_iterator.h
-for examples of this.  Doing so will at least cause doxygen to consider the
-entitiy as documented and include it in the output.  It will also add the
-entity to the generated TODO page.
-
-
- Area           Still needs to be doxygen-documented
------------------------------------------------------------
-
-c17             FINISHED (Nothing in Clause 17 "exists" in terms of code.)
-c18             FINISHED, Note A
-c19             Note A
-c20             Note A
-c21             Public functions basic_string done, Note B
-c22             Most still to do; see docs/html/22_locale/*
-c23             See doxygroups.cc and Note B.  Notes on what invalidates
-                iterators need to be added.
-c24             stl_iterator.h (__normal_iterator, other small TODO bits)
-                stream iterators
-c25             stl_algo.h (lots of stuff)
-c26             , , stl_numeric.h[26.4], Note A
-c27             ios_base callbacks and local storage
-                basic_ios::copyfmt()
-                std_streambuf.h's __copy_streambufs()
-                    " "           _M_* protected memfns (data has been done)
-                fstream and sstream protected members
-
-backward/*      Not scanned by doxygen.  Should it be?  Doubtful.
-
-ext/*           Some of the SGI algorithm/functional extensions.
-                All of rope/hashing/slist need docs.
-
-__gnu_cxx       Tricky.  Right now ext/* are in this namespace.
-
------------------------------------------------------------
-
-NOTES:
-
-A)  So far I have not tried to document any of the  headers.  So entities
-such as atexit() are undocumented throughout the library.  Since we usually
-do not have the C code (to which the doxygen comments would be attached),
-this would need to be done in entirely separate files, a la doxygroups.cc.
-
-B)  Huge chunks of containers and strings are described in common "Tables"
-in the standard.  These are pseudo-duplicated in tables.html.  We can
-use doxygen hooks like @pre and @see to reference the tables.  Then the
-individual classes do like the standard does, and only document members for
-which additional info is available.
-
-
-STYLE:
-stl_deque.h, stl_pair.h, and stl_algobase.h have good examples of what I've
-been using for class, namespace-scope, and function documentation, respectively.
-These should serve as starting points.  /Please/ maintain the inter-word and
-inter-sentence spacing, as this might be generated and/or scanned in the
-future.
-
-
-vim:ts=4:et:
diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/doxygroups.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/doxygroups.cc
deleted file mode 100644
index e661d888c..000000000
--- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/doxygroups.cc
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
-   Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
-   See license.html for license.
-
-   This just provides documentation for stuff that doesn't need to be in the
-   source headers themselves.  It is a ".cc" file for the sole cheesy reason
-   that it triggers many different text editors into doing Nice Things when
-   typing comments.  However, it is mentioned nowhere except the *cfg.in files.
-
-   Some actual code (declarations) is exposed here, but no compiler ever
-   sees it.  The decls must be visible to doxygen, and sometimes their real
-   declarations are not visible, or not visible in a way we want.
-
-   Pieces separated by '// //' lines will usually not be presented to the
-   user on the same page.
-*/
-
-// // // // // // // // // // // // // // // // // // // // // // // //
-/** @namespace std
- *  @brief Everything defined by the ISO C++ Standard is within namespace std.
-*/
-/** @namespace std::tr1
- *  @brief Everything defined by the TR1 is within namespace std::tr1.
-*/
-/** @namespace __gnu_cxx
- *  @brief GNU extensions for public use.
-*/
-/** @namespace __gnu_cxx::balloc
- *  @brief Related to __gnu_cxx::bitmap_allocator.
-*/
-/** @namespace __gnu_internal
- *  @brief GNU implemenation details, not for public use.
-*/
-/** @namespace __gnu_debug
- *  @brief GNU debug mode implemenation details.
-*/
-// // // // // // // // // // // // // // // // // // // // // // // //
-/** @addtogroup SGIextensions STL extensions from SGI
-Because libstdc++-v3 based its implementation of the STL subsections of
-the library on the SGI 3.3 implementation, we inherited their extensions
-as well.
-
-They are additionally documented in the
-
-online documentation, a copy of which is also shipped with the
-library source code (in .../docs/html/documentation.html).  You can also
-read the documentation on SGI's
-site, which is still running even though the code is not maintained.
-
-NB that the following notes are pulled from various
-comments all over the place, so they may seem stilted.
-
-*/ - -// // // // // // // // // // // // // // // // // // // // // // // // -// This is standalone because, unlike the functor introduction, there is no -// single header file which serves as a base "all containers must include -// this header". We do some quoting of 14882 here. -/** @addtogroup Containers Containers -Containers are collections of objects. - -A container may hold any type which meets certain requirements, but the type -of contained object is chosen at compile time, and all objects in a given -container must be of the same type. (Polymorphism is possible by declaring a -container of pointers to a base class and then populating it with pointers to -instances of derived classes. Variant value types such as the @c any class -from Boost can also be used. - -All contained types must be @c Assignable and @c CopyConstructible. -Specific containers may place additional requirements on the types of -their contained objects. - -Containers manage memory allocation and deallocation themselves when -storing your objects. The objects are destroyed when the container is -itself destroyed. Note that if you are storing pointers in a container, -@c delete is @e not automatically called on the pointers before destroying them. - -All containers must meet certain requirements, summarized in -tables. - -The standard containers are further refined into -@link Sequences Sequences@endlink and -@link Assoc_containers Associative Containers@endlink. -*/ - -/** @addtogroup Sequences Sequences -Sequences arrange a collection of objects into a strictly linear order. - -The differences between sequences are usually due to one or both of the -following: - - memory management - - algorithmic complexity - -As an example of the first case, @c vector is required to use a contiguous -memory layout, while other sequences such as @c deque are not. - -The prime reason for choosing one sequence over another should be based on -the second category of differences, algorithmic complexity. For example, if -you need to perform many inserts and removals from the middle of a sequence, -@c list would be ideal. But if you need to perform constant-time access to -random elements of the sequence, then @c list should not be used. - -All sequences must meet certain requirements, summarized in -tables. -*/ - -/** @addtogroup Assoc_containers Associative Containers -Associative containers allow fast retrieval of data based on keys. - -Each container type is parameterized on a @c Key type, and an ordering -relation used to sort the elements of the container. - -There should be more text here. - -All associative containers must meet certain requirements, summarized in -tables. -*/ - -// // // // // // // // // // // // // // // // // // // // // // // // -/** @namespace abi - * @brief The cross-vendor C++ Application Binary Interface. - * - * A brief overview of an ABI is given in the libstdc++-v3 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 relatively-new 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 , which notes, "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." -*/ - -namespace abi { -/** -@brief New 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 failiure 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 demagling 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++/18_support/howto.html#5 for other -examples of use. - -@note The same demangling functionality is available via libiberty -(@c 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); -} // namespace abi - -// // // // // // // // // // // // // // // // // // // // // // // // -/** @addtogroup binarysearch Binary search algorithms -These algorithms are variations of a classic binary search. They 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: 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. - -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. -*/ - -// // // // // // // // // // // // // // // // // // // // // // // // -/** @addtogroup setoperations Set operation algorithms -These algorithms are common set operations performed on sequences that are -already sorted. - -The number of comparisons will be linear. -*/ - -// // // // // // // // // // // // // // // // // // // // // // // // - -// // // // // // // // // // // // // // // // // // // // // // // // -/* * @addtogroup groupname description of group -placeholder text -*/ - -// // // // // // // // // // // // // // // // // // // // // // // // - -// vim:et:noai: - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/guide.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/guide.html deleted file mode 100644 index 4a6c610db..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/guide.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - Build and Writing Guide for libstdc++-v3 Doxygen - - - - - -

libstdc++-v3 Source Documentation

- -

This file is docs/doxygen/guide.html in the libstdc++-v3 source tree. It - is not included in the generated pages (no real point to doing that). -

- - - -
- -

Creating the pages

-

The Makefile rules 'make doxygen', - 'make doxygen-maint', and 'make doxygen-man' - in the libstdc++-v3 build directory generate the user-level HTML docs, the - maintainer-level HTML docs, and the man pages, respectively. Prerequisite - tools are Bash 2.x, - - - Doxygen - , a working version of g++ somewhere in the PATH, and - the GNU coreutils. - - In addition, to generate the pretty pictures, the - Graphviz - package will need to be installed. - (g++ is used to build a program which manipulates man pages. GNU versions - of find, xargs, and possibly sed and grep are used, just because the GNU - versions make things very easy.) -

- -

Careful observers will see that the Makefile rules simply call a script - from the source tree, run_doxygen, which does the actual work - of running Doxygen and then (most importantly) massaging the output files. - If for some reason you prefer to not go through the Makefile, you can call - this script directly. (Start by passing '--help'.) -

- -

If you wish to tweak the Doxygen settings, do so by editing - docs/doxygen/user.cfg.in. Notes to v3-hackers are written in - triple-# comments. -

- -

Writing the markup

-

In general, libstdc++-v3 files should be formatted according to the GNU - C++ Coding Standard rules found in the file - C++STYLE. - Before any doxygen-specific formatting tweaks are made, please try to make - sure that the initial formatting is sound. -

- -

Adding Doxygen markup to a file (informally called "doxygenating") is very - simple. The Doxygen manual can be found - here. - We try to use a very-recent version of Doxygen. -

- -

Doxygen style guide

-

[incomplete and constantly evolving]

- -

For classes, use deque/vector/list and std::pair as examples. For - functions, see their member functions, and the free functions in - stl_algobase.h. Member functions of other container-like - types should read similarly to these member functions. -

- -

These points accompany the first list in section 3.1 of the Doxygen manual: -

-
    -
  1. Use the Javadoc style...
  2. -
  3. ...not the Qt style. The intermediate *'s are preferred.
  4. -
  5. Use the triple-slash style only for one-line comments (the "brief" mode). - Very recent versions of Doxygen permit full-mode comments in triple-slash - blocks, but the formatting still comes out wonky.
  6. -
  7. This is disgusting. Don't do this.
  8. -
- -

Use the @-style of commands, not the !-style. Please be careful about - whitespace in your markup comments. Most of the time it doesn't matter; - doxygen absorbs most whitespace, and both HTML and *roff are agnostic about - whitespace. However, in <pre> blocks and @code/@endcode sections, - spacing can have "interesting" effects. -

- -

Use either kind of grouping, as appropriate. doxygroups.cc - exists for this purpose. See stl_iterator.h for a good - example of the "other" kind of grouping. -

- -

Please use markup tags like @p and @a when referring to things such as the - names of function parameters. Use @e for emphasis when necessary. Use @c - to refer to other standard names. (Examples of all these abound in the - present code.) -

- - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/mainpage.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/mainpage.html deleted file mode 100644 index 016f87e56..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/mainpage.html +++ /dev/null @@ -1,101 +0,0 @@ - - - -libstdc++-v3 Source: Main Index - - - - - - -

libstdc++-v3 Source Documentation

- -

Documentation Overview

- -

@LEVEL@-level docs, generated @DATE@.

- -

There are two types of documentation for libstdc++-v3. One is the - distribution documentation, which can be read online at - http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html - or offline from docs/html/documentation.html in the library source - directory. -

- -

The other type is the source documentation, of which this is the first page. - Both "user-level" and "maintainer-level" source - documentation is produced: user-level docs are for the users of this - library. The maint-level docs are for those interested in the underlying - workings of the library; they include all the user-level docs plus - additional notes and additional classes/functions/etc. -

- -

Here are entry points to all the pages generated by Doxygen: -

-

- -

If you are using Doxygen for your own projects, you can use - a tag file for the appropriate version and - an entry such as -

- TAGFILES = "libstdc++.tag = - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen" -
- Be sure to adjust the URL for the right version. If you download a - local copy of the source documentation for faster viewing, you can use - the doxytag/installdox programs (part of Doxygen) to adjust the links - for you. -

- -

Generating the documentation

-

These HTML pages are automatically generated, along with the man pages. - See docs/doxygen/guide.html in the source tree for how to - create (and write) the pages. - -

License, Copyright, and Other Lawyerly Verbosity

-

The libstdc++-v3 documentation is released under - - these terms. -

-

Part of the generated documentation involved comments and notes from - SGI, who says we gotta say this: -

- Permission to use, copy, modify, distribute and sell this software and its - documentation for any purpose is hereby granted without fee, provided - that the below copyright notice appears in all copies and that both - the 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 © 1994 - Hewlett-Packard Company -
-

-

Part of the generated documentation is quoted from the ISO C++ Standard, - which is Copyright © 1998 by Information Technology Industry Council. -

- - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/run_doxygen b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/run_doxygen deleted file mode 100644 index b45572348..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/run_doxygen +++ /dev/null @@ -1,327 +0,0 @@ -#!/bin/bash - -# Runs doxygen and massages the output files. -# Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -# -# Synopsis: run_doxygen --mode=[user|maint|man] --host_alias= \ -# v3srcdir v3builddir -# -# Originally hacked together by Phil Edwards - - -# We can check now that the version of doxygen is >= this variable. -DOXYVER=1.3.9 - -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 <] - - MODE is one of: - user Generate user-level HTML library documentation. - maint Generate maintainers' HTML documentation (lots more; - exposes non-public members, etc). - man Generate user-level man pages. - - BUILD_ALIAS is the GCC build alias set at configure time. - - more options when i think of them - -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}/docs/doxygen - 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 -do_html=false -do_man=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 $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 - xuser) - do_html=true - LEVELtext='User' - generate_tagfile="$outdir/html_$mode/libstdc++.tag" - ;; - xmaint) - do_html=true - enabled_sections=maint - LEVELtext='Maintainer' - generate_tagfile="$outdir/html_$mode/libstdc++.tag" - ;; - xman) - do_man=true - ;; - *) - echo run_doxygen error: $mode is an invalid mode 1>&2 - exit 1 ;; -esac - -#rm -rf $outdir -mkdir -p $outdir -chmod u+w $outdir - -# work around a stupid doxygen bug -if $do_man; then - mkdir -p $outdir/man/man3/ext - chmod -R u+w $outdir/man/man3/ext -fi - -( - set -e - cd $builddir - sed -e "s=@outdir@=${outdir}=g" \ - -e "s=@srcdir@=${srcdir}=g" \ - -e "s=@host_alias@=${host_alias}=g" \ - -e "s=@html_output_dir@=html_${mode}=" \ - -e "s=@enabled_sections@=${enabled_sections}=" \ - -e "s=@do_html@=${do_html}=" \ - -e "s=@do_man@=${do_man}=" \ - -e "s=@generate_tagfile@=${generate_tagfile}=" \ - ${srcdir}/docs/doxygen/user.cfg.in > ${outdir}/${mode}.cfg - echo :: NOTE that this may take some time... - echo doxygen ${outdir}/${mode}.cfg - doxygen ${outdir}/${mode}.cfg - echo :: Finished, exit code was $? -) -ret=$? -test $ret -ne 0 && exit $ret - -if $do_html; then - cd ${outdir}/html_${mode} - - #doxytag -t libstdc++.tag . > /dev/null 2>&1 - sed -e '//d' libstdc++.tag > TEMP - mv TEMP libstdc++.tag - - sed -e "s=@LEVEL@=${LEVELtext}=" \ - -e "s=@DATE@=${DATEtext}=" \ - ${srcdir}/docs/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 - - # Work around a bug in doxygen 1.3. - for f in class*html struct*html; do - sed '1,10s!^ Template!<title>Template !' $f > TEMP - mv TEMP $f - done - - cp ${srcdir}/docs/doxygen/tables.html tables.html - echo :: - echo :: HTML pages begin with - echo :: ${outdir}/html_${mode}/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 - -# here's the other end of the "stupid doxygen bug" mentioned above -rm -rf ext - -# File names with embedded spaces (EVIL!) need to be....? renamed or removed? -find . -name "* *" -print0 | xargs -0r rm # requires GNU tools - -# can leave SGIextensions.3 alone, it's an okay name -mv s20_3_1_base.3 Intro_functors.3 -mv s20_3_2_arithmetic.3 Arithmetic_functors.3 -mv s20_3_3_comparisons.3 Comparison_functors.3 -mv s20_3_4_logical.3 Logical_functors.3 -mv s20_3_5_negators.3 Negation_functors.3 -mv s20_3_6_binder.3 Binder_functors.3 -mv s20_3_7_adaptors.3 Func_ptr_functors.3 -mv s20_3_8_memadaptors.3 Member_ptr_functors.3 -mv iterator_tags.3 Iterator_types.3 -mv std.3 Namespace_std.3 -mv __gnu_cxx.3 Namespace___gnu_cxx.3 - -# 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 *config* *.cc.3 *.tcc.3 *_t.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}/docs/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}/docs/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? -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 - -# Generic reoval 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 - -# vim:ts=4:et: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/stdheader.cc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/stdheader.cc deleted file mode 100644 index a5145419b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/stdheader.cc +++ /dev/null @@ -1,170 +0,0 @@ -// This is a slow larval-stage kludge to help massage the generated man -// pages. It's used like this: -const char* const usage = -"\nTakes on stdin, whitespace-separated words of the form\n" -"\n" -" [bits/]stl_foo.h\n" -" [bits/]std_foo.h\n" -"\n" -"and writes on stdout the nearest matching standard header name.\n" -"\n" -"Takes no command-line arguments.\n" -"\n"; - -#include <string> -#include <map> -#include <iostream> - -typedef std::map<std::string, std::string> Map; - -Map headers; - -void init_map() -{ - // Enter the glamourous world of data entry!! Maintain these! - headers["algo.h"] = "algorithm"; - headers["algobase.h"] = "algorithm"; - headers["algorithm.h"] = "algorithm"; - headers["heap.h"] = "algorithm"; - headers["bitset.h"] = "bitset"; - headers["complex.h"] = "complex"; - //headers["construct.h"] stl_construct.h entirely internal - headers["deque.h"] = "deque"; - headers["deque.tcc"] = "deque"; - headers["fstream.h"] = "fstream"; - headers["fstream.tcc"] = "fstream"; - headers["function.h"] = "functional"; - headers["functional.h"] = "functional"; - headers["iomanip.h"] = "iomanip"; - headers["basic_ios.h"] = "ios"; - headers["basic_ios.tcc"] = "ios"; - headers["ios.h"] = "ios"; - headers["iosfwd.h"] = "iosfwd"; - headers["iostream.h"] = "iostream"; - headers["istream.h"] = "istream"; - headers["istream.tcc"] = "istream"; - headers["iterator.h"] = "iterator"; - headers["iterator_base_funcs.h"] = "iterator"; - headers["iterator_base_types.h"] = "iterator"; - headers["stream_iterator.h"] = "iterator"; - headers["streambuf_iterator.h"] = "iterator"; - headers["limits.h"] = "limits"; - headers["list.h"] = "list"; - headers["list.tcc"] = "list"; - headers["codecvt.h"] = "locale"; - headers["locale.h"] = "locale"; - headers["localefwd.h"] = "locale"; - headers["locale_classes.h"] = "locale"; - headers["locale_facets.h"] = "locale"; - headers["locale_facets.tcc"] = "locale"; - headers["map.h"] = "map"; - headers["multimap.h"] = "map"; - headers["memory.h"] = "memory"; - headers["allocator.h"] = "memory"; - headers["raw_storage_iter.h"] = "memory"; - headers["tempbuf.h"] = "memory"; - headers["uninitialized.h"] = "memory"; - headers["numeric.h"] = "numeric"; - headers["ostream.h"] = "ostream"; - headers["ostream.tcc"] = "ostream"; - headers["queue.h"] = "queue"; - headers["set.h"] = "set"; - headers["multiset.h"] = "set"; - headers["sstream.h"] = "sstream"; - headers["sstream.tcc"] = "sstream"; - headers["stack.h"] = "stack"; - headers["functexcept.h"] = "stdexcept"; - headers["stdexcept.h"] = "stdexcept"; - headers["streambuf.h"] = "streambuf"; - headers["streambuf.tcc"] = "streambuf"; - headers["string.h"] = "string"; - headers["char_traits.h"] = "string"; - headers["postypes.h"] = "string"; - headers["basic_string.h"] = "string"; - headers["basic_string.tcc"] = "string"; - headers["tree.h"] = "backward/tree.h"; - headers["pair.h"] = "utility"; - headers["utility.h"] = "utility"; - headers["relops.h"] = "utility"; - headers["gslice.h"] = "valarray"; - headers["gslice_array.h"] = "valarray"; - headers["indirect_array.h"] = "valarray"; - headers["mask_array.h"] = "valarray"; - headers["slice_array.h"] = "valarray"; - headers["valarray.h"] = "valarray"; - headers["valarray_after.h"] = "valarray"; - headers["valarray_before.h"] = "valarray"; - headers["valarray_array.h"] = "valarray"; - headers["valarray_array.tcc"] = "valarray"; - headers["valarray_meta.h"] = "valarray"; - headers["bvector.h"] = "vector"; - headers["vector.h"] = "vector"; - headers["vector.tcc"] = "vector"; - - //headers["concurrence.h"] who knows - //headers["atomicity.h"] who knows - - // C wrappers -- probably was an easier way to do these, but oh well - headers["cassert.h"] = "cassert"; - headers["cctype.h"] = "cctype"; - headers["cerrno.h"] = "cerrno"; - headers["cfloat.h"] = "cfloat"; - headers["climits.h"] = "climits"; - headers["clocale.h"] = "clocale"; - headers["cmath.h"] = "cmath"; - headers["csetjmp.h"] = "csetjmp"; - headers["csignal.h"] = "csignal"; - headers["cstdarg.h"] = "cstdarg"; - headers["cstddef.h"] = "cstddef"; - headers["cstdio.h"] = "cstdio"; - headers["cstdlib.h"] = "cstdlib"; - headers["cstring.h"] = "cstring"; - headers["ctime.h"] = "ctime"; - headers["cwchar.h"] = "cwchar"; - headers["cwctype.h"] = "cwctype"; -} - - -void do_word (std::string const& longheader) -{ - std::string::size_type start = 0; - - // if it doesn't contain a "." then it's already a std header - if (longheader.find(".") == std::string::npos) - { - std::cout << longheader << '\n'; - return; - } - - if (longheader.substr(start,5) == "bits/") start += 5; - if ((longheader.substr(start,4) == "stl_") || - (longheader.substr(start,4) == "std_")) - { - start += 4; - } - - // come on, gdb, find `p' already... - const char* p = longheader.substr(start).c_str(); - Map::iterator word = headers.find(p); - if (word != headers.end()) - std::cout << word->second << '\n'; - else std::cout << "MAYBE_AN_ERROR_MESSAGE_HERE\n"; -} - - -int main (int argc, char**) -{ - if (argc > 1) - { - std::cerr << usage; - exit(0); - } - - init_map(); - - std::string w; - while (std::cin >> w) - do_word (w); -} - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/style.css b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/style.css deleted file mode 100644 index c49c37cdf..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/style.css +++ /dev/null @@ -1,74 +0,0 @@ -BODY { - background: white; - font-size: small; -} -H1 { text-align: center; font-size: large } -H2 { text-align: left; font-size: medium; } -H3 { text-align: left; font-size: small; } -CODE { font-size: small; } -CAPTION { font-weight: normal } -A.qindex {} -A.qindexRef {} -A.el { text-decoration: none; font-size: small; font-weight: normal } -A.elRef { text-decoration: none; font-size: small; font-weight: normal } -A.code { text-decoration: none; font-weight: normal; color: #4444ee } -A.codeRef { font-weight: normal; color: #4444ee } -A:hover { text-decoration: none; background-color: #f2f2ff } -DL.el { margin-left: -1cm } -DIV.fragment { width: 100%; border: none; background-color: #eeeeee } -DIV.ah { - background-color: black; - font-weight: normal; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px -} -DIV.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: normal -} -DIV.groupText { margin-left: 16px; font-style: italic; font-size: small } -TD.md { background-color: #f2f2ff; font-size: small; } -TD.mdname1 { background-color: #f2f2ff; font-size: small; color: #602020; } -TD.mdname { - background-color: #f2f2ff; - font-weight: normal; - font-size: small; - color: #602020; - width: 600px -} -TD.indexkey { - background-color: #eeeeff; - font-weight: normal; - font-size: small; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} -TD.indexvalue { - background-color: #eeeeff; - font-style: italic; - font-size: small; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px -} -span.keyword { color: #008000 } -span.keywordtype { color: #604020 } -span.keywordflow { color: #e08000 } -span.comment { color: #800000 } -span.preprocessor { color: #806020 } -span.stringliteral { color: #002080 } -span.charliteral { color: #008080 } diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/tables.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/tables.html deleted file mode 100644 index 07e9f3e4b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/tables.html +++ /dev/null @@ -1,645 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> -<html> -<head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> -<title>Tables - - - - - -

Tables

- -

Most of the requirements on containers are presented in the ISO standard - in the form of tables. In order to avoid massive duplication of effort - while documenting all the classes, we follow the standard's lead and - present the base information here. Individual classes will only document - their departures from these tables (removed functions, additional functions, - changes, etc). -

- -

We will not try to duplicate all of the surrounding text (footnotes, - explanations, etc) from the standard, because that would also entail a - duplication of effort. Some of the surrounding text has been paraphrased - here for clarity. If you are uncertain about the meaning or interpretation - of these notes, consult a good textbook, and/or purchase your own copy of - the standard (it's cheap, see our FAQ). -

- -

The table numbers are the same as those used in the standard. Tables can - be jumped to using their number, e.g., "tables.html#67". Only - Tables 65 through 69 are presented. Some of the active Defect Reports - are also noted or incorporated. -

- -
- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Table 65 --- Container Requirements

-Anything calling itself a container must meet these minimum requirements. -
expressionresult typeoperational semanticsnotes, pre-/post-conditions, assertionscomplexity
X::value_typeT T is Assignablecompile time
X::referencelvalue of T  compile time
X::const_referenceconst lvalue of T  compile time
X::iteratoriterator type pointing to T Any iterator category except output iterator. - Convertible to X::const_iterator.compile time
X::const_iteratoriterator type pointing to const T Any iterator category except output iterator.compile time
X::difference_typesigned integral type identical to the difference type of X::iterator and X::const_iteratorcompile time
X::size_typeunsigned integral type size_type can represent any non-negative value of difference_typecompile time
X u;  post: u.size() == 0constant
X();  X().size == 0constant
X(a);  a == X(a)linear
X u(a);
X u = a;
  post: u == a. Equivalent to: X u; u = a;linear
(&a)->~X();void dtor is applied to every element of a; all the memory is deallocatedlinear
a.begin()iterator; const_iterator for constant a  constant
a.end()iterator; const_iterator for constant a  constant
a == bconvertible to bool == is an equivalence relation. a.size()==b.size() && - equal(a.begin(),a.end(),b.begin())linear
a != bconvertible to bool equivalent to !(a==b)linear
a.swap(b)void swap(a,b)may or may not have constant complexity
r = aX& r == alinear
a.size()size_typea.end() - a.begin() may or may not have constant complexity
a.max_size()size_typesize() of the largest possible container may or may not have constant complexity
a.empty()convertible to boola.size() == 0 constant
a < bconvertible to boollexographical_compare( a.begin, a.end(), b.begin(), b.end())pre: < is defined for T and is a total ordering relationlinear
a > bconvertible to boolb < a linear
a <= bconvertible to bool!(a > b) linear
a >= bconvertible to bool!(a < b) linear

- - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Table 66 --- Reversible Container Requirements

-If a container's iterator is bidirectional or random-access, then the -container also meets these requirements. -Deque, list, vector, map, multimap, set, and multiset are such containers. -
expressionresult typenotes, pre-/post-conditions, assertionscomplexity
X::reverse_iteratoriterator type pointing to Treverse_iterator<iterator>compile time
X::const_reverse_iteratoriterator type pointing to const Treverse_iterator<const_iterator>compile time
a.rbegin()reverse_iterator; const_reverse_iterator for constant areverse_iterator(end())constant
a.rend()reverse_iterator; const_reverse_iterator for constant areverse_iterator(begin())constant

- - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Table 67 --- Sequence Requirements

-These are in addition to the requirements of containers. -Deque, list, and vector are such containers. -
expressionresult typenotes, pre-/post-conditions, assertions
X(n,t)
X a(n,t)
 constructs a sequence with n copies of t
post: size() == n
X(i,j)
X a(i,j)
 constructs a sequence equal to the range [i,j)
- post: size() == distance(i,j)
a.insert(p,t)iterator (points to the inserted copy of t)inserts a copy of t before p
a.insert(p,n,t)voidinserts n copies of t before p
a.insert(p,i,j)voidinserts copies of elements in [i,j) before p
- pre: i, j are not iterators into a
a.erase(q)iterator (points to the element following q (prior to erasure))erases the element pointed to by q
a.erase(q1,q1)iterator (points to the element pointed to by q2 (prior to erasure))erases the elements in the range [q1,q2)
a.clear()voiderase(begin(),end())
post: size() == 0

- - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Table 68 --- Optional Sequence Operations

-These operations are only included in containers when the operation can be -done in constant time. -
expressionresult typeoperational semanticscontainer
a.front()reference; const_reference for constant a*a.begin()vector, list, deque
a.back()reference; const_reference for constant a*--a.end()vector, list, deque
a.push_front(x)voida.insert(a.begin(),x)list, deque
a.push_back(x)voida.insert(a.end(),x)vector, list, deque
a.pop_front()voida.erase(a.begin())list, deque
a.pop_back()voida.erase(--a.end())vector, list, deque
a[n]reference; const_reference for constant a*(a.begin() + n)vector, deque
a.at(n)reference; const_reference for constant a*(a.begin() + n)
throws out_of_range if n>=a.size()
vector, deque

- - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Table 69 --- Associative Container Requirements

-These are in addition to the requirements of containers. -Map, multimap, set, and multiset are such containers. An associative -container supports unique keys (and is written as -a_uniq instead of a) if it may contain at most -one element for each key. Otherwise it supports equivalent keys -(and is written a_eq). Examples of the former are set and map, -examples of the latter are multiset and multimap. -
expressionresult typenotes, pre-/post-conditions, assertionscomplexity
X::key_typeKeyKey is Assignablecompile time
X::key_compareComparedefaults to less<key_type>compile time
X::value_comparea binary predicate typesame as key_compare for set and multiset; an ordering relation on - pairs induced by the first component (Key) for map and multimapcompile time
X(c)
X a(c)
 constructs an empty container which uses c as a comparison objectconstant
X()
X a
 constructs an empty container using Compare() as a comparison objectconstant
X(i,j,c)
X a(i,j,c)
 constructs an empty container and inserts elements from the range [i,j) - into it; uses c as a comparison objectNlogN in general where N is distance(i,j); linear if [i,j) is - sorted with value_comp()
X(i,j)
X a(i,j)
 same as previous, but uses Compare() as a comparison objectsame as previous
a.key_comp()X::key_comparereturns the comparison object out of which a was constructedconstant
a.value_comp()X::value_comparereturns an object constructed out of the comparison objectconstant
a_uniq.insert(t)pair<iterator,bool>"Inserts t if and only if there is no element in the container with - key equivalent to the key of t. The bool component of the returned pair - is true -iff- the insertion took place, and the iterator component of - the pair points to the element with key equivalent to the key of - t." logarithmic
a_eq.insert(t)iteratorinserts t, returns the iterator pointing to the inserted elementlogarithmic
a.insert(p,t)iteratorpossibly inserts t (depending on whether a_uniq or a_eq); returns iterator - pointing to the element with key equivalent to the key of t; iterator p - is a hint pointing to where the insert should start to searchlogarithmic in general, amortized constant if t is inserted right - after p
- [but see DR 233 and our - specific notes]
a.insert(i,j)voidpre: i, j are not iterators into a. possibly inserts each element from - the range [i,j) (depending on whether a_uniq or a_eq)Nlog(size()+N) where N is distance(i,j) in general
a.erase(k)size_typeerases all elements with key equivalent to k; returns number of erased - elementslog(size()) + count(k)
a.erase(q)voiderases the element pointed to by qamortized constant
a.erase(q1,q2)voiderases all the elements in the range [q1,q2)log(size()) + distance(q1,q2)
a.clear()voiderases everthing; post: size() == 0linear
a.find(k)iterator; const_iterator for constant areturns iterator pointing to element with key equivalent to k, or - a.end() if no such element foundlogarithmic
a.count(k)size_typereturns number of elements with key equivalent to klog(size()) + count(k)
a.lower_bound(k)iterator; const_iterator for constant areturns iterator pointing to the first element with key not less than klogarithmic
a.upper_bound(k)iterator; const_iterator for constant areturns iterator pointing to the first element with key greater than klogarithmic
a.equal_range(k)pair<iterator,iterator>; - pair<const_iterator, const_iterator> for constant aequivalent to make_pair(a.lower_bound(k), a.upper_bound(k))logarithmic

- - -
-

-See mainpage.html for copying conditions. -See the libstdc++-v3 homepage -for more information. -

- - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/user.cfg.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/user.cfg.in deleted file mode 100644 index 06df07b21..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/doxygen/user.cfg.in +++ /dev/null @@ -1,1307 +0,0 @@ -# Doxyfile 1.4.4 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = "libstdc++" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = @outdir@ - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, -# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, -# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, -# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, -# Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated -# output. The encoding is not always determined by the language that -# is chosen, but also whether or not the output is meant for Windows -# or non-Windows users. In case there is a difference, setting the -# USE_WINDOWS_ENCODING tag to YES forces the Windows encoding (this is -# the default for the Windows binary), whereas setting the tag to NO -# uses a Unix-style encoding (the default for all platforms other than -# Windows). - -USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = NO - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will -# prepend the brief description of a member or function before the -# detailed description. Note: if both HIDE_UNDOC_MEMBERS and -# BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be -# completely suppressed. - -REPEAT_BRIEF = NO - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = YES - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = YES - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = YES - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = YES - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = "doctodo=@todo\nDoc me! See docs/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more." \ - "isiosfwd=One of the @link s27_2_iosfwd I/O forward declarations @endlink" - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of -# C sources only. Doxygen will then generate output that is more -# tailored for C. For instance, some of the names that are used will -# be different. The list of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of -# Java sources only. Doxygen will then generate output that is more -# tailored for Java. For instance, namespaces will be presented as -# packages, qualified scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = YES - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then -# Doxygen will put a list of the files that are included by a file in -# the documentation of that file. - -SHOW_INCLUDE_FILES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = YES - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = YES - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = NO - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = @enabled_sections@ - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 0 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple -# directories then setting the SHOW_DIRECTORIES tag to YES will show -# the directory hierarchy in the documentation. The default is YES. - -SHOW_DIRECTORIES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or -# script that doxygen should invoke to get the current version for -# each file (typically from the version control system). Doxygen will -# invoke the program by executing (via popen()) the command -# , where is the value of the -# FILE_VERSION_FILTER tag, and is the name of an input -# file provided by doxygen. Whatever the progam writes to standard -# output is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = NO - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = NO - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their -# parameters or return value. If set to NO (the default) doxygen will -# only warn about wrong or incomplete parameter documentation, but not -# about the absence of documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories -# that contain documented source files. You may enter file names like -# "myfile.cpp" or directories like "/usr/src/myproject". Separate the -# files or directories with spaces. - -INPUT = @srcdir@/docs/doxygen/doxygroups.cc \ - include/@host_alias@/bits \ - include/bits \ - include/ext \ - include/tr1 \ - @srcdir@/libsupc++/exception \ - @srcdir@/libsupc++/new \ - @srcdir@/libsupc++/typeinfo \ - @srcdir@/libsupc++/cxxabi.h \ - include/algorithm \ - include/bitset \ - include/deque \ - 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/numeric \ - include/ostream \ - include/set \ - include/sstream \ - include/stack \ - include/stdexcept \ - include/streambuf \ - include/string \ - include/utility \ - include/valarray \ - include/vector \ - include/ext/algorithm \ - include/ext/functional \ - include/ext/hash_map \ - include/ext/hash_set \ - include/ext/memory \ - include/ext/numeric \ - include/ext/rope \ - include/ext/slist \ - include/tr1/array \ - include/tr1/functional \ - include/tr1/hashtable \ - include/tr1/memory \ - include/tr1/tuple \ - include/tr1/type_traits \ - include/tr1/unordered_map \ - include/tr1/unordered_set \ - include/tr1/utility - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like -# *.cpp and *.h) to filter out the source-files in the directories. If -# left blank the following patterns are tested: *.c *.cc *.cxx *.cpp -# *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp *.h++ -# *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm - -FILE_PATTERNS = *.h \ - *.tcc - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that -# should excluded from the INPUT source files. This way you can easily -# exclude a subdirectory from a directory tree whose root is specified -# with the INPUT tag. - -EXCLUDE = Makefile \ - CVS \ - include/bits/demangle.h \ - stdc++.h.gch - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are -# excluded from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = CVS \ - stamp-* \ - Makefile \ - *gch* - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen -# should invoke to filter for each input file. Doxygen will invoke the -# filter program by executing (via popen()) the command -# , where is the value of the INPUT_FILTER tag, -# and is the name of an input file. Doxygen will then use -# the output that the filter program writes to standard output. If -# FILTER_PATTERNS is specified, this tag will be ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files -# will be generated. Documented entities will be cross-referenced with -# these sources. Note: To get rid of all source code in the generated -# output, make sure also VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = NO - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 2 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = std \ - std::tr1 \ - __gnu_cxx \ - __gnu_debug - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = @do_html@ - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = @html_output_dir@ - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = @srcdir@/docs/doxygen/style.css - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = NO - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = YES - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = letter - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = NO - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = NO - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = @do_man@ - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = __GTHREADS \ - _GLIBCXX_STD=std \ - _GLIBCXX_DEPRECATED \ - _GLIBCXX_USE_WCHAR_T \ - _GLIBCXX_USE_LONG_LONG \ - __glibcxx_class_requires=// \ - __glibcxx_class_requires2=// \ - __glibcxx_class_requires3=// \ - __glibcxx_class_requires4=// - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES -# then this tag can be used to specify a list of macro names that -# should be expanded. The macro definition that is found in the -# sources will be used. Use the PREDEFINED tag if you want to use a -# different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = @generate_tagfile@ - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = YES - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes -# with base or super classes. Setting the tag to NO turns the diagrams -# off. Note that this option is superseded by the HAVE_DOT option -# below. This is only a fallback. It is recommended to install and use -# dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = NO - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot -# tool is available from the path. This tool is part of Graphviz, a -# graph visualization toolkit from AT&T and Lucent Bell Labs. The -# other options in this section have no effect if this option is set -# to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = NO - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = NO - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class -# method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable -# call graphs for selected functions only using the \callgraph -# command. - -CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of -# the graphs generated by dot. A depth value of 3 means that only -# nodes reachable from the root by following a path via at most 3 -# edges will be shown. Nodes that lay further from the root node will -# be omitted. Note that setting this option to 1 or 2 may greatly -# reduce the computation time needed for large code bases. Also note -# that a graph may be further truncated if the graph's image -# dimensions are not sufficient to fit the graph (see -# MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the -# depth value (the default), the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a -# transparent background. This is disabled by default, which results -# in a white background. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the -# edges of a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = NO - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BADNAMES b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BADNAMES deleted file mode 100644 index a904704ee..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BADNAMES +++ /dev/null @@ -1,182 +0,0 @@ - -This is the list of names "reserved to the implementation" that -have been claimed by certain compilers and system headers of interest, -and should not be used in the library. It will grow, of course. -We generally are interested in names that are not all-caps, except -for those like "_T" - -For Solarix: -_B -_C -_L -_N -_P -_S -_U -_X -_E1 -.. -_E24 - -Irix adds: -_A -_G - -MS adds: -_T - -BSD adds: -__used -__unused -__inline -_Complex -__istype -__maskrune -__tolower -__toupper -__wchar_t -__wint_t -_res -_res_ext -__tg_* - -For GCC: - - [Note that this list is out of date. It applies to the old - name-mangling; in G++ 3.0 and higher a different name-mangling is - used. In addition, many of the bugs relating to G++ interpreting - these names as operators have been fixed.] - - The full set of __* identifiers (combined from gcc/cp/lex.c and - gcc/cplus-dem.c) that are either old or new, but are definitely - recognized by the demangler, is: - -__aa -__aad -__ad -__addr -__adv -__aer -__als -__alshift -__amd -__ami -__aml -__amu -__aor -__apl -__array -__ars -__arshift -__as -__bit_and -__bit_ior -__bit_not -__bit_xor -__call -__cl -__cm -__cn -__co -__component -__compound -__cond -__convert -__delete -__dl -__dv -__eq -__er -__ge -__gt -__indirect -__le -__ls -__lt -__max -__md -__method_call -__mi -__min -__minus -__ml -__mm -__mn -__mult -__mx -__ne -__negate -__new -__nop -__nt -__nw -__oo -__op -__or -__pl -__plus -__postdecrement -__postincrement -__pp -__pt -__rf -__rm -__rs -__sz -__trunc_div -__trunc_mod -__truth_andif -__truth_not -__truth_orif -__vc -__vd -__vn - -SGI badnames: -__builtin_alloca -__builtin_fsqrt -__builtin_sqrt -__builtin_fabs -__builtin_dabs -__builtin_cast_f2i -__builtin_cast_i2f -__builtin_cast_d2ll -__builtin_cast_ll2d -__builtin_copy_dhi2i -__builtin_copy_i2dhi -__builtin_copy_dlo2i -__builtin_copy_i2dlo -__add_and_fetch -__sub_and_fetch -__or_and_fetch -__xor_and_fetch -__and_and_fetch -__nand_and_fetch -__mpy_and_fetch -__min_and_fetch -__max_and_fetch -__fetch_and_add -__fetch_and_sub -__fetch_and_or -__fetch_and_xor -__fetch_and_and -__fetch_and_nand -__fetch_and_mpy -__fetch_and_min -__fetch_and_max -__lock_test_and_set -__lock_release -__lock_acquire -__compare_and_swap -__synchronize -__high_multiply -__unix -__sgi -__linux__ -__i386__ -__i486__ -__cplusplus -__embedded_cplusplus -// long double conversion members mangled as __opr -// http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html -_opr diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BUGS b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BUGS deleted file mode 100644 index e71304d06..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/BUGS +++ /dev/null @@ -1,28 +0,0 @@ -2003-04-26 - -- _GLIBCPP_HAS_BUILTIN_SINF: We should still hold out for a cleaner solution the is currenly the case in bits/std_cmath.h. - -- there may be one set of remaining string bugs, dependent on final -clarification of the string::find technicalities when finding in an -empty string or using an empty string for an argument. At the very -least, v-3 has interpreted the standard in a way that is in opposition -to other libraries on other platforms. - -- trigraphs and keywords a la the iso646 header are not correctly -implemented. It looks like the compiler recognizes them as keywords -but then doesn't translate into the correct bit ops. It is a mystery. - -- wide strings have not been tested, and may therefore be unusable. - -- Chapter 27 io functionality is not finished. As such, there are -known bugs in: filebuf::putbackfail - -- Many facet implementations are stubs. (22) - -- Almost no optimizations for small-footprint/low-overhead. (22,27) - -- There has been some work to wrap the C headers in namespace std::, but - it may not be complete yet, and C macros are not shadowed. Please consult - the mailing list archives for more information. - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/C++STYLE b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/C++STYLE deleted file mode 100644 index 87f53d0ea..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/C++STYLE +++ /dev/null @@ -1,386 +0,0 @@ - -C++ Standard Library Style Guidelines DRAFT 2001-01-15 -------------------------------------- - -This library is written to appropriate C++ coding standards. As such, -it is intended to precede the recommendations of the GNU Coding -Standard, which can be referenced here: - -http://www.gnu.org/prep/standards_toc.html - -ChangeLog entries for member functions should use the -classname::member function name syntax as follows: - -1999-04-15 Dennis Ritchie - - * src/basic_file.cc (__basic_file::open): Fix thinko in - _G_HAVE_IO_FILE_OPEN bits. - -Notable areas of divergence from what may be previous local practice -(particularly for GNU C) include: - -01. Pointers and references - char* p = "flop"; - char& c = *p; - -NOT- - char *p = "flop"; // wrong - char &c = *p; // wrong - - Reason: In C++, definitions are mixed with executable code. Here, - p is being initialized, not *p. This is near-universal - practice among C++ programmers; it is normal for C hackers - to switch spontaneously as they gain experience. - -02. Operator names and parentheses - operator==(type) - -NOT- - operator == (type) // wrong - - Reason: The == is part of the function name. Separating - it makes the declaration look like an expression. - -03. Function names and parentheses - void mangle() - -NOT- - void mangle () // wrong - - Reason: no space before parentheses (except after a control-flow - keyword) is near-universal practice for C++. It identifies the - parentheses as the function-call operator or declarator, as - opposed to an expression or other overloaded use of parentheses. - -04. Template function indentation - template - void - template_function(args) - { } - -NOT- - template - void template_function(args) {}; - - Reason: In class definitions, without indentation whitespace is - needed both above and below the declaration to distinguish - it visually from other members. (Also, re: "typename" - rather than "class".) T often could be int, which is - not a class. ("class", here, is an anachronism.) - -05. Template class indentation - template - class basic_ios : public ios_base - { - public: - // Types: - }; - -NOT- - template - class basic_ios : public ios_base - { - public: - // Types: - }; - -NOT- - template - class basic_ios : public ios_base - { - public: - // Types: - }; - -06. Enumerators - enum - { - space = _ISspace, - print = _ISprint, - cntrl = _IScntrl - }; - -NOT- - enum { space = _ISspace, print = _ISprint, cntrl = _IScntrl }; - -07. Member initialization lists - All one line, separate from class name. - - gribble::gribble() - : _M_private_data(0), _M_more_stuff(0), _M_helper(0); - { } - -NOT- - gribble::gribble() : _M_private_data(0), _M_more_stuff(0), _M_helper(0); - { } - -08. Try/Catch blocks - try - { - // - } - catch (...) - { - // - } - -NOT- - try { - // - } catch(...) { - // - } - -09. Member functions declarations and definitions - Keywords such as extern, static, export, explicit, inline, etc - go on the line above the function name. Thus - - virtual int - foo() - -NOT- - virtual int foo() - - Reason: GNU coding conventions dictate return types for functions - are on a separate line than the function name and parameter list - for definitions. For C++, where we have member functions that can - be either inline definitions or declarations, keeping to this - standard allows all member function names for a given class to be - aligned to the same margin, increasing readibility. - - -10. Invocation of member functions with "this->" - For non-uglified names, use this->name to call the function. - - this->sync() - -NOT- - sync() - - Reason: Koenig lookup. - -11. Namespaces - namespace std - { - blah blah blah; - } // namespace std - - -NOT- - - namespace std { - blah blah blah; - } // namespace std - -12. Spacing under protected and private in class declarations: - space above, none below - ie - - public: - int foo; - - -NOT- - public: - - int foo; - -13. Spacing WRT return statements. - no extra spacing before returns, no parenthesis - ie - - } - return __ret; - - -NOT- - } - - return __ret; - - -NOT- - - } - return (__ret); - - -14. Location of global variables. - All global variables of class type, whether in the "user visable" - space (e.g., cin) or the implementation namespace, must be defined - as a character array with the appropriate alignment and then later - re-initialized to the correct value. - - This is due to startup issues on certain platforms, such as AIX. - For more explanation and examples, see src/globals.cc. All such - variables should be contained in that file, for simplicity. - -15. Exception abstractions - Use the exception abstractions found in functexcept.h, which allow - C++ programmers to use this library with -fno-exceptions. (Even if - that is rarely advisable, it's a necessary evil for backwards - compatibility.) - -16. Exception error messages - All start with the name of the function where the exception is - thrown, and then (optional) descriptive text is added. Example: - - __throw_logic_error(__N("basic_string::_S_construct NULL not valid")); - - Reason: The verbose terminate handler prints out exception::what(), - as well as the typeinfo for the thrown exception. As this is the - default terminate handler, by putting location info into the - exception string, a very useful error message is printed out for - uncaught exceptions. So useful, in fact, that non-programmers can - give useful error messages, and programmers can intelligently - speculate what went wrong without even using a debugger. - -The library currently has a mixture of GNU-C and modern C++ coding -styles. The GNU C usages will be combed out gradually. - -Name patterns: - -For nonstandard names appearing in Standard headers, we are constrained -to use names that begin with underscores. This is called "uglification". -The convention is: - - Local and argument names: __[a-z].* - - Examples: __count __ix __s1 - - Type names and template formal-argument names: _[A-Z][^_].* - - Examples: _Helper _CharT _N - - Member data and function names: _M_.* - - Examples: _M_num_elements _M_initialize () - - Static data members, constants, and enumerations: _S_.* - - Examples: _S_max_elements _S_default_value - -Don't use names in the same scope that differ only in the prefix, -e.g. _S_top and _M_top. See BADNAMES for a list of forbidden names. -(The most tempting of these seem to be and "_T" and "__sz".) - -Names must never have "__" internally; it would confuse name -unmanglers on some targets. Also, never use "__[0-9]", same reason. - --------------------------- - -[BY EXAMPLE] - -#ifndef _HEADER_ -#define _HEADER_ 1 - -namespace std -{ - class gribble - { - public: - // ctor, op=, dtor - gribble() throw(); - - gribble(const gribble&); - - explicit - gribble(int __howmany); - - gribble& - operator=(const gribble&); - - virtual - ~gribble() throw (); - - // argument - inline void - public_member(const char* __arg) const; - - // in-class function definitions should be restricted to one-liners. - int - one_line() { return 0 } - - int - two_lines(const char* arg) - { return strchr(arg, 'a'); } - - inline int - three_lines(); // inline, but defined below. - - // note indentation - template - void - public_template() const throw(); - - template - void - other_template(); - - private: - class _Helper; - - int _M_private_data; - int _M_more_stuff; - _Helper* _M_helper; - int _M_private_function(); - - enum _Enum - { - _S_one, - _S_two - }; - - static void - _S_initialize_library(); - }; - -// More-or-less-standard language features described by lack, not presence: -# ifndef _G_NO_LONGLONG - extern long long _G_global_with_a_good_long_name; // avoid globals! -# endif - - // Avoid in-class inline definitions, define separately; - // likewise for member class definitions: - inline int - gribble::public_member() const - { int __local = 0; return __local; } - - class gribble::_Helper - { - int _M_stuff; - - friend class gribble; - }; -} - -// Names beginning with "__": only for arguments and -// local variables; never use "__" in a type name, or -// within any name; never use "__[0-9]". - -#endif /* _HEADER_ */ - - -namespace std -{ - template // notice: "typename", not "class", no space - long_return_value_type - function_name(char* pointer, // "char *pointer" is wrong. - char* argument, - const Reference& ref) - { - // int a_local; /* wrong; see below. */ - if (test) - { - nested code - } - - int a_local = 0; // declare variable at first use. - - // char a, b, *p; /* wrong */ - char a = 'a'; - char b = a + 1; - char* c = "abc"; // each variable goes on its own line, always. - - // except maybe here... - for (unsigned i = 0, mask = 1; mask; ++i, mask <<= 1) { - // ... - } - } - - gribble::gribble() - : _M_private_data(0), _M_more_stuff(0), _M_helper(0); - { } - - inline int - gribble::three_lines() - { - // doesn't fit in one line. - } -} // namespace std - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/CHECKLIST b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/CHECKLIST deleted file mode 100644 index ad02b0d87..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/CHECKLIST +++ /dev/null @@ -1,6002 +0,0 @@ - - Completion Checklist for the Standard C++ Library - Updated: 2003-04-25 - - Status Code Legend: - M - Missing - S - Present as stub. - X - Partially implemented, or buggy. - T - Implemented, pending test/inspection. - V - Verified to pass all available test suites. - Q - Qualified by inspection for non-testable correctness. - P - Portability verified. - C - Certified. - - Lexical notes: - Only status codes appear in column 0. Notes relating to conformance - issues appear [in brackets]. - - Note that this checklist does not (yet) include all emendations - recommended by the ISO Library Working Group: - http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-toc.html - - Detailed explanation of status codes: - - M - Missing: The name is not visible to programs that include - the specified header, either at compile or link stage. - - S - Present as stub: A program can use the name, but no implementation - is provided. Programs that use the name link correctly, but - cannot usefully be run. - - X - Partially implemented, or buggy: Some implementation has been - provided, but it is known or believed not to conform fully. - It may have an incorrect base class, wrong namespace, wrong - storage class, or simply not fully implement requirements. - However, it may be sufficiently usable to help test other - components. - - T - Implemented, pending test/inspection: Implementation believed - to be complete, and informal testing suggests it is ready for - formal verification. - - V - Verified, passes all test suites: Verified to satisfy all - generically testable conformance requirements. - - Q - Qualified by inspection for non-testable correctness: - Inspected, "implementation-defined" documentation accepted, - local usability criteria satisfied, formally inspected for - other untestable conformance. (Untestable requirements - include exception-safety, thread-safety, worst-case - complexity, memory cleanliness, usefulness.) - - P - Portability verified: Qualified on all primary target platforms. - - C - Certified: Formally certified to have passed all tests, - inspections, qualifications; approved under "signing authority" - to be used to satisfy contractual guarantees. - - ---------------------------------------------------------------------- - - - -X - - - - - [C header names must be in std:: to qualify. Related to shadow/ dir.] - - -X - - - Macro: -X errno, declared or defined in . - - Macro fn: -X setjmp(jmp_buf), declared or defined in -X va_end(va_list), declared or defined in - - Types: -X clock_t, div_t, FILE, fpos_t, lconv, ldiv_t, mbstate_t, -X ptrdiff_t, sig_atomic_t, size_t, time_t, tm, va_list, -X wctrans_t, wctype_t, and wint_t. - - 1 Which of the functions in the C++ Standard Library are not reentrant - subroutines is implementation-defined. - - 18.1 Types [lib.support.types] -X -X NULL -X offsetof -X ptrdiff_t -X size_t - - 18.2 Implementation properties [lib.support.limits] - - , , and - - 18.2.1 Numeric limits [lib.limits] - -X template class numeric_limits; - -T enum float_round_style; -T enum float_denorm_style; - -T template<> class numeric_limits; - -T template<> class numeric_limits; -T template<> class numeric_limits; -T template<> class numeric_limits; -T template<> class numeric_limits; - -T template<> class numeric_limits; -T template<> class numeric_limits; -T template<> class numeric_limits; -T template<> class numeric_limits; -T template<> class numeric_limits; -T template<> class numeric_limits; - -X template<> class numeric_limits; -X template<> class numeric_limits; -X template<> class numeric_limits; - - 18.2.1.1 Template class numeric_limits [lib.numeric.limits] -T template class numeric_limits { - public: -T static const bool is_specialized = false; -T static T min() throw(); -T static T max() throw(); -T static const int digits = 0; -T static const int digits10 = 0; -T static const bool is_signed = false; -T static const bool is_integer = false; -T static const bool is_exact = false; -T static const int radix = 0; -T static T epsilon() throw(); -T static T round_error() throw(); - -T static const int min_exponent = 0; -T static const int min_exponent10 = 0; -T static const int max_exponent = 0; -T static const int max_exponent10 = 0; - -T static const bool has_infinity = false; -T static const bool has_quiet_NaN = false; -T static const bool has_signaling_NaN = false; -T static const float_denorm_style has_denorm = denorm_absent; -T static const bool has_denorm_loss = false; -T static T infinity() throw(); -T static T quiet_NaN() throw(); -T static T signaling_NaN() throw(); -T static T denorm_min() throw(); - -T static const bool is_iec559 = false; -T static const bool is_bounded = false; -T static const bool is_modulo = false; - -T static const bool traps = false; -T static const bool tinyness_before = false; -T static const float_round_style round_style = round_toward_zero; - }; - - 18.2.1.3 Type float_round_style [lib.round.style] - -T enum float_round_style { -T round_indeterminate = -1, -T round_toward_zero = 0, -T round_to_nearest = 1, -T round_toward_infinity = 2, -T round_toward_neg_infinity = 3 - }; - - 18.2.1.4 Type float_denorm_style [lib.denorm.style] - -T enum float_denorm_style { -T denorm_indeterminate = -1; -T denorm_absent = 0; -T denorm present = 1; - }; - - 18.2.1.5 numeric_limits specializations [lib.numeric.special] - - [Note: see Note at 18.2.1. ] - - 18.2.2 C Library [lib.c.limits] - - 1 Header (Table 3): - CHAR_BIT INT_MAX LONG_MIN SCHAR_MIN UCHAR_MAX USHRT_MAX -X CHAR_MAX INT_MIN MB_LEN_MAX SHRT_MAX UINT_MAX - CHAR_MIN LONG_MAX SCHAR_MAX SHRT_MIN ULONG_MAX - - 3 Header (Table 4): - - DBL_DIG DBL_MIN_EXP FLT_MIN_10_EXP LDBL_MAX_10_EXP - DBL_EPSILON FLT_DIG FLT_MIN_EXP LDBL_MAX_EXP - DBL_MANT_DIG FLT_EPSILON FLT_RADIX LDBL_MIN -X DBL_MAX FLT_MANT_DIG FLT_ROUNDS LDBL_MIN_10_EXP - DBL_MAX_10_EXP FLT_MAX LDBL_DIG LDBL_MIN_EXP - DBL_MAX_EXP FLT_MAX_10_EXP LDBL_EPSILON - DBL_MIN FLT_MAX_EXP LDBL_MANT_DIG - DBL_MIN_10_EXP FLT_MIN LDBL_MAX - - - 1 Header (partial), Table 5: -X EXIT_FAILURE EXIT_SUCCESS - abort atexit exit - -S abort(void) -S extern "C" int atexit(void (*f)(void)) -S extern "C++" int atexit(void (*f)(void)) -S exit(int status) - - 18.4 Dynamic memory management [lib.support.dynamic] - - Header synopsis - -T class bad_alloc; -T struct nothrow_t {}; -T extern const nothrow_t nothrow; -T typedef void (*new_handler)(); -T new_handler set_new_handler(new_handler new_p) throw(); - -T void* operator new(std::size_t size) throw(std::bad_alloc); -T void* operator new(std::size_t size, const std::nothrow_t&) throw(); -T void operator delete(void* ptr) throw(); -T void operator delete(void* ptr, const std::nothrow_t&) throw(); -T void* operator new[](std::size_t size) throw(std::bad_alloc); -T void* operator new[](std::size_t size, const std::nothrow_t&) throw(); -T void operator delete[](void* ptr) throw(); -T void operator delete[](void* ptr, const std::nothrow_t&) throw(); -T void* operator new (std::size_t size, void* ptr) throw(); -T void* operator new[](std::size_t size, void* ptr) throw(); -T void operator delete (void* ptr, void*) throw(); -T void operator delete[](void* ptr, void*) throw(); - - 18.4.2.1 Class bad_alloc [lib.bad.alloc] - -T class bad_alloc : public exception { - public: -T bad_alloc() throw(); -T bad_alloc(const bad_alloc&) throw(); -T bad_alloc& operator=(const bad_alloc&) throw(); -T virtual ~bad_alloc() throw(); -T virtual const char* what() const throw(); - - - -T new_handler set_new_handler(new_handler new_p) throw(); - - - Header synopsis - -T class type_info; -T class bad_cast; -T class bad_typeid; - - 18.5.1 - Class type_info [lib.type.info] - -T class type_info { - public: -T virtual ~type_info(); -T bool operator==(const type_info& rhs) const; -T bool operator!=(const type_info& rhs) const; -T bool before(const type_info& rhs) const; -T const char* name() const; - private: -T type_info(const type_info& rhs); -T type_info& operator=(const type_info& rhs); - }; - - 18.5.2 - Class bad_cast [lib.bad.cast] - -T bad_cast() throw(); -T virtual const char* bad_cast::what() const throw(); - - 18.5.3 Class bad_typeid [lib.bad.typeid] - -T class bad_typeid : public exception { - public: -T bad_typeid() throw(); -T bad_typeid(const bad_typeid&) throw(); -T bad_typeid& operator=(const bad_typeid&) throw(); -T virtual ~bad_typeid() throw(); -T virtual const char* what() const throw(); - }; - - 18.6 Exception handling [lib.support.exception] - -T Header synopsis - -T class exception; -T class bad_exception; - -T typedef void (*unexpected_handler)(); -T unexpected_handler set_unexpected(unexpected_handler f) throw(); -T void unexpected(); -T typedef void (*terminate_handler)(); -T terminate_handler set_terminate(terminate_handler f) throw(); -T void terminate(); -T bool uncaught_exception(); - - 18.6.1 Class exception [lib.exception] - -T class exception { - public: -T exception() throw(); -T exception(const exception&) throw(); -T exception& operator=(const exception&) throw(); -T virtual ~exception() throw(); -T virtual const char* what() const throw(); - }; - - 18.6.2.1 Class bad_exception [lib.bad.exception] -T class bad_exception : public exception { - public: -T bad_exception() throw(); -T bad_exception(const bad_exception&) throw(); -T bad_exception& operator=(const bad_exception&) throw(); -T virtual ~bad_exception() throw(); -T virtual const char* what() const throw(); - }; - - 18.7 Other runtime support [lib.support.runtime] - - 1 Headers (variable arguments), (nonlocal jumps), - (system clock clock(), time()), (signal handling), - and (runtime environment getenv(), system()). - - Table 6--Header synopsis - Macros: va_arg va_end va_start -X Type: va_list - - Table 7--Header synopsis - - Macro: setjmp | -X Type: jmp_buf - Function: longjmp - - Table 8--Header synopsis - - Macros: CLOCKS_PER_SEC -X Types: clock_t - Functions: clock - - Table 9--Header synopsis - -X Macros: SIGABRT SIGILL SIGSEGV SIG_DFL - SIG_IGN SIGFPE SIGINT SIGTERM SIG_ERR - Type: sig_atomic_t - Functions: raise signal - - Table 10--Header synopsis - -X Functions: getenv system - - 19.1 Exception classes [lib.std.exceptions] - - Header synopsis - -T class logic_error; -T class domain_error; -T class invalid_argument; -T class length_error; -T class out_of_range; -T class runtime_error; -T class range_error; -T class overflow_error; -T class underflow_error; - - 19.1.1 Class logic_error [lib.logic.error] -T class logic_error : public exception { - public: -T explicit logic_error(const string& what_arg); - }; - - 19.1.2 Class domain_error [lib.domain.error] - -T class domain_error : public logic_error { - public: -T explicit domain_error(const string& what_arg); - }; - - 19.1.3 Class invalid_argument [lib.invalid.argument] - -T class invalid_argument : public logic_error { - public: -T explicit invalid_argument(const string& what_arg); - }; - - 19.1.4 Class length_error [lib.length.error] - -T class length_error : public logic_error { - public: -T explicit length_error(const string& what_arg); - }; - - 19.1.5 Class out_of_range [lib.out.of.range] - -T class out_of_range : public logic_error { - public: -T explicit out_of_range(const string& what_arg); - }; - - - 19.1.6 Class runtime_error [lib.runtime.error] - -T class runtime_error : public exception { - public: -T explicit runtime_error(const string& what_arg); - }; - - - 19.1.7 Class range_error [lib.range.error] - -T class range_error : public runtime_error { - public: -T explicit range_error(const string& what_arg); - }; - - 19.1.8 Class overflow_error [lib.overflow.error] - -T class overflow_error : public runtime_error { - public: -T explicit overflow_error(const string& what_arg); - }; - - - 19.1.9 Class underflow_error [lib.underflow.error] - -T class underflow_error : public runtime_error { - public: -T explicit underflow_error(const string& what_arg); - }; - - - 19.2 Assertions [lib.assertions] - - Table 2--Header synopsis - -X Macro: assert - - 19.3 Error numbers [lib.errno] - - Table 3--Header synopsis - -X |Macros: EDOM ERANGE errno | - - - 20.2 Utility components [lib.utility] - - Header synopsis - - // _lib.operators_, operators: -T namespace rel_ops { -T template bool operator!=(const T&, const T&); -T template bool operator> (const T&, const T&); -T template bool operator<=(const T&, const T&); -T template bool operator>=(const T&, const T&); - } - // _lib.pairs_, pairs: -T template struct pair; -T template - bool operator==(const pair&, const pair&); -T template - bool operator< (const pair&, const pair&); -T template - bool operator!=(const pair&, const pair&); -T template - bool operator> (const pair&, const pair&); -T template - bool operator>=(const pair&, const pair&); -T template - bool operator<=(const pair&, const pair&); -T template pair make_pair(const T1&, const T2&); - - - 20.2.2 Pairs [lib.pairs] - -T template - struct pair { -T typedef T1 first_type; -T typedef T2 second_type; - -T T1 first; -T T2 second; -T pair(); -T pair(const T1& x, const T2& y); -T template pair(const pair &p); - }; - - 20.3 Function objects [lib.function.objects] - - Header synopsis - - // _lib.base_, base: -V template struct unary_function; -V template struct binary_function; - - // _lib.arithmetic.operations_, arithmetic operations: -V template struct plus; -V template struct minus; -V template struct multiplies; -V template struct divides; -V template struct modulus; -V template struct negate; - // _lib.comparisons_, comparisons: -V template struct equal_to; -V template struct not_equal_to; -V template struct greater; -V template struct less; -V template struct greater_equal; -V template struct less_equal; - // _lib.logical.operations_, logical operations: -V template struct logical_and; -V template struct logical_or; -V template struct logical_not; - // _lib.negators_, negators: - template struct unary_negate; -V template - unary_negate not1(const Predicate&); -V template struct binary_negate; -V template - binary_negate not2(const Predicate&); - // _lib.binders_, binders: -V template class binder1st; -V template - binder1st bind1st(const Operation&, const T&); -V template class binder2nd; -V template - binder2nd bind2nd(const Operation&, const T&); - // _lib.function.pointer.adaptors_, adaptors: -V template class pointer_to_unary_function; -V template - pointer_to_unary_function ptr_fun(Result (*)(Arg)); -V template - class pointer_to_binary_function; -V template - pointer_to_binary_function - ptr_fun(Result (*)(Arg1,Arg2)); - - // _lib.member.pointer.adaptors_, adaptors: -V template class mem_fun_t; -V template class mem_fun1_t; -V template - mem_fun_t mem_fun(S (T::*f)()); -V template - mem_fun1_t mem_fun(S (T::*f)(A)); -V template class mem_fun_ref_t; -V template class mem_fun1_ref_t; -V template - mem_fun_ref_t mem_fun_ref(S (T::*f)()); -V template - mem_fun1_ref_t mem_fun_ref(S (T::*f)(A)); - -V template class const_mem_fun_t; -V template class const_mem_fun1_t; -V template - const_mem_fun_t mem_fun(S (T::*f)() const); -V template - const_mem_fun1_t mem_fun(S (T::*f)(A) const); -V template class const_mem_fun_ref_t; -V template class const_mem_fun1_ref_t; -V template - const_mem_fun_ref_t mem_fun_ref(S (T::*f)() const); -V template - const_mem_fun1_ref_t mem_fun_ref(S (T::*f)(A) const); - } - - 20.3.1 Base [lib.base] - -V template - struct unary_function { -V typedef Arg argument_type; -V typedef Result result_type; - }; -V template - struct binary_function { -V typedef Arg1 first_argument_type; -V typedef Arg2 second_argument_type; -V typedef Result result_type; - }; - - 20.3.2 Arithmetic operations [lib.arithmetic.operations] - -T template struct plus : binary_function { -V T operator()(const T& x, const T& y) const; - }; - -T template struct minus : binary_function { -V T operator()(const T& x, const T& y) const; - }; - -T template struct multiplies : binary_function { -V T operator()(const T& x, const T& y) const; - }; - -T template struct divides : binary_function { -V T operator()(const T& x, const T& y) const; - }; - -T template struct modulus : binary_function { -V T operator()(const T& x, const T& y) const; - }; - -T template struct negate : unary_function { -V T operator()(const T& x) const; - }; - - 20.3.3 Comparisons [lib.comparisons] - -T template struct equal_to : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - -T template struct not_equal_to : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - -T template struct greater : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - -T template struct less : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - -T template struct greater_equal : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - -T template struct less_equal : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - - 20.3.4 Logical operations [lib.logical.operations] - -T template struct logical_and : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - -T template struct logical_or : binary_function { -V bool operator()(const T& x, const T& y) const; - }; - -T template struct logical_not : unary_function { -V bool operator()(const T& x) const; - }; - - 20.3.5 Negators [lib.negators] - -T template - class unary_negate - : public unary_function { - public: -T explicit unary_negate(const Predicate& pred); -V bool operator()(const typename Predicate::argument_type& x) const; - }; - -T template - class binary_negate - : public binary_function { - public: -T explicit binary_negate(const Predicate& pred); -V bool operator()(const typename Predicate::first_argument_type& x, - const typename Predicate::second_argument_type& y) const; - }; - - - 20.3.6 Binders [lib.binders] - - 20.3.6.1 Template class binder1st [lib.binder.1st] -T template - class binder1st - : public unary_function { - protected: -T Operation op; -T typename Operation::first_argument_type value; - public: -V binder1st(const Operation& x, - const typename Operation::first_argument_type& y); -V typename Operation::result_type - operator()(const typename Operation::second_argument_type& x) const; - }; - - 20.3.6.2 bind1st [lib.bind.1st] - -V template - binder1st bind1st(const Operation& op, const T& x); - - 20.3.6.3 Template class binder2nd [lib.binder.2nd] -T template - class binder2nd - : public unary_function { - protected: -T Operation op; -T typename Operation::second_argument_type value; - public: -V binder2nd(const Operation& x, - const typename Operation::second_argument_type& y); -V typename Operation::result_type - operator()(const typename Operation::first_argument_type& x) const; - }; - - 20.3.6.4 bind2nd [lib.bind.2nd] - -T template - binder2nd bind2nd(const Operation& op, const T& x); - - - 20.3.7 Adaptors for pointers to [lib.function.pointer.adaptors] - functions - - 1 To allow pointers to (unary and binary) functions to work with func- - tion adaptors the library provides: - -T template - class pointer_to_unary_function : public unary_function { - public: -T explicit pointer_to_unary_function(Result (*f)(Arg)); -V Result operator()(Arg x) const; - }; - -T template - pointer_to_unary_function ptr_fun(Result (*f)(Arg)); - -T template - class pointer_to_binary_function : - public binary_function { - public: -T explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2)); -V Result operator()(Arg1 x, Arg2 y) const; - }; - - - 20.3.8 Adaptors for pointers to [lib.member.pointer.adaptors] - members - -T template class mem_fun_t - : public unary_function { - public: -T explicit mem_fun_t(S (T::*p)()); -V S operator()(T* p) const; - }; - -T template class mem_fun1_t - : public binary_function { - public: -T explicit mem_fun1_t(S (T::*p)(A)); -V S operator()(T* p, A x) const; - }; - -V template mem_fun_t - mem_fun(S (T::*f)()); -V template mem_fun1_t - mem_fun(S (T::*f)(A)); - -T template class mem_fun_ref_t - : public unary_function { - public: -T explicit mem_fun_ref_t(S (T::*p)()); -V S operator()(T& p) const; - }; - -T template class mem_fun1_ref_t - : public binary_function { - public: -T explicit mem_fun1_ref_t(S (T::*p)(A)); -V S operator()(T& p, A x) const; - }; - -T template mem_fun_ref_t - mem_fun_ref(S (T::*f)()); - -T template mem_fun1_ref_t - mem_fun_ref(S (T::*f)(A)); - -T template class const_mem_fun_t - : public unary_function { - public: -T explicit const_mem_fun_t(S (T::*p)() const); -V S operator()(const T* p) const; - }; - -T template class const_mem_fun1_t - : public binary_function { - public: -T explicit const mem_fun1_t(S (T::*p)(A) const); -V S operator()(const T* p, A x) const; - }; - -V template const_mem_fun_t - mem_fun(S (T::*f)() const); -V template const_mem_fun1_t - mem_fun(S (T::*f)(A) const); - -T template class const_mem_fun_ref_t - : public unary_function { - public: -T explicit const_mem_fun_ref_t(S (T::*p)() const); -V S operator()(const T& p) const; - }; - -T template class const_mem_fun1_ref_t - : public binary_function { - public: -T explicit const_mem_fun1_ref_t(S (T::*p)(A) const); -V S operator()(const T& p, A x) const; - }; - -T template const_mem_fun_ref_t - mem_fun_ref(S (T::*f)() const); - -T template const_mem_fun1_ref_t - mem_fun_ref(S (T::*f)(A) const); - - 20.4 Memory [lib.memory] - - Header synopsis - - // _lib.default.allocator_, the default allocator: -T template class allocator; -T template <> class allocator; -T template - bool operator==(const allocator&, const allocator&) throw(); -T template - bool operator!=(const allocator&, const allocator&) throw(); - // _lib.storage.iterator_, raw storage iterator: -T template class raw_storage_iterator; - // _lib.temporary.buffer_, temporary buffers: -T template - pair get_temporary_buffer(ptrdiff_t n); -T template - void return_temporary_buffer(T* p); - // _lib.specialized.algorithms_, specialized algorithms: -T template - ForwardIterator - uninitialized_copy(InputIterator first, InputIterator last, - ForwardIterator result); -T template - void uninitialized_fill(ForwardIterator first, ForwardIterator last, - const T& x); -T template - void uninitialized_fill_n(ForwardIterator first, Size n, const T& x); - // _lib.auto.ptr_, pointers: -X template class auto_ptr; - } - - 20.4.1 The default allocator [lib.default.allocator] - -T template class allocator; - // specialize for void: -T template <> class allocator { - public: -T typedef void* pointer; -T typedef const void* const_pointer; - // reference-to-void members are impossible. -T typedef void value_type; -T template struct rebind { typedef allocator other; }; - }; - -T template class allocator { - public: -T typedef size_t size_type; -T typedef ptrdiff_t difference_type; -T typedef T* pointer; -T typedef const T* const_pointer; -T typedef T& reference; -T typedef const T& const_reference; -T typedef T value_type; -T template struct rebind { typedef allocator other; }; -T allocator() throw(); -T allocator(const allocator&) throw(); -T template allocator(const allocator&) throw(); -T ~allocator() throw(); -T pointer address(reference x) const; -T const_pointer address(const_reference x) const; -T pointer allocate( - size_type, allocator::const_pointer hint = 0); -T void deallocate(pointer p, size_type n); -T size_type max_size() const throw(); -T void construct(pointer p, const T& val); -T void destroy(pointer p); - }; - - 20.4.1.2 allocator globals [lib.allocator.globals] - -T template - bool operator==(const allocator&, const allocator&) throw(); -T template - bool operator!=(const allocator&, const allocator&) throw(); - - 20.4.2 Raw storage iterator [lib.storage.iterator] - -T template - class raw_storage_iterator - : public iterator { - public: -T explicit raw_storage_iterator(OutputIterator x); -T raw_storage_iterator& operator*(); -T raw_storage_iterator& operator=(const T& element); -T raw_storage_iterator& operator++(); -T raw_storage_iterator operator++(int); - }; - - 20.4.3 Temporary buffers [lib.temporary.buffer] - -T template - pair get_temporary_buffer(ptrdiff_t n); - -T template void return_temporary_buffer(T* p); - - 20.4.4 Specialized algorithms [lib.specialized.algorithms] - - 20.4.4.1 uninitialized_copy [lib.uninitialized.copy] - -V template - ForwardIterator - uninitialized_copy(InputIterator first, InputIterator last, - ForwardIterator result); - - 20.4.4.2 uninitialized_fill [lib.uninitialized.fill] - -V template - void uninitialized_fill(ForwardIterator first, ForwardIterator last, - const T& x); - - 20.4.4.3 uninitialized_fill_n [lib.uninitialized.fill.n] - -V template - void uninitialized_fill_n(ForwardIterator first, Size n, const T& x); - - 20.4.5 Template class auto_ptr [lib.auto.ptr] - -X template class auto_ptr { - template struct auto_ptr_ref {}; - public: -T typedef X element_type; - // _lib.auto.ptr.cons_ construct/copy/destroy: -T explicit auto_ptr(X* p =0) throw(); -T auto_ptr(auto_ptr&) throw(); -T template auto_ptr(auto_ptr&) throw(); -T auto_ptr& operator=(auto_ptr&) throw(); -T template auto_ptr& operator=(auto_ptr&) throw(); -T ~auto_ptr() throw(); - // _lib.auto.ptr.members_ members: -T X& operator*() const throw(); -T X* operator->() const throw(); -T X* get() const throw(); -T X* release() throw(); -T void reset(X* p =0) throw(); - - // _lib.auto.ptr.conv_ conversions: -X auto_ptr(auto_ptr_ref) throw(); -X template operator auto_ptr_ref() throw(); -X template operator auto_ptr() throw(); - }; - - 20.4.6 C Library [lib.c.malloc] - - Table 7--Header synopsis - -X Functions: calloc malloc - free realloc - - - Table 8--Header synopsis - -X Macro: NULL -X Type: size_t -X Functions: memchr memcmp -X memcpy memmove memset - - Table 9--Header synopsis - -X Macros: NULL -X Types: size_t clock_t time_t -X Struct: tm - Functions: -X asctime clock difftime localtime strftime -X ctime gmtime mktime time - - 21.1.1 Character traits requirements [lib.char.traits.require] - - 2 The struct template -T template struct char_traits; - shall be provided in the header as a basis for explicit spe- - cializations. - - - 21.1.3.1 struct [lib.char.traits.specializations.char] - char_traits - -T template<> - struct char_traits { -T typedef char char_type; -T typedef int int_type; -T typedef streamoff off_type; -T typedef streampos pos_type; -T typedef mbstate_t state_type; - -T static void assign(char_type& c1, const char_type& c2); -T static bool eq(const char_type& c1, const char_type& c2); -T static bool lt(const char_type& c1, const char_type& c2); - -T static int compare(const char_type* s1, const char_type* s2, size_t n); -T static size_t length(const char_type* s); -T static const char_type* find(const char_type* s, size_t n, - const char_type& a); -T static char_type* move(char_type* s1, const char_type* s2, size_t n); -T static char_type* copy(char_type* s1, const char_type* s2, size_t n); -T static char_type* assign(char_type* s, size_t n, char_type a); - -T static int_type not_eof(const int_type& c); -T static char_type to_char_type(const int_type& c); -T static int_type to_int_type(const char_type& c); -T static bool eq_int_type(const int_type& c1, const int_type& c2); -T static int_type eof(); - }; - - 21.1.3.2 struct [lib.char.traits.specializations.wchar.t] - char_traits - -V template<> - struct char_traits { -V typedef wchar_t char_type; -V typedef wint_t int_type; -V typedef streamoff off_type; -V typedef wstreampos pos_type; -V typedef mbstate_t state_type; - -V static void assign(char_type& c1, const char_type& c2); -V static bool eq(const char_type& c1, const char_type& c2); -V static bool lt(const char_type& c1, const char_type& c2); - -V static int compare(const char_type* s1, const char_type* s2, size_t n); -V static size_t length(const char_type* s); -V static const char_type* find(const char_type* s, size_t n, - const char_type& a); -V static char_type* move(char_type* s1, const char_type* s2, size_t n); -V static char_type* copy(char_type* s1, const char_type* s2, size_t n); -V static char_type* assign(char_type* s, size_t n, char_type a); - -V static int_type not_eof(const int_type& c); -V static char_type to_char_type(const int_type& c); -V static int_type to_int_type(const char_type& c); -V static bool eq_int_type(const int_type& c1, const int_type& c2); -V static int_type eof(); - }; - - 21.2 String classes [lib.string.classes] - - // _lib.char.traits_, character traits: -V template - struct char_traits; -V template <> struct char_traits; -V template <> struct char_traits; - - // _lib.basic.string_, basic_string: -V template, - class Allocator = allocator > - class basic_string; -V template - basic_string - operator+(const basic_string& lhs, - const basic_string& rhs); -V template - basic_string - operator+(const charT* lhs, - const basic_string& rhs); -V template - basic_string - operator+(charT lhs, const basic_string& rhs); -V template - basic_string - operator+(const basic_string& lhs, - const charT* rhs); -V template - basic_string - operator+(const basic_string& lhs, charT rhs); - -V template - bool operator==(const basic_string& lhs, - const basic_string& rhs); -V template - bool operator==(const charT* lhs, - const basic_string& rhs); -V template - bool operator==(const basic_string& lhs, - const charT* rhs); -V template - bool operator!=(const basic_string& lhs, - const basic_string& rhs); -V template - bool operator!=(const charT* lhs, - const basic_string& rhs); -V template - bool operator!=(const basic_string& lhs, - const charT* rhs); -V template - bool operator< (const basic_string& lhs, - const basic_string& rhs); -V template - bool operator< (const basic_string& lhs, - const charT* rhs); -V template - bool operator< (const charT* lhs, - const basic_string& rhs); -V template - bool operator> (const basic_string& lhs, - const basic_string& rhs); -V template - bool operator> (const basic_string& lhs, - const charT* rhs); -V template - bool operator> (const charT* lhs, - const basic_string& rhs); -V template - bool operator<=(const basic_string& lhs, - const basic_string& rhs); -V template - bool operator<=(const basic_string& lhs, - const charT* rhs); -V template - bool operator<=(const charT* lhs, - const basic_string& rhs); -V template - bool operator>=(const basic_string& lhs, - const basic_string& rhs); -V template - bool operator>=(const basic_string& lhs, - const charT* rhs); -V template - bool operator>=(const charT* lhs, - const basic_string& rhs); - - // _lib.string.special_: -V template - void swap(basic_string& lhs, - basic_string& rhs); -V template - basic_istream& - operator>>(basic_istream& is, - basic_string& str); -T template - basic_ostream& - operator<<(basic_ostream& os, - const basic_string& str); -V template - basic_istream& - getline(basic_istream& is, - basic_string& str, - charT delim); -V template - basic_istream& - getline(basic_istream& is, - basic_string& str); -V typedef basic_string string; -T typedef basic_string wstring; - } - - 21.3 Template class basic_string [lib.basic.string] - -V namespace std { - template, - class Allocator = allocator > - class basic_string { - public: - // types: - typedef traits traits_type; - typedef typename traits::char_type value_type; - typedef Allocator allocator_type; - typedef typename Allocator::size_type size_type; - typedef typename Allocator::difference_type difference_type; - typedef typename Allocator::reference reference; - typedef typename Allocator::const_reference const_reference; - typedef typename Allocator::pointer pointer; - typedef typename Allocator::const_pointer const_pointer; - typedef implementation defined iterator; - typedef implementation defined const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - static const size_type npos = -1; - - // _lib.string.cons_ construct/copy/destroy: -V explicit basic_string(const Allocator& a = Allocator()); -V basic_string(const basic_string& str, size_type pos = 0, - size_type n = npos, const Allocator& a = Allocator()); -V basic_string(const charT* s, - size_type n, const Allocator& a = Allocator()); -V basic_string(const charT* s, const Allocator& a = Allocator()); -V basic_string(size_type n, charT c, const Allocator& a = Allocator()); -V template - basic_string(InputIterator begin, InputIterator end, - const Allocator& a = Allocator()); -V ~basic_string(); -V basic_string& operator=(const basic_string& str); -V basic_string& operator=(const charT* s); -V basic_string& operator=(charT c); - // _lib.string.iterators_ iterators: -V iterator begin(); -V const_iterator begin() const; -V iterator end(); -V const_iterator end() const; - -V reverse_iterator rbegin(); -V const_reverse_iterator rbegin() const; -V reverse_iterator rend(); -V const_reverse_iterator rend() const; - // _lib.string.capacity_ capacity: -V size_type size() const; -V size_type length() const; -V size_type max_size() const; -V void resize(size_type n, charT c); -V void resize(size_type n); -V size_type capacity() const; -V void reserve(size_type res_arg = 0); -V void clear(); -V bool empty() const; - // _lib.string.access_ element access: -V const_reference operator[](size_type pos) const; -V reference operator[](size_type pos); -V const_reference at(size_type n) const; -V reference at(size_type n); - // _lib.string.modifiers_ modifiers: -V basic_string& operator+=(const basic_string& str); -V basic_string& operator+=(const charT* s); -V basic_string& operator+=(charT c); -V basic_string& append(const basic_string& str); -V basic_string& append(const basic_string& str, size_type pos, - size_type n); -V basic_string& append(const charT* s, size_type n); -V basic_string& append(const charT* s); -V basic_string& append(size_type n, charT c); -V template - basic_string& append(InputIterator first, InputIterator last); -V void push_back(const charT); - -V basic_string& assign(const basic_string&); -V basic_string& assign(const basic_string& str, size_type pos, - size_type n); -V basic_string& assign(const charT* s, size_type n); -V basic_string& assign(const charT* s); -V basic_string& assign(size_type n, charT c); -V template - basic_string& assign(InputIterator first, InputIterator last); -V basic_string& insert(size_type pos1, const basic_string& str); -V basic_string& insert(size_type pos1, const basic_string& str, - size_type pos2, size_type n); -V basic_string& insert(size_type pos, const charT* s, size_type n); -V basic_string& insert(size_type pos, const charT* s); -V basic_string& insert(size_type pos, size_type n, charT c); -V iterator insert(iterator p, charT c); -V void insert(iterator p, size_type n, charT c); -V template - void insert(iterator p, InputIterator first, InputIterator last); -V basic_string& erase(size_type pos = 0, size_type n = npos); -V iterator erase(iterator position); -V iterator erase(iterator first, iterator last); -V basic_string& replace(size_type pos1, size_type n1, - const basic_string& str); -V basic_string& replace(size_type pos1, size_type n1, - const basic_string& str, - size_type pos2, size_type n2); -V basic_string& replace(size_type pos, size_type n1, const charT* s, - size_type n2); -V basic_string& replace(size_type pos, size_type n1, const charT* s); -V basic_string& replace(size_type pos, size_type n1, size_type n2, - charT c); -V basic_string& replace(iterator i1, iterator i2, const basic_string& str); -V basic_string& replace(iterator i1, iterator i2, const charT* s, - size_type n); -V basic_string& replace(iterator i1, iterator i2, const charT* s); -V basic_string& replace(iterator i1, iterator i2, - size_type n, charT c); -V template - basic_string& replace(iterator i1, iterator i2, - InputIterator j1, InputIterator j2); -V size_type copy(charT* s, size_type n, size_type pos = 0) const; -V void swap(basic_string&); - // _lib.string.ops_ string operations: -V const charT* c_str() const; // explicit -V const charT* data() const; -V allocator_type get_allocator() const; -V size_type find (const basic_string& str, size_type pos = 0) const; -V size_type find (const charT* s, size_type pos, size_type n) const; -V size_type find (const charT* s, size_type pos = 0) const; -V size_type find (charT c, size_type pos = 0) const; -V size_type rfind(const basic_string& str, size_type pos = npos) const; -V size_type rfind(const charT* s, size_type pos, size_type n) const; -V size_type rfind(const charT* s, size_type pos = npos) const; -V size_type rfind(charT c, size_type pos = npos) const; - -V size_type find_first_of(const basic_string& str, - size_type pos = 0) const; -V size_type find_first_of(const charT* s, - size_type pos, size_type n) const; -V size_type find_first_of(const charT* s, size_type pos = 0) const; -V size_type find_first_of(charT c, size_type pos = 0) const; -V size_type find_last_of (const basic_string& str, - size_type pos = npos) const; -V size_type find_last_of (const charT* s, - size_type pos, size_type n) const; -V size_type find_last_of (const charT* s, size_type pos = npos) const; -V size_type find_last_of (charT c, size_type pos = npos) const; -V size_type find_first_not_of(const basic_string& str, - size_type pos = 0) const; -V size_type find_first_not_of(const charT* s, size_type pos, - size_type n) const; -V size_type find_first_not_of(const charT* s, size_type pos = 0) const; -V size_type find_first_not_of(charT c, size_type pos = 0) const; -V size_type find_last_not_of (const basic_string& str, - size_type pos = npos) const; -V size_type find_last_not_of (const charT* s, size_type pos, - size_type n) const; -V size_type find_last_not_of (const charT* s, - size_type pos = npos) const; -V size_type find_last_not_of (charT c, size_type pos = npos) const; -V basic_string substr(size_type pos = 0, size_type n = npos) const; -V int compare(const basic_string& str) const; -V int compare(size_type pos1, size_type n1, - const basic_string& str) const; -V int compare(size_type pos1, size_type n1, - const basic_string& str, - size_type pos2, size_type n2) const; -V int compare(const charT* s) const; -V int compare(size_type pos1, size_type n1, - const charT* s, size_type n2 = npos) const; - }; - } - - 21.4 Null-terminated sequence utilities [lib.c.strings] - - Table 10--Header synopsis - - isalnum isdigit isprint isupper tolower -X isalpha isgraph ispunct isxdigit toupper - iscntrl islower isspace - - Table 11--Header synopsis - -X Macro: WEOF -X Types: wctrans_t wctype_t wint_t - Functions: -X iswalnum iswctype iswlower iswspace towctrans wctrans -X iswalpha iswdigit iswprint iswupper towlower wctype -X iswcntrl iswgraph iswpunct iswxdigit towupper - - Table 12--Header synopsis - -X Macro: NULL -X Type: size_t - Functions: -X memchr strcat strcspn strncpy strtok -X memcmp strchr strerror strpbrk strxfrm -X memcpy strcmp strlen strrchr -X memmove strcoll strncat strspn -X memset strcpy strncmp strstr - - Table 13--Header synopsis - Macros: NULL WCHAR_MAX WCHAR_MIN WEOF - Types: mbstate_t wint_t size_t - Functions: -X btowc getwchar ungetwc wcscpy wcsrtombs wmemchr -X fgetwc mbrlen vfwprintf wcscspn wcsspn wmemcmp -X fgetws mbrtowc vswprintf wcsftime wcsstr wmemcpy -X fputwc mbsinit vwprintf wcslen wcstod wmemmove -X fputws mbsrtowcs wcrtomb wcsncat wcstok wmemset -X fwide putwc wcscat wcsncmp wcstol wprintf -X fwprintf putwchar wcschr wcsncpy wcstoul wscanf -X fwscanf swprintf wcscmp wcspbrk wcsxfrm -X getwc swscanf wcscoll wcsrchr wctob - - Table 14--Header synopsis - - Macros: MB_CUR_MAX - Functions: -X atol mblen strtod wctomb -X atof mbstowcs strtol wcstombs -X atoi mbtowc strtoul - -X const char* strchr(const char* s, int c); -X char* strchr( char* s, int c); - -X const char* strpbrk(const char* s1, const char* s2); -X char* strpbrk( char* s1, const char* s2); - -X const char* strrchr(const char* s, int c); -X char* strrchr( char* s, int c); - -X const char* strstr(const char* s1, const char* s2); -X char* strstr( char* s1, const char* s2); - -X const void* memchr(const void* s, int c, size_t n); -X void* memchr( void* s, int c, size_t n); - -X const wchar_t* wcschr(const wchar_t* s, wchar_t c); -X wchar_t* wcschr( wchar_t* s, wchar_t c); - -X const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2); -X wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2); - -X const wchar_t* wcsrchr(const wchar_t* s, wchar_t c); -X wchar_t* wcsrchr( wchar_t* s, wchar_t c); - -X const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2); -X wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2); - -X const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); -X wchar_t* wmemchr( wchar_t* s, wchar_t c, size_t n); - - [for initial efforts on the above, see shadow/string.h] - - 22.1 Locales [lib.locales] - - Header synopsis - - // _lib.locale_, locale: -T class locale; -T template const Facet& use_facet(const locale&); -T template bool has_facet(const locale&) throw(); - - // _lib.locale.convenience_, convenience interfaces: -T template bool isspace (charT c, const locale& loc); -T template bool isprint (charT c, const locale& loc); -T template bool iscntrl (charT c, const locale& loc); -T template bool isupper (charT c, const locale& loc); -T template bool islower (charT c, const locale& loc); -T template bool isalpha (charT c, const locale& loc); -T template bool isdigit (charT c, const locale& loc); -T template bool ispunct (charT c, const locale& loc); -T template bool isxdigit(charT c, const locale& loc); -T template bool isalnum (charT c, const locale& loc); -T template bool isgraph (charT c, const locale& loc); -T template charT toupper(charT c, const locale& loc); -T template charT tolower(charT c, const locale& loc); - // _lib.category.ctype_ and _lib.facet.ctype.special_, ctype: - class ctype_base; -T template class ctype; -T template <> class ctype; // specialization -S template class ctype_byname; -S template <> class ctype_byname; // specialization -T class codecvt_base; -X template class codecvt; -S template class codecvt_byname; - // _lib.category.numeric_ and _lib.facet.numpunct_, numeric: -X template class num_get; -X template class num_put; -T template class numpunct; -S template class numpunct_byname; - // _lib.category.collate_, collation: -T template class collate; -S template class collate_byname; - // _lib.category.time_, date and time: -T class time_base; -S template class time_get; -S template class time_get_byname; -S template class time_put; -S template class time_put_byname; - // _lib.category.monetary_, money: -T class money_base; -S template class money_get; -S template class money_put; -S template class moneypunct; -S template class moneypunct_byname; - // _lib.category.messages_, message retrieval: -T class messages_base; -S template class messages; -S template class messages_byname; - - - 22.1.1 Class locale [lib.locale] - -X class locale { - public: - // types: -T class facet; -T class id; -T typedef int category; -T static const category // values assigned here are for exposition only -T none = 0, -T collate = 0x010, ctype = 0x020, -T monetary = 0x040, numeric = 0x080, -T time = 0x100, messages = 0x200, -T all = collate | ctype | monetary | numeric | time | messages; - // construct/copy/destroy: -T locale() throw() -T locale(const locale& other) throw() -X explicit locale(const char* std_name); -X locale(const locale& other, const char* std_name, category); -T template locale(const locale& other, Facet* f); -T locale(const locale& other, const locale& one, category); -T ~locale() throw(); // non-virtual -T const locale& operator=(const locale& other) throw(); -T template locale combine(const locale& other) const; - // locale operations: -X basic_string name() const; -T bool operator==(const locale& other) const; -T bool operator!=(const locale& other) const; -T template - bool operator()(const basic_string& s1, - const basic_string& s2) const; - // global locale objects: -T static locale global(const locale&); -T static const locale& classic(); - }; - - 22.1.1.1 locale types [lib.locale.types] - - 22.1.1.1.1 Type locale::category [lib.locale.category] - -T typedef int category; - -T none, collate, ctype, monetary, numeric, time, and messages - - [required locale members] -T collate, collate -T ctype, ctype -T codecvt, -S codecvt -T moneypunct, moneypunct -T moneypunct, moneypunct, -S money_get, money_get, money_put -T numpunct, numpunct, -X num_get, num_get -X num_put, num_put -S time_get, time_get, -S time_put, time_put -S messages, messages - - [required instantiations] -S collate_byname, collate_byname -S ctype_byname, ctype_byname -S codecvt_byname, -S codecvt_byname -S moneypunct_byname, -S moneypunct_byname, -S money_get, -S money_put -S numpunct_byname, numpunct_byname -X num_get, num_put -S time_get, -S time_get_byname, -S time_get, -S time_get_byname, -S time_put, -S time_put_byname, -S time_put -S time_put_byname -S messages_byname, messages_byname - - - 22.1.1.1.2 Class locale::facet [lib.locale.facet] - -T class locale::facet { - protected: -T explicit facet(size_t refs = 0); -T virtual ~facet(); - private: -T facet(const facet&); // not defined -T void operator=(const facet&); // not defined - }; - } - - - 22.1.1.1.3 Class locale::id [lib.locale.id] - -T class locale::id { - public: -T id(); - private: -T void operator=(const id&); // not defined -T id(const id&); // not defined - }; - } - - - 22.2.1 The ctype category [lib.category.ctype] - -T class ctype_base { - public: -T enum mask { // numeric values are for exposition only. -T space=, print=, cntrl=, upper=, lower=, -T alpha=, digit=, punct=, xdigit=, -T alnum=, graph= - }; - }; - - - 22.2.1.1 Template class ctype [lib.locale.ctype] - -T template - class ctype : public locale::facet, public ctype_base { - public: -T typedef charT char_type; -T explicit ctype(size_t refs = 0); -T bool is(mask m, charT c) const; -T const charT* is(const charT* low, const charT* high, mask* vec) const; -T const charT* scan_is(mask m, - const charT* low, const charT* high) const; -T const charT* scan_not(mask m, - const charT* low, const charT* high) const; -T charT toupper(charT c) const; -T const charT* toupper(charT* low, const charT* high) const; -T charT tolower(charT c) const; -T const charT* tolower(charT* low, const charT* high) const; -T charT widen(char c) const; -T const char* widen(const char* low, const char* high, charT* to) const; -T char narrow(charT c, char dfault) const; -T const charT* narrow(const charT* low, const charT*, char dfault, - char* to) const; -T static locale::id id; - - protected: -T ~ctype(); // virtual -T virtual bool do_is(mask m, charT c) const; -T virtual const charT* do_is(const charT* low, const charT* high, - mask* vec) const; -T virtual const charT* do_scan_is(mask m, - const charT* low, const charT* high) const; -T virtual const charT* do_scan_not(mask m, - const charT* low, const charT* high) const; -T virtual charT do_toupper(charT) const; -T virtual const charT* do_toupper(charT* low, const charT* high) const; -T virtual charT do_tolower(charT) const; -T virtual const charT* do_tolower(charT* low, const charT* high) const; -T virtual charT do_widen(char) const; -T virtual const char* do_widen(const char* low, const char* high, - charT* dest) const; -T virtual char do_narrow(charT, char dfault) const; -T virtual const charT* do_narrow(const charT* low, const charT* high, - char dfault, char* dest) const; - }; - - - 22.2.1.2 Template class ctype_byname [lib.locale.ctype.byname] - -X template - class ctype_byname : public ctype { - public: -T typedef ctype::mask mask; -S explicit ctype_byname(const char*, size_t refs = 0); - protected: -S ~ctype_byname(); // virtual -S virtual bool do_is(mask m, charT c) const; -S virtual const charT* do_is(const charT* low, const charT* high, - mask* vec) const; -S virtual const char* do_scan_is(mask m, - const charT* low, const charT* high) const; -S virtual const char* do_scan_not(mask m, - const charT* low, const charT* high) const; -S virtual charT do_toupper(charT) const; -S virtual const charT* do_toupper(charT* low, const charT* high) const; -S virtual charT do_tolower(charT) const; -S virtual const charT* do_tolower(charT* low, const charT* high) const; -S virtual charT do_widen(char) const; -S virtual const char* do_widen(const char* low, const char* high, - charT* dest) const; -S virtual char do_narrow(charT, char dfault) const; -S virtual const charT* do_narrow(const charT* low, const charT* high, - char dfault, char* dest) const; - }; - - 22.2.1.3 ctype specializations [lib.facet.ctype.special] - -T template <> class ctype - : public locale::facet, public ctype_base { - public: -T typedef char char_type; -T explicit ctype(const mask* tab = 0, bool del = false, - size_t refs = 0); -T bool is(mask m, char c) const; -T const char* is(const char* low, const char* high, mask* vec) const; -T const char* scan_is (mask m, - const char* low, const char* high) const; -T const char* scan_not(mask m, - const char* low, const char* high) const; -T char toupper(char c) const; -T const char* toupper(char* low, const char* high) const; -T char tolower(char c) const; -T const char* tolower(char* low, const char* high) const; -T char widen(char c) const; -T const char* widen(const char* low, const char* high, char* to) const; -T char narrow(char c, char dfault) const; -T const char* narrow(const char* low, const char* high, char dfault, - char* to) const; -T static locale::id id; -T static const size_t table_size = IMPLEMENTATION_DEFINED; - - protected: -T const mask* table() const throw(); -T static const mask* classic_table() throw(); -T ~ctype(); // virtual -T virtual char do_toupper(char c) const; -T virtual const char* do_toupper(char* low, const char* high) const; -T virtual char do_tolower(char c) const; -T virtual const char* do_tolower(char* low, const char* high) const; - -T virtual char do_widen(char c) const; -T virtual const char* do_widen(const char* low, - const char* high, - char* to) const; -T virtual char do_narrow(char c, char dfault) const; -T virtual const char* do_narrow(const char* low, - const char* high, - char dfault, char* to) const; - }; - - - 22.2.1.4 Class [lib.locale.ctype.byname.special] - ctype_byname - -X template <> class ctype_byname : public ctype { - public: -S explicit ctype_byname(const char*, size_t refs = 0); - protected: -S ~ctype_byname(); // virtual -S virtual char do_toupper(char c) const; -S virtual const char* do_toupper(char* low, const char* high) const; -S virtual char do_tolower(char c) const; -S virtual const char* do_tolower(char* low, const char* high) const; - -S virtual char do_widen(char c) const; -S virtual const char* do_widen(char* low, - const char* high, - char* to) const; -S virtual char do_widen(char c) const; -S virtual const char* do_widen(char* low, const char* high) const; - - }; - - - - 22.2.1.5 Template class codecvt [lib.locale.codecvt] - -T class codecvt_base { - public: -T enum result { ok, partial, error, noconv }; - }; - -T template - class codecvt : public locale::facet, public codecvt_base { - public: -T typedef internT intern_type; -T typedef externT extern_type; -T typedef stateT state_type; -T explicit codecvt(size_t refs = 0) -T result out(stateT& state, - const internT* from, const internT* from_end, const internT*& from_next, - externT* to, externT* to_limit, externT*& to_next) const; -T result unshift(stateT& state, - externT* to, externT* to_limit, externT*& to_next) const; -T result in(stateT& state, - const externT* from, const externT* from_end, const externT*& from_next, - internT* to, internT* to_limit, internT*& to_next) const; -T int encoding() const throw(); -T bool always_noconv() const throw(); -T int length(const stateT&, const externT* from, const externT* end, - size_t max) const; -T int max_length() const throw(); -T static locale::id id; - - protected: -T ~codecvt(); // virtual -T virtual result do_out(stateT& state, - const internT* from, const internT* from_end, const internT*& from_next, - externT* to, externT* to_limit, externT*& to_next) const; -T virtual result do_in(stateT& state, -T const externT* from, const externT* from_end, const externT*& from_next, - internT* to, internT* to_limit, internT*& to_next) const; -T virtual result do_unshift(stateT& state, - externT* to, externT* to_limit, externT*& to_next) const; -T virtual int do_encoding() const throw(); -T virtual bool do_always_noconv() const throw(); -T virtual int do_length(const stateT&, const externT* from, - const externT* end, size_t max) const; -T virtual int do_max_length() const throw(); - }; - } - - - 22.2.1.6 Template class [lib.locale.codecvt.byname] - codecvt_byname - -X template - class codecvt_byname : public codecvt { - public: -S explicit codecvt_byname(const char*, size_t refs = 0); - protected: -S ~codecvt_byname(); // virtual -S virtual result do_out(stateT& state, - const internT* from, const internT* from_end, const internT*& from_next, - externT* to, externT* to_limit, externT*& to_next) const; -S virtual result do_in(stateT& state, - const externT* from, const externT* from_end, const externT*& from_next, - internT* to, internT* to_limit, internT*& to_next) const; -S virtual result do_unshift(stateT& state, - externT* to, externT* to_limit, externT*& to_next) const; -S virtual int do_encoding() const throw(); -S virtual bool do_always_noconv() const throw(); -S virtual int do_length(const stateT&, const externT* from, - const externT* end, size_t max) const; -S virtual result do_unshift(stateT& state, - externT* to, externT* to_limit, externT*& to_next) const; -S virtual int do_max_length() const throw(); - }; - - - 22.2.2.1 Template class num_get [lib.locale.num.get] - -X template > - class num_get : public locale::facet { - public: -T typedef charT char_type; -T typedef InputIterator iter_type; -T explicit num_get(size_t refs = 0); -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, bool& v) const; -T iter_type get(iter_type in, iter_type end, ios_base& , - ios_base::iostate& err, long& v) const; -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, unsigned short& v) const; -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, unsigned int& v) const; -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, unsigned long& v) const; -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, float& v) const; -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, double& v) const; -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, long double& v) const; -T iter_type get(iter_type in, iter_type end, ios_base&, - ios_base::iostate& err, void*& v) const; -T static locale::id id; - - protected: -T ~num_get(); // virtual -T virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, bool& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, long& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, unsigned short& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, unsigned int& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, unsigned long& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, float& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, double& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, long double& v) const; -S virtual iter_type do_get(iter_type, iter_type, ios_base&, - ios_base::iostate& err, void*& v) const; - }; - - - - 22.2.2.2 Template class num_put [lib.locale.nm.put] - -X template > - class num_put : public locale::facet { - public: -T typedef charT char_type; -T typedef OutputIterator iter_type; -T explicit num_put(size_t refs = 0); -T iter_type put(iter_type s, ios_base& f, char_type fill, bool v) const; -T iter_type put(iter_type s, ios_base& f, char_type fill, long v) const; -T iter_type put(iter_type s, ios_base& f, char_type fill, - unsigned long v) const; -T iter_type put(iter_type s, ios_base& f, char_type fill, - double v) const; -T iter_type put(iter_type s, ios_base& f, char_type fill, - long double v) const; -T iter_type put(iter_type s, ios_base& f, char_type fill, - const void* v) const; -T static locale::id id; - protected: -T ~num_put(); // virtual -T virtual iter_type do_put(iter_type, ios_base&, char_type fill, - bool v) const; -T virtual iter_type do_put(iter_type, ios_base&, char_type fill, - long v) const; -T virtual iter_type do_put(iter_type, ios_base&, char_type fill, - unsigned long) const; -S virtual iter_type do_put(iter_type, ios_base&, char_type fill, - double v) const; -S virtual iter_type do_put(iter_type, ios_base&, char_type fill, - long double v) const; -T virtual iter_type do_put(iter_type, ios_base&, char_type fill, - const void* v) const; - }; - } - - 22.2.3.1 Template class numpunct [lib.locale.numpunct] - -T template - class numpunct : public locale::facet { - public: -T typedef charT char_type; -T typedef basic_string string_type; -T explicit numpunct(size_t refs = 0); -T char_type decimal_point() const; -T char_type thousands_sep() const; -T string grouping() const; -T string_type truename() const; -T string_type falsename() const; -T static locale::id id; - protected: -T ~numpunct(); // virtual -T virtual char_type do_decimal_point() const; -T virtual char_type do_thousands_sep() const; -T virtual string do_grouping() const; -T virtual string_type do_truename() const; // for bool -T virtual string_type do_falsename() const; // for bool - }; - } - - - - 22.2.3.2 Template class [lib.locale.numpunct.byname] - numpunct_byname - -X template - class numpunct_byname : public numpunct { - // this class is specialized for char and wchar_t. - public: -T typedef charT char_type; -T typedef basic_string string_type; -S explicit numpunct_byname(const char*, size_t refs = 0); - protected: -S ~numpunct_byname(); // virtual -S virtual char_type do_decimal_point() const; -S virtual char_type do_thousands_sep() const; -S virtual string do_grouping() const; -S virtual string_type do_truename() const; // for bool -S virtual string_type do_falsename() const; // for bool - }; - - - 22.2.4.1 Template class collate [lib.locale.collate] - -T template - class collate : public locale::facet { - public: -T typedef charT char_type; -T typedef basic_string string_type; -T explicit collate(size_t refs = 0); -T int compare(const charT* low1, const charT* high1, - const charT* low2, const charT* high2) const; -T string_type transform(const charT* low, const charT* high) const; -T long hash(const charT* low, const charT* high) const; -T static locale::id id; - protected: -T ~collate(); // virtual -T virtual int do_compare(const charT* low1, const charT* high1, - const charT* low2, const charT* high2) const; -T virtual string_type do_transform - (const charT* low, const charT* high) const; -T virtual long do_hash (const charT* low, const charT* high) const; - }; - - - 22.2.4.2 Template class [lib.locale.collate.byname] - collate_byname - -X template - class collate_byname : public collate { - public: -T typedef basic_string string_type; -T explicit collate_byname(const char*, size_t refs = 0); - protected: -S ~collate_byname(); // virtual -S virtual int do_compare(const charT* low1, const charT* high1, - const charT* low2, const charT* high2) const; -S virtual string_type do_transform - (const charT* low, const charT* high) const; -S virtual long do_hash (const charT* low, const charT* high) const; - }; - - - 22.2.5.1 Template class time_get [lib.locale.time.get] - -T class time_base { - public: -T enum dateorder { no_order, dmy, mdy, ymd, ydm }; - }; - - [Note: semantics of time_get members are implementation-defined. - To complete implementation requires documenting behavior.] - -X template > - class time_get : public locale::facet, public time_base { - public: -T typedef charT char_type; -T typedef InputIterator iter_type; -T explicit time_get(size_t refs = 0); - -T dateorder date_order() const { return do_date_order(); } -T iter_type get_time(iter_type s, iter_type end, ios_base& f, - ios_base::iostate& err, tm* t) const; -T iter_type get_date(iter_type s, iter_type end, ios_base& f, - ios_base::iostate& err, tm* t) const; -T iter_type get_weekday(iter_type s, iter_type end, ios_base& f, - ios_base::iostate& err, tm* t) const; -T iter_type get_monthname(iter_type s, iter_type end, ios_base& f, - ios_base::iostate& err, tm* t) const; -T iter_type get_year(iter_type s, iter_type end, ios_base& f, - ios_base::iostate& err, tm* t) const; -T static locale::id id; - protected: - ~time_get(); // virtual -X virtual dateorder do_date_order() const; -S virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; -S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; -S virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; -S virtual iter_type do_get_monthname(iter_type s, ios_base&, - ios_base::iostate& err, tm* t) const; -S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; - }; - - - - 22.2.5.2 Template class [lib.locale.time.get.byname] - time_get_byname - -X template > - class time_get_byname : public time_get { - public: -T typedef time_base::dateorder dateorder; -T typedef InputIterator iter_type - -S explicit time_get_byname(const char*, size_t refs = 0); - protected: -S ~time_get_byname(); // virtual -S virtual dateorder do_date_order() const; -S virtual iter_type do_get_time(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; -S virtual iter_type do_get_date(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; -T virtual iter_type do_get_weekday(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; -T virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; -S virtual iter_type do_get_year(iter_type s, iter_type end, ios_base&, - ios_base::iostate& err, tm* t) const; - }; - } - - 22.2.5.3 Template class time_put [lib.locale.time.put] - -X template > - class time_put : public locale::facet { - public: -T typedef charT char_type; -T typedef OutputIterator iter_type; -T explicit time_put(size_t refs = 0); - // the following is implemented in terms of other member functions. -S iter_type put(iter_type s, ios_base& f, char_type fill, const tm* tmb, - const charT* pattern, const charT* pat_end) const; -T iter_type put(iter_type s, ios_base& f, char_type fill, - const tm* tmb, char format, char modifier = 0) const; -T static locale::id id; - protected: -T ~time_put(); // virtual -S virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t, - char format, char modifier) const; - }; - - - - 22.2.5.4 Template class [lib.locale.time.put.byname] - time_put_byname - -T template > - class time_put_byname : public time_put - { - public: -T typedef charT char_type; -T typedef OutputIterator iter_type; - -T explicit time_put_byname(const char*, size_t refs = 0); - protected: -T ~time_put_byname(); // virtual -S virtual iter_type do_put(iter_type s, ios_base&, char_type, const tm* t, - char format, char modifier) const; - }; - - - 22.2.6.1 Template class money_get [lib.locale.money.get] - -X template > - class money_get : public locale::facet { - public: -T typedef charT char_type; -T typedef InputIterator iter_type; -T typedef basic_string string_type; -T explicit money_get(size_t refs = 0); -T iter_type get(iter_type s, iter_type end, bool intl, - ios_base& f, ios_base::iostate& err, - long double& units) const; -T iter_type get(iter_type s, iter_type end, bool intl, - ios_base& f, ios_base::iostate& err, - string_type& digits) const; -T static locale::id id; - protected: -T ~money_get(); // virtual -S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&, - ios_base::iostate& err, long double& units) const; -S virtual iter_type do_get(iter_type, iter_type, bool, ios_base&, - ios_base::iostate& err, string_type& digits) const; - }; - - 22.2.6.2 Template class money_put [lib.locale.money.put] - -X template > - class money_put : public locale::facet { - public: -T typedef charT char_type; -T typedef OutputIterator iter_type; -T typedef basic_string string_type; -T explicit money_put(size_t refs = 0); -T iter_type put(iter_type s, bool intl, ios_base& f, - char_type fill, long double units) const; -T iter_type put(iter_type s, bool intl, ios_base& f, - char_type fill, const string_type& digits) const; -T static locale::id id; - - protected: -T ~money_put(); // virtual -S virtual iter_type - do_put(iter_type, bool, ios_base&, char_type fill, - long double units) const; -S virtual iter_type - do_put(iter_type, bool, ios_base&, char_type fill, - const string_type& digits) const; - }; - - - 22.2.6.3 Template class moneypunct [lib.locale.moneypunct] - -T class money_base { - public: -T enum part { none, space, symbol, sign, value }; -T struct pattern { char field[4]; }; - }; - -X template - class moneypunct : public locale::facet, public money_base { - public: -T typedef charT char_type; -T typedef basic_string string_type; -T explicit moneypunct(size_t refs = 0); -T charT decimal_point() const; -T charT thousands_sep() const; -T string grouping() const; -T string_type curr_symbol() const; -T string_type positive_sign() const; -T string_type negative_sign() const; -T int frac_digits() const; -T pattern pos_format() const; -T pattern neg_format() const; -T static locale::id id; -T static const bool intl = International; - protected: -T ~moneypunct(); // virtual -S virtual charT do_decimal_point() const; -S virtual charT do_thousands_sep() const; -S virtual string do_grouping() const; -S virtual string_type do_curr_symbol() const; -S virtual string_type do_positive_sign() const; -S virtual string_type do_negative_sign() const; -S virtual int do_frac_digits() const; -T virtual pattern do_pos_format() const; -T virtual pattern do_neg_format() const; - }; - } - - 22.2.6.4 Template class [lib.locale.moneypunct.byname] - moneypunct_byname - -X template - class moneypunct_byname : public moneypunct { - public: -T typedef money_base::pattern pattern; -T typedef basic_string string_type; - -T explicit moneypunct_byname(const char*, size_t refs = 0); - protected: -T ~moneypunct_byname(); // virtual -S virtual charT do_decimal_point() const; -S virtual charT do_thousands_sep() const; -S virtual string do_grouping() const; -S virtual string_type do_curr_symbol() const; -S virtual string_type do_positive_sign() const; -S virtual string_type do_negative_sign() const; -S virtual int do_frac_digits() const; -S virtual pattern do_pos_format() const; -S virtual pattern do_neg_format() const; - }; - - 22.2.7.1 Template class messages [lib.locale.messages] - -T class messages_base { - public: -T typedef int catalog; - }; - -X template - class messages : public locale::facet, public messages_base { - public: -T typedef charT char_type; -T typedef basic_string string_type; -T explicit messages(size_t refs = 0); -T catalog open(const basic_string& fn, const locale&) const; -T string_type get(catalog c, int set, int msgid, - const string_type& dfault) const; -T void close(catalog c) const; -T static locale::id id; - protected: -T ~messages(); // virtual -S virtual catalog do_open(const basic_string&, const locale&) const; -S virtual string_type do_get(catalog, int set, int msgid, - const string_type& dfault) const; -S virtual void do_close(catalog) const; - }; - - 22.2.7.2 Template class [lib.locale.messages.byname] - messages_byname - - -X template - class messages_byname : public messages { - public: -T typedef messages_base::catalog catalog; -T typedef basic_string string_type; - -T explicit messages_byname(const char*, size_t refs = 0); - protected: -T ~messages_byname(); // virtual -S virtual catalog do_open(const basic_string&, const locale&) const; -S virtual string_type do_get(catalog, int set, int msgid, - const string_type& dfault) const; -S virtual void do_close(catalog) const; - }; - - - 22.3 C Library Locales [lib.c.locales] - - - Table 13--Header synopsis - Macros: -X LC_ALL LC_COLLATE LC_CTYPE -X LC_MONETARY LC_NUMERIC LC_TIME -X NULL -X Struct: lconv -X Functions: localeconv setlocale - - - 23.2 Sequences [lib.sequences] - - , , , , and . - - Header synopsis - -T template > class deque; -T template - bool operator==(const deque& x, const deque& y); -T template - bool operator< (const deque& x, const deque& y); -T template - bool operator!=(const deque& x, const deque& y); -T template - bool operator> (const deque& x, const deque& y); -T template - bool operator>=(const deque& x, const deque& y); -T template - bool operator<=(const deque& x, const deque& y); -T template - void swap(deque& x, deque& y); - } - - Header synopsis - -T template > class list; -T template - bool operator==(const list& x, const list& y); -T template - bool operator< (const list& x, const list& y); -T template - bool operator!=(const list& x, const list& y); -T template - bool operator> (const list& x, const list& y); -T template - bool operator>=(const list& x, const list& y); -T template - bool operator<=(const list& x, const list& y); -T template - void swap(list& x, list& y); - } - - Header synopsis - - namespace std { -T template > class queue; -T template - bool operator==(const queue& x, - const queue& y); -T template - bool operator< (const queue& x, - const queue& y); -T template - bool operator!=(const queue& x, - const queue& y); -T template - bool operator> (const queue& x, - const queue& y); -T template - bool operator>=(const queue& x, - const queue& y); -T template - bool operator<=(const queue& x, - const queue& y); -T template , - class Compare = less > -T class priority_queue; - } - - Header synopsis - - namespace std { -T template > class stack; -T template - bool operator==(const stack& x, - const stack& y); -T template - bool operator< (const stack& x, - const stack& y); -T template - bool operator!=(const stack& x, - const stack& y); -T template - bool operator> (const stack& x, - const stack& y); -T template - bool operator>=(const stack& x, - const stack& y); -T template - bool operator<=(const stack& x, - const stack& y); - } - - Header synopsis - -T template > class vector; - -T template - bool operator==(const vector& x, - const vector& y); -T template - bool operator< (const vector& x, - const vector& y); -T template - bool operator!=(const vector& x, - const vector& y); -T template - bool operator> (const vector& x, - const vector& y); -T template - bool operator>=(const vector& x, - const vector& y); -T template - bool operator<=(const vector& x, - const vector& y); -T template - void swap(vector& x, vector& y); - -T template class vector; -T template - bool operator==(const vector& x, - const vector& y); -T template - bool operator< (const vector& x, - const vector& y); -T template - bool operator!=(const vector& x, - const vector& y); -T template - bool operator> (const vector& x, - const vector& y); -T template - bool operator>=(const vector& x, - const vector& y); -T template - bool operator<=(const vector& x, - const vector& y); -T template - void swap(vector& x, vector& y); - } - - 23.2.1 Template class deque [lib.deque] - - template > -T class deque { - public: - // types: -T typedef typename Allocator::reference reference; -T typedef typename Allocator::const_reference const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type; -T typedef T value_type; -T typedef Allocator allocator_type; -T typedef typename Allocator::pointer pointer; -T typedef typename Allocator::const_pointer const_pointer; -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; - // _lib.deque.cons_ construct/copy/destroy: -T explicit deque(const Allocator& = Allocator()); -T explicit deque(size_type n, const T& value = T(), - const Allocator& = Allocator()); -T template - deque(InputIterator first, InputIterator last, - const Allocator& = Allocator()); -T deque(const deque& x); -T ~deque(); -T deque& operator=(const deque& x); -T template - void assign(InputIterator first, InputIterator last); -T void assign(size_type n, const T& t); -T allocator_type get_allocator() const; - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // _lib.deque.capacity_ capacity: -T size_type size() const; -T size_type max_size() const; -T void resize(size_type sz, T c = T()); -T bool empty() const; - - // element access: -T reference operator[](size_type n); -T const_reference operator[](size_type n) const; -T reference at(size_type n); -T const_reference at(size_type n) const; -T reference front(); -T const_reference front() const; -T reference back(); -T const_reference back() const; - // _lib.deque.modifiers_ modifiers: -T void push_front(const T& x); -T void push_back(const T& x); -T iterator insert(iterator position, const T& x); -T void insert(iterator position, size_type n, const T& x); -T template - void insert (iterator position, - InputIterator first, InputIterator last); -T void pop_front(); -T void pop_back(); -T iterator erase(iterator position); -T iterator erase(iterator first, iterator last); -T void swap(deque&); -T void clear(); - }; -T template - bool operator==(const deque& x, - const deque& y); -T template - bool operator< (const deque& x, - const deque& y); -T template - bool operator!=(const deque& x, - const deque& y); -T template - bool operator> (const deque& x, - const deque& y); -T template - bool operator>=(const deque& x, - const deque& y); -T template - bool operator<=(const deque& x, - const deque& y); - // specialized algorithms: -T template - void swap(deque& x, deque& y); - - - 23.2.2 Template class list [lib.list] - -T template > - class list { - public: - // types: -T typedef typename Allocator::reference reference; -T typedef typename Allocator::const_reference const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type; -T typedef T value_type; -T typedef Allocator allocator_type; -T typedef typename Allocator::pointer pointer; -T typedef typename Allocator::const_pointer const_pointer; -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; - - // _lib.list.cons_ construct/copy/destroy: -T explicit list(const Allocator& = Allocator()); -T explicit list(size_type n, const T& value = T(), - const Allocator& = Allocator()); -T template - list(InputIterator first, InputIterator last, - const Allocator& = Allocator()); -T list(const list& x); -T ~list(); -T list& operator=(const list& x); -T template - void assign(InputIterator first, InputIterator last); -T void assign(size_type n, const T& t); -T allocator_type get_allocator() const; - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // _lib.list.capacity_ capacity: -T bool empty() const; -T size_type size() const; -T size_type max_size() const; -T void resize(size_type sz, T c = T()); - // element access: -T reference front(); -T const_reference front() const; -T reference back(); -T const_reference back() const; - // _lib.list.modifiers_ modifiers: -T void push_front(const T& x); -T void pop_front(); -T void push_back(const T& x); -T void pop_back(); -T iterator insert(iterator position, const T& x); -T void insert(iterator position, size_type n, const T& x); -T template - void insert(iterator position, InputIterator first, - InputIterator last); -T iterator erase(iterator position); -T iterator erase(iterator position, iterator last); -T void swap(list&); -T void clear(); - // _lib.list.ops_ list operations: -T void splice(iterator position, list& x); -T void splice(iterator position, list& x, iterator i); -T void splice(iterator position, list& x, iterator first, - iterator last); -T void remove(const T& value); -T template void remove_if(Predicate pred); - -T void unique(); -T template - void unique(BinaryPredicate binary_pred); -T void merge(list& x); -T template void merge(list& x, Compare comp); - void sort(); -T template void sort(Compare comp); - void reverse(); - }; -T template - bool operator==(const list& x, const list& y); -T template - bool operator< (const list& x, const list& y); -T template - bool operator!=(const list& x, const list& y); -T template - bool operator> (const list& x, const list& y); -T template - bool operator>=(const list& x, const list& y); -T template - bool operator<=(const list& x, const list& y); - // specialized algorithms: -T template - void swap(list& x, list& y); - - - 23.2.3.1 Template class queue [lib.queue] - -T template > - class queue { - public: -T typedef typename Container::value_type value_type; -T typedef typename Container::size_type size_type; -T typedef Container container_type; - protected: -T Container c; - public: -T explicit queue(const Container& = Container()); - -T bool empty() const { return c.empty(); } -T size_type size() const { return c.size(); } -T value_type& front() { return c.front(); } -T const value_type& front() const { return c.front(); } -T value_type& back() { return c.back(); } -T const value_type& back() const { return c.back(); } -T void push(const value_type& x) { c.push_back(x); } -T void pop() { c.pop_front(); } - }; - -T template - bool operator==(const queue& x, - const queue& y); -T template - bool operator< (const queue& x, - const queue& y); -T template - bool operator!=(const queue& x, - const queue& y); -T template - bool operator> (const queue& x, - const queue& y); -T template - bool operator>=(const queue& x, - const queue& y); -T template - bool operator<=(const queue& x, - const queue& y); - - 23.2.3.2 Template class priority_queue [lib.priority.queue] - -T template , - class Compare = less > - class priority_queue { - public: -T typedef typename Container::value_type value_type; -T typedef typename Container::size_type size_type; -T typedef Container container_type; - protected: -T Container c; -T Compare comp; - public: -T explicit priority_queue(const Compare& x = Compare(), - const Container& = Container()); -T template - priority_queue(InputIterator first, InputIterator last, - const Compare& x = Compare(), - const Container& = Container()); - -T bool empty() const { return c.empty(); } -T size_type size() const { return c.size(); } -T const value_type& top() const { return c.front(); } -T void push(const value_type& x); -T void pop(); - }; - - 23.2.3.3 Template class stack [lib.stack] - -T template > - class stack { - public: -T typedef typename Container::value_type value_type; -T typedef typename Container::size_type size_type; -T typedef Container container_type; - protected: -T Container c; - public: -T explicit stack(const Container& = Container()); - -T bool empty() const { return c.empty(); } -T size_type size() const { return c.size(); } -T value_type& top() { return c.back(); } -T const value_type& top() const { return c.back(); } -T void push(const value_type& x) { c.push_back(x); } -T void pop() { c.pop_back(); } - }; -T template - bool operator==(const stack& x, - const stack& y); -T template - bool operator< (const stack& x, - const stack& y); -T template - bool operator!=(const stack& x, - const stack& y); -T template - bool operator> (const stack& x, - const stack& y); -T template - bool operator>=(const stack& x, - const stack& y); -T template - bool operator<=(const stack& x, - const stack& y); - - 23.2.4 Template class vector [lib.vector] - - template > -T class vector { - public: - // types: -T typedef typename Allocator::reference reference; -T typedef typename Allocator::const_reference const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type; -T typedef T value_type; -T typedef Allocator allocator_type; -T typedef typename Allocator::pointer pointer; -T typedef typename Allocator::const_pointer const_pointer -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; - // _lib.vector.cons_ construct/copy/destroy: -T explicit vector(const Allocator& = Allocator()); -T explicit vector(size_type n, const T& value = T(), - const Allocator& = Allocator()); -T template - vector(InputIterator first, InputIterator last, - const Allocator& = Allocator()); -T vector(const vector& x); -T ~vector(); -T vector& operator=(const vector& x); -T template - void assign(InputIterator first, InputIterator last); -T void assign(size_type n, const T& u); -T allocator_type get_allocator() const; - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // _lib.vector.capacity_ capacity: -T size_type size() const; -T size_type max_size() const; -T void resize(size_type sz, T c = T()); -T size_type capacity() const; -T bool empty() const; -T void reserve(size_type n); - - // element access: -T reference operator[](size_type n); -T const_reference operator[](size_type n) const; -T const_reference at(size_type n) const; -T reference at(size_type n); -T reference front(); -T const_reference front() const; -T reference back(); -T const_reference back() const; - // _lib.vector.modifiers_ modifiers: -T void push_back(const T& x); -T void pop_back(); -T iterator insert(iterator position, const T& x); -T void insert(iterator position, size_type n, const T& x); -T template - void insert(iterator position, - InputIterator first, InputIterator last); -T iterator erase(iterator position); -T iterator erase(iterator first, iterator last); -T void swap(vector&); -T void clear(); - }; - -T template - bool operator==(const vector& x, - const vector& y); -T template - bool operator< (const vector& x, - const vector& y); -T template - bool operator!=(const vector& x, - const vector& y); -T template - bool operator> (const vector& x, - const vector& y); -T template - bool operator>=(const vector& x, - const vector& y); -T template - bool operator<=(const vector& x, - const vector& y); - // specialized algorithms: -T template - void swap(vector& x, vector& y); - - - 23.2.5 Class vector [lib.vector.bool] - -T template class vector { - public: - // types: -T typedef bool const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type; -T typedef bool value_type; -T typedef Allocator allocator_type; -T typedef implementation defined pointer; -T typedef implementation defined const_pointer -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; - // bit reference: -T class reference { - friend class vector; -T reference(); - public: -T ~reference(); -T operator bool() const; -T reference& operator=(const bool x); -T reference& operator=(const reference& x); -T void flip(); // flips the bit - }; - - // construct/copy/destroy: -T explicit vector(const Allocator& = Allocator()); -T explicit vector(size_type n, const bool& value = bool(), - const Allocator& = Allocator()); -T template - vector(InputIterator first, InputIterator last, - const Allocator& = Allocator()); -T vector(const vector& x); -T ~vector(); -T vector& operator=(const vector& x); -T template - void assign(InputIterator first, InputIterator last); -T void assign(size_type n, const T& t); -T allocator_type get_allocator() const; - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // capacity: -T size_type size() const; -T size_type max_size() const; -T void resize(size_type sz, bool c = false); -T size_type capacity() const; -T bool empty() const; -T void reserve(size_type n); - // element access: -T reference operator[](size_type n); -T const_reference operator[](size_type n) const; -T const_reference at(size_type n) const; -T reference at(size_type n); -T reference front(); -T const_reference front() const; -T reference back(); -T const_reference back() const; - // modifiers: -T void push_back(const bool& x); -T void pop_back(); -T iterator insert(iterator position, const bool& x); -T void insert (iterator position, size_type n, const bool& x); -T template - void insert(iterator position, - InputIterator first, InputIterator last); -T iterator erase(iterator position); -T iterator erase(iterator first, iterator last); -T void swap(vector&); -T static void swap(reference x, reference y); -T void flip(); // flips all bits -T void clear(); - }; - -T template - bool operator==(const vector& x, - const vector& y); -T template - bool operator< (const vector& x, - const vector& y); -T template - bool operator!=(const vector& x, - const vector& y); -T template - bool operator> (const vector& x, - const vector& y); -T template - bool operator>=(const vector& x, - const vector& y); -T template - bool operator<=(const vector& x, - const vector& y); - // specialized algorithms: -T template - void swap(vector& x, vector& y); - - 23.3 Associative containers [lib.associative] - - and : - - Header synopsis - - template , - class Allocator = allocator > > -T class map; - -T template - bool operator==(const map& x, - const map& y); -T template - bool operator< (const map& x, - const map& y); -T template - bool operator!=(const map& x, - const map& y); -T template - bool operator> (const map& x, - const map& y); -T template - bool operator>=(const map& x, - const map& y); -T template - bool operator<=(const map& x, - const map& y); -T template - void swap(map& x, - map& y); -T template , - class Allocator = allocator > > - class multimap; -T template - bool operator==(const multimap& x, - const multimap& y); -T template - bool operator< (const multimap& x, - const multimap& y); -T template - bool operator!=(const multimap& x, - const multimap& y); -T template - bool operator> (const multimap& x, - const multimap& y); -T template - bool operator>=(const multimap& x, - const multimap& y); -T template - bool operator<=(const multimap& x, - const multimap& y); -T template - void swap(multimap& x, - multimap& y); - } - - Header synopsis - - template , - class Allocator = allocator > -T class set; - -T template - bool operator==(const set& x, - const set& y); -T template - bool operator< (const set& x, - const set& y); -T template - bool operator!=(const set& x, - const set& y); -T template - bool operator> (const set& x, - const set& y); -T template - bool operator>=(const set& x, - const set& y); -T template - bool operator<=(const set& x, - const set& y); -T template - void swap(set& x, - set& y); -T template , - class Allocator = allocator > - class multiset; -T template - bool operator==(const multiset& x, - const multiset& y); -T template - bool operator< (const multiset& x, - const multiset& y); -T template - bool operator!=(const multiset& x, - const multiset& y); -T template - bool operator> (const multiset& x, - const multiset& y); -T template - bool operator>=(const multiset& x, - const multiset& y); -T template - bool operator<=(const multiset& x, - const multiset& y); -T template - void swap(multiset& x, - multiset& y); - } - - 23.3.1 Template class map [lib.map] - - template , - class Allocator = allocator > > -T class map { - public: - // types: -T typedef Key key_type; -T typedef T mapped_type; -T typedef pair value_type; -T typedef Compare key_compare; -T typedef Allocator allocator_type; -T typedef typename Allocator::reference reference; -T typedef typename Allocator::const_reference const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type; -T typedef typename Allocator::pointer pointer; -T typedef typename Allocator::const_pointer const_pointer; -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; -T class value_compare - : public binary_function { - friend class map; - protected: -T Compare comp; -T value_compare(Compare c) : comp(c) {} - public: -T bool operator()(const value_type& x, const value_type& y) const { - return comp(x.first, y.first); - } - }; - - // _lib.map.cons_ construct/copy/destroy: -T explicit map(const Compare& comp = Compare(), - const Allocator& = Allocator()); -T template - map(InputIterator first, InputIterator last, - const Compare& comp = Compare(), const Allocator& = Allocator()); -T map(const map& x); -T ~map(); -T map& - operator=(const map& x); - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // capacity: -T bool empty() const; -T size_type size() const; -T size_type max_size() const; - // _lib.map.access_ element access: -T T& operator[](const key_type& x); - // modifiers: -T pair insert(const value_type& x); -T iterator insert(iterator position, const value_type& x); -T template - void insert(InputIterator first, InputIterator last); -T void erase(iterator position); -T size_type erase(const key_type& x); -T void erase(iterator first, iterator last); -T void swap(map&); -T void clear(); - // observers: -T key_compare key_comp() const; -T value_compare value_comp() const; - // _lib.map.ops_ map operations: -T iterator find(const key_type& x); -T const_iterator find(const key_type& x) const; -T size_type count(const key_type& x) const; -T iterator lower_bound(const key_type& x); -T const_iterator lower_bound(const key_type& x) const; -T iterator upper_bound(const key_type& x); -T const_iterator upper_bound(const key_type& x) const; -T pair - equal_range(const key_type& x); -T pair - equal_range(const key_type& x) const; - }; - -T template - bool operator==(const map& x, - const map& y); -T template - bool operator< (const map& x, - const map& y); -T template - bool operator!=(const map& x, - const map& y); -T template - bool operator> (const map& x, - const map& y); -T template - bool operator>=(const map& x, - const map& y); -T template - bool operator<=(const map& x, - const map& y); - // specialized algorithms: -T template - void swap(map& x, - map& y); - - 23.3.2 Template class multimap [lib.multimap] - - template , - class Allocator = allocator > > -T class multimap { - public: - // types: -T typedef Key key_type; -T typedef T mapped_type; -T typedef pair value_type; -T typedef Compare key_compare; -T typedef Allocator allocator_type; -T typedef typename Allocator::reference reference; -T typedef typename Allocator::const_reference const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type -T typedef typename Allocator::pointer pointer; -T typedef typename Allocator::const_pointer const_pointer; -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; -T class value_compare - : public binary_function { - friend class multimap; - protected: -T Compare comp; -T value_compare(Compare c) : comp(c) {} - public: -T bool operator()(const value_type& x, const value_type& y) const { - return comp(x.first, y.first); - } - }; - // construct/copy/destroy: -T explicit multimap(const Compare& comp = Compare(), - const Allocator& = Allocator()); -T template - multimap(InputIterator first, InputIterator last, - const Compare& comp = Compare(), - const Allocator& = Allocator()); -T multimap(const multimap& x); -T ~multimap(); -T multimap& - operator=(const multimap& x); -T allocator_type get_allocator() const; - - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // capacity: -T bool empty() const; -T size_type size() const; -T size_type max_size() const; - // modifiers: -T iterator insert(const value_type& x); -T iterator insert(iterator position, const value_type& x); -T template - void insert(InputIterator first, InputIterator last); -T void erase(iterator position); -T size_type erase(const key_type& x); -T void erase(iterator first, iterator last); -T void swap(multimap&); -T void clear(); - // observers: -T key_compare key_comp() const; -T value_compare value_comp() const; - // map operations: -T iterator find(const key_type& x); -T const_iterator find(const key_type& x) const; -T size_type count(const key_type& x) const; -T iterator lower_bound(const key_type& x); -T const_iterator lower_bound(const key_type& x) const; -T iterator upper_bound(const key_type& x); -T const_iterator upper_bound(const key_type& x) const; -T pair equal_range(const key_type& x); -T pair equal_range(const key_type& x) const; - }; - -T template - bool operator==(const multimap& x, - const multimap& y); -T template - bool operator< (const multimap& x, - const multimap& y); -T template - bool operator!=(const multimap& x, - const multimap& y); -T template - bool operator> (const multimap& x, - const multimap& y); -T template - bool operator>=(const multimap& x, - const multimap& y); -T template - bool operator<=(const multimap& x, - const multimap& y); - // specialized algorithms: -T template - void swap(multimap& x, - multimap& y); - - - 23.3.3 Template class set [lib.set] - - template , - class Allocator = allocator > -T class set { - public: - // types: -T typedef Key key_type; -T typedef Key value_type; -T typedef Compare key_compare; -T typedef Compare value_compare; -T typedef Allocator allocator_type; -T typedef typename Allocator::reference reference; -T typedef typename Allocator::const_reference const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type; -T typedef typename Allocator::pointer pointer; -T typedef typename Allocator::const_pointer const_pointer; -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; - // _lib.set.cons_ construct/copy/destroy: -T explicit set(const Compare& comp = Compare(), - const Allocator& = Allocator()); -T template - set(InputIterator first, InputIterator last, - const Compare& comp = Compare(), const Allocator& = Allocator()); -T set(const set& x); -T ~set(); -T set& - operator=(const set& x); -T allocator_type get_allocator() const; - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // capacity: -T bool empty() const; -T size_type size() const; -T size_type max_size() const; - // modifiers: -T pair insert(const value_type& x); -T iterator insert(iterator position, const value_type& x); -T template -T void insert(InputIterator first, InputIterator last); -T void erase(iterator position); -T size_type erase(const key_type& x); -T void erase(iterator first, iterator last); -T void swap(set&); -T void clear(); - - // observers: -T key_compare key_comp() const; -T value_compare value_comp() const; - // set operations: -T iterator find(const key_type& x) const; -T size_type count(const key_type& x) const; -T iterator lower_bound(const key_type& x) const; -T iterator upper_bound(const key_type& x) const; -T pair equal_range(const key_type& x) const; - }; -T template - bool operator==(const set& x, - const set& y); -T template - bool operator< (const set& x, - const set& y); -T template - bool operator!=(const set& x, - const set& y); -T template - bool operator> (const set& x, - const set& y); -T template - bool operator>=(const set& x, - const set& y); -T template - bool operator<=(const set& x, - const set& y); - // specialized algorithms: -T template - void swap(set& x, - set& y); - - 23.3.4 Template class multiset [lib.multiset] - - template , - class Allocator = allocator > -T class multiset { - public: - // types: -T typedef Key key_type; -T typedef Key value_type; -T typedef Compare key_compare; -T typedef Compare value_compare; -T typedef Allocator allocator_type; -T typedef typename Allocator::reference reference; -T typedef typename Allocator::const_reference const_reference; -T typedef implementation defined iterator; -T typedef implementation defined const_iterator; -T typedef implementation defined size_type; -T typedef implementation defined difference_type -T typedef typename Allocator::pointer pointer; -T typedef typename Allocator::const_pointer const_pointer; -T typedef std::reverse_iterator reverse_iterator; -T typedef std::reverse_iterator const_reverse_iterator; - - // construct/copy/destroy: -T explicit multiset(const Compare& comp = Compare(), - const Allocator& = Allocator()); -T template - multiset(InputIterator first, InputIterator last, - const Compare& comp = Compare(), - const Allocator& = Allocator()); -T multiset(const multiset& x); -T ~multiset(); -T multiset& - operator=(const multiset& x); -T allocator_type get_allocator() const; - // iterators: -T iterator begin(); -T const_iterator begin() const; -T iterator end(); -T const_iterator end() const; -T reverse_iterator rbegin(); -T const_reverse_iterator rbegin() const; -T reverse_iterator rend(); -T const_reverse_iterator rend() const; - // capacity: -T bool empty() const; -T size_type size() const; -T size_type max_size() const; - // modifiers: -T iterator insert(const value_type& x); -T iterator insert(iterator position, const value_type& x); -T template - void insert(InputIterator first, InputIterator last); -T void erase(iterator position); -T size_type erase(const key_type& x); -T void erase(iterator first, iterator last); -T void swap(multiset&); -T void clear(); - // observers: -T key_compare key_comp() const; -T value_compare value_comp() const; - // set operations: -T iterator find(const key_type& x) const; -T size_type count(const key_type& x) const; -T iterator lower_bound(const key_type& x) const; -T iterator upper_bound(const key_type& x) const; -T pair equal_range(const key_type& x) const; - }; - -T template - bool operator==(const multiset& x, - const multiset& y); -T template - bool operator< (const multiset& x, - const multiset& y); -T template - bool operator!=(const multiset& x, - const multiset& y); -T template - bool operator> (const multiset& x, - const multiset& y); -T template - bool operator>=(const multiset& x, - const multiset& y); -T template - bool operator<=(const multiset& x, - const multiset& y); - // specialized algorithms: -T template - void swap(multiset& x, - multiset& y); - - 23.3.5 Template class bitset [lib.template.bitset] - - Header synopsis - -T template class bitset; - // _lib.bitset.operators_ bitset operations: -T template - bitset operator&(const bitset&, const bitset&); -T template - bitset operator|(const bitset&, const bitset&); -T template - bitset operator^(const bitset&, const bitset&); -T template - basic_istream& - operator>>(basic_istream& is, bitset& x); -T template - basic_ostream& - operator<<(basic_ostream& os, const bitset& x); - -T template class bitset { - public: - // bit reference: -T class reference { - friend class bitset; -T reference(); - public: -T ~reference(); -T reference& operator=(bool x); // for b[i] = x; -T reference& operator=(const reference&); // for b[i] = b[j]; -T bool operator~() const; // flips the bit -T operator bool() const; // for x = b[i]; -T reference& flip(); // for b[i].flip(); - }; - - // _lib.bitset.cons_ constructors: -T bitset(); -T bitset(unsigned long val); -T template - explicit bitset( - const basic_string& str, - typename basic_string::size_type pos = 0, - typename basic_string::size_type n = - basic_string::npos); - // _lib.bitset.members_ bitset operations: -T bitset& operator&=(const bitset& rhs); -T bitset& operator|=(const bitset& rhs); -T bitset& operator^=(const bitset& rhs); -T bitset& operator<<=(size_t pos); -T bitset& operator>>=(size_t pos); -T bitset& set(); -T bitset& set(size_t pos, int val = true); -T bitset& reset(); -T bitset& reset(size_t pos); -T bitset operator~() const; -T bitset& flip(); -T bitset& flip(size_t pos); - // element access: -T reference operator[](size_t pos); // for b[i]; -T unsigned long to_ulong() const; -T template - basic_string to_string() const; -T size_t count() const; -T size_t size() const; -T bool operator==(const bitset& rhs) const; -T bool operator!=(const bitset& rhs) const; -T bool test(size_t pos) const; -T bool any() const; -T bool none() const; -T bitset operator<<(size_t pos) const; -T bitset operator>>(size_t pos) const; - }; - - - - - 24.2 Header synopsis [lib.iterator.synopsis] - - // _lib.iterator.primitives_, primitives: -T template struct iterator_traits; -T template struct iterator_traits; - -X template struct iterator; -T struct input_iterator_tag {}; -T struct output_iterator_tag {}; -T struct forward_iterator_tag: public input_iterator_tag {}; -T struct bidirectional_iterator_tag: public forward_iterator_tag {}; -T struct random_access_iterator_tag: public bidirectional_iterator_tag {}; - // _lib.iterator.operations_, iterator operations: -T template - void advance(InputIterator& i, Distance n); -T template - typename iterator_traits::difference_type - distance(InputIterator first, InputIterator last); - // _lib.predef.iterators_, predefined iterators: -X template class reverse_iterator; -T template - bool operator==( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator<( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator!=( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator>( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator>=( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator<=( - const reverse_iterator& x, - const reverse_iterator& y); -T template - typename reverse_iterator::difference_type operator-( - const reverse_iterator& x, - const reverse_iterator& y); -T template - reverse_iterator - operator+( - typename reverse_iterator::difference_type n, - const reverse_iterator& x); - -X template class back_insert_iterator; -T template - back_insert_iterator back_inserter(Container& x); -X template class front_insert_iterator; -T template - front_insert_iterator front_inserter(Container& x); -X template class insert_iterator; -T template - insert_iterator inserter(Container& x, Iterator i); - // _lib.stream.iterators_, stream iterators: -X template , - class Distance = ptrdiff_t> - class istream_iterator; - template -X bool operator==(const istream_iterator& x, - const istream_iterator& y); - template -X bool operator!=(const istream_iterator& x, - const istream_iterator& y); -X template > - class ostream_iterator; -X template > - class istreambuf_iterator; -X template - bool operator==(const istreambuf_iterator& a, - const istreambuf_iterator& b); -X template - bool operator!=(const istreambuf_iterator& a, - const istreambuf_iterator& b); -T template > - class ostreambuf_iterator; - - 24.3 Iterator primitives [lib.iterator.primitives] - -T template struct iterator_traits { -T typedef typename Iterator::difference_type difference_type; -T typedef typename Iterator::value_type value_type; -T typedef typename Iterator::pointer pointer; -T typedef typename Iterator::reference reference; -T typedef typename Iterator::iterator_category iterator_category; - }; - -T template struct iterator_traits { -T typedef ptrdiff_t difference_type; -T typedef T value_type; -T typedef T* pointer; -T typedef T& reference; -T typedef random_access_iterator_tag iterator_category; - }; - -T template struct iterator_traits { -T typedef ptrdiff_t difference_type; -T typedef T value_type; -T typedef const T* pointer; -T typedef const T& reference; -T typedef random_access_iterator_tag iterator_category; - }; - - 24.3.2 Basic iterator [lib.iterator.basic] - - template -X struct iterator { -T typedef T value_type; -T typedef Distance difference_type; -T typedef Pointer pointer; -T typedef Reference reference; -T typedef Category iterator_category; - }; - - 24.3.3 Standard iterator tags [lib.std.iterator.tags] - -T struct input_iterator_tag {}; -T struct output_iterator_tag {}; -T struct forward_iterator_tag: public input_iterator_tag {}; -T struct bidirectional_iterator_tag: public forward_iterator_tag {}; -T struct random_access_iterator_tag: public bidirectional_iterator_tag {}; - - - 24.4.1 Reverse iterators [lib.reverse.iterators] - - template -X class reverse_iterator : public - iterator::iterator_category, - typename iterator_traits::value_type, - typename iterator_traits::difference_type, - typename iterator_traits::pointer, - typename iterator_traits::reference> { - protected: -T Iterator current; - public: -T typedef Iterator - iterator_type; -T typedef typename iterator_traits::difference_type - difference_type; -T typedef typename iterator_traits::reference - reference; -T typedef typename iterator_traits::pointer - pointer; - -T reverse_iterator(); -T explicit reverse_iterator(Iterator x); -T template reverse_iterator(const reverse_iterator& u); -T Iterator base() const; // explicit -T reference operator*() const; -T pointer operator->() const; -T reverse_iterator& operator++(); -T reverse_iterator operator++(int); -T reverse_iterator& operator--(); -T reverse_iterator operator--(int); - -T reverse_iterator operator+ (difference_type n) const; -T reverse_iterator& operator+=(difference_type n); -T reverse_iterator operator- (difference_type n) const; -T reverse_iterator& operator-=(difference_type n); -T reference operator[](difference_type n) const; - }; -T template - bool operator==( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator<( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator!=( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator>( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator>=( - const reverse_iterator& x, - const reverse_iterator& y); -T template - bool operator<=( - const reverse_iterator& x, - const reverse_iterator& y); -T template - typename reverse_iterator::difference_type operator-( - const reverse_iterator& x, - const reverse_iterator& y); -T template - reverse_iterator operator+( - typename reverse_iterator::difference_type n, - const reverse_iterator& x); - - - 24.4.2.1 Template class [lib.back.insert.iterator] - back_insert_iterator - - template -X class back_insert_iterator : - public iterator { - protected: -T Container* container; - public: -T typedef Container container_type; -T explicit back_insert_iterator(Container& x); -T back_insert_iterator& - operator=(typename Container::const_reference value); - -T back_insert_iterator& operator*(); -T back_insert_iterator& operator++(); -T back_insert_iterator operator++(int); - }; -T template - back_insert_iterator back_inserter(Container& x); - - - - 24.4.2.3 Template class [lib.front.insert.iterator] - front_insert_iterator - - template -X class front_insert_iterator : - public iterator { - protected: -T Container* container; - public: -T typedef Container container_type; -T explicit front_insert_iterator(Container& x); -T front_insert_iterator& - operator=(typename Container::const_reference value); -T front_insert_iterator& operator*(); -T front_insert_iterator& operator++(); -T front_insert_iterator operator++(int); - }; -T template - front_insert_iterator front_inserter(Container& x); - - - 24.4.2.5 Template class insert_iterator [lib.insert.iterator] - - template -X class insert_iterator : - public iterator { - protected: -T Container* container; -T typename Container::iterator iter; - public: -T typedef Container container_type; -T insert_iterator(Container& x, typename Container::iterator i); -T insert_iterator& - operator=(typename Container::const_reference value); -T insert_iterator& operator*(); -T insert_iterator& operator++(); -T insert_iterator& operator++(int); - }; -T template - insert_iterator inserter(Container& x, Iterator i); - - 24.5.1 Template class istream_iterator [lib.istream.iterator] - - template , - class Distance = ptrdiff_t> -X class istream_iterator: - public iterator { - public: -T typedef charT char_type -T typedef traits traits_type; -T typedef basic_istream istream_type; -T istream_iterator(); -T istream_iterator(istream_type& s); -T istream_iterator(const istream_iterator& x); -T ~istream_iterator(); - -T const T& operator*() const; -T const T* operator->() const; -T istream_iterator& operator++(); -T istream_iterator operator++(int); - }; - -T template - bool operator==(const istream_iterator& x, - const istream_iterator& y); -T template - bool operator!=(const istream_iterator& x, - const istream_iterator& y); - - - 24.5.2 Template class ostream_iterator [lib.ostream.iterator] - - template > -X class ostream_iterator: - public iterator { - public: -T typedef charT char_type; -T typedef traits traits_type; -T typedef basic_ostream ostream_type; -T ostream_iterator(ostream_type& s); -T ostream_iterator(ostream_type& s, const charT* delimiter); -T ostream_iterator(const ostream_iterator& x); -T ~ostream_iterator(); -T ostream_iterator& operator=(const T& value); - -T ostream_iterator& operator*(); -T ostream_iterator& operator++(); -T ostream_iterator& operator++(int); - }; - - - 24.5.3 Template class [lib.istreambuf.iterator] - istreambuf_iterator - - template > -X class istreambuf_iterator - : public iterator { - public: -T typedef charT char_type; -T typedef traits traits_type; -T typedef typename traits::int_type int_type; -T typedef basic_streambuf streambuf_type; -T typedef basic_istream istream_type; -T class proxy; // exposition only -T istreambuf_iterator() throw(); -T istreambuf_iterator(istream_type& s) throw(); -T istreambuf_iterator(streambuf_type* s) throw(); -T istreambuf_iterator(const proxy& p) throw(); -T charT operator*() const; -T istreambuf_iterator& operator++(); -T proxy operator++(int); -X bool equal(istreambuf_iterator& b); - }; - -T template - bool operator==(const istreambuf_iterator& a, - const istreambuf_iterator& b); - -T template - bool operator!=(const istreambuf_iterator& a, - const istreambuf_iterator& b); - - 24.5.3.1 Template class [lib.istreambuf.iterator::proxy] - istreambuf_iterator::proxy - - template > -T class istreambuf_iterator::proxy - { -T charT keep_; -T basic_streambuf* sbuf_; -T proxy(charT c, - basic_streambuf* sbuf); - : keep_(c), sbuf_(sbuf) {} - public: -T charT operator*() { return keep_; } - }; - - - - 24.5.4 Template class [lib.ostreambuf.iterator] - ostreambuf_iterator - - template > -T class ostreambuf_iterator: - public iterator { - public: -T typedef charT char_type; -T typedef traits traits_type; -T typedef basic_streambuf streambuf_type; -T typedef basic_ostream ostream_type; - public: -T ostreambuf_iterator(ostream_type& s) throw(); -T ostreambuf_iterator(streambuf_type* s) throw(); -T ostreambuf_iterator& operator=(charT c); -T ostreambuf_iterator& operator*(); -T ostreambuf_iterator& operator++(); -T ostreambuf_iterator& operator++(int); -T bool failed() const throw(); - }; - - - Header synopsis - - - // _lib.alg.nonmodifying_, non-modifying sequence operations: -T template - Function for_each(InputIterator first, InputIterator last, Function f); -T template - InputIterator find(InputIterator first, InputIterator last, - const T& value); -T template - InputIterator find_if(InputIterator first, InputIterator last, - Predicate pred); -T template - ForwardIterator1 - find_end(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); -T template - ForwardIterator1 - find_end(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); -T template - ForwardIterator1 - find_first_of(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); -T template - ForwardIterator1 - find_first_of(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); -T template - ForwardIterator adjacent_find(ForwardIterator first, - ForwardIterator last); -T template - ForwardIterator adjacent_find(ForwardIterator first, - ForwardIterator last, BinaryPredicate pred); -T template - typename iterator_traits::difference_type - count(InputIterator first, InputIterator last, const T& value); -T template - typename iterator_traits::difference_type - count_if(InputIterator first, InputIterator last, Predicate pred); -T template - pair - mismatch(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2); -T template - pair - mismatch(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); - -T template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2); -T template - bool equal(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, BinaryPredicate pred); -T template - ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2); -T template - ForwardIterator1 search(ForwardIterator1 first1, ForwardIterator1 last1, - ForwardIterator2 first2, ForwardIterator2 last2, - BinaryPredicate pred); -T template - ForwardIterator search_n(ForwardIterator first, ForwardIterator last, - Size count, const T& value); -T template - ForwardIterator1 search_n(ForwardIterator first, ForwardIterator last, - Size count, const T& value, - BinaryPredicate pred); - // _lib.alg.modifying.operations_, modifying sequence operations: - // _lib.alg.copy_, copy: -T template - OutputIterator copy(InputIterator first, InputIterator last, - OutputIterator result); -T template - BidirectionalIterator2 - copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, - BidirectionalIterator2 result); - // _lib.alg.swap_, swap: -T template void swap(T& a, T& b); -T template - ForwardIterator2 swap_ranges(ForwardIterator1 first1, - ForwardIterator1 last1, ForwardIterator2 first2); -T template - void iter_swap(ForwardIterator1 a, ForwardIterator2 b); -T template - OutputIterator transform(InputIterator first, InputIterator last, - OutputIterator result, UnaryOperation op); -T template - OutputIterator transform(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, OutputIterator result, - BinaryOperation binary_op); - -T template - void replace(ForwardIterator first, ForwardIterator last, - const T& old_value, const T& new_value); -T template - void replace_if(ForwardIterator first, ForwardIterator last, - Predicate pred, const T& new_value); -T template - OutputIterator replace_copy(InputIterator first, InputIterator last, - OutputIterator result, - const T& old_value, const T& new_value); -T template - OutputIterator replace_copy_if(Iterator first, Iterator last, - OutputIterator result, - Predicate pred, const T& new_value); -T template - void fill(ForwardIterator first, ForwardIterator last, const T& value); -T template - void fill_n(OutputIterator first, Size n, const T& value); -T template - void generate(ForwardIterator first, ForwardIterator last, Generator gen); -T template - void generate_n(OutputIterator first, Size n, Generator gen); -T template - ForwardIterator remove(ForwardIterator first, ForwardIterator last, - const T& value); -T template - ForwardIterator remove_if(ForwardIterator first, ForwardIterator last, - Predicate pred); -T template - OutputIterator remove_copy(InputIterator first, InputIterator last, - OutputIterator result, const T& value); -T template - OutputIterator remove_copy_if(InputIterator first, InputIterator last, - OutputIterator result, Predicate pred); -T template - ForwardIterator unique(ForwardIterator first, ForwardIterator last); -T template - ForwardIterator unique(ForwardIterator first, ForwardIterator last, - BinaryPredicate pred); -T template - OutputIterator unique_copy(InputIterator first, InputIterator last, - OutputIterator result); -T template - OutputIterator unique_copy(InputIterator first, InputIterator last, - OutputIterator result, BinaryPredicate pred); -T template - void reverse(BidirectionalIterator first, BidirectionalIterator last); -T template - OutputIterator reverse_copy(BidirectionalIterator first, - BidirectionalIterator last, - OutputIterator result); - -T template - void rotate(ForwardIterator first, ForwardIterator middle, - ForwardIterator last); -T template - OutputIterator rotate_copy(ForwardIterator first, ForwardIterator middle, - ForwardIterator last, OutputIterator result); -T template - void random_shuffle(RandomAccessIterator first, - RandomAccessIterator last); -T template - void random_shuffle(RandomAccessIterator first, - RandomAccessIterator last, - RandomNumberGenerator& rand); - // _lib.alg.partitions_, partitions: -T template - BidirectionalIterator partition(BidirectionalIterator first, - BidirectionalIterator last, - Predicate pred); -T template - BidirectionalIterator stable_partition(BidirectionalIterator first, - BidirectionalIterator last, - Predicate pred); - // _lib.alg.sorting_, sorting and related operations: - // _lib.alg.sort_, sorting: -T template - void sort(RandomAccessIterator first, RandomAccessIterator last); -T template - void sort(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); -T template - void stable_sort(RandomAccessIterator first, RandomAccessIterator last); -T template - void stable_sort(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); -T template - void partial_sort(RandomAccessIterator first, - RandomAccessIterator middle, - RandomAccessIterator last); -T template - void partial_sort(RandomAccessIterator first, - RandomAccessIterator middle, - RandomAccessIterator last, Compare comp); -T template - RandomAccessIterator - partial_sort_copy(InputIterator first, InputIterator last, - RandomAccessIterator result_first, - RandomAccessIterator result_last); -T template - RandomAccessIterator - partial_sort_copy(InputIterator first, InputIterator last, - RandomAccessIterator result_first, - RandomAccessIterator result_last, - Compare comp); - -T template - void nth_element(RandomAccessIterator first, RandomAccessIterator nth, - RandomAccessIterator last); -T template - void nth_element(RandomAccessIterator first, RandomAccessIterator nth, - RandomAccessIterator last, Compare comp); - // _lib.alg.binary.search_, binary search: -T template - ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, - const T& value); -T template - ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); -T template - ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, - const T& value); -T template - ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); -T template - pair - equal_range(ForwardIterator first, ForwardIterator last, - const T& value); -T template - pair - equal_range(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); -T template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value); -T template - bool binary_search(ForwardIterator first, ForwardIterator last, - const T& value, Compare comp); - // _lib.alg.merge_, merge: -T template - OutputIterator merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); -T template - OutputIterator merge(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); -T template - void inplace_merge(BidirectionalIterator first, - BidirectionalIterator middle, - BidirectionalIterator last); -T template - void inplace_merge(BidirectionalIterator first, - BidirectionalIterator middle, - BidirectionalIterator last, Compare comp); - - // _lib.alg.set.operations_, set operations: -T template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); -T template - bool includes(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, Compare comp); -T template - OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); -T template - OutputIterator set_union(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); -T template - OutputIterator set_intersection - (InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); -T template - OutputIterator set_intersection - (InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); -T template - OutputIterator set_difference - (InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); -T template - OutputIterator set_difference(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); -T template - OutputIterator - set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result); -T template - OutputIterator - set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - OutputIterator result, Compare comp); - // _lib.alg.heap.operations_, heap operations: -T template - void push_heap(RandomAccessIterator first, RandomAccessIterator last); -T template - void push_heap(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); - -T template - void pop_heap(RandomAccessIterator first, RandomAccessIterator last); -T template - void pop_heap(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); -T template - void make_heap(RandomAccessIterator first, RandomAccessIterator last); -T template - void make_heap(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); -T template - void sort_heap(RandomAccessIterator first, RandomAccessIterator last); -T template - void sort_heap(RandomAccessIterator first, RandomAccessIterator last, - Compare comp); - // _lib.alg.min.max_, minimum and maximum: -T template const T& min(const T& a, const T& b); -T template - const T& min(const T& a, const T& b, Compare comp); -T template const T& max(const T& a, const T& b); -T template - const T& max(const T& a, const T& b, Compare comp); -T template - ForwardIterator min_element(ForwardIterator first, ForwardIterator last); -T template - ForwardIterator min_element(ForwardIterator first, ForwardIterator last, - Compare comp); -T template - ForwardIterator max_element(ForwardIterator first, ForwardIterator last); -T template - ForwardIterator max_element(ForwardIterator first, ForwardIterator last, - Compare comp); -T template - bool lexicographical_compare - (InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2); -T template - bool lexicographical_compare - (InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, InputIterator2 last2, - Compare comp); - - // _lib.alg.permutation.generators_, permutations -T template - bool next_permutation(BidirectionalIterator first, - BidirectionalIterator last); -T template - bool next_permutation(BidirectionalIterator first, - BidirectionalIterator last, Compare comp); -T template - bool prev_permutation(BidirectionalIterator first, - BidirectionalIterator last); -T template - bool prev_permutation(BidirectionalIterator first, - BidirectionalIterator last, Compare comp); - - - 25.4 C library algorithms [lib.alg.c.library] - - 1 Header (partial, Table 2): - - Table 2--Header synopsis - - Functions: bsearch qsort - - -X extern "C" void *bsearch(const void *key, const void *base, - size_t nmemb, size_t size, - int (*compar)(const void *, const void *)); -X extern "C++" void *bsearch(const void *key, const void *base, - size_t nmemb, size_t size, - int (*compar)(const void *, const void *)); - -X extern "C" void qsort(void* base, size_t nmemb, size_t size, - int (*compar)(const void*, const void*)); -X extern "C++" void qsort(void* base, size_t nmemb, size_t size, - int (*compar)(const void*, const void*)); - - - - 26.2 Complex numbers [lib.complex.numbers] - - - 26.2.1 Header synopsis [lib.complex.synopsis] - -T template class complex; -T template<> class complex; -T template<> class complex; -T template<> class complex; - // _lib.complex.ops_ operators: -T template - complex operator+(const complex&, const complex&); -T template complex operator+(const complex&, const T&); -T template complex operator+(const T&, const complex&); -T template complex operator- - (const complex&, const complex&); -T template complex operator-(const complex&, const T&); -T template complex operator-(const T&, const complex&); -T template complex operator* - (const complex&, const complex&); -T template complex operator*(const complex&, const T&); -T template complex operator*(const T&, const complex&); -T template complex operator/ - (const complex&, const complex&); -T template complex operator/(const complex&, const T&); -T template complex operator/(const T&, const complex&); -T template complex operator+(const complex&); -T template complex operator-(const complex&); -T template bool operator== - (const complex&, const complex&); -T template bool operator==(const complex&, const T&); -T template bool operator==(const T&, const complex&); -T template bool operator!=(const complex&, const complex&); -T template bool operator!=(const complex&, const T&); -T template bool operator!=(const T&, const complex&); -T template - basic_istream& - operator>>(basic_istream&, complex&); - -T template - basic_ostream& - operator<<(basic_ostream&, const complex&); - // _lib.complex.value.ops_ values: -T template T real(const complex&); -T template T imag(const complex&); - -T template T abs(const complex&); -T template T arg(const complex&); -T template T norm(const complex&); -T template complex conj(const complex&); -T template complex polar(const T&, const T&); - // _lib.complex.transcendentals_ transcendentals: -T template complex cos (const complex&); -T template complex cosh (const complex&); -T template complex exp (const complex&); -T template complex log (const complex&); -T template complex log10(const complex&); -T template complex pow(const complex&, int); -T template complex pow(const complex&, const T&); -T template complex pow(const complex&, const complex&); -T template complex pow(const T&, const complex&); -T template complex sin (const complex&); -T template complex sinh (const complex&); -T template complex sqrt (const complex&); -T template complex tan (const complex&); -T template complex tanh (const complex&); - } - - 26.2.2 Template class complex [lib.complex] - - template -T class complex { - public: -T typedef T value_type; - -T complex(const T& re = T(), const T& im = T()); -T complex(const complex&); -T template complex(const complex&); - -T T real() const; -T T imag() const; - -T complex& operator= (const T&); -T complex& operator+=(const T&); -T complex& operator-=(const T&); -T complex& operator*=(const T&); -T complex& operator/=(const T&); - -T complex& operator=(const complex&); -T template complex& operator= (const complex&); -T template complex& operator+=(const complex&); -T template complex& operator-=(const complex&); -T template complex& operator*=(const complex&); -T template complex& operator/=(const complex&); - }; - -T template complex operator+ - (const complex&, const complex&); -T template complex operator+(const complex&, const T&); -T template complex operator+(const T&, const complex&); - -T template complex operator- - (const complex&, const complex&); -T template complex operator-(const complex&, const T&); -T template complex operator-(const T&, const complex&); - -T template complex operator* - (const complex&, const complex&); -T template complex operator*(const complex&, const T&); -T template complex operator*(const T&, const complex&); - -T template complex operator/ - (const complex&, const complex&); -T template complex operator/(const complex&, const T&); -T template complex operator/(const T&, const complex&); - -T template complex operator+(const complex&); -T template complex operator-(const complex&); - -T template bool operator==(const complex&, const complex&); -T template bool operator==(const complex&, const T&); -T template bool operator==(const T&, const complex&); - -T template bool operator!=(const complex&, const complex&); -T template bool operator!=(const complex&, const T&); -T template bool operator!=(const T&, const complex&); - -T template - basic_istream& - operator>>(basic_istream&, complex&); - -T template - basic_ostream& - operator<<(basic_ostream&, const complex&); - - - 26.2.3 complex specializations [lib.complex.special] - -T template<> class complex { - public: -T typedef float value_type; - -T complex(float re = 0.0f, float im = 0.0f); -T explicit complex(const complex&); -T explicit complex(const complex&); -T float real() const; -T float imag() const; - -T complex& operator= (float); -T complex& operator+=(float); -T complex& operator-=(float); -T complex& operator*=(float); -T complex& operator/=(float); - -T complex& operator=(const complex&); -T template complex& operator= (const complex&); -T template complex& operator+=(const complex&); -T template complex& operator-=(const complex&); -T template complex& operator*=(const complex&); -T template complex& operator/=(const complex&); - }; -T template<> class complex { - public: -T typedef double value_type; - -T complex(double re = 0.0, double im = 0.0); -T complex(const complex&); -T explicit complex(const complex&); -T double real() const; -T double imag() const; - -T complex& operator= (double); -T complex& operator+=(double); -T complex& operator-=(double); -T complex& operator*=(double); -T complex& operator/=(double); - -T complex& operator=(const complex&); -T template complex& operator= (const complex&); -T template complex& operator+=(const complex&); -T template complex& operator-=(const complex&); -T template complex& operator*=(const complex&); -T template complex& operator/=(const complex&); - }; - -T template<> class complex { - public: -T typedef long double value_type; - -T complex(long double re = 0.0L, long double im = 0.0L); -T complex(const complex&); -T complex(const complex&); -T long double real() const; -T long double imag() const; - -T complex& operator=(const complex&); -T complex& operator= (long double); -T complex& operator+=(long double); -T complex& operator-=(long double); -T complex& operator*=(long double); -T complex& operator/=(long double); - -T template complex& operator= (const complex&); -T template complex& operator+=(const complex&); -T template complex& operator-=(const complex&); -T template complex& operator*=(const complex&); -T template complex& operator/=(const complex&); - }; - - 26.3 Numeric arrays [lib.numarray] - - 26.3.1 Header synopsis [lib.valarray.synopsis] - -T template class valarray; // An array of type T -T class slice; -T template class slice_array; -T class gslice; -T template class gslice_array; -T template class mask_array; // a masked array -T template class indirect_array; // an indirected array - -T template valarray operator* - (const valarray&, const valarray&); -T template valarray operator* (const valarray&, const T&); -T template valarray operator* (const T&, const valarray&); -T template valarray operator/ - (const valarray&, const valarray&); -T template valarray operator/ (const valarray&, const T&); -T template valarray operator/ (const T&, const valarray&); -T template valarray operator% - (const valarray&, const valarray&); -T template valarray operator% (const valarray&, const T&); -T template valarray operator% (const T&, const valarray&); -T template valarray operator+ - (const valarray&, const valarray&); -T template valarray operator+ (const valarray&, const T&); -T template valarray operator+ (const T&, const valarray&); -T template valarray operator- - (const valarray&, const valarray&); -T template valarray operator- (const valarray&, const T&); -T template valarray operator- (const T&, const valarray&); -T template valarray operator^ - (const valarray&, const valarray&); -T template valarray operator^ (const valarray&, const T&); -T template valarray operator^ (const T&, const valarray&); -T template valarray operator& - (const valarray&, const valarray&); -T template valarray operator& (const valarray&, const T&); -T template valarray operator& (const T&, const valarray&); -T template valarray operator| - (const valarray&, const valarray&); -T template valarray operator| (const valarray&, const T&); -T template valarray operator| (const T&, const valarray&); -T template valarray operator<< - (const valarray&, const valarray&); -T template valarray operator<<(const valarray&, const T&); -T template valarray operator<<(const T&, const valarray&); -T template valarray operator>> - (const valarray&, const valarray&); -T template valarray operator>>(const valarray&, const T&); -T template valarray operator>>(const T&, const valarray&); -T template valarray operator&& - (const valarray&, const valarray&); -T template valarray operator&&(const valarray&, const T&); -T template valarray operator&&(const T&, const valarray&); -T template valarray operator|| - (const valarray&, const valarray&); -T template valarray operator||(const valarray&, const T&); -T template valarray operator||(const T&, const valarray&); - -T template - valarray operator==(const valarray&, const valarray&); -T template valarray operator==(const valarray&, const T&); -T template valarray operator==(const T&, const valarray&); -T template - valarray operator!=(const valarray&, const valarray&); -T template valarray operator!=(const valarray&, const T&); -T template valarray operator!=(const T&, const valarray&); -T template - valarray operator< (const valarray&, const valarray&); -T template valarray operator< (const valarray&, const T&); -T template valarray operator< (const T&, const valarray&); -T template - valarray operator> (const valarray&, const valarray&); -T template valarray operator> (const valarray&, const T&); -T template valarray operator> (const T&, const valarray&); -T template - valarray operator<=(const valarray&, const valarray&); -T template valarray operator<=(const valarray&, const T&); -T template valarray operator<=(const T&, const valarray&); -T template - valarray operator>=(const valarray&, const valarray&); -T template valarray operator>=(const valarray&, const T&); -T template valarray operator>=(const T&, const valarray&); -T template valarray abs (const valarray&); -T template valarray acos (const valarray&); -T template valarray asin (const valarray&); -T template valarray atan (const valarray&); -T template valarray atan2 - (const valarray&, const valarray&); -T template valarray atan2(const valarray&, const T&); -T template valarray atan2(const T&, const valarray&); -T template valarray cos (const valarray&); -T template valarray cosh (const valarray&); -T template valarray exp (const valarray&); -T template valarray log (const valarray&); -T template valarray log10(const valarray&); -T template valarray pow(const valarray&, const valarray&); -T template valarray pow(const valarray&, const T&); -T template valarray pow(const T&, const valarray&); -T template valarray sin (const valarray&); -T template valarray sinh (const valarray&); -T template valarray sqrt (const valarray&); -T template valarray tan (const valarray&); -T template valarray tanh (const valarray&); - } - - - 26.3.2 Template class valarray [lib.template.valarray] - -T template class valarray { - public: -T typedef T value_type; - - // _lib.valarray.cons_ construct/destroy: -T valarray(); -T explicit valarray(size_t); -T valarray(const T&, size_t); -T valarray(const T*, size_t); -T valarray(const valarray&); -T valarray(const slice_array&); -T valarray(const gslice_array&); -T valarray(const mask_array&); -T valarray(const indirect_array&); -T ~valarray(); - - // _lib.valarray.assign_ assignment: -T valarray& operator=(const valarray&); -T valarray& operator=(const T&); -T valarray& operator=(const slice_array&); -T valarray& operator=(const gslice_array&); -T valarray& operator=(const mask_array&); -T valarray& operator=(const indirect_array&); - // _lib.valarray.access_ element access: -T T operator[](size_t) const; -T T& operator[](size_t); - // _lib.valarray.sub_ subset operations: -T valarray operator[](slice) const; -T slice_array operator[](slice); -T valarray operator[](const gslice&) const; -T gslice_array operator[](const gslice&); -T valarray operator[](const valarray&) const; -T mask_array operator[](const valarray&); -T valarray operator[](const valarray&) const; -T indirect_array operator[](const valarray&); - // _lib.valarray.unary_ unary operators: -T valarray operator+() const; -T valarray operator-() const; -T valarray operator~() const; -T valarray operator!() const; - // _lib.valarray.cassign_ computed assignment: -T valarray& operator*= (const T&); -T valarray& operator/= (const T&); -T valarray& operator%= (const T&); -T valarray& operator+= (const T&); -T valarray& operator-= (const T&); -T valarray& operator^= (const T&); -T valarray& operator&= (const T&); -T valarray& operator|= (const T&); -T valarray& operator<<=(const T&); -T valarray& operator>>=(const T&); -T valarray& operator*= (const valarray&); -T valarray& operator/= (const valarray&); -T valarray& operator%= (const valarray&); -T valarray& operator+= (const valarray&); -T valarray& operator-= (const valarray&); -T valarray& operator^= (const valarray&); -T valarray& operator|= (const valarray&); -T valarray& operator&= (const valarray&); -T valarray& operator<<=(const valarray&); -T valarray& operator>>=(const valarray&); - // _lib.valarray.members_ member functions: -T size_t size() const; -T T sum() const; -T T min() const; -T T max() const; - -T valarray shift (int) const; -T valarray cshift(int) const; -T valarray apply(T func(T)) const; -T valarray apply(T func(const T&)) const; -T void resize(size_t sz, T c = T()); - }; - } - - - - 26.3.4 Class slice [lib.class.slice] - -T class slice { - public: -T slice(); -T slice(size_t, size_t, size_t); - -T size_t start() const; -T size_t size() const; -T size_t stride() const; - }; - } - - - - 26.3.5 Template class slice_array [lib.template.slice.array] - -T template class slice_array { - public: -T typedef T value_type; - -T void operator= (const valarray&) const; -T void operator*= (const valarray&) const; -T void operator/= (const valarray&) const; -T void operator%= (const valarray&) const; -T void operator+= (const valarray&) const; -T void operator-= (const valarray&) const; -T void operator^= (const valarray&) const; -T void operator&= (const valarray&) const; -T void operator|= (const valarray&) const; -T void operator<<=(const valarray&) const; -T void operator>>=(const valarray&) const; -T void operator=(const T&); -T ~slice_array(); - private: -T slice_array(); -T slice_array(const slice_array&); -T slice_array& operator=(const slice_array&); - }; - } - - - - 26.3.6 The gslice class [lib.class.gslice] - -T class gslice { - public: -T gslice(); -T gslice(size_t s, const valarray& l, const valarray& d); - -T size_t start() const; -T valarray size() const; -T valarray stride() const; - }; - - - 26.3.7 Template class gslice_array [lib.template.gslice.array] - -T template class gslice_array { - public: -T typedef T value_type; - -T void operator= (const valarray&) const; -T void operator*= (const valarray&) const; -T void operator/= (const valarray&) const; -T void operator%= (const valarray&) const; -T void operator+= (const valarray&) const; -T void operator-= (const valarray&) const; -T void operator^= (const valarray&) const; -T void operator&= (const valarray&) const; -T void operator|= (const valarray&) const; -T void operator<<=(const valarray&) const; -T void operator>>=(const valarray&) const; -T void operator=(const T&); -T ~gslice_array(); - private: -T gslice_array(); -T gslice_array(const gslice_array&); -T gslice_array& operator=(const gslice_array&); - }; - - - 26.3.8 Template class mask_array [lib.template.mask.array] - -T template class mask_array { - public: -T typedef T value_type; - -T void operator= (const valarray&) const; -T void operator*= (const valarray&) const; -T void operator/= (const valarray&) const; -T void operator%= (const valarray&) const; -T void operator+= (const valarray&) const; -T void operator-= (const valarray&) const; -T void operator^= (const valarray&) const; -T void operator&= (const valarray&) const; -T void operator|= (const valarray&) const; -T void operator<<=(const valarray&) const; -T void operator>>=(const valarray&) const; -T void operator=(const T&); -T ~mask_array(); - private: -T mask_array(); -T mask_array(const mask_array&); -T mask_array& operator=(const mask_array&); - // remainder implementation defined - }; - - - 26.3.9 Template class [lib.template.indirect.array] - indirect_array - -T template class indirect_array { - public: -T typedef T value_type; - -T void operator= (const valarray&) const; -T void operator*= (const valarray&) const; -T void operator/= (const valarray&) const; -T void operator%= (const valarray&) const; -T void operator+= (const valarray&) const; -T void operator-= (const valarray&) const; -T void operator^= (const valarray&) const; -T void operator&= (const valarray&) const; -T void operator|= (const valarray&) const; -T void operator<<=(const valarray&) const; -T void operator>>=(const valarray&) const; -T void operator=(const T&); -T ~indirect_array(); - private: -T indirect_array(); -T indirect_array(const indirect_array&); -T indirect_array& operator=(const indirect_array&); - // remainder implementation defined - }; - - 26.4 Generalized numeric operations [lib.numeric.ops] - - Header synopsis - -T template - T accumulate(InputIterator first, InputIterator last, T init); - -T template - T accumulate(InputIterator first, InputIterator last, T init, - BinaryOperation binary_op); - -T template - T inner_product(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, T init); - -T template - T inner_product(InputIterator1 first1, InputIterator1 last1, - InputIterator2 first2, T init, - BinaryOperation1 binary_op1, - BinaryOperation2 binary_op2); - -T template - OutputIterator partial_sum(InputIterator first, - InputIterator last, - OutputIterator result); - -T template - OutputIterator partial_sum(InputIterator first, - InputIterator last, - OutputIterator result, - BinaryOperation binary_op); - -T template - OutputIterator adjacent_difference(InputIterator first, - InputIterator last, - OutputIterator result); - -T template - OutputIterator adjacent_difference(InputIterator first, - InputIterator last, - OutputIterator result, - BinaryOperation binary_op); - - - 26.5 C Library [lib.c.math] - - Table 2--Header synopsis -X Macro: HUGE_VAL - Functions: -X acos cos fmod modf tan -X asin cosh frexp pow tanh -X atan exp ldexp sin -X atan2 fabs log sinh -X ceil floor log10 sqrt - - Table 3--Header synopsis -X Macros: RAND_MAX -X Types: div_t ldiv_t - Functions: -X abs labs srand -X div ldiv rand - -X long abs(long); // labs() -X ldiv_t div(long, long); // ldiv() - -X float abs (float); -X float acos (float); -X float asin (float); -X float atan (float); -X float atan2(float, float); -X float ceil (float); -X float cos (float); -X float cosh (float); -X float exp (float); -X float fabs (float); -X float floor(float); -X float fmod (float, float); -X float frexp(float, int*); -X float ldexp(float, int); -X float log (float); -X float log10(float); -X float modf (float, float*); -X float pow (float, float); -X float pow (float, int); -X float sin (float); -X float sinh (float); -X float sqrt (float); -X float tan (float); -X float tanh (float); - -X double abs(double); // fabs() -X double pow(double, int); - -X long double abs (long double); -X long double acos (long double); -X long double asin (long double); -X long double atan (long double); -X long double atan2(long double, long double); -X long double ceil (long double); -X long double cos (long double); -X long double cosh (long double); -X long double exp (long double); -X long double fabs (long double); -X long double floor(long double); -X long double fmod (long double, long double); -X long double frexp(long double, int*); -X long double ldexp(long double, int); -X long double log (long double); -X long double log10(long double); -X long double modf (long double, long double*); -X long double pow (long double, long double); -X long double pow (long double, int); -X long double sin (long double); -X long double sinh (long double); -X long double sqrt (long double); -X long double tan (long double); -X long double tanh (long double); - - Header synopsis - -X template class char_traits; -X template<> class char_traits; -X template<> class char_traits; -X template class allocator; -X template > - class basic_ios; - -X template > - class basic_streambuf; - -X template > - class basic_istream; - -X template > - class basic_ostream; - -X template > - class basic_iostream; - -X template , - class Allocator = allocator > - class basic_stringbuf; - -X template , - class Allocator = allocator > - class basic_istringstream; - -X template , - class Allocator = allocator > - class basic_ostringstream; - -X template , - class Allocator = allocator > - class basic_stringstream; - -X template > - class basic_filebuf; - -X template > - class basic_ifstream; - -X template > - class basic_ofstream; - -X template > - class basic_fstream; -X template > - class istreambuf_iterator; - -X template > - class ostreambuf_iterator; -X typedef basic_ios ios; -X typedef basic_ios wios; -X typedef basic_streambuf streambuf; -X typedef basic_istream istream; -X typedef basic_ostream ostream; -X typedef basic_iostream iostream; -X typedef basic_stringbuf stringbuf; -X typedef basic_istringstream istringstream; -X typedef basic_ostringstream ostringstream; -X typedef basic_stringstream stringstream; -X typedef basic_filebuf filebuf; -X typedef basic_ifstream ifstream; -X typedef basic_ofstream ofstream; -X typedef basic_fstream fstream; -X typedef basic_streambuf wstreambuf; -X typedef basic_istream wistream; -X typedef basic_ostream wostream; -X typedef basic_iostream wiostream; -X typedef basic_stringbuf wstringbuf; -X typedef basic_istringstream wistringstream; -X typedef basic_ostringstream wostringstream; -X typedef basic_stringstream wstringstream; - -X typedef basic_filebuf wfilebuf; -X typedef basic_ifstream wifstream; -X typedef basic_ofstream wofstream; -X typedef basic_fstream wfstream; -X template class fpos; -X typedef fpos::state_type> streampos; -X typedef fpos::state_type> wstreampos; - - 27.3 Standard iostream objects [lib.iostream.objects] - - Header synopsis - -T [must also include and ] -T extern istream cin; -T extern ostream cout; -T extern ostream cerr; -T extern ostream clog; - -T extern wistream wcin; -T extern wostream wcout; -T extern wostream wcerr; -T extern wostream wclog; - - 27.4 Iostreams base classes [lib.iostreams.base] - - Header synopsis - - #include - -T typedef OFF_T streamoff; -T typedef SZ_T streamsize; -T template class fpos; - - class ios_base; - template > - class basic_ios; - // _lib.std.ios.manip_, manipulators: -T ios_base& boolalpha (ios_base& str); -T ios_base& noboolalpha(ios_base& str); -T ios_base& showbase (ios_base& str); -T ios_base& noshowbase (ios_base& str); -T ios_base& showpoint (ios_base& str); -T ios_base& noshowpoint(ios_base& str); -T ios_base& showpos (ios_base& str); -T ios_base& noshowpos (ios_base& str); -T ios_base& skipws (ios_base& str); -T ios_base& noskipws (ios_base& str); -T ios_base& nouppercase(ios_base& str); -T ios_base& uppercase (ios_base& str); -M ios_base& unitbuf (ios_base& str); -M ios_base& nounitbuf (ios_base& str); - // _lib.adjustfield.manip_ adjustfield: -T ios_base& internal (ios_base& str); -T ios_base& left (ios_base& str); -T ios_base& right (ios_base& str); - // _lib.basefield.manip_ basefield: -T ios_base& dec (ios_base& str); -T ios_base& hex (ios_base& str); -T ios_base& oct (ios_base& str); - - // _lib.floatfield.manip_ floatfield: -T ios_base& fixed (ios_base& str); -T ios_base& scientific (ios_base& str); - - - 27.4.2 Class ios_base [lib.ios.base] - -T class ios_base { - public: - class failure; -T typedef T1 fmtflags; -T static const fmtflags boolalpha; -T static const fmtflags dec; -T static const fmtflags fixed; -T static const fmtflags hex; -T static const fmtflags internal; -T static const fmtflags left; -T static const fmtflags oct; -T static const fmtflags right; -T static const fmtflags scientific; -T static const fmtflags showbase; -T static const fmtflags showpoint; -T static const fmtflags showpos; -T static const fmtflags skipws; -X static const fmtflags unitbuf; -T static const fmtflags uppercase; -T static const fmtflags adjustfield; -T static const fmtflags basefield; -T static const fmtflags floatfield; - - typedef T2 iostate; -T static const iostate badbit; -T static const iostate eofbit; -T static const iostate failbit; -T static const iostate goodbit; -T typedef T3 openmode; -T static const openmode app; -T static const openmode ate; -T static const openmode binary; -T static const openmode in; -T static const openmode out; -T static const openmode trunc; -T typedef T4 seekdir; -T static const seekdir beg; -T static const seekdir cur; -T static const seekdir end; -T class Init; - // _lib.fmtflags.state_ fmtflags state: -T fmtflags flags() const; -T fmtflags flags(fmtflags fmtfl); -T fmtflags setf(fmtflags fmtfl); -T fmtflags setf(fmtflags fmtfl, fmtflags mask); -T void unsetf(fmtflags mask); -T streamsize precision() const; -T streamsize precision(streamsize prec); -T streamsize width() const; -T streamsize width(streamsize wide); - // _lib.ios.base.locales_ locales: -T locale imbue(const locale& loc); -T locale getloc() const; - // _lib.ios.base.storage_ storage: -T static int xalloc(); -T long& iword(int index); -T void*& pword(int index); - // destructor -T virtual ~ios_base(); - // _lib.ios.base.callback_ callbacks; -T enum event { erase_event, imbue_event, copyfmt_event }; -T typedef void (*event_callback)(event, ios_base&, int index); -T void register_callback(event_call_back fn, int index); -T static bool sync_with_stdio(bool sync = true); - protected: -T ios_base(); - }; - - 27.4.2.1.1 Class ios_base::failure [lib.ios::failure] - -T class ios_base::failure : public exception { - public: -T explicit failure(const string& msg); -T virtual ~failure(); -T virtual const char* what() const throw(); - }; - - - 27.4.2.1.6 Class ios_base::Init [lib.ios::Init] - -T class ios_base::Init { - public: -T Init(); -T ~Init(); - }; - - - 27.4.3 Template class fpos [lib.fpos] - -X template class fpos { - public: - // _lib.fpos.members_ Members -T stateT state() const; -T void state(stateT); - private; -T stateT st; // exposition only - }; - - - 27.4.5 Template class basic_ios [lib.ios] - - template > -X class basic_ios : public ios_base { - public: - - // Types: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; -T operator void*() const -T bool operator!() const -T iostate rdstate() const; -T void clear(iostate state = goodbit); -T void setstate(iostate state); -T bool good() const; -T bool eof() const; -T bool fail() const; -T bool bad() const; -T iostate exceptions() const; -T void exceptions(iostate except); - // _lib.basic.ios.cons_ Constructor/destructor: -T explicit basic_ios(basic_streambuf* sb); -T virtual ~basic_ios(); - // _lib.basic.ios.members_ Members: -T basic_ostream* tie() const; -T basic_ostream* tie(basic_ostream* tiestr); -T basic_streambuf* rdbuf() const; -T basic_streambuf* rdbuf(basic_streambuf* sb); -X basic_ios& copyfmt(const basic_ios& rhs); -T char_type fill() const; -T char_type fill(char_type ch); - // _lib.ios.base.locales_ locales: -T locale imbue(const locale& loc); -X char narrow(char_type c, char dfault) const; -X char_type widen(char c) const; - protected: - basic_ios(); -T void init(basic_streambuf* sb); - private: -T basic_ios(const basic_ios& ); // not defined -T basic_ios& operator=(const basic_ios&); // not defined - }; - - - 27.5 Stream buffers [lib.stream.buffers] - - Header synopsis - -X template > - class basic_streambuf; -T typedef basic_streambuf streambuf; -T typedef basic_streambuf wstreambuf; - - 27.5.2 Template class [lib.streambuf] - basic_streambuf - - template > -X class basic_streambuf { - public: - - // Types: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; -T virtual ~basic_streambuf(); - // _lib.streambuf.locales_ locales: -T locale pubimbue(const locale &loc); -T locale getloc() const; - // _lib.streambuf.buffer_ buffer and positioning: -T basic_streambuf* - pubsetbuf(char_type* s, streamsize n); -T pos_type pubseekoff(off_type off, ios_base::seekdir way, - ios_base::openmode which = - ios_base::in | ios_base::out); -T pos_type pubseekpos(pos_type sp, - ios_base::openmode which = - ios_base::in | ios_base::out); -T int pubsync(); - - // Get and put areas: - // _lib.streambuf.pub.get_ Get area: -T streamsize in_avail(); -T int_type snextc(); -T int_type sbumpc(); -T int_type sgetc(); -T streamsize sgetn(char_type* s, streamsize n); - // _lib.streambuf.pub.pback_ Putback: -X int_type sputbackc(char_type c); -X int_type sungetc(); - // _lib.streambuf.pub.put_ Put area: -T int_type sputc(char_type c); -X streamsize sputn(const char_type* s, streamsize n); - protected: -T basic_streambuf(); - // _lib.streambuf.get.area_ Get area: -T char_type* eback() const; -T char_type* gptr() const; -T char_type* egptr() const; -T void gbump(int n); -T void setg(char_type* gbeg, char_type* gnext, char_type* gend); - // _lib.streambuf.put.area_ Put area: -T char_type* pbase() const; -T char_type* pptr() const; -T char_type* epptr() const; -T void pbump(int n); -T void setp(char_type* pbeg, char_type* pend); - // _lib.streambuf.virtuals_ virtual functions: - // _lib.streambuf.virt.locales_ Locales: -T virtual void imbue(const locale &loc); - // _lib.streambuf.virt.buffer_ Buffer management and positioning: -T virtual basic_streambuf* - setbuf(char_type* s, streamsize n); -T virtual pos_type seekoff(off_type off, ios_base::seekdir way, - ios_base::openmode which = ios_base::in | ios_base::out); -T virtual pos_type seekpos(pos_type sp, - ios_base::openmode which = ios_base::in | ios_base::out); -T virtual int sync(); - // _lib.streambuf.virt.get_ Get area: -T virtual int showmanyc(); -T virtual streamsize xsgetn(char_type* s, streamsize n); -T virtual int_type underflow(); -T virtual int_type uflow(); - // _lib.streambuf.virt.pback_ Putback: -T virtual int_type pbackfail(int_type c = traits::eof()); - // _lib.streambuf.virt.put_ Put area: -X virtual streamsize xsputn(const char_type* s, streamsize n); -T virtual int_type overflow (int_type c = traits::eof()); - }; - - 27.6 Formatting and manipulators [lib.iostream.format] - - Header synopsis - -T template > - class basic_istream; -T typedef basic_istream istream; -T typedef basic_istream wistream; - -T template > - class basic_iostream; -T typedef basic_iostream iostream; -T typedef basic_iostream wiostream; - -X template - basic_istream& ws(basic_istream& is); - - Header synopsis - -X template > - class basic_ostream; -T typedef basic_ostream ostream; -T typedef basic_ostream wostream; - -T template - basic_ostream& endl(basic_ostream& os); -T template - basic_ostream& ends(basic_ostream& os); -T template - basic_ostream& flush(basic_ostream& os); - - Header synopsis - - // Types T1, T2, ... are unspecified implementation types -T T1 resetiosflags(ios_base::fmtflags mask); -T T2 setiosflags (ios_base::fmtflags mask); -T T3 setbase(int base); -T template T4 setfill(charT c); -T T5 setprecision(int n); -T T6 setw(int n); - - - 27.6.1.1 Template class basic_istream [lib.istream] - - template > -T class basic_istream : virtual public basic_ios { - public: - // Types (inherited from basic_ios (_lib.ios_)): -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // _lib.istream.cons_ Constructor/destructor: -T explicit basic_istream(basic_streambuf* sb); -T virtual ~basic_istream(); - // _lib.istream::sentry_ Prefix/suffix: -T class sentry; - - // _lib.istream.formatted_ Formatted input: -T basic_istream& operator>> - (basic_istream& (*pf)(basic_istream&)) -T basic_istream& operator>> - (basic_ios& (*pf)(basic_ios&)) -T basic_istream& operator>> - (ios_base& (*pf)(ios_base&)) -S basic_istream& operator>>(bool& n); -S basic_istream& operator>>(short& n); -S basic_istream& operator>>(unsigned short& n); -S basic_istream& operator>>(int& n); -S basic_istream& operator>>(unsigned int& n); -S basic_istream& operator>>(long& n); -S basic_istream& operator>>(unsigned long& n); -S basic_istream& operator>>(float& f); -S basic_istream& operator>>(double& f); -S basic_istream& operator>>(long double& f); -S basic_istream& operator>>(void*& p); -S basic_istream& operator>> - (basic_streambuf* sb); - // _lib.istream.unformatted_ Unformatted input: -T streamsize gcount() const; -S int_type get(); -S basic_istream& get(char_type& c); -S basic_istream& get(char_type* s, streamsize n); -S basic_istream& get(char_type* s, streamsize n, - char_type delim); -S basic_istream& get(basic_streambuf& sb); -S basic_istream& get(basic_streambuf& sb, - char_type delim); -S basic_istream& getline(char_type* s, streamsize n); -S basic_istream& getline(char_type* s, streamsize n, - char_type delim); -S basic_istream& ignore - (streamsize n = 1, int_type delim = traits::eof()); -S int_type peek(); -S basic_istream& read (char_type* s, streamsize n); -S streamsize readsome(char_type* s, streamsize n); -S basic_istream& putback(char_type c); -S basic_istream& unget(); -S int sync(); - -S pos_type tellg(); -S basic_istream& seekg(pos_type); -S basic_istream& seekg(off_type, ios_base::seekdir); - }; - - // _lib.istream::extractors_ character extraction templates: -S template - basic_istream& operator>>(basic_istream&, - charT&); -S template - basic_istream& operator>>(basic_istream&, - unsigned char&); -S template - basic_istream& operator>>(basic_istream&, - signed char&); - -S template - basic_istream& operator>>(basic_istream&, - charT*); -S template - basic_istream& operator>>(basic_istream&, - unsigned char*); -S template - basic_istream& operator>>(basic_istream&, - signed char*); - - 27.6.1.1.2 Class basic_istream::sentry [lib.istream::sentry] - - - template > -S class basic_istream::sentry { - typedef traits traits_type; -S bool ok_; // exposition only - public: -S explicit sentry(basic_istream& is, bool noskipws = false); -S ~sentry(); -S operator bool() const { return ok_; } - private: -T sentry(const sentry&); // not defined -T sentry& operator=(const sentry&); // not defined - }; - - - 27.6.1.5 Template class basic_iostream [lib.iostreamclass] - - template > -T class basic_iostream : - public basic_istream, - public basic_ostream { - public: - // constructor/destructor -T explicit basic_iostream(basic_streambuf* sb); -T virtual ~basic_iostream(); - }; - - - 27.6.2.1 Template class basic_ostream [lib.ostream] - - template > -X class basic_ostream : virtual public basic_ios { - public: - // Types (inherited from basic_ios (_lib.ios_)): -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // _lib.ostream.cons_ Constructor/destructor: -T explicit basic_ostream(basic_streambuf* sb); -T virtual ~basic_ostream(); - // _lib.ostream::sentry_ Prefix/suffix: -T class sentry; - // _lib.ostream.formatted_ Formatted output: -T basic_ostream& operator<< - (basic_ostream& (*pf)(basic_ostream&)); -T basic_ostream& operator<< - (basic_ios& (*pf)(basic_ios&)); -T basic_ostream& operator<< - (ios_base& (*pf)(ios_base&)); -T basic_ostream& operator<<(bool n); -T basic_ostream& operator<<(short n); -T basic_ostream& operator<<(unsigned short n); -T basic_ostream& operator<<(int n); -T basic_ostream& operator<<(unsigned int n); -T basic_ostream& operator<<(long n); -T basic_ostream& operator<<(unsigned long n); -S basic_ostream& operator<<(float f); -S basic_ostream& operator<<(double f); -S basic_ostream& operator<<(long double f); -T basic_ostream& operator<<(const void* p); -X basic_ostream& operator<< - (basic_streambuf* sb); - // _lib.ostream.unformatted_ Unformatted output: -T basic_ostream& put(char_type c); -T basic_ostream& write(const char_type* s, streamsize n); -X basic_ostream& flush(); - - // _lib.ostream.seeks_ seeks: -S pos_type tellp(); -S basic_ostream& seekp(pos_type); -S basic_ostream& seekp(off_type, ios_base::seekdir); - }; - // _lib.ostream.inserters.character_ character inserters -X template - basic_ostream& operator<<(basic_ostream&, - charT); -X template - basic_ostream& operator<<(basic_ostream&, - char); - // specialization -X template - basic_ostream& operator<<(basic_ostream&, - char); - // signed and unsigned -X template - basic_ostream& operator<<(basic_ostream&, - signed char); -X template - basic_ostream& operator<<(basic_ostream&, - unsigned char) -X template - basic_ostream& operator<<(basic_ostream&, - const charT*); -X template - basic_ostream& operator<<(basic_ostream&, - const char*); - // partial specializationss -X template - basic_ostream& operator<<(basic_ostream&, - const char*); - // signed and unsigned -X template - basic_ostream& operator<<(basic_ostream&, - const signed char*); -X template - basic_ostream& operator<<(basic_ostream&, - const unsigned char*); - - - 27.6.2.3 Class basic_ostream::sentry [lib.ostream::sentry] - - template > -X class basic_ostream::sentry { - bool ok_; // exposition only - public: -X explicit sentry(basic_ostream& os); -X ~sentry(); -X operator bool() const { return ok_; } - private -X sentry(const sentry&); // not defined -X sentry& operator=(const sentry&); // not defined - }; - - 27.7 String-based streams [lib.string.streams] - - Header synopsis - -X template , - class Allocator = allocator > - class basic_stringbuf; - -T typedef basic_stringbuf stringbuf; -T typedef basic_stringbuf wstringbuf; - - template , - class Allocator = allocator > -X class basic_istringstream; - -T typedef basic_istringstream istringstream; -T typedef basic_istringstream wistringstream; - - template , - class Allocator = allocator > -X class basic_ostringstream; -T typedef basic_ostringstream ostringstream; -T typedef basic_ostringstream wostringstream; - - template , - class Allocator = allocator > -X class basic_stringstream; -T typedef basic_stringstream stringstream; -T typedef basic_stringstream wstringstream; - - 27.7.1 Template class basic_stringbuf [lib.stringbuf] - - template , - class Allocator = allocator > -X class basic_stringbuf : public basic_streambuf { - public: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // _lib.stringbuf.cons_ Constructors: -S explicit basic_stringbuf(ios_base::openmode which - = ios_base::in | ios_base::out); -S explicit basic_stringbuf - (const basic_string& str, - ios_base::openmode which = ios_base::in | ios_base::out); - // _lib.stringbuf.members_ Get and set: -S basic_string str() const; -S void str(const basic_string& s); - - protected: - // _lib.stringbuf.virtuals_ Overridden virtual functions: -S virtual int_type underflow(); -S virtual int_type pbackfail(int_type c = traits::eof()); -S virtual int_type overflow (int_type c = traits::eof()); -S virtual basic_streambuf* setbuf(charT*, streamsize); - -S virtual pos_type seekoff(off_type off, ios_base::seekdir way, - ios_base::openmode which - = ios_base::in | ios_base::out); -S virtual pos_type seekpos(pos_type sp, - ios_base::openmode which - = ios_base::in | ios_base::out); - }; - - - 27.7.2 Template class basic_istringstream [lib.istringstream] - - template , - class Allocator = allocator > -X class basic_istringstream : public basic_istream { - public: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // _lib.istringstream.cons_ Constructors: -S explicit basic_istringstream(ios_base::openmode which = ios_base::in); -S explicit basic_istringstream( - const basic_string& str, - ios_base::openmode which = ios_base::in); - - // _lib.istringstream.members_ Members: -S basic_stringbuf* rdbuf() const; -S basic_string str() const; -S void str(const basic_string& s); - private: - // basic_stringbuf sb; exposition only - }; - - 27.7.3 Class basic_ostringstream [lib.ostringstream] - - template , - class Allocator = allocator > -X class basic_ostringstream : public basic_ostream { - public: - - // Types: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; - // _lib.ostringstream.cons_ Constructors/destructor: -S explicit basic_ostringstream(ios_base::openmode which = ios_base::out); -S explicit basic_ostringstream( - const basic_string& str, - ios_base::openmode which = ios_base::out); - // _lib.ostringstream.members_ Members: -S basic_stringbuf* rdbuf() const; -S basic_string str() const; -S void str(const basic_string& s); - }; - - - 27.7.4 Template class basic_stringstream [lib.stringstream] - - template , - class Allocator = allocator > -X class basic_stringstream - : public basic_iostream { - public: - // Types -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; - // constructors/destructors -S explicit basic_stringstream( - ios_base::openmode which = ios_base::out|ios_base::in); -S explicit basic_stringstream( - const basic_string& str, - ios_base::openmode which = ios_base::out|ios_base::in); - // Members: -S basic_stringbuf* rdbuf() const; -S basic_string str() const; -S void str(const basic_string& str); - }; - - - - 27.8.1 File streams [lib.fstreams] - - - Header synopsis - -X template > - class basic_filebuf; -T typedef basic_filebuf filebuf; -T typedef basic_filebuf wfilebuf; - -X template > - class basic_ifstream; -T typedef basic_ifstream ifstream; -T typedef basic_ifstream wifstream; - -X template > - class basic_ofstream; -T typedef basic_ofstream ofstream; -T typedef basic_ofstream wofstream; - -X template > - class basic_fstream; -T typedef basic_fstream fstream; -T typedef basic_fstream wfstream; - - 27.8.1.1 Template class basic_filebuf [lib.filebuf] - - template > -X class basic_filebuf : public basic_streambuf { - public: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // _lib.filebuf.cons_ Constructors/destructor: -X basic_filebuf(); -X virtual ~basic_filebuf(); - // _lib.filebuf.members_ Members: -T bool is_open() const; -X basic_filebuf* open - (const char* s, ios_base::openmode mode); -X basic_filebuf* close(); - protected: - // _lib.filebuf.virtuals_ Overridden virtual functions: -X virtual streamsize showmanyc(); -X virtual int_type underflow(); -X virtual int_type uflow(); -X virtual int_type pbackfail(int_type c = traits::eof()); -X virtual int_type overflow (int_type c = traits::eof()); -S virtual basic_streambuf* - setbuf(char_type* s, streamsize n); -S virtual pos_type seekoff(off_type off, ios_base::seekdir way, - ios_base::openmode which - = ios_base::in | ios_base::out); -S virtual pos_type seekpos(pos_type sp, ios_base::openmode which - = ios_base::in | ios_base::out); -S virtual int sync(); -S virtual void imbue(const locale& loc); - }; - - - - 27.8.1.5 Template class basic_ifstream [lib.ifstream] - - template > -X class basic_ifstream : public basic_istream { - public: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // _lib.ifstream.cons_ Constructors: -S basic_ifstream(); -S explicit basic_ifstream(const char* s, - ios_base::openmode mode = ios_base::in); - // _lib.ifstream.members_ Members: -S basic_filebuf* rdbuf() const; -S bool is_open(); -S void open(const char* s, ios_base::openmode mode = ios_base::in); -S void close(); - }; - - - 27.8.1.8 Template class basic_ofstream [lib.ofstream] - - template > -X class basic_ofstream : public basic_ostream { - public: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // _lib.ofstream.cons_ Constructors: -X basic_ofstream(); -X explicit basic_ofstream(const char* s, - ios_base::openmode mode - = ios_base::out); - // _lib.ofstream.members_ Members: -X basic_filebuf* rdbuf() const; -T bool is_open(); -X void open(const char* s, ios_base::openmode mode = ios_base::out); -X void close(); - }; - - - 27.8.1.11 Template class basic_fstream [lib.fstream] - - template > -X class basic_fstream - : public basic_iostream { - public: -T typedef charT char_type; -T typedef typename traits::int_type int_type; -T typedef typename traits::pos_type pos_type; -T typedef typename traits::off_type off_type; -T typedef traits traits_type; - // constructors/destructor -S basic_fstream(); -S explicit basic_fstream( - const char* s, - ios_base::openmode mode = ios_base::in|ios_base::out); - - // Members: -S basic_filebuf* rdbuf() const; -S bool is_open(); -S void open( - const char* s, - ios_base::openmode mode = ios_base::in|ios_base::out); -S void close(); - }; - - - - 27.8.2 C Library files [lib.c.files] - - - Table 13--Header synopsis - Macros: -X BUFSIZ L_tmpnam SEEK_SET TMP_MAX -X EOF NULL stderr _IOFBF -X FILENAME_MAX SEEK_CUR stdin _IOLBF -X FOPEN_MAX SEEK_END stdout _IONBF - -X Types: FILE fpos_t size_t - Functions: -X clearerr fgets fscanf gets rewind -X fclose fopen fseek perror scanf tmpnam -X feof fprintf fsetpos printf setbuf ungetc -X ferror fputc ftell putc setvbuf vprintf -X fflush fputs fwrite puts sprintf vfprintf -X fgetc fread getc remove sscanf vsprintf -X fgetpos freopen getchar putchar rename tmpfile - - - - - 1.5 Standard C library headers [depr.c.headers] - -X - - - - - 1.6 Old iostreams members [depr.ios.members] - - [Note: these should be #ifdef'd to permit diagnostics if used.] - namespace std { - class ios_base { - public: -T typedef T1 io_state; -T typedef T2 open_mode; -T typedef T3 seek_dir; -T typedef OFF_T streamoff; -T typedef OFF_T streampos; - // remainder unchanged - }; - } - - [Note: these should be #ifdef'd to permit diagnostics if used.] - namespace std { - template > - class basic_streambuf { - public: -T void stossc(); - // remainder unchanged - }; - } - - 8 An implementation may provide the following member functions that - overload signatures specified in clause _lib.iostreams_: - - [Note: the following overloads should be #ifdef'd to permit - diagnostics to be emitted, by default, if used.] - - template class basic_ios { - public: -M void clear(io_state state); -M void setstate(io_state state); - // remainder unchanged - }; - class ios_base { - public: -M void exceptions(io_state); - // remainder unchanged - }; - template > - class basic_streambuf { - public: -M pos_type pubseekoff(off_type off, ios_base::seek_dir way, - ios_base::open_mode which = ios_base::in | ios_base::out); -M pos_type pubseekpos(pos_type sp, - ios_base::open_mode which = ios_base::in | ios_base::out); - // remainder unchanged - }; - template > - class basic_filebuf : public basic_streambuf { - public: -M basic_filebuf* open - (const char* s, ios_base::open_mode mode); - // remainder unchanged - }; - template > - class basic_ifstream : public basic_istream { - public: -M void open(const char* s, ios_base::open_mode mode = in); - // remainder unchanged - }; - template > - class basic_ofstream : public basic_ostream { - public: -M void open(const char* s, ios_base::open_mode mode = out | trunc); - // remainder unchanged - }; - } - - - - 1.7.1 Class strstreambuf [depr.strstreambuf] - - [Note: It should be possible to adopt these components with only - minor changes from the 2.8 version of the library.] - -M class strstreambuf : public basic_streambuf { - public: -M explicit strstreambuf(streamsize alsize_arg = 0); -M strstreambuf(void* (*palloc_arg)(size_t), void (*pfree_arg)(void*)); -M strstreambuf(char* gnext_arg, streamsize n, char* pbeg_arg = 0); -M strstreambuf(const char* gnext_arg, streamsize n); -M strstreambuf(signed char* gnext_arg, streamsize n, - signed char* pbeg_arg = 0); -M strstreambuf(const signed char* gnext_arg, streamsize n); -M strstreambuf(unsigned char* gnext_arg, streamsize n, - unsigned char* pbeg_arg = 0); -M strstreambuf(const unsigned char* gnext_arg, streamsize n); -M virtual ~strstreambuf(); -M void freeze(bool freezefl = true); -M char* str(); -M int pcount(); - protected: -M virtual int_type overflow (int_type c = EOF); -M virtual int_type pbackfail(int_type c = EOF); -M virtual int_type underflow(); -M virtual pos_type seekoff(off_type off, ios_base::seekdir way, - ios_base::openmode which - = ios_base::in | ios_base::out); -M virtual pos_type seekpos(pos_type sp, ios_base::openmode which - = ios_base::in | ios_base::out); -M virtual streambuf* setbuf(char* s, streamsize n); - } - - 1.7.4 Class strstream [depr.strstream] - -M class strstream - : public basic_iostream { - public: - // Types -M typedef char char_type; -M typedef typename char_traits::int_type int_type -M typedef typename char_traits::pos_type pos_type; -M typedef typename char_traits::off_type off_type; - // consturctors/destructor -M strstream(); -M strstream(char* s, int n, - ios_base::openmode mode = ios_base::in|ios_base::out); -M virtual ~strstream(); - // Members: -M strstreambuf* rdbuf() const; -M void freeze(bool freezefl = true); -M int pcount() const; -M char* str(); - }; - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING deleted file mode 100644 index 623b6258a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING.DOC b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING.DOC deleted file mode 100644 index 1a864561b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/COPYING.DOC +++ /dev/null @@ -1,355 +0,0 @@ - GNU Free Documentation License - Version 1.1, March 2000 - - Copyright (C) 2000 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - -0. PREAMBLE - -The purpose of this License is to make a manual, textbook, or other -written document "free" in the sense of freedom: to assure everyone -the effective freedom to copy and redistribute it, with or without -modifying it, either commercially or noncommercially. Secondarily, -this License preserves for the author and publisher a way to get -credit for their work, while not being considered responsible for -modifications made by others. - -This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - - -1. APPLICABILITY AND DEFINITIONS - -This License applies to any manual or other work that contains a -notice placed by the copyright holder saying it can be distributed -under the terms of this License. The "Document", below, refers to any -such manual or work. Any member of the public is a licensee, and is -addressed as "you". - -A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -A "Secondary Section" is a named appendix or a front-matter section of -the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject -(or to related matters) and contains nothing that could fall directly -within that overall subject. (For example, if the Document is in part a -textbook of mathematics, a Secondary Section may not explain any -mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. - -The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. - -A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, whose contents can be viewed and edited directly and -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is -not "Transparent" is called "Opaque". - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input format, SGML -or XML using a publicly available DTD, and standard-conforming simple -HTML designed for human modification. Opaque formats include -PostScript, PDF, proprietary formats that can be read and edited only -by proprietary word processors, SGML or XML for which the DTD and/or -processing tools are not generally available, and the -machine-generated HTML produced by some word processors for output -purposes only. - -The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - - -2. VERBATIM COPYING - -You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - - -3. COPYING IN QUANTITY - -If you publish printed copies of the Document numbering more than 100, -and the Document's license notice requires Cover Texts, you must enclose -the copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a publicly-accessible computer-network location containing a complete -Transparent copy of the Document, free of added material, which the -general network-using public has access to download anonymously at no -charge using public-standard network protocols. If you use the latter -option, you must take reasonably prudent steps, when you begin -distribution of Opaque copies in quantity, to ensure that this -Transparent copy will remain thus accessible at the stated location -until at least one year after the last time you distribute an Opaque -copy (directly or through your agents or retailers) of that edition to -the public. - -It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - - -4. MODIFICATIONS - -You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -A. Use in the Title Page (and on the covers, if any) a title distinct - from that of the Document, and from those of previous versions - (which should, if there were any, be listed in the History section - of the Document). You may use the same title as a previous version - if the original publisher of that version gives permission. -B. List on the Title Page, as authors, one or more persons or entities - responsible for authorship of the modifications in the Modified - Version, together with at least five of the principal authors of the - Document (all of its principal authors, if it has less than five). -C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. -D. Preserve all the copyright notices of the Document. -E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. -F. Include, immediately after the copyright notices, a license notice - giving the public permission to use the Modified Version under the - terms of this License, in the form shown in the Addendum below. -G. Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. -H. Include an unaltered copy of this License. -I. Preserve the section entitled "History", and its title, and add to - it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. -J. Preserve the network location, if any, given in the Document for - public access to a Transparent copy of the Document, and likewise - the network locations given in the Document for previous versions - it was based on. These may be placed in the "History" section. - You may omit a network location for a work that was published at - least four years before the Document itself, or if the original - publisher of the version it refers to gives permission. -K. In any section entitled "Acknowledgements" or "Dedications", - preserve the section's title, and preserve in the section all the - substance and tone of each of the contributor acknowledgements - and/or dedications given therein. -L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section titles. -M. Delete any section entitled "Endorsements". Such a section - may not be included in the Modified Version. -N. Do not retitle any existing section as "Endorsements" - or to conflict in title with any Invariant Section. - -If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -You may add a section entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - -5. COMBINING DOCUMENTS - -You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice. - -The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -In the combination, you must combine any sections entitled "History" -in the various original documents, forming one section entitled -"History"; likewise combine any sections entitled "Acknowledgements", -and any sections entitled "Dedications". You must delete all sections -entitled "Endorsements." - - -6. COLLECTIONS OF DOCUMENTS - -You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - - -7. AGGREGATION WITH INDEPENDENT WORKS - -A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, does not as a whole count as a Modified Version -of the Document, provided no compilation copyright is claimed for the -compilation. Such a compilation is called an "aggregate", and this -License does not apply to the other self-contained works thus compiled -with the Document, on account of their being thus compiled, if they -are not themselves derivative works of the Document. - -If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one quarter -of the entire aggregate, the Document's Cover Texts may be placed on -covers that surround only the Document within the aggregate. -Otherwise they must appear on covers around the whole aggregate. - - -8. TRANSLATION - -Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License provided that you also include the -original English version of this License. In case of a disagreement -between the translation and the original English version of this -License, the original English version will prevail. - - -9. TERMINATION - -You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - - -10. FUTURE REVISIONS OF THIS LICENSE - -The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. - - -ADDENDUM: How to use this License for your documents - -To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - - Copyright (c) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - A copy of the license is included in the section entitled "GNU - Free Documentation License". - -If you have no Invariant Sections, write "with no Invariant Sections" -instead of saying which ones are invariant. If you have no -Front-Cover Texts, write "no Front-Cover Texts" instead of -"Front-Cover Texts being LIST"; likewise for Back-Cover Texts. - -If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/DESIGN b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/DESIGN deleted file mode 100644 index 5af3d9aed..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/DESIGN +++ /dev/null @@ -1,859 +0,0 @@ - -Standard C++ Library Design Document ------------------------------------- - -This is an overview of libstdc++-v3, with particular attention -to projects to be done and how they fit into the whole. - -The Library ------------ - -This paper is covers two major areas: - - - Features and policies not mentioned in the standard that - the quality of the library implementation depends on, including - extensions and "implementation-defined" features; - - - Plans for required but unimplemented library features and - optimizations to them. - -Overhead --------- - -The standard defines a large library, much larger than the standard -C library. A naive implementation would suffer substantial overhead -in compile time, executable size, and speed, rendering it unusable -in many (particularly embedded) applications. The alternative demands -care in construction, and some compiler support, but there is no -need for library subsets. - -What are the sources of this overhead? There are four main causes: - - - The library is specified almost entirely as templates, which - with current compilers must be included in-line, resulting in - very slow builds as tens or hundreds of thousands of lines - of function definitions are read for each user source file. - Indeed, the entire SGI STL, as well as the dos Reis valarray, - are provided purely as header files, largely for simplicity in - porting. Iostream/locale is (or will be) as large again. - - - The library is very flexible, specifying a multitude of hooks - where users can insert their own code in place of defaults. - When these hooks are not used, any time and code expended to - support that flexibility is wasted. - - - Templates are often described as causing to "code bloat". In - practice, this refers (when it refers to anything real) to several - independent processes. First, when a class template is manually - instantiated in its entirely, current compilers place the definitions - for all members in a single object file, so that a program linking - to one member gets definitions of all. Second, template functions - which do not actually depend on the template argument are, under - current compilers, generated anew for each instantiation, rather - than being shared with other instantiations. Third, some of the - flexibility mentioned above comes from virtual functions (both in - regular classes and template classes) which current linkers add - to the executable file even when they manifestly cannot be called. - - - The library is specified to use a language feature, exceptions, - which in the current gcc compiler ABI imposes a run time and - code space cost to handle the possibility of exceptions even when - they are not used. Under the new ABI (accessed with -fnew-abi), - there is a space overhead and a small reduction in code efficiency - resulting from lost optimization opportunities associated with - non-local branches associated with exceptions. - -What can be done to eliminate this overhead? A variety of coding -techniques, and compiler, linker and library improvements and -extensions may be used, as covered below. Most are not difficult, -and some are already implemented in varying degrees. - -Overhead: Compilation Time --------------------------- - -Providing "ready-instantiated" template code in object code archives -allows us to avoid generating and optimizing template instantiations -in each compilation unit which uses them. However, the number of such -instantiations that are useful to provide is limited, and anyway this -is not enough, by itself, to minimize compilation time. In particular, -it does not reduce time spent parsing conforming headers. - -Quicker header parsing will depend on library extensions and compiler -improvements. One approach is some variation on the techniques -previously marketed as "pre-compiled headers", now standardized as -support for the "export" keyword. "Exported" template definitions -can be placed (once) in a "repository" -- really just a library, but -of template definitions rather than object code -- to be drawn upon -at link time when an instantiation is needed, rather than placed in -header files to be parsed along with every compilation unit. - -Until "export" is implemented we can put some of the lengthy template -definitions in #if guards or alternative headers so that users can skip -over the the full definitions when they need only the ready-instantiated -specializations. - -To be precise, this means that certain headers which define -templates which users normally use only for certain arguments -can be instrumented to avoid exposing the template definitions -to the compiler unless a macro is defined. For example, in -, we might have: - - template class basic_string { - ... // member declarations - }; - ... // operator declarations - - #ifdef _STRICT_ISO_ - # if _G_NO_TEMPLATE_EXPORT - # include // headers needed by definitions - # ... - # include // member and global template definitions. - # endif - #endif - -Users who compile without specifying a strict-ISO-conforming flag -would not see many of the template definitions they now see, and rely -instead on ready-instantiated specializations in the library. This -technique would be useful for the following substantial components: -string, locale/iostreams, valarray. It would *not* be useful or -usable with the following: containers, algorithms, iterators, -allocator. Since these constitute a large (though decreasing) -fraction of the library, the benefit the technique offers is -limited. - -The language specifies the semantics of the "export" keyword, but -the gcc compiler does not yet support it. When it does, problems -with large template inclusions can largely disappear, given some -minor library reorganization, along with the need for the apparatus -described above. - -Overhead: Flexibility Cost --------------------------- - -The library offers many places where users can specify operations -to be performed by the library in place of defaults. Sometimes -this seems to require that the library use a more-roundabout, and -possibly slower, way to accomplish the default requirements than -would be used otherwise. - -The primary protection against this overhead is thorough compiler -optimization, to crush out layers of inline function interfaces. -Kuck & Associates has demonstrated the practicality of this kind -of optimization. - -The second line of defense against this overhead is explicit -specialization. By defining helper function templates, and writing -specialized code for the default case, overhead can be eliminated -for that case without sacrificing flexibility. This takes full -advantage of any ability of the optimizer to crush out degenerate -code. - -The library specifies many virtual functions which current linkers -load even when they cannot be called. Some minor improvements to the -compiler and to ld would eliminate any such overhead by simply -omitting virtual functions that the complete program does not call. -A prototype of this work has already been done. For targets where -GNU ld is not used, a "pre-linker" could do the same job. - -The main areas in the standard interface where user flexibility -can result in overhead are: - - - Allocators: Containers are specified to use user-definable - allocator types and objects, making tuning for the container - characteristics tricky. - - - Locales: the standard specifies locale objects used to implement - iostream operations, involving many virtual functions which use - streambuf iterators. - - - Algorithms and containers: these may be instantiated on any type, - frequently duplicating code for identical operations. - - - Iostreams and strings: users are permitted to use these on their - own types, and specify the operations the stream must use on these - types. - -Note that these sources of overhead are _avoidable_. The techniques -to avoid them are covered below. - -Code Bloat ----------- - -In the SGI STL, and in some other headers, many of the templates -are defined "inline" -- either explicitly or by their placement -in class definitions -- which should not be inline. This is a -source of code bloat. Matt had remarked that he was relying on -the compiler to recognize what was too big to benefit from inlining, -and generate it out-of-line automatically. However, this also can -result in code bloat except where the linker can eliminate the extra -copies. - -Fixing these cases will require an audit of all inline functions -defined in the library to determine which merit inlining, and moving -the rest out of line. This is an issue mainly in chapters 23, 25, and -27. Of course it can be done incrementally, and we should generally -accept patches that move large functions out of line and into ".tcc" -files, which can later be pulled into a repository. Compiler/linker -improvements to recognize very large inline functions and move them -out-of-line, but shared among compilation units, could make this -work unnecessary. - -Pre-instantiating template specializations currently produces large -amounts of dead code which bloats statically linked programs. The -current state of the static library, libstdc++.a, is intolerable on -this account, and will fuel further confused speculation about a need -for a library "subset". A compiler improvement that treats each -instantiated function as a separate object file, for linking purposes, -would be one solution to this problem. An alternative would be to -split up the manual instantiation files into dozens upon dozens of -little files, each compiled separately, but an abortive attempt at -this was done for and, though it is far from complete, it -is already a nuisance. A better interim solution (just until we have -"export") is badly needed. - -When building a shared library, the current compiler/linker cannot -automatically generate the instantiatiations needed. This creates a -miserable situation; it means any time something is changed in the -library, before a shared library can be built someone must manually -copy the declarations of all templates that are needed by other parts -of the library to an "instantiation" file, and add it to the build -system to be compiled and linked to the library. This process is -readily automated, and should be automated as soon as possible. -Users building their own shared libraries experience identical -frustrations. - -Sharing common aspects of template definitions among instantiations -can radically reduce code bloat. The compiler could help a great -deal here by recognizing when a function depends on nothing about -a template parameter, or only on its size, and giving the resulting -function a link-name "equate" that allows it to be shared with other -instantiations. Implementation code could take advantage of the -capability by factoring out code that does not depend on the template -argument into separate functions to be merged by the compiler. - -Until such a compiler optimization is implemented, much can be done -manually (if tediously) in this direction. One such optimization is -to derive class templates from non-template classes, and move as much -implementation as possible into the base class. Another is to partial- -specialize certain common instantiations, such as vector, to share -code for instantiations on all types T. While these techniques work, -they are far from the complete solution that a compiler improvement -would afford. - -Overhead: Expensive Language Features -------------------------------------- - -The main "expensive" language feature used in the standard library -is exception support, which requires compiling in cleanup code with -static table data to locate it, and linking in library code to use -the table. For small embedded programs the amount of such library -code and table data is assumed by some to be excessive. Under the -"new" ABI this perception is generally exaggerated, although in some -cases it may actually be excessive. - -To implement a library which does not use exceptions directly is -not difficult given minor compiler support (to "turn off" exceptions -and ignore exception constructs), and results in no great library -maintenance difficulties. To be precise, given "-fno-exceptions", -the compiler should treat "try" blocks as ordinary blocks, and -"catch" blocks as dead code to ignore or eliminate. Compiler -support is not strictly necessary, except in the case of "function -try blocks"; otherwise the following macros almost suffice: - - #define throw(X) - #define try if (true) - #define catch(X) else if (false) - -However, there may be a need to use function try blocks in the -library implementation, and use of macros in this way can make -correct diagnostics impossible. Furthermore, use of this scheme -would require the library to call a function to re-throw exceptions -from a try block. Implementing the above semantics in the compiler -is preferable. - -Given the support above (however implemented) it only remains to -replace code that "throws" with a call to a well-documented "handler" -function in a separate compilation unit which may be replaced by -the user. The main source of exceptions that would be difficult -for users to avoid is memory allocation failures, but users can -define their own memory allocation primitives that never throw. -Otherwise, the complete list of such handlers, and which library -functions may call them, would be needed for users to be able to -implement the necessary substitutes. (Fortunately, they have the -source code.) - -Opportunities -------------- - -The template capabilities of C++ offer enormous opportunities for -optimizing common library operations, well beyond what would be -considered "eliminating overhead". In particular, many operations -done in Glibc with macros that depend on proprietary language -extensions can be implemented in pristine Standard C++. For example, -the chapter 25 algorithms, and even C library functions such as strchr, -can be specialized for the case of static arrays of known (small) size. - -Detailed optimization opportunities are identified below where -the component where they would appear is discussed. Of course new -opportunities will be identified during implementation. - -Unimplemented Required Library Features ---------------------------------------- - -The standard specifies hundreds of components, grouped broadly by -chapter. These are listed in excruciating detail in the CHECKLIST -file. - - 17 general - 18 support - 19 diagnostics - 20 utilities - 21 string - 22 locale - 23 containers - 24 iterators - 25 algorithms - 26 numerics - 27 iostreams - Annex D backward compatibility - -Anyone participating in implementation of the library should obtain -a copy of the standard, ISO 14882. People in the U.S. can obtain an -electronic copy for US$18 from ANSI's web site. Those from other -countries should visit http://www.iso.ch/ to find out the location -of their country's representation in ISO, in order to know who can -sell them a copy. - -The emphasis in the following sections is on unimplemented features -and optimization opportunities. - -Chapter 17 General -------------------- - -Chapter 17 concerns overall library requirements. - -The standard doesn't mention threads. A multi-thread (MT) extension -primarily affects operators new and delete (18), allocator (20), -string (21), locale (22), and iostreams (27). The common underlying -support needed for this is discussed under chapter 20. - -The standard requirements on names from the C headers create a -lot of work, mostly done. Names in the C headers must be visible -in the std:: and sometimes the global namespace; the names in the -two scopes must refer to the same object. More stringent is that -Koenig lookup implies that any types specified as defined in std:: -really are defined in std::. Names optionally implemented as -macros in C cannot be macros in C++. (An overview may be read at -). The scripts "inclosure" -and "mkcshadow", and the directories shadow/ and cshadow/, are the -beginning of an effort to conform in this area. - -A correct conforming definition of C header names based on underlying -C library headers, and practical linking of conforming namespaced -customer code with third-party C libraries depends ultimately on -an ABI change, allowing namespaced C type names to be mangled into -type names as if they were global, somewhat as C function names in a -namespace, or C++ global variable names, are left unmangled. Perhaps -another "extern" mode, such as 'extern "C-global"' would be an -appropriate place for such type definitions. Such a type would -affect mangling as follows: - - namespace A { - struct X {}; - extern "C-global" { // or maybe just 'extern "C"' - struct Y {}; - }; - } - void f(A::X*); // mangles to f__FPQ21A1X - void f(A::Y*); // mangles to f__FP1Y - -(It may be that this is really the appropriate semantics for regular -'extern "C"', and 'extern "C-global"', as an extension, would not be -necessary.) This would allow functions declared in non-standard C headers -(and thus fixable by neither us nor users) to link properly with functions -declared using C types defined in properly-namespaced headers. The -problem this solves is that C headers (which C++ programmers do persist -in using) frequently forward-declare C struct tags without including -the header where the type is defined, as in - - struct tm; - void munge(tm*); - -Without some compiler accommodation, munge cannot be called by correct -C++ code using a pointer to a correctly-scoped tm* value. - -The current C headers use the preprocessor extension "#include_next", -which the compiler complains about when run "-pedantic". -(Incidentally, it appears that "-fpedantic" is currently ignored, -probably a bug.) The solution in the C compiler is to use -"-isystem" rather than "-I", but unfortunately in g++ this seems -also to wrap the whole header in an 'extern "C"' block, so it's -unusable for C++ headers. The correct solution appears to be to -allow the various special include-directory options, if not given -an argument, to affect subsequent include-directory options additively, -so that if one said - - -pedantic -iprefix $(prefix) \ - -idirafter -ino-pedantic -ino-extern-c -iwithprefix -I g++-v3 \ - -iwithprefix -I g++-v3/ext - -the compiler would search $(prefix)/g++-v3 and not report -pedantic warnings for files found there, but treat files in -$(prefix)/g++-v3/ext pedantically. (The undocumented semantics -of "-isystem" in g++ stink. Can they be rescinded? If not it -must be replaced with something more rationally behaved.) - -All the C headers need the treatment above; in the standard these -headers are mentioned in various chapters. Below, I have only -mentioned those that present interesting implementation issues. - -The components identified as "mostly complete", below, have not been -audited for conformance. In many cases where the library passes -conformance tests we have non-conforming extensions that must be -wrapped in #if guards for "pedantic" use, and in some cases renamed -in a conforming way for continued use in the implementation regardless -of conformance flags. - -The STL portion of the library still depends on a header -stl/bits/stl_config.h full of #ifdef clauses. This apparatus -should be replaced with autoconf/automake machinery. - -The SGI STL defines a type_traits<> template, specialized for -many types in their code including the built-in numeric and -pointer types and some library types, to direct optimizations of -standard functions. The SGI compiler has been extended to generate -specializations of this template automatically for user types, -so that use of STL templates on user types can take advantage of -these optimizations. Specializations for other, non-STL, types -would make more optimizations possible, but extending the gcc -compiler in the same way would be much better. Probably the next -round of standardization will ratify this, but probably with -changes, so it probably should be renamed to place it in the -implementation namespace. - -The SGI STL also defines a large number of extensions visible in -standard headers. (Other extensions that appear in separate headers -have been sequestered in subdirectories ext/ and backward/.) All -these extensions should be moved to other headers where possible, -and in any case wrapped in a namespace (not std!), and (where kept -in a standard header) girded about with macro guards. Some cannot be -moved out of standard headers because they are used to implement -standard features. The canonical method for accommodating these -is to use a protected name, aliased in macro guards to a user-space -name. Unfortunately C++ offers no satisfactory template typedef -mechanism, so very ad-hoc and unsatisfactory aliasing must be used -instead. - -Implementation of a template typedef mechanism should have the highest -priority among possible extensions, on the same level as implementation -of the template "export" feature. - -Chapter 18 Language support ----------------------------- - -Headers: -C headers: - (also 21, 25, 26) - -This defines the built-in exceptions, rtti, numeric_limits<>, -operator new and delete. Much of this is provided by the -compiler in its static runtime library. - -Work to do includes defining numeric_limits<> specializations in -separate files for all target architectures. Values for integer types -except for bool and wchar_t are readily obtained from the C header -, but values for the remaining numeric types (bool, wchar_t, -float, double, long double) must be entered manually. This is -largely dog work except for those members whose values are not -easily deduced from available documentation. Also, this involves -some work in target configuration to identify the correct choice of -file to build against and to install. - -The definitions of the various operators new and delete must be -made thread-safe, which depends on a portable exclusion mechanism, -discussed under chapter 20. Of course there is always plenty of -room for improvements to the speed of operators new and delete. - -, in Glibc, defines some macros that gcc does not allow to -be wrapped into an inline function. Probably this header will demand -attention whenever a new target is chosen. The functions atexit(), -exit(), and abort() in cstdlib have different semantics in C++, so -must be re-implemented for C++. - -Chapter 19 Diagnostics ------------------------ - -Headers: -C headers: - -This defines the standard exception objects, which are "mostly complete". -Cygnus has a version, and now SGI provides a slightly different one. -It makes little difference which we use. - -The C global name "errno", which C allows to be a variable or a macro, -is required in C++ to be a macro. For MT it must typically result in -a function call. - -Chapter 20 Utilities ---------------------- -Headers: -C header: (also in 18) - -SGI STL provides "mostly complete" versions of all the components -defined in this chapter. However, the auto_ptr<> implementation -is known to be wrong. Furthermore, the standard definition of it -is known to be unimplementable as written. A minor change to the -standard would fix it, and auto_ptr<> should be adjusted to match. - -Multi-threading affects the allocator implementation, and there must -be configuration/installation choices for different users' MT -requirements. Anyway, users will want to tune allocator options -to support different target conditions, MT or no. - -The primitives used for MT implementation should be exposed, as an -extension, for users' own work. We need cross-CPU "mutex" support, -multi-processor shared-memory atomic integer operations, and single- -processor uninterruptible integer operations, and all three configurable -to be stubbed out for non-MT use, or to use an appropriately-loaded -dynamic library for the actual runtime environment, or statically -compiled in for cases where the target architecture is known. - -Chapter 21 String ------------------- -Headers: -C headers: (also in 27) - (also in 18, 25, 26) - -We have "mostly-complete" char_traits<> implementations. Many of the -char_traits operations might be optimized further using existing -proprietary language extensions. - -We have a "mostly-complete" basic_string<> implementation. The work -to manually instantiate char and wchar_t specializations in object -files to improve link-time behavior is extremely unsatisfactory, -literally tripling library-build time with no commensurate improvement -in static program link sizes. It must be redone. (Similar work is -needed for some components in chapters 22 and 27.) - -Other work needed for strings is MT-safety, as discussed under the -chapter 20 heading. - -The standard C type mbstate_t from and used in char_traits<> -must be different in C++ than in C, because in C++ the default constructor -value mbstate_t() must be the "base" or "ground" sequence state. -(According to the likely resolution of a recently raised Core issue, -this may become unnecessary. However, there are other reasons to -use a state type not as limited as whatever the C library provides.) -If we might want to provide conversions from (e.g.) internally- -represented EUC-wide to externally-represented Unicode, or vice- -versa, the mbstate_t we choose will need to be more accommodating -than what might be provided by an underlying C library. - -There remain some basic_string template-member functions which do -not overload properly with their non-template brethren. The infamous -hack akin to what was done in vector<> is needed, to conform to -23.1.1 para 10. The CHECKLIST items for basic_string marked 'X', -or incomplete, are so marked for this reason. - -Replacing the string iterators, which currently are simple character -pointers, with class objects would greatly increase the safety of the -client interface, and also permit a "debug" mode in which range, -ownership, and validity are rigorously checked. The current use of -raw pointers as string iterators is evil. vector<> iterators need the -same treatment. Note that the current implementation freely mixes -pointers and iterators, and that must be fixed before safer iterators -can be introduced. - -Some of the functions in are different from the C version. -generally overloaded on const and non-const argument pointers. For -example, in strchr is overloaded. The functions isupper -etc. in typically implemented as macros in C are functions -in C++, because they are overloaded with others of the same name -defined in . - -Many of the functions required in and cannot be -implemented using underlying C facilities on intended targets because -such facilities only partly exist. - -Chapter 22 Locale ------------------- -Headers: -C headers: - -We have a "mostly complete" class locale, with the exception of -code for constructing, and handling the names of, named locales. -The ways that locales are named (particularly when categories -(e.g. LC_TIME, LC_COLLATE) are different) varies among all target -environments. This code must be written in various versions and -chosen by configuration parameters. - -Members of many of the facets defined in are stubs. Generally, -there are two sets of facets: the base class facets (which are supposed -to implement the "C" locale) and the "byname" facets, which are supposed -to read files to determine their behavior. The base ctype<>, collate<>, -and numpunct<> facets are "mostly complete", except that the table of -bitmask values used for "is" operations, and corresponding mask values, -are still defined in libio and just included/linked. (We will need to -implement these tables independently, soon, but should take advantage -of libio where possible.) The num_put<>::put members for integer types -are "mostly complete". - -A complete list of what has and has not been implemented may be -found in CHECKLIST. However, note that the current definition of -codecvt is wrong. It should simply write -out the raw bytes representing the wide characters, rather than -trying to convert each to a corresponding single "char" value. - -Some of the facets are more important than others. Specifically, -the members of ctype<>, numpunct<>, num_put<>, and num_get<> facets -are used by other library facilities defined in , , -and , and the codecvt<> facet is used by basic_filebuf<> -in , so a conforming iostream implementation depends on -these. - -The "long long" type eventually must be supported, but code mentioning -it should be wrapped in #if guards to allow pedantic-mode compiling. - -Performance of num_put<> and num_get<> depend critically on -caching computed values in ios_base objects, and on extensions -to the interface with streambufs. - -Specifically: retrieving a copy of the locale object, extracting -the needed facets, and gathering data from them, for each call to -(e.g.) operator<< would be prohibitively slow. To cache format -data for use by num_put<> and num_get<> we have a _Format_cache<> -object stored in the ios_base::pword() array. This is constructed -and initialized lazily, and is organized purely for utility. It -is discarded when a new locale with different facets is imbued. - -Using only the public interfaces of the iterator arguments to the -facet functions would limit performance by forbidding "vector-style" -character operations. The streambuf iterator optimizations are -described under chapter 24, but facets can also bypass the streambuf -iterators via explicit specializations and operate directly on the -streambufs, and use extended interfaces to get direct access to the -streambuf internal buffer arrays. These extensions are mentioned -under chapter 27. These optimizations are particularly important -for input parsing. - -Unused virtual members of locale facets can be omitted, as mentioned -above, by a smart linker. - -Chapter 23 Containers ----------------------- -Headers: - -All the components in chapter 23 are implemented in the SGI STL. -They are "mostly complete"; they include a large number of -nonconforming extensions which must be wrapped. Some of these -are used internally and must be renamed or duplicated. - -The SGI components are optimized for large-memory environments. For -embedded targets, different criteria might be more appropriate. Users -will want to be able to tune this behavior. We should provide -ways for users to compile the library with different memory usage -characteristics. - -A lot more work is needed on factoring out common code from different -specializations to reduce code size here and in chapter 25. The -easiest fix for this would be a compiler/ABI improvement that allows -the compiler to recognize when a specialization depends only on the -size (or other gross quality) of a template argument, and allow the -linker to share the code with similar specializations. In its -absence, many of the algorithms and containers can be partial- -specialized, at least for the case of pointers, but this only solves -a small part of the problem. Use of a type_traits-style template -allows a few more optimization opportunities, more if the compiler -can generate the specializations automatically. - -As an optimization, containers can specialize on the default allocator -and bypass it, or take advantage of details of its implementation -after it has been improved upon. - -Replacing the vector iterators, which currently are simple element -pointers, with class objects would greatly increase the safety of the -client interface, and also permit a "debug" mode in which range, -ownership, and validity are rigorously checked. The current use of -pointers for iterators is evil. - -As mentioned for chapter 24, the deque iterator is a good example of -an opportunity to implement a "staged" iterator that would benefit -from specializations of some algorithms. - -Chapter 24 Iterators ---------------------- -Headers: - -Standard iterators are "mostly complete", with the exception of -the stream iterators, which are not yet templatized on the -stream type. Also, the base class template iterator<> appears -to be wrong, so everything derived from it must also be wrong, -currently. - -The streambuf iterators (currently located in stl/bits/std_iterator.h, -but should be under bits/) can be rewritten to take advantage of -friendship with the streambuf implementation. - -Matt Austern has identified opportunities where certain iterator -types, particularly including streambuf iterators and deque -iterators, have a "two-stage" quality, such that an intermediate -limit can be checked much more quickly than the true limit on -range operations. If identified with a member of iterator_traits, -algorithms may be specialized for this case. Of course the -iterators that have this quality can be identified by specializing -a traits class. - -Many of the algorithms must be specialized for the streambuf -iterators, to take advantage of block-mode operations, in order -to allow iostream/locale operations' performance not to suffer. -It may be that they could be treated as staged iterators and -take advantage of those optimizations. - -Chapter 25 Algorithms ----------------------- -Headers: -C headers: (also in 18, 21, 26)) - -The algorithms are "mostly complete". As mentioned above, they -are optimized for speed at the expense of code and data size. - -Specializations of many of the algorithms for non-STL types would -give performance improvements, but we must use great care not to -interfere with fragile template overloading semantics for the -standard interfaces. Conventionally the standard function template -interface is an inline which delegates to a non-standard function -which is then overloaded (this is already done in many places in -the library). Particularly appealing opportunities for the sake of -iostream performance are for copy and find applied to streambuf -iterators or (as noted elsewhere) for staged iterators, of which -the streambuf iterators are a good example. - -The bsearch and qsort functions cannot be overloaded properly as -required by the standard because gcc does not yet allow overloading -on the extern-"C"-ness of a function pointer. - -Chapter 26 Numerics --------------------- -Headers: -C headers: , (also 18, 21, 25) - -Numeric components: Gabriel dos Reis's valarray, Drepper's complex, -and the few algorithms from the STL are "mostly done". Of course -optimization opportunities abound for the numerically literate. It -is not clear whether the valarray implementation really conforms -fully, in the assumptions it makes about aliasing (and lack thereof) -in its arguments. - -The C div() and ldiv() functions are interesting, because they are the -only case where a C library function returns a class object by value. -Since the C++ type div_t must be different from the underlying C type -(which is in the wrong namespace) the underlying functions div() and -ldiv() cannot be re-used efficiently. Fortunately they are trivial to -re-implement. - -Chapter 27 Iostreams ---------------------- -Headers: - -C headers: (also in 21) - -Iostream is currently in a very incomplete state. , , -ios_base, and basic_ios<> are "mostly complete". basic_streambuf<> and -basic_ostream<> are well along, but basic_istream<> has had little work -done. The standard stream objects, and have been -started; basic_filebuf<> "write" functions have been implemented just -enough to do "hello, world". - -Most of the istream and ostream operators << and >> (with the exception -of the op<<(integer) ones) have not been changed to use locale primitives, -sentry objects, or char_traits members. - -All these templates should be manually instantiated for char and -wchar_t in a way that links only used members into user programs. - -Streambuf is fertile ground for optimization extensions. An extended -interface giving iterator access to its internal buffer would be very -useful for other library components. - -Iostream operations (primarily operators << and >>) can take advantage -of the case where user code has not specified a locale, and bypass locale -operations entirely. The current implementation of op<::put, -for the integer types, demonstrates how they can cache encoding details -from the locale on each operation. There is lots more room for -optimization in this area. - -The definition of the relationship between the standard streams -cout et al. and stdout et al. requires something like a "stdiobuf". -The SGI solution of using double-indirection to actually use a -stdio FILE object for buffering is unsatisfactory, because it -interferes with peephole loop optimizations. - -The header work has begun. stringbuf can benefit from -friendship with basic_string<> and basic_string<>::_Rep to use -those objects directly as buffers, and avoid allocating and making -copies. - -The basic_filebuf<> template is a complex beast. It is specified to -use the locale facet codecvt<> to translate characters between native -files and the locale character encoding. In general this involves -two buffers, one of "char" representing the file and another of -"char_type", for the stream, with codecvt<> translating. The process -is complicated by the variable-length nature of the translation, and -the need to seek to corresponding places in the two representations. -For the case of basic_filebuf, when no translation is needed, -a single buffer suffices. A specialized filebuf can be used to reduce -code space overhead when no locale has been imbued. Matt Austern's -work at SGI will be useful, perhaps directly as a source of code, or -at least as an example to draw on. - -Filebuf, almost uniquely (cf. operator new), depends heavily on -underlying environmental facilities. In current releases iostream -depends fairly heavily on libio constant definitions, but it should -be made independent. It also depends on operating system primitives -for file operations. There is immense room for optimizations using -(e.g.) mmap for reading. The shadow/ directory wraps, besides the -standard C headers, the libio.h and unistd.h headers, for use mainly -by filebuf. These wrappings have not been completed, though there -is scaffolding in place. - -The encapulation of certain C header names presents an -interesting problem. It is possible to define an inline std::fprintf() -implemented in terms of the 'extern "C"' vfprintf(), but there is no -standard vfscanf() to use to implement std::fscanf(). It appears that -vfscanf but be re-implemented in C++ for targets where no vfscanf -extension has been defined. This is interesting in that it seems -to be the only significant case in the C library where this kind of -rewriting is necessary. (Of course Glibc provides the vfscanf() -extension.) (The functions related to exit() must be rewritten -for other reasons.) - - -Annex D -------- -Headers: - -Annex D defines many non-library features, and many minor -modifications to various headers, and a complete header. -It is "mostly done", except that the libstdc++-2 -header has not been adopted into the library, or checked to -verify that it matches the draft in those details that were -clarified by the committee. Certainly it must at least be -moved into the std namespace. - -We still need to wrap all the deprecated features in #if guards -so that pedantic compile modes can detect their use. - -Nonstandard Extensions ----------------------- -Headers: - (etc.) - -User code has come to depend on a variety of nonstandard components -that we must not omit. Much of this code can be adopted from -libstdc++-v2 or from the SGI STL. This particularly includes -, , and various SGI extensions such -as . Many of these are already placed in the -subdirectories ext/ and backward/. (Note that it is better to -include them via "" or "" than -to search the subdirectory itself via a "-I" directive. - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/HEADER_POLICY b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/HEADER_POLICY deleted file mode 100644 index c6fa6d38b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/HEADER_POLICY +++ /dev/null @@ -1,164 +0,0 @@ - -Header Policy -------------- - -The C++ Standard specifies many mutual dependencies among the -headers it defines. It offers no advice on how to arrange headers -to avoid problems. The worst such problem is circular references. -Most simply this is "A includes B, B includes A": - - // file // file - #ifndef A #ifndef B - #define A 1 #define B 1 - #include #include - typedef int A_type; typedef int B_type; - extern B_type g(A_type); extern A_type f(B_type); - #endif /* A */ #endif /* B */ - - // file C.cc - #include - -The typical effect of such an "include loop" may be seen by tracing -the preprocessor activity: - - C // file C.cc - C #include - A // file - A #ifndef A - A #define A 1 - A #include - B // file - B #ifndef B - B #define B 1 - B #include - A // file - A #ifndef A <-- oops, cpp symbol A defined already - A ... <-- skip contents - A #endif - B typedef int B_type; - B extern A_type f(B_type); <-- error, A_type not defined yet. - B #endif /* B */ - A typedef int A_type; - A extern B_type g(A_type); - A #endif /* A */ - -The main symptom of #include loops is that definitions from file -are not available after the #include for certain include orders. -The number of standard headers makes testing all permutations of -include order impractical, so a policy is needed to prevent chaos. -In any case, for some standard headers (as for the above) no ordering -can eliminate the loop. - -Other factors influence the policy. Typical implementations of -Make (unfortunately including GNU make) have bugs relating to file -names with no suffix, that lead to such problems as failure to track -dependencies on such files and an inclination to _delete_ them. -Therefore, headers used in building the library are always of the -form generally, or specifically for -an equivalent to the standard header . - -Standard headers are all placed under directory std/, and -are ignored except during installation. These headers simply -#include the corresponding header . - -Standard substitute headers that have any complexity -may sub-include other headers. When they sub-include non-standard -headers, they first include all the headers required for that -non-standard header. - -Mutual dependencies are handled by splitting up the declarations -intended for standard headers among two or more files, and then -interleaving them as needed. For example, we replace and -above, as follows: - - // file - #ifndef _CPP_A - #define _CPP_A - # include - # include - # include - #endif - - // file - #ifndef _CPP_B - #define _CPP_B - # include - # include - # include - #endif - - // file - #ifndef _CPP_BITS_A_TYPES_H - #define _CPP_BITS_A_TYPES_H - typedef int A_type; - #endif - - // file - #ifndef _CPP_BITS_B_TYPES_H - #define _CPP_BITS_B_TYPES_H - typedef int B_type; - #endif - - // file - #ifndef _CPP_BITS_A_FUNS_H - #define _CPP_BITS_A_FUNS_H - extern B_type g(A_type); - #endif - - // file - #ifndef _CPP_BITS_B_FUNS_H - #define _CPP_BITS_B_FUNS_H - extern A_type f(B_type); - #endif - -Of course we have the standard headers under their mandated names: - - // file - #ifndef _CPP_A - #define _CPP_A - # include - #endif - - // file - #ifndef _CPP_B - #define _CPP_B - # include - #endif - -Notice that the include guards are named uniformly except that -the guard for standard header is just _CPP_A, -identically as the header in std/. - -At installation the files std/* can be replaced by symbolic links, -or simply copied into place as is. The result is: - - include/ - include/A -> bits/std_A.h - include/B -> bits/std_A.h - include/bits/ - include/bits/std_A.h - include/bits/std_B.h - include/bits/A_types.h - include/bits/B_types.h - include/bits/A_funs.h - include/bits/B_funs.h - - -Of course splitting up standard headers this way creates -complexity, so it is not done routinely, but only in response -to discovered needs. - -Another reason to split up headers is for support of separate -compilation of templates. This interacts with the foregoing -because template definitions typically have many more dependencies -on other headers than do pure declarations. Non-inline template -definitions are placed in a separate ".tcc" file that is included -by the standard header, and any other standard header that -requires definitions from it for its implementation. - -The key to preventing chaos, given the above structure, is: - - Only standard headers should sub-include - other headers. - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/PROBLEMS b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/PROBLEMS deleted file mode 100644 index 522239112..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/PROBLEMS +++ /dev/null @@ -1,8 +0,0 @@ -Irix 6.2: -- math.h: defines extern long double hypotl( long double ); i.e., only - one argument. They've fixed this in 6.3. - -DES OSF 3.2 & 4.0: -- libm define sincos, sincosf, and sincosl but there are no prototypes and - especially the return type is nowhere defined. The functions are - documented in the man pages, though. diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/RELEASE-NOTES b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/RELEASE-NOTES deleted file mode 100644 index 79920407c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/RELEASE-NOTES +++ /dev/null @@ -1,83 +0,0 @@ -2002-05-02 - -Release Notes -------------- -The Standard C++ Library, or libstdc++-v3, is an ongoing project -to fully implement the ISO 14882 Standard C++ library as described in -chapters 17 through 27 and annex D. - -This is the fifteenth snapshot of the libstdc++ rewrite. It still -has some incomplet and incorrekt parts, but it's a lot less incomplete -and incorrect than some of the earlier snapshots, and quite usable. - -The Standard C++ Library, follows an open development model, -attempting to be fully buzzword, bazaar, and GNU compliant. Full -details on participating, including contributor guidelines, mailing -list subscription, mailing list archives, up-to-date documentation, -and various and sundry other details can be found at the following -URL: - - http://gcc.gnu.org/libstdc++/ - - -New: ---- -- more doxygen documentation -- more named locale fixups -- stdio_filebuf that takes fd, FILE -- io performance tuning -- allocation tuning, valgrind fixups -- __cxa_demangle now supported - - -Bugs fixed: ------------ -6533, 6513, 6501, 6511, 5820, 6414, 4150, 6360, 4164, 1072, 6124, -5180, 3457, 3139, 5268, 3983, 5542, 3129, 5207, 3719, 5734 -+ others. - - -What doesn't: -------------- -- see BUGS. - - -Build and Install ------------------ -Up to date build and install directions can be found at: -http://gcc.gnu.org/libstdc++/install.html - - -Contact: --------- -Places have changed from previous snapshots. The web page, which has -information about joining the mailing list and searching its archives, -CVS access, and contribution information is now at: - - http://gcc.gnu.org/libstdc++/ - -Please note that the mailing list has moved, and is now hosted on -gcc.gnu.org. (The web site above has the most up-to-date info.) - -Obtain the library snapshot via ftp (including these release notes) from - - ftp://gcc.gnu.org/pub/libstdc++/ - -The library is maintained by Benjamin Kosnik, Gabriel -Dos Reis, Phil Edwards, Ulrich Drepper, Loren James Rittle, -and Paolo Carlini. - - -Development tools: ------------------- - -You will need a current version of gcc to compile this snapshot of -libstdc++. The use of the latest stable gcc-3.0.x release (3.0.4), CVS -gcc, or gcc-3_1-branch is strongly recommended, which may also -introduce additional dependencies for up-to-date binutils. In -particular, current binutils (2.12) is recommended so that symbol -versioning for the library is on by default. In addition, you may need -up-to-date tools for modifying Makefiles and regenerating configure -scripts: automake (version 1.4), autoconf (version 2.13 and higher), -and libtool. - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/TODO b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/TODO deleted file mode 100644 index 93685fa3c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/TODO +++ /dev/null @@ -1,174 +0,0 @@ -std::allocator - - - switch to mt_allocator with --enable-threads=posix. - - - persistent allocator - - - global/extern allocator - -std::string - - - Policy-based design incorporating COW - vs. deep copy issues, MT scalability - See Andrei Alexandrescu, June 2001, C/C++ Users Journal - "Generic: A Policy-Based basic_string Implementation" - http://www.cuj.com/documents/s=7994/cujcexp1906alexandr/ - - - operator!= and utility/rel_ops operators need to be made safe with - string and vector iterator classes. basic_string::reverse_iterator may - be implemented incorrectly, or need things like - operator==(__normal_iterator, const char*&), and swap(vector) - - - 'do the right thing' ctor fixing needs to be done for string. This - is still subject to some debate on the library issues list, so I - suggest punting till the dust clears. - - - fix template members of basic_string<> to overload iterators and - non-iterators properly. (This is the infamous hack as in vector<> etc - 23.1.1 para 10.) - -std::locale - - - implement __convert_to_v and __convert_from_v without "C" library - functions and and LANG environment variable dependencies. - - - use localedata to implement generic named (non-MT-safe) locales? - Figure out a way to use ICU data, like libjava? Re-package and use - the glibc localedata, even if we aren't on linux? Need a generic - locale model that does something besides the "C" locale. - - - make locale::classic() separate from named locale code. This will - improve the static linkage situation, but will require new - initialization code. In particular, we need lazy-initialization of - locale::classic(), and maybe the has_facet/use_facet functions for all - the required facets. The end goal is a self-contained - locale_init.cc, or one with transitive closure without the locale - instantiations (locale-inst.cc) or the named locale bits - (localename.cc). - - - Jerry(?)/Paolo(?) work on __float_to_char. - - - minimize ctype convertion in data facets, see numpunct/num_put/num_get - -std::basic_filebuf, 27_io - - - wfilebuf, get variable-encoding working and tested, including - positioning and seeking. (I think this may be done now) - - - wfilebuf testsuite (getting there...) - - - look ahead for unbuffered io, so know when multiple putc's can be - coalesced. - - - unlocked __basic_file + new mutext class - - - optimized the sentries for istream/ostream - - - v2 vs. v3 speed - - - add optimization hooks (esp. whitespace eating) to streambuf - - add _M_begin() and _M_end() to streambuf - - add algorithm specializations for [io]streambuf_iterator (copy find etc.) - -testsuite - - - valgrind hooks into make check so can tell memory leakage - Some commentary on the valgrind users list - - - add hooks for qmtest for visual diffs - - - automatic testing of interactive tests - - - diffing generated output files - - - provide testsuites for numerics. - - - make check-abi needs to have full symbol checking. Scope the LSB - testsuite, see what's going on with the typeinfo etc. bits. - - - try to do a better job of ABI testing, with instantiations of all - standard-specified types checked, not just exported symbols. - -g++/binutils - - - compression for wide versions of basic types, not just narrow - -threads - - - create MT abstraction layer for atomicity to pthreads. - - - solution for threads + C++. - -- audit for places where __builtin_expect can be used. - -- relocations, work on getting these down - -- issues with __builtin_memcpy and std::copy from Jerry Quinn - http://gcc.gnu.org/ml/libstdc++/2003-02/msg00056.html - http://gcc.gnu.org/ml/libstdc++/2003-02/msg00302.html - http://gcc.gnu.org/ml/gcc/2003-10/msg01305.html - -- fix dependency tracking for includes (.h, .tcc) during build process. - -- coordinate with "C" library people the "C" compatibility headers. - -- Think about naming all member data and member functions consistently - as per - funtions: _M_verb_adverb - data: _M_noun_adjective - -- A C++STYLE guide that deals with nested namespaces, and that -everybody can live with. - -- exception specifications need to be reviewed for all parts of the -library support and utility areas, particularly . Part of this is -a standards issue, where the 27_io bugs/standard is really in an odd -spot. - -- C-related issues WRT to io and filepos, mbstate_t. Seeking in wide -streams. May need to define operators for mbstate_t so that -'mbstate_t& == mbstate_t' is something that can be done. - -- scoping/linking issues WRT to C structs need to be worked out. See -Nathan's commentary on cantrip, http://www.cantrip.org/cheaders.html - -- auto_ptr: seems to be some disagreement on what is -standards-conformant behavior, specially on conversion operators. - -- list::assignment operator needs const_cast - -- a cleaner division between pointers-to-value_type and true iterators -needs to be drawn throughout the entire STL implementation. - -- priority_queue conversions may be non-conformant - -- Protect valarray::result_type (not Standard) and make it work with - the various helper classes. - -- Make sure `valarray & == _Expr<_BinClos,bool>' - is defined - -- All of the Library working group closed issues need to be -addressed. Some of them proposed resolutions are already in the v-3 -sources, with macro-guards. Also, same with the TR. - -- add deprecated features from Annex D - - add #ifdef wrappers for all of them, including in each - C header - - replace typedef'd non-deprecated types with more type-safe equivalents. - -- add feature-test macros for non-standard extensions - -- add MT support for locale, string, istream, ostream - -- need to think about doing a .texi or DocBook manual, instead of all -these HTML pages. In addition, it would be nice to have a full manual, -instead of a lot of ad-hoc pages. Weaknesses include numerics, locale, -and io. - -- add FAQ entries -- improve the install instructions - -- add HOWTO entries - -- do more doxygen manpages - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/concept_check.diff b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/concept_check.diff deleted file mode 100644 index afb17f5ef..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/concept_check.diff +++ /dev/null @@ -1,382 +0,0 @@ - -Changes made while bringing boost/concept_check.hpp to v3's concept_check.h: - -1) File format changed from DOS to Unix. -2) Boost config.hpp and other workaround files dropped (unneeded in g++ v3). -3) Conditionally-compiled code depending on those "breakage" macros was - removed, or not, depending on the macro, so that the macros themselves - are gone. Since the same code would always be compiled, let's make it - easier on the reader and a few milliseconds faster for cpplib. -4) Tests for NDEBUG were removed; if NDEBUG is defined, none of the checking - code will even be included. -5) BOOST_CLASS_REQUIRES* changed to accept a namespace parameter. -6) SameTypeConcept added (simple wrapper around existing code). -7) An unused variable in OutputIteratorConcept was removed. - -At checkin, this was the exact diff, modulo the end-of-line character changes: - - ---- concept_check.hpp.orig Sun Apr 1 08:59:46 2001 -+++ boost_concept_check.h Mon Apr 2 18:56:41 2001 -@@ -5,20 +5,15 @@ - // "as is" without express or implied warranty, and with no claim as - // to its suitability for any purpose. - // -+ -+// GCC Note: based on version 1.12.0 of the Boost library. - #ifndef BOOST_CONCEPT_CHECKS_HPP - #define BOOST_CONCEPT_CHECKS_HPP - --#include --#include --#include --#include --#include -- --#if (__GNUC__) || defined(__KCC) || defined(__ghs) || defined(__MWERKS__) --#define BOOST_FPTR & --#else --#define BOOST_FPTR --#endif -+#pragma GCC system_header -+#include // for traits and tags -+#include // for pair<> -+ - - namespace boost { - -@@ -27,80 +22,64 @@ - template - void function_requires() - { --#if !defined(NDEBUG) -- void (Concept::*x)() = BOOST_FPTR Concept::constraints; -+ void (Concept::*x)() = &Concept::constraints; - ignore_unused_variable_warning(x); --#endif - } - --// The BOOST_CLASS_REQUIRES macros use function pointers as --// template parameters, which VC++ does not support. -- --#if defined(BOOST_NO_FUNCTION_PTR_TEMPLATE_PARAMETERS) -- --#define BOOST_CLASS_REQUIRES(type_var, concept) --#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, concept) --#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, concept) --#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, concept) - --#else -- --#define BOOST_CLASS_REQUIRES(type_var, concept) \ -- typedef void (concept ::* func##type_var##concept)(); \ -+#define BOOST_CLASS_REQUIRES(type_var, ns, concept) \ -+ typedef void (ns::concept ::* func##type_var##concept)(); \ - template \ - struct concept_checking_##type_var##concept { }; \ - typedef concept_checking_##type_var##concept< \ -- BOOST_FPTR concept ::constraints> \ -+ &ns::concept ::constraints> \ - concept_checking_typedef_##type_var##concept - --#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, concept) \ -- typedef void (concept ::* func##type_var1##type_var2##concept)(); \ -+#define BOOST_CLASS_REQUIRES2(type_var1, type_var2, ns, concept) \ -+ typedef void (ns::concept ::* func##type_var1##type_var2##concept)(); \ - template \ - struct concept_checking_##type_var1##type_var2##concept { }; \ - typedef concept_checking_##type_var1##type_var2##concept< \ -- BOOST_FPTR concept ::constraints> \ -+ &ns::concept ::constraints> \ - concept_checking_typedef_##type_var1##type_var2##concept - --#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, concept) \ -- typedef void (concept ::* func##type_var1##type_var2##type_var3##concept)(); \ -+#define BOOST_CLASS_REQUIRES3(type_var1, type_var2, type_var3, ns, concept) \ -+ typedef void (ns::concept ::* func##type_var1##type_var2##type_var3##concept)(); \ - template \ - struct concept_checking_##type_var1##type_var2##type_var3##concept { }; \ - typedef concept_checking_##type_var1##type_var2##type_var3##concept< \ -- BOOST_FPTR concept ::constraints> \ -+ &ns::concept ::constraints> \ - concept_checking_typedef_##type_var1##type_var2##type_var3##concept - --#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, concept) \ -- typedef void (concept ::* func##type_var1##type_var2##type_var3##type_var4##concept)(); \ -+#define BOOST_CLASS_REQUIRES4(type_var1, type_var2, type_var3, type_var4, ns, concept) \ -+ typedef void (ns::concept ::* func##type_var1##type_var2##type_var3##type_var4##concept)(); \ - template \ - struct concept_checking_##type_var1##type_var2##type_var3##type_var4##concept { }; \ - typedef concept_checking_##type_var1##type_var2##type_var3##type_var4##concept< \ -- BOOST_FPTR concept ::constraints> \ -+ &ns::concept ::constraints> \ - concept_checking_typedef_##type_var1##type_var2##type_var3##type_var4##concept - - --#endif -- --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct require_same { }; - - template - struct require_same { typedef T type; }; --#else --// This version does not perform checking, but will not do any harm. --template --struct require_same { typedef T type; }; --#endif -+ -+ template -+ struct SameTypeConcept -+ { -+ void constraints() { -+ typedef typename require_same::type req; -+ } -+ }; - - template - struct IntegerConcept { - void constraints() { --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - errortype_must_be_an_integer_type(); --#endif - } - }; --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; -@@ -108,32 +87,24 @@ - template <> struct IntegerConcept { void constraints() {} }; - template <> struct IntegerConcept { void constraints() {} }; - // etc. --#endif - - template - struct SignedIntegerConcept { - void constraints() { --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - errortype_must_be_a_signed_integer_type(); --#endif - } - }; --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <> struct SignedIntegerConcept { void constraints() {} }; - template <> struct SignedIntegerConcept { void constraints() {} }; - template <> struct SignedIntegerConcept { void constraints() {} }; - // etc. --#endif - - template - struct UnsignedIntegerConcept { - void constraints() { --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - errortype_must_be_an_unsigned_integer_type(); --#endif - } - }; --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template <> struct UnsignedIntegerConcept - { void constraints() {} }; - template <> struct UnsignedIntegerConcept -@@ -141,7 +112,6 @@ - template <> struct UnsignedIntegerConcept - { void constraints() {} }; - // etc. --#endif - - //=========================================================================== - // Basic Concepts -@@ -159,15 +129,11 @@ - struct AssignableConcept - { - void constraints() { --#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = a; // require assignment operator --#endif - const_constraints(a); - } - void const_constraints(const TT& b) { --#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = b; // const required for argument to assignment --#endif - } - TT a; - }; -@@ -196,17 +162,13 @@ - { - void constraints() { - TT b(a); --#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = a; // require assignment operator --#endif - const_constraints(a); - ignore_unused_variable_warning(b); - } - void const_constraints(const TT& b) { - TT c(b); --#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL - a = b; // const required for argument to assignment --#endif - ignore_unused_variable_warning(c); - } - TT a; -@@ -304,6 +266,9 @@ - BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(-, SubtractOpConcept); - BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT(%, ModOpConcept); - -+#undef BOOST_DEFINE_BINARY_PREDICATE_OP_CONSTRAINT -+#undef BOOST_DEFINE_BINARY_OPERATOR_CONSTRAINT -+ - //=========================================================================== - // Function Object Concepts - -@@ -318,7 +283,6 @@ - }; - - --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct GeneratorConcept - { -@@ -327,7 +291,6 @@ - } - Func f; - }; --#endif - - template - struct UnaryFunctionConcept -@@ -340,7 +303,6 @@ - Return r; - }; - --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct UnaryFunctionConcept { - void constraints() { -@@ -348,7 +310,6 @@ - } - Func f; - }; --#endif - - template - struct BinaryFunctionConcept -@@ -362,7 +323,6 @@ - Return r; - }; - --#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct BinaryFunctionConcept - { -@@ -373,7 +333,6 @@ - First first; - Second second; - }; --#endif - - template - struct UnaryPredicateConcept -@@ -422,9 +381,7 @@ - function_requires< AssignableConcept >(); - function_requires< DefaultConstructibleConcept >(); - function_requires< EqualityComparableConcept >(); --#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typedef typename std::iterator_traits::value_type V; --#endif - (void)*i; // require dereference operator - } - TT i; -@@ -446,7 +403,6 @@ - void constraints() { - function_requires< TrivialIteratorConcept >(); - // require iterator_traits typedef's --#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typedef typename std::iterator_traits::difference_type D; - function_requires< SignedIntegerConcept >(); - typedef typename std::iterator_traits::reference R; -@@ -455,7 +411,6 @@ - function_requires< ConvertibleConcept< - typename std::iterator_traits::iterator_category, - std::input_iterator_tag> >(); --#endif - ++i; // require preincrement operator - i++; // require postincrement operator - } -@@ -471,7 +426,7 @@ - i++; // require postincrement operator - *i++ = t; // require postincrement and assignment - } -- TT i, j; -+ TT i; - ValueT t; - }; - -@@ -480,14 +435,12 @@ - { - void constraints() { - function_requires< InputIteratorConcept >(); --#ifndef BOOST_NO_STD_ITERATOR_TRAITS - function_requires< ConvertibleConcept< - typename std::iterator_traits::iterator_category, - std::forward_iterator_tag> >(); - typedef typename std::iterator_traits::reference reference; - reference r = *i; - ignore_unused_variable_warning(r); --#endif - } - TT i; - }; -@@ -507,11 +460,9 @@ - { - void constraints() { - function_requires< ForwardIteratorConcept >(); --#ifndef BOOST_NO_STD_ITERATOR_TRAITS - function_requires< ConvertibleConcept< - typename std::iterator_traits::iterator_category, - std::bidirectional_iterator_tag> >(); --#endif - --i; // require predecrement operator - i--; // require postdecrement operator - } -@@ -536,12 +487,10 @@ - void constraints() { - function_requires< BidirectionalIteratorConcept >(); - function_requires< ComparableConcept >(); --#ifndef BOOST_NO_STD_ITERATOR_TRAITS - function_requires< ConvertibleConcept< - typename std::iterator_traits::iterator_category, - std::random_access_iterator_tag> >(); - typedef typename std::iterator_traits::reference R; --#endif - - i += n; // require assignment addition operator - i = i + n; i = n + i; // require addition with difference type -@@ -552,11 +501,7 @@ - } - TT a, b; - TT i, j; --#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typename std::iterator_traits::difference_type n; --#else -- std::ptrdiff_t n; --#endif - }; - - template -@@ -568,11 +513,7 @@ - i[n] = *i; // require element access and assignment - } - TT i; --#ifndef BOOST_NO_STD_ITERATOR_TRAITS - typename std::iterator_traits::difference_type n; --#else -- std::ptrdiff_t n; --#endif - }; - - //=========================================================================== - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/confdeps.dot b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/confdeps.dot deleted file mode 100644 index a62d28ce9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/confdeps.dot +++ /dev/null @@ -1,14 +0,0 @@ -# Blatantly ripped out of the graphviz examples and modified. -pme -digraph v3conf { - size="6,6"; - node [color=lightblue2, style=filled]; - "aclocal.m4" -> "acinclude.m4"; - "configure" -> "aclocal.m4"; - "configure" -> "configure.ac"; - "configure" -> "crossconfig.m4"; - "configure" -> "linkage.m4"; - "[*/]Makefile.in" -> "Makefile.am"; - "[*/]Makefile.in" -> "configure.ac"; - "config.h.in" -> "acconfig.h"; - "config.h.in" -> "configure.ac"; -} diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/confdeps.png b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/confdeps.png deleted file mode 100644 index 5075aa869b158b79a04a48023f24817743615807..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3486 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 a>*Vt#|7pGHivq{r6B`<7ZCY>af&UN7iDila diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/configury.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/configury.html deleted file mode 100644 index 4b676f040..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/configury.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - - - - - libstdc++-v3 configury - - - - - -

> open configury door

-

> look

- -

You are in a maze of twisty passages, all -different.

-

It is dark. You are likely to be eaten by a -Canadian cross build.

- - -
-

Notes on libstdc++-v3 configury

-
- - -
-

what comes from where

-

Dependency graph in PNG graphics format.  (Get a better browser!)

- -

Regenerate using a command sequence like - "aclocal-1.7 && autoconf-2.59 && autoheader-2.59 - && automake-1.7" as needed. And/or configure with - --enable-maintainer-mode. The version numbers will vary depending on - the current - requirements and your vendor's choice of installation names. -

- - -
-

storing information in non-AC files, like - configure.host

-

Until that glorious day when we can use AC_TRY_LINK with a cross-compiler, - we have to hardcode the results of what the tests would have shown if - they could be run. So we have an inflexible mess like crossconfig.m4. -

- -

Wouldn't it be nice if we could store that information in files like - configure.host, which can be modified without needing to regenerate - anything, and can even be tweaked without really knowing how the configury - all works? Perhaps break the pieces of crossconfig.m4 out and place them in - their appropriate config/{cpu,os} directory. -

- -

Alas, writing macros like "AC_DEFINE(HAVE_A_NICE_DAY)" can - only be done inside files which are passed through autoconf. Files which - are pure shell script can be source'd at configure time. Files which - contain autoconf macros must be processed with autoconf. We could still - try breaking the pieces out into "config/*/cross.m4" bits, for instance, - but then we would need arguments to aclocal/autoconf to properly find - them all when generating configure. I would discourage that. -

- - -
-

general config notes

-

Lots of stuff got thrown out because the new autotools kindly generate - the same (or better) shell code for us. -

- -

Most comments should use {octothorpes, shibboleths, hash marks, pound - signs, whatevers} rather than "dnl". Nearly all comments in configure.ac - should. Comments inside macros written in ancilliary .m4 files should. - About the only comments which should not use #, but use dnl - instead, are comments outside our own macros in the ancilliary - files. The difference is that # comments show up in configure - (which is most helpful for debugging), while dnl'd lines just vanish. - Since the macros in ancilliary files generate code which appears in odd - places, their "outside" comments tend to not be useful while reading - configure. -

- -

Do not use any $target* variables, such as - $target_alias. The single exception is in configure.ac, - for automake+dejagnu's sake. -

- -

-

- -
-

acinclude.m4 layout

-

The nice thing about acinclude.m4/aclocal.m4 is that macros aren't actually - performed/called/expanded/whatever here, just loaded. So we can arrange - the contents however we like. As of this writing, acinclude.m4 is arranged - as follows: -

-
-    GLIBCXX_CHECK_HOST
-    GLIBCXX_TOPREL_CONFIGURE
-    GLIBCXX_CONFIGURE
-
-

All the major variable "discovery" is done here. CXX, multilibs, etc. -

-
-    fragments included from elsewhere
-
-

Right now, "fragments" == "the math/linkage bits". -

-
-    GLIBCXX_CHECK_COMPILER_FEATURES
-    GLIBCXX_CHECK_LINKER_FEATURES
-    GLIBCXX_CHECK_WCHAR_T_SUPPORT
-
-

Next come extra compiler/linker feature tests. Wide character support - was placed here because I couldn't think of another place for it. It will - probably get broken apart like the math tests, because we're still disabling - wchars on systems which could actually support them. -

-
-    GLIBCXX_CHECK_SETRLIMIT_ancilliary
-    GLIBCXX_CHECK_SETRLIMIT
-    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-    GLIBCXX_CHECK_POLL
-    GLIBCXX_CHECK_WRITEV
-
-    GLIBCXX_CONFIGURE_TESTSUITE
-
-

Feature tests which only get used in one place. Here, things used only in - the testsuite, plus a couple bits used in the guts of I/O. -

-
-    GLIBCXX_EXPORT_INCLUDES
-    GLIBCXX_EXPORT_FLAGS
-    GLIBCXX_EXPORT_INSTALL_INFO
-
-

Installation variables, multilibs, working with the rest of the compiler. - Many of the critical variables used in the makefiles are set here. -

-
-    GLIBGCC_ENABLE
-    GLIBCXX_ENABLE_C99
-    GLIBCXX_ENABLE_CHEADERS
-    GLIBCXX_ENABLE_CLOCALE
-    GLIBCXX_ENABLE_CONCEPT_CHECKS
-    GLIBCXX_ENABLE_CSTDIO
-    GLIBCXX_ENABLE_CXX_FLAGS
-    GLIBCXX_ENABLE_C_MBCHAR
-    GLIBCXX_ENABLE_DEBUG
-    GLIBCXX_ENABLE_DEBUG_FLAGS
-    GLIBCXX_ENABLE_LONG_LONG
-    GLIBCXX_ENABLE_PCH
-    GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
-    GLIBCXX_ENABLE_SYMVERS
-    GLIBCXX_ENABLE_THREADS
-
-

All the features which can be controlled with enable/disable configure - options. Note how they're alphabetized now? Keep them like that. :-) -

-
-    AC_LC_MESSAGES
-    libtool bits
-
-

Things which we don't seem to use directly, but just has to be present - otherwise stuff magically goes wonky. -

- - -
-

--enable howto

-

All the GLIBCXX_ENABLE_FOO macros use a common helper, GLIBCXX_ENABLE. - (You don't have to use it, but it's easy.) The helper does two things - for us: -

- -
    -
  1. Builds the call to the AC_ARG_ENABLE macro, with --help text properly - quoted and aligned. (Death to changequote!)
  2. -
  3. Checks the result against a list of allowed possibilities, and signals - a fatal error if there's no match. This means that the rest of the - GLIBCXX_ENABLE_FOO macro doesn't need to test for strange arguments, - nor do we need to protect against empty/whitespace strings with the - "x$foo" = "xbar" idiom.
  4. -
- -

Doing these things correctly takes some extra autoconf/autom4te code, - which made our macros nearly illegible. So all the ugliness is factored - out into this one helper macro. -

- -

Many of the macros take an argument, passed from when they are expanded - in configure.ac. The argument controls the default value of the - enable/disable switch. Previously, the arguments themselves had defaults. - Now they don't, because that's extra complexity with zero gain for us. -

- -

There are three "overloaded signatures". When reading the descriptions - below, keep in mind that the brackets are autoconf's quotation characters, - and that they will be stripped. Examples of just about everything occur - in acinclude.m4, if you want to look. -

- -
-    GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING)
-    GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, permit a|b|c)
-    GLIBCXX_ENABLE (FEATURE, DEFAULT, HELP-ARG, HELP-STRING, SHELL-CODE-HANDLER)
-
- -
    -
  • FEATURE is the string that follows --enable. The results of the test - (such as it is) will be in the variable $enable_FEATURE, where FEATURE - has been squashed. Example: [extra-foo], controlled by the - --enable-extra-foo option and stored in $enable_extra_foo.

  • -
  • DEFAULT is the value to store in $enable_FEATURE if the user does not - pass --enable/--disable. It should be one of the permitted values - passed later. Examples: [yes], or [bar], or - [$1] (which passes the argument given to the - GLIBCXX_ENABLE_FOO macro as the default).

    -

    For cases where we need to probe for particular models - of things, it is useful to have an undocumented "auto" value here (see - GLIBCXX_ENABLE_CLOCALE for an example).

  • -
  • HELP-ARG is any text to append to the option string itself in the - --help output. Examples: [] (i.e., an empty string, - which appends nothing), - [=BAR], which produces - --enable-extra-foo=BAR, and - [@<:@=BAR@:>@], which produces - --enable-extra-foo[=BAR]. See the difference? See what - it implies to the user?

    -

    If you're wondering what that line noise in the last example was, - that's how you embed autoconf special characters in output text. - They're called -quadrigraphs - and you should use them whenever necessary.

  • -
  • HELP-STRING is what you think it is. Do not include the "default" - text like we used to do; it will be done for you by GLIBCXX_ENABLE. - By convention, these are not full English sentences. - Example: [turn on extra foo]

  • -
- -

With no other arguments, only the standard autoconf patterns are - allowed: "--{enable,disable}-foo[={yes,no}]" The - $enable_FEATURE variable is guaranteed to equal either "yes" or "no" - after the macro. If the user tries to pass something else, an - explanatory error message will be given, and configure will halt. -

- -

The second signature takes a fifth argument, - "[permit a|b|c|...]" - This allows a or b or ... after the equals sign in the - option, and $enable_FEATURE is guaranteed to equal one of them after the - macro. Note that if you want to allow plain --enable/--disable with no - "=whatever", you must include "yes" and "no" in the list of permitted - values. Also note that whatever you passed as DEFAULT must be in the list. - If the user tries to pass something not on the list, a semi-explanatory - error message will be given, and configure will halt. - Example: [permit generic|gnu|ieee_1003.1-2001|yes|no|auto] -

- -

The third signature takes a fifth argument. It is arbitrary shell code - to execute if the user actually passes the enable/disable option. (If - the user does not, the default is used. Duh.) No argument checking at - all is done in this signature. See GLIBCXX_ENABLE_CXX_FLAGS for an - example of handling, and an error message. -

- -
- - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/contribute.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/contribute.html deleted file mode 100644 index 0013d6049..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/contribute.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - How to contribute - - - - - - - -

How to contribute

-

The Standard C++ Library v3, follows an open development -model. Active contributors are assigned maintainer-ship -responsibility, and given write access to the CVS repository. First -time contributors should follow this procedure: -

- -
-

ONE : read the documentation

- -
    -
  • Get and read the relevant sections of the C++ language -specification. Copies of the full ISO 14882 standard are available on -line via the ISO mirror site for committee members. Non-members, or -those who have not paid for the privilege of sitting on the committee -and sustained their two meeting commitment for voting rights, may get -a copy of the standard from their respective national standards -organization. In the USA, this national standards organization is ANSI -and their web-site is right - - here. -(And if you've already registered with them, clicking this link will take you to directly to the place where you can -buy the standard on-line.) -
  • - -
  • The library working group bugs, and known defects, can be obtained here: - http://www.open-std.org/jtc1/sc22/wg21 -
  • - -
  • The newsgroup dedicated to standardization issues is comp.std.c++: this FAQ for this group is quite useful and can be found here . -
  • - -
  • Peruse the GNU Coding Standards, and chuckle when you hit the part about "Using Languages Other Than C." -
  • - -
  • Be familiar with the extensions that preceded these general GNU rules. These style issues for libstdc++ can be found in the file C++STYLE, located in the root level of the distribution, or here. -
  • - -
  • And last but certainly not least, read the library-specific information found here. -
  • - -
- - - -
-

TWO : copyright assignment

-

-Small changes can be accepted without a copyright assignment form on -file. New code and additions to the library need completed copyright -assignment form on file at the FSF. Note: your employer may be required -to fill out appropriate disclaimer forms as well. -

- -

Historically, the libstdc++ assignment form added the following question: -

- -[Which Belgian comic book character is better, Tintin or -Asterix, and why?] - -

-While not strictly necessary, humoring the maintainers and answering -this question would be appreciated. -

- -

-For more information about getting a copyright assignment, please see - Legal Issues -

- -

-Please contact Benjamin -Kosnik if you are confused about the assignment or have general -licensing questions. When requesting an assignment form from assign@gnu.org, please cc -the above libstdc++ maintainer so that progress can be monitored. -

- - -
-

THREE : submitting patches

- -

-Every patch must have several pieces of information before it can be -properly evaluated. Ideally (and to ensure the fastest possible -response from the maintainers) it would have all of these pieces: -

- -
    - -
  • A description of the bug and how your patch fixes this bug. For - new features a description of the feature and your implementation.
  • - -
  • A ChangeLog entry as plain text; see the various ChangeLog files - for format and content. If using you are using emacs as your editor, - simply position the insertion point at the beginning of your change - and hit CX-4a to bring up the appropriate ChangeLog - entry. See--magic! Similar functionality also exists for vi.
  • - -
  • A testsuite submission or sample program that will easily and - simply show the existing error or test new functionality.
  • - -
  • The patch itself. If you are accessing the CVS repository at - Cygnus, use "cvs update; cvs diff -c3p NEW"; else, use "diff -c3p OLD - NEW" ... If your version of diff does not support these options, then - get the latest version of GNU diff.
  • - -
  • When you have all these pieces, bundle them up in a mail message -and send it to libstdc++@gcc.gnu.org. All patches and related -discussion should be sent to the libstdc++ mailing list.
  • - -
- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/headers_cc.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/headers_cc.txt deleted file mode 100644 index a0d926d71..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/headers_cc.txt +++ /dev/null @@ -1,83 +0,0 @@ -// 1999-05-12 bkoz - -// Copyright (C) 1999 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// 17.4.1.2 Headers - - -// "C++" headers -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// "C" headers -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// "C" headers that might not work if wchar_t support is disabled. -#include -#if _GLIBCXX_USE_WCHAR_T - #include - #include -#endif - -int main() { return 0; } diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/howto.html deleted file mode 100644 index ab654245f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/howto.html +++ /dev/null @@ -1,385 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 17: Library Introduction - - - - - - - - -

Chapter 17: Library Introduction

- -

Chapter 17 is actually a list of definitions and descriptions used - in the following chapters of the Standard when describing the actual - library. Here, we use "Introduction" as an introduction - to the GNU implementation of the ISO Standard C++ Library. -

- - - -
-

Contents

- - -
- - - -

The Standard C++ header files

-

The Standard C++ Library specifies 50 header files that must be - available to all hosted implementations. Actually, the word - "files" is a misnomer, since the contents of the headers - don't necessarily have to be in any kind of external file. The - only rule is that when you #include a certain header, the - contents of that header, as defined by the Standard, become - available to you, no matter how. -

-

The names of the headers can be easily seen in - testsuite/17_intro/headers.cc, - which is a small testbed we use to make certain that the headers - all compile and run. -

- -
-

The Standard C++ library and multithreading

-

This section discusses issues surrounding the proper compilation - of multithreaded applications which use the Standard C++ - library. This information is GCC-specific since the C++ - standard does not address matters of multithreaded applications. - Unless explicitly prefaced, all information in this section is - current as of the GCC 3.0 release and all later point releases. -

-

Earlier GCC releases had a somewhat different approach to - threading configuration and proper compilation. Before GCC 3.0, - configuration of the threading model was dictated by compiler - command-line options and macros (both of which were somewhat - thread-implementation and port-specific). There were no - guarantees related to being able to link code compiled with one - set of options and macro setting with another set. For GCC 3.0, - configuration of the threading model used with libraries and - user-code is performed when GCC is configured and built using - the --enable-threads and --disable-threads options. The ABI is - stable for symbol name-mangling and limited functional - compatibility exists between code compiled under different - threading models. -

-

All normal disclaimers aside, multithreaded C++ application are - only supported when libstdc++ and all user code was built with - compilers which report (via gcc/g++ -v ) the same thread - model and that model is not single. As long as your - final application is actually single-threaded, then it should be - safe to mix user code built with a thread model of - single with a libstdc++ and other C++ libraries built - with another thread model useful on the platform. Other mixes - may or may not work but are not considered supported. (Thus, if - you distribute a shared C++ library in binary form only, it may - be best to compile it with a GCC configured with - --enable-threads for maximal interchangeability and usefulness - with a user population that may have built GCC with either - --enable-threads or --disable-threads.) -

-

When you link a multithreaded application, you will probably - need to add a library or flag to g++. This is a very - non-standardized area of GCC across ports. Some ports support a - special flag (the spelling isn't even standardized yet) to add - all required macros to a compilation (if any such flags are - required then you must provide the flag for all compilations not - just linking) and link-library additions and/or replacements at - link time. The documentation is weak. Here is a quick summary - to display how ad hoc this is: On Solaris, both -pthreads and - -threads (with subtly different meanings) are honored. On OSF, - -pthread and -threads (with subtly different meanings) are - honored. On Linux/i386, -pthread is honored. On FreeBSD, - -pthread is honored. Some other ports use other switches. - AFAIK, none of this is properly documented anywhere other than - in ``gcc -dumpspecs'' (look at lib and cpp entries). -

-

See FAQ (general overview), 23 (containers), and 27 (I/O) for more information. -

-

The libstdc++-v3 library (unlike libstdc++-v2, all of it, not - just the STL) has been designed so that multithreaded - applications using it may be written. The first problem is - finding a fast method of implementation portable to all - platforms. Due to historical reasons, some of the library is - written against per-CPU-architecture spinlocks and other parts - against the gthr.h abstraction layer which is provided by gcc. - A minor problem that pops up every so often is different - interpretations of what "thread-safe" means for a - library (not a general program). We currently use the same - definition that SGI uses for their STL subset. However, the - exception for read-only containers only applies to the STL - components. -

-

Here is a small link farm to threads (no pun) in the mail archives - that discuss the threading problem. Each link is to the first - relevant message in the thread; from there you can use - "Thread Next" to move down the thread. This farm is in - latest-to-oldest order. -

-
    -
  • Our threading expert Loren gives a breakdown of - the - six situations involving threads for the 3.0 release series.
  • -
  • - This message inspired a recent updating of issues with threading - and the SGI STL library. It also contains some example - POSIX-multithreaded STL code.
  • -
-

(A large selection of links to older messages has been removed; many - of the messages from 1999 were lost in a disk crash, and the few - people with access to the backup tapes have been too swamped with work - to restore them. Many of the points have been superseded anyhow.) -

-

This section will be updated as new and interesting issues come - to light. -

-

Return to top of page or - to the FAQ. -

- -
-

<foo> vs <foo.h>

-

The new-style headers are fully supported in libstdc++-v3. The compiler - itself fully supports namespaces, including std::. -

-

For those of you new to ISO C++98, no, that isn't a typo, the headers - really have new names. Marshall Cline's C++ FAQ Lite has a good - explanation in -item [27.4]. -

-

Return to top of page or - to the FAQ. -

- -
-

Behavior specific to libstdc++-v3

-

The ISO standard defines the following phrase: -

-
-
[1.3.5] implementation-defined behavior
-
behavior, for a well-formed program construct and correct data, that - depends on the implementation and that each implementation - shall document. -
-
-

We do so here, for the C++ library only. Behavior of the compiler, - linker, runtime loader, and other elements of "the - implementation" are documented elsewhere. Everything listed in - Annex B, Implemenation Qualities, are also part of the compiler, not - the library. -

-

For each entry, we give the section number of the standard, when - applicable. This list is probably incomplet and inkorrekt. -

-

[1.9]/11 #3 If isatty(3) is true, then - interactive stream support is implied. -

-

[17.4.4.5] Non-reentrant functions are probably best - discussed in the various sections on multithreading (see above). -

- -

[18.1]/4 The type of NULL is described - here. -

-

[18.3]/8 Even though it's listed in the library - sections, libstdc++-v3 has zero control over what the cleanup code hands - back to the runtime loader. Talk to the compiler people. :-) -

-

[18.4.2.1]/5 (bad_alloc),
- [18.5.2]/5 (bad_cast),
- [18.5.3]/5 (bad_typeid),
- [18.6.1]/8 (exception),
- [18.6.2.1]/5 (bad_exception): The what() - member function of class std::exception, and these other - classes publicly derived from it, simply returns the name of the - class. But they are the mangled names; you will need to call - c++filt and pass the names as command-line parameters to - demangle them, or call a - runtime demangler function. - (The classes in <stdexcept> have constructors which - require an argument to use later for what() calls, so the - problem of what()'s value does not arise in most - user-defined exceptions.) -

-

[18.5.1]/7 The return value of - std::type_info::name() is the mangled type name (see the - previous entry for more). -

-

[20.1.5]/5 "Implementors are encouraged to - supply libraries that can accept allocators that encapsulate more - general memory models and that support non-equal instances. In such - implementations, any requirements imposed on allocators by containers - beyond those requirements that appear in Table 32, and the semantics - of containers and algorithms when allocator instances compare - non-equal, are implementation-defined." As yet we don't - have any allocators which compare non-equal, so we can't describe how - they behave. -

-

[21.1.3.1]/3,4,
- [21.1.3.2]/2,
- [23.*]'s foo::iterator,
- [27.*]'s foo::*_type,
- others... - Nope, these types are called implementation-defined because you - shouldn't be taking advantage of their underlying types. Listing them - here would defeat the purpose. :-) -

-

[21.1.3.1]/5 I don't really know about the mbstate_t - stuff... see the chapter 22 notes - for what does exist. -

-

[22.*] Anything and everything we have on locale - implemenation will be described - over here. -

-

[26.2.8]/9 I have no idea what - complex<T>'s pow(0,0) returns. -

-

[27.4.2.4]/2 Calling - std::ios_base::sync_with_stdio after I/O has already been - performed on the standard stream objects will - flush the buffers, and - destroy and recreate the underlying buffer instances. Whether or not - the previously-written I/O is destroyed in this process depends mostly - on the --enable-libio choice: for stdio, if the written data is - already in the stdio buffer, the data may be completely safe! -

-

[27.6.1.1.2],
- [27.6.2.3] The I/O sentry ctor and dtor can perform - additional work than the minimum required. We are not currently taking - advantage of this yet. -

-

[27.7.1.3]/16,
- [27.8.1.4]/10 - The effects of pubsetbuf/setbuf are described - in this chapter. -

-

[27.8.1.4]/16 Calling fstream::sync when - a get area exists will... whatever fflush() does, I think. -

-

Return to top of page or - to the FAQ. -

- -
-

Preprocessor macros controlling the library

-

Some of the semantics of the libstdc++-v3 implementation are - controlled by preprocessor macros, both during build/installation and - during compilation of user code. Many of these choices are made when - the library is built and installed (actually, during - the configuration step, with the - various --enable/--disable choices being translated to #define/#undef). -

-

All library macros begin with _GLIBCPP_ in earlier - versions, and _GLIBCXX_ in later versions. The fact that - these symbols start with a leading underscore should give you a clue - that (by default) they aren't meant to be changed by the user. :-) -

-

These macros are all gathered in the file c++config.h, - which is generated during installation. You must assume that - these macros cannot be redefined by your own code, unless we - document otherwise here. Some of the choices control code which has - already been compiled (i.e., libstdc++.a/.so). If you explicitly - #define or #undef these macros, the headers may see different - code paths, but the libraries which you link against will not. - If you want to experiment with different values, you must change the - config headers before building/installing the library. -

-

Below are macros which, for 3.1 and later, you may change yourself, - in your own code with #define/#undef or with -D/-U compiler flags. - The default state of the symbol is listed. "Configurable" - (or "Not configurable") means that the symbol is initially - chosen (or not) based on --enable/--disable options at configure time. - For 3.1 through 3.3, the prefixes are _GLIBCPP_. -

-
-
_GLIBCXX_DEPRECATED
-
Undefined by default. Not configurable. Turning this on enables - older ARM-style iostreams code, and other anachronisms. This may be - useful in updating old C++ programs which no longer meet the - requirements of the language. -
- -
_GLIBCXX_CONCEPT_CHECKS
-
Undefined by default. Configurable. When defined, performs - compile-time checking on certain template instantiations to detect - violations of the requirements of the standard. This is described - in more detail here. -
-
_GLIBCXX_DEBUG
-
Undefined by default. Configurable. When defined, compiles - user code using the libstdc++ debug - mode. -
-
_GLIBCXX_DEBUG_PEDANTIC
-
Undefined by default. Configurable. When defined while - compiling with the libstdc++ debug - mode, makes the debug mode extremely picky by making the use - of libstdc++ extensions and libstdc++-specific behavior into - errors. -
- -
-

Return to top of page or - to the FAQ. -

- - - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/license.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/license.html deleted file mode 100644 index 5d815f8fe..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/license.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - libstdc++-v3 copying - - - - - -

Licenses for the Library

- -

There are two licenses affecting GNU libstdc++-v3: one for the code, and - one for the documentation. Here we will describe both of them, and try - to answer some of the widespread questions. If you have more questions, - ask the FSF or the - gcc mailing list; the person - writing this page is a programmer, not a lawyer. -

- -
- -

The Code: Runtime GPL

- -

The source code of libstdc++-v3 is distributed under version 2 of the - GNU General Public License, with the so-called - "runtime exception," as follows (or see any header or - implementation file): -

-
-   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.
-
- -

Hopefully that text is self-explanatory. If it isn't, you need to speak - to your lawyer, or the Free Software Foundation. -

- - -

Q: So any program which uses libstdc++ falls under the GPL? -
A: No. The special exception permits use of the - library in proprietary applications. -

- -

Q: How is that different from the GNU {Lesser,Library} - GPL? - -
A: The LGPL requires that users be able to replace the LGPL code with a - modified version; this is trivial if the library in question is a C - shared library. But there's no way to make that work with C++, where - much of the library consists of inline functions and templates, which - are expanded inside the code that uses the library. So to allow people - to replace the library code, someone using the library would have to - distribute their own source, rendering the LGPL equivalent to the GPL. -

- -

Q: I see. So, what restrictions are there on - programs that use the library? -
A: None. We encourage such programs to be released as open source, - but we won't punish you or sue you if you choose otherwise. -

- -
- -

The Docs: FDL

- -

The documentation shipped with the library and made available over the - web, including the pages generated from source comments, are copyrighted - by the Free Software Foundation, and placed under - the GNU Free Documentation License version 1.1. - There are no Front-Cover Texts, no Back-Cover Texts, and - - no Invariant Sections. -

- -

If you plan on making copies of the documentation, please let us know. - We can probably offer suggestions. -

- - - - -
-

-Comments and suggestions about this page are welcome, and may be sent to -the libstdc++ mailing list. -Comments or questions about the licenses themselves are also welcome, and -should be directed to the GCC list as descibed above. -

- - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.html deleted file mode 100644 index 4a2d91a74..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.html +++ /dev/null @@ -1,764 +0,0 @@ - - - - -Libstdc++-porting-howto - - -
-
-

-Libstdc++-porting-howto

-

Felix Natter

-
-

Legal Notice

-

- This document can be distributed under the FDL - (www.gnu.org) -

-
-

Tue Jun 5 20:07:49 2001

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Revision History
Revision 0.5Thu Jun 1 13:06:50 2000fnatter
First docbook-version.
Revision 0.8Sun Jul 30 20:28:40 2000fnatter
First released version using docbook-xml - + second upload to libstdc++-page. -
Revision 0.9Wed Sep 6 02:59:32 2000fnatter
5 new sections.
Revision 0.9.1Sat Sep 23 14:20:15 2000fnatter
added information about why file-descriptors are not in the - standard
Revision 0.9.2Tue Jun 5 20:07:49 2001fnatter
- a fix, added hint on increased portability of C-shadow-headers, - added autoconf-test HAVE_CONTAINER_AT -
Revision 0.9.3Fri Jun 29 16:15:56 2001fnatter
- changed signature of nonstandard filebuf-constructor and - update the section on filebuf::attach to point to ../ext/howto.html, - added link to ../21/strings/howto.html - in sec-stringstream, changed <link>-tags to have content - (so that these links work), - replace "user-space" by "global namespace" - add note about gcc 3.0 and shadow-headers - add section about ostream::form and istream::scan - sec-vector-at: remove hint to modify headers - fix spelling error in sec-stringstream -
Revision 0.9.4Mon Nov 5 17:01:04 2001fnatter
- rewrite section 1.1.3 because of gnu.gcc.help-post by - Juergen Heinzl -
-
-

Abstract

-

- Some notes on porting applications from libstdc++-2.90 (or earlier - versions) to libstdc++-v3. Not speaking in terms of the GNU libstdc++ - implementations, this means porting from earlier versions of the - C++-Standard to ISO 14882. -

-
-
-
- -

- In the following, when I say portable, I will refer to "portable among ISO - 14882-implementations". On the other hand, if I say "backportable" or - "conservative", I am talking about "compiles with older - libstdc++-implementations". -

-
-

-Namespace std::

-

- The latest C++-standard (ISO-14882) requires that the standard - C++-library is defined in namespace std::. Thus, in order to use - classes from the standard C++-library, you can do one of three - things: -

    -
  • wrap your code in namespace std { - ... } => This is not an option because only symbols - from the standard c++-library are defined in namespace std::. -

  • -
  • put a kind of - using-declaration in your source (either - using namespace std; or i.e. using - std::string;) => works well for source-files, but - cannot be used in header-files. -

  • -
  • use a fully qualified name for - each libstdc++-symbol (i.e. std::string, - std::cout) => can always be used -

  • -
-

-

- Because there are many compilers which still use an implementation - that does not have the standard C++-library in namespace - std::, some care is required to support these as - well. -

-

- Namespace back-portability-issues are generally not a problem with - g++, because versions of g++ that do not have libstdc++ in - std:: use -fno-honor-std - (ignore std::, :: = std::) by - default. That is, the responsibility for enabling or disabling - std:: is on the user; the maintainer does not have - to care about it. This probably applies to some other compilers as - well. -

-

- The following sections list some possible solutions to support compilers - that cannot ignore std::. -

-
-

-Using namespace - composition if the project uses a separate - namespace

-

- Gtk-- defines - most of its classes in namespace Gtk::. Thus, it was possible to - adapt Gtk-- to namespace std:: by using a C++-feature called - namespace composition. This is what happens if - you put a using-declaration into a - namespace-definition: the imported symbol(s) gets imported into the - currently active namespace(s). For example: -

-	  namespace Gtk {
-	  using std::string;
-	  class Window { ... }
-	  }
-	
- In this example, std::string gets imported into - namespace Gtk::. The result is that you don't have to use - std::string in this header, but still - std::string does not get imported into - the global namespace (::) unless the user does - using namespace Gtk; (which is not recommended - practice for Gtk--, so it is not a problem). Additionally, the - using-declarations are wrapped in macros that - are set based on autoconf-tests to either "" or i.e. using - std::string; (depending on whether the system has - libstdc++ in std:: or not). (ideas from - <llewelly@dbritsch.dsl.xmission.com>, Karl Nelson - <kenelson@ece.ucdavis.edu>) -

-
-
-

-Defining an empty namespace std

-

- By defining an (empty) namespace std:: before - using it, you avoid getting errors on systems where no part of the - library is in namespace std: -

-	  namespace std { }
-	  using namespace std;
-	
-

-
-
-

-Avoid to use fully qualified names - (i.e. std::string)

-

- If some compilers complain about using - std::string;, and if the "hack" for gtk-- mentioned above - does not work, then I see two solutions: - -

    -
  • - Define std:: as a macro if the compiler - doesn't know about std::. -

    -		#ifdef OLD_COMPILER
    -		#define std
    -		#endif
    -	      
    - (thanks to Juergen Heinzl who posted this solution on - gnu.gcc.help) -

  • -
  • - Define a macro NS_STD, which is defined to - either "" or "std" - based on an autoconf-test. Then you should be able to use - NS_STD::string, which will evaluate to - ::string ("string in the global namespace") on - systems that do not put string in std::. (This is untested) -

  • -
- -

-
-
-

-How some open-source-projects deal - with this

-

- This information was gathered around May 2000. It may not be correct - by the time you read this. -

-
-

Table 1. Namespace std:: in Open-Source programs

- ---- - - - - - - - - - - - - - - - - - - -
clanlibusual
pingususual
mozillausual
- libsigc++conservative-impl
-
-
-

Table 2. Notations for categories

- ---- - - - - - - - - - - - - - - -
usualmostly fully qualified names and some - using-declarations (but not in headers)
noneno namespace std at all
conservative-implwrap all - namespace-handling in macros to support compilers without - namespace-support (no libstdc++ used in headers)
-
-

- As you can see, this currently lacks an example of a project - which uses libstdc++-symbols in headers in a back-portable way - (except for Gtk--: see the section on the gtkmm-hack). -

-
-
-
-

-there is no ios::nocreate/ios::noreplace - in ISO 14882

-

- I have seen ios::nocreate being used for - input-streams, most probably because the author thought it would be - more correct to specify nocreate "explicitly". So you can simply - leave it out for input-streams. -

-

- For output streams, "nocreate" is probably the default, unless you - specify std::ios::trunc ? To be safe, you can open - the file for reading, check if it has been opened, and then decide - whether you want to create/replace or not. To my knowledge, even - older implementations support app, - ate and trunc (except for - app ?). -

-
-
-

-stream::attach(int - fd) is not in the standard any more

-

- Phil Edwards <pedwards@disaster.jaj.com> writes: - It was considered and rejected. Not all environments use file - descriptors. Of those that do, not all of them use integers to represent - them. -

-

- When using libstdc++-v3, you can use -

-
-	  #include <fstream>
-	
-

- basic_filebuf<...>::basic_filebuf<...> - - (file, mode, size);
__c_file_type* file;
ios_base::open_mode mode;
int size;

-
- but the the signature of this constructor has changed often, and - it might change again. For the current state of this, check - the howto for extensions. -

-

- For a portable solution (among systems which use - filedescriptors), you need to implement a subclass of - std::streambuf (or - std::basic_streambuf<..>) which opens a file - given a descriptor, and then pass an instance of this to the - stream-constructor. For an example of this, refer to - fdstream example - by Nicolai Josuttis. -

-
-
-

-The new headers

-

- All new headers can be seen in this - source-code. -

-

- The old C++-headers (iostream.h etc.) are available, but gcc generates - a warning that you are using deprecated headers. -

-
-

-New headers replacing C-headers

-

- You should not use the C-headers (except for system-level - headers) from C++ programs. Instead, you should use a set of - headers that are named by prepending 'c' and, as usual, - omitting the extension (.h). For example, instead of using - <math.h>, you - should use <cmath>. In some cases this has - the advantage that the C++-header is more standardized than - the C-header (i.e. <ctime> (almost) - corresponds to either <time.h> or <sys/time.h>). - - The standard specifies that if you include the C-style header - (<math.h> in - this case), the symbols will be available both in the global - namespace and in namespace std:: (but - libstdc++ does not yet have fully compliant headers) On the - other hand, if you include only the new header (i.e. <cmath>), the symbols - will only be defined in namespace std:: - (and macros will be converted to inline-functions). -

-

- For more information on this, and for information on how the - GNU C++ implementation might reuse ("shadow") the C - library-functions, have a look at - www.cantrip.org. -

-
-
-

- - <fstream> does - not define std::cout, - std::cin etc.

-

- In earlier versions of the standard, - <fstream.h>, - <ostream.h> - and <istream.h> - used to define - cout, cin and so on. Because - of the templatized iostreams in libstdc++-v3, you need to include - <iostream> - explicitly to define these. -

-
-
-
-

-Iterators

-

- The following are not proper uses of iterators, but may be working - fixes for existing uses of iterators. -

    -
  • you cannot do - ostream::operator<<(iterator) to - print the address of the iterator => use - operator<< &*iterator instead ? -

  • -
  • you cannot clear an iterator's reference - (iterator = 0) => use - iterator = iterator_type(); ? -

  • -
  • -if (iterator) won't work any - more => use if (iterator != iterator_type()) - ?

  • -
-

-
-
-

- - Libc-macros (i.e. isspace from - <cctype>)

-

- Glibc 2.0.x and 2.1.x define the - <ctype.h> - -functionality as macros (isspace, isalpha etc.). Libstdc++-v3 - "shadows" these macros as described in the section about - c-headers. -

-

- Older implementations of libstdc++ (g++-2 for egcs 1.x and g++-3 - for gcc 2.95.x), however, keep these functions as macros, and so it - is not back-portable to use fully qualified names. For example: -

-	#include <cctype>
-	int main() { std::isspace('X'); }
-      
- will result in something like this (unless using g++-v3): -
-	std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int)
-	_ISspace )  ;
-      
-

-

- One solution I can think of is to test for -v3 using - autoconf-macros, and define macros for each of the C-functions - (maybe that is possible with one "wrapper" macro as well ?). -

-

- Another solution which would fix g++ is to tell the user to modify a - header-file so that g++-2 (egcs 1.x) and g++-3 (gcc 2.95.x) define a - macro which tells <ctype.h> to define functions - instead of macros: -

-	// This keeps isalnum, et al from being propagated as macros.
-	#if __linux__
-	#define __NO_CTYPE 1
-	#endif
-
-	[ now include <ctype.h> ]
-      
-

-

- Another problem arises if you put a using namespace - std; declaration at the top, and include <ctype.h>. This will result in - ambiguities between the definitions in the global namespace - (<ctype.h>) and the - definitions in namespace std:: - (<cctype>). -

-

- The solution to this problem was posted to the libstdc++-v3 - mailing-list: - Benjamin Kosnik <bkoz@redhat.com> writes: - ‘ - --enable-cshadow-headers is currently broken. As a result, shadow - headers are not being searched.... - ’ - This is now outdated, but gcc 3.0 still does not have fully - compliant "shadow headers". -

-
-
-

-State of streams

-

- At least some older implementations don't have - std::ios_base, so you should use - std::ios::badbit, std::ios::failbit - and std::ios::eofbit and - std::ios::goodbit. -

-
-
-

-vector::at is missing (i.e. gcc 2.95.x)

-

- One solution is to add an autoconf-test for this: -

-	AC_MSG_CHECKING(for container::at)
-	AC_TRY_COMPILE(
-	[
-	#include <vector>
-	#include <deque>
-	#include <string>
-	
-	using namespace std;
-	],
-	[
-	deque<int> test_deque(3);
-	test_deque.at(2);
-	vector<int> test_vector(2);
-	test_vector.at(1);
-	string test_string("test_string");
-	test_string.at(3);
-	],
-	[AC_MSG_RESULT(yes)
-	AC_DEFINE(HAVE_CONTAINER_AT)],
-	[AC_MSG_RESULT(no)])
-      
- If you are using other (non-GNU) compilers it might be a good idea - to check for string::at separately. -

-
-
-

-Using std::char_traits<char>::eof()

-

-

-	#ifdef HAVE_CHAR_TRAITS
-	#define CPP_EOF std::char_traits<char>::eof()
-	#else
-	#define CPP_EOF EOF
-	#endif
-      
-

-
-
-

-Using string::clear()/string::erase()

-

- There are two functions for deleting the contents of a string: - clear and erase (the latter - returns the string). -

-	void 
-	clear() { _M_mutate(0, this->size(), 0); }
-      
-
-	basic_string& 
-	erase(size_type __pos = 0, size_type __n = npos)
-	{ 
-	return this->replace(_M_check(__pos), _M_fold(__pos, __n),
-	_M_data(), _M_data()); 
-	}
-      
- The implementation of erase seems to be more - complicated (from libstdc++-v3), but clear is not - implemented in gcc 2.95.x's libstdc++, so you should use - erase (which is probably faster than - operator=(charT*)). -

-
-
-

-GNU Extensions ostream::form and istream::scan

-

- These are not supported any more - use - - stringstreams instead. -

-
-
-

-Using stringstreams

-

- Libstdc++-v3 provides the new - i/ostringstream-classes, (<sstream>), but for compatibility - with older implementations you still have to use - i/ostrstream (<strstream>): -

-	#ifdef HAVE_SSTREAM
-	#include <sstream>
-	#else
-	#include <strstream>
-	#endif
-      
-
    -
  • strstream is considered to be - deprecated -

  • -
  • strstream is limited to - char -

  • -
  • with ostringstream you don't - have to take care of terminating the string or freeing its - memory -

  • -
  • istringstream can be re-filled - (clear(); str(input);) -

  • -
-

-

- You can then use output-stringstreams like this: -

-	#ifdef HAVE_SSTREAM
-	std::ostringstream oss;
-	#else
-	std::ostrstream oss;
-	#endif
-	oss << "Name=" << m_name << ", number=" << m_number << std::endl;
-	...
-	#ifndef HAVE_SSTREAM
-	oss << std::ends; // terminate the char*-string
-	#endif
-	// str() returns char* for ostrstream and a string for ostringstream
-	// this also causes ostrstream to think that the buffer's memory
-	// is yours
-	m_label.set_text(oss.str());
-	#ifndef HAVE_SSTREAM
-	// let the ostrstream take care of freeing the memory
-	oss.freeze(false);
-	#endif
-      
-

-

- Input-stringstreams can be used similarly: -

-	std::string input;
-	...
-	#ifdef HAVE_SSTREAM
-	std::istringstream iss(input);
-	#else
-	std::istrstream iss(input.c_str());
-	#endif
-	int i;
-	iss >> i; 
-      
- One (the only?) restriction is that an istrstream cannot be re-filled: -
-	std::istringstream iss(numerator);
-	iss >> m_num;
-	// this is not possible with istrstream
-	iss.clear();
-	iss.str(denominator);
-	iss >> m_den;
-      
- If you don't care about speed, you can put these conversions in - a template-function: -
-	template <class X>
-	void fromString(const string& input, X& any)
-	{
-	#ifdef HAVE_SSTREAM
-	std::istringstream iss(input);
-	#else
-	std::istrstream iss(input.c_str());
-	#endif
-	X temp;
-	iss >> temp;
-	if (iss.fail())
-	throw runtime_error(..)
-	any = temp;
-	}
-      
- Another example of using stringstreams is in this howto. -

-

- I have read the Josuttis book on Standard C++, so some information - comes from there. Additionally, there is information in - "info iostream", which covers the old implementation that gcc 2.95.x - uses. -

-
-
-

-About...

-

- Please send any experience, additions, corrections or questions to - fnatter@gmx.net or for - discussion to the libstdc++-v3-mailing-list. -

-
-
- diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.xml b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.xml deleted file mode 100644 index cdffdcfbe..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting-howto.xml +++ /dev/null @@ -1,785 +0,0 @@ - - - - - - - - - - -
- - Libstdc++-porting-howto - - Felix - Natter - -
- fnatter@gmx.net -
- - - 0.5 - Thu Jun 1 13:06:50 2000 - fnatter - First docbook-version. - - - 0.8 - Sun Jul 30 20:28:40 2000 - fnatter - First released version using docbook-xml - + second upload to libstdc++-page. - - - - 0.9 - Wed Sep 6 02:59:32 2000 - fnatter - 5 new sections. - - - 0.9.1 - Sat Sep 23 14:20:15 2000 - fnatter - added information about why file-descriptors are not in the - standard - - - 0.9.2 - Tue Jun 5 20:07:49 2001 - fnatter - - a fix, added hint on increased portability of C-shadow-headers, - added autoconf-test HAVE_CONTAINER_AT - - - - 0.9.3 - Fri Jun 29 16:15:56 2001 - fnatter - - changed signature of nonstandard filebuf-constructor and - update the section on filebuf::attach to point to ../ext/howto.html, - added link to ../21/strings/howto.html - in sec-stringstream, changed <link>-tags to have content - (so that these links work), - replace "user-space" by "global namespace" - add note about gcc 3.0 and shadow-headers - add section about ostream::form and istream::scan - sec-vector-at: remove hint to modify headers - fix spelling error in sec-stringstream - - - - 0.9.4 - Mon Nov 5 17:01:04 2001 - fnatter - - rewrite section 1.1.3 because of gnu.gcc.help-post by - Juergen Heinzl - - - - Legal Notice - - This document can be distributed under the FDL - (www.gnu.org) - - - - Tue Jun 5 20:07:49 2001 - - - Some notes on porting applications from libstdc++-2.90 (or earlier - versions) to libstdc++-v3. Not speaking in terms of the GNU libstdc++ - implementations, this means porting from earlier versions of the - C++-Standard to ISO 14882. - - -
- - - In the following, when I say portable, I will refer to "portable among ISO - 14882-implementations". On the other hand, if I say "backportable" or - "conservative", I am talking about "compiles with older - libstdc++-implementations". - - -
Namespace std:: - - The latest C++-standard (ISO-14882) requires that the standard - C++-library is defined in namespace std::. Thus, in order to use - classes from the standard C++-library, you can do one of three - things: - - - wrap your code in namespace std { - ... } => This is not an option because only symbols - from the standard c++-library are defined in namespace std::. - - - put a kind of - using-declaration in your source (either - using namespace std; or i.e. using - std::string;) => works well for source-files, but - cannot be used in header-files. - - - use a fully qualified name for - each libstdc++-symbol (i.e. std::string, - std::cout) => can always be used - - - - - - Because there are many compilers which still use an implementation - that does not have the standard C++-library in namespace - std::, some care is required to support these as - well. - - - - Namespace back-portability-issues are generally not a problem with - g++, because versions of g++ that do not have libstdc++ in - std:: use -fno-honor-std - (ignore std::, :: = std::) by - default. That is, the responsibility for enabling or disabling - std:: is on the user; the maintainer does not have - to care about it. This probably applies to some other compilers as - well. - - - The following sections list some possible solutions to support compilers - that cannot ignore std::. - - -
- Using <emphasis>namespace - composition</emphasis> if the project uses a separate - namespace - - Gtk-- defines - most of its classes in namespace Gtk::. Thus, it was possible to - adapt Gtk-- to namespace std:: by using a C++-feature called - namespace composition. This is what happens if - you put a using-declaration into a - namespace-definition: the imported symbol(s) gets imported into the - currently active namespace(s). For example: - - namespace Gtk { - using std::string; - class Window { ... } - } - - In this example, std::string gets imported into - namespace Gtk::. The result is that you don't have to use - std::string in this header, but still - std::string does not get imported into - the global namespace (::) unless the user does - using namespace Gtk; (which is not recommended - practice for Gtk--, so it is not a problem). Additionally, the - using-declarations are wrapped in macros that - are set based on autoconf-tests to either "" or i.e. using - std::string; (depending on whether the system has - libstdc++ in std:: or not). (ideas from - llewelly@dbritsch.dsl.xmission.com, Karl Nelson - kenelson@ece.ucdavis.edu) - -
- -
- Defining an empty namespace std - - By defining an (empty) namespace std:: before - using it, you avoid getting errors on systems where no part of the - library is in namespace std: - - namespace std { } - using namespace std; - - -
- -
- Avoid to use fully qualified names - (i.e. std::string) - - If some compilers complain about using - std::string;, and if the "hack" for gtk-- mentioned above - does not work, then I see two solutions: - - - - Define std:: as a macro if the compiler - doesn't know about std::. - - #ifdef OLD_COMPILER - #define std - #endif - - (thanks to Juergen Heinzl who posted this solution on - gnu.gcc.help) - - - - Define a macro NS_STD, which is defined to - either "" or "std" - based on an autoconf-test. Then you should be able to use - NS_STD::string, which will evaluate to - ::string ("string in the global namespace") on - systems that do not put string in std::. (This is untested) - - - - -
- -
- How some open-source-projects deal - with this - - This information was gathered around May 2000. It may not be correct - by the time you read this. - - Namespace std:: in Open-Source programs - - - - clanlib - - usual - - - pingus - - usual - - - mozilla - - usual - - - - libsigc++ - conservative-impl - - - -
- - Notations for categories - - - - usual - mostly fully qualified names and some - using-declarations (but not in headers) - - - none no namespace std at all - - - conservative-impl - wrap all - namespace-handling in macros to support compilers without - namespace-support (no libstdc++ used in headers) - - - -
- - - As you can see, this currently lacks an example of a project - which uses libstdc++-symbols in headers in a back-portable way - (except for Gtk--: see the section on the gtkmm-hack). - -
-
- -
- there is no ios::nocreate/ios::noreplace - in ISO 14882 - - I have seen ios::nocreate being used for - input-streams, most probably because the author thought it would be - more correct to specify nocreate "explicitly". So you can simply - leave it out for input-streams. - - - For output streams, "nocreate" is probably the default, unless you - specify std::ios::trunc ? To be safe, you can open - the file for reading, check if it has been opened, and then decide - whether you want to create/replace or not. To my knowledge, even - older implementations support app, - ate and trunc (except for - app ?). - -
- -
- <command>stream::attach(int - fd)</command> is not in the standard any more - - Phil Edwards pedwards@disaster.jaj.com writes: - It was considered and rejected. Not all environments use file - descriptors. Of those that do, not all of them use integers to represent - them. - - - When using libstdc++-v3, you can use - - - #include <fstream> - - - - basic_filebuf<...>::basic_filebuf<...> - - - __c_file_type* file - ios_base::open_mode mode - int size - - - but the the signature of this constructor has changed often, and - it might change again. For the current state of this, check - the howto for extensions. - - - For a portable solution (among systems which use - filedescriptors), you need to implement a subclass of - std::streambuf (or - std::basic_streambuf<..>) which opens a file - given a descriptor, and then pass an instance of this to the - stream-constructor. For an example of this, refer to - fdstream example - by Nicolai Josuttis. - -
- -
- The new headers - - All new headers can be seen in this - source-code. - - - The old C++-headers (iostream.h etc.) are available, but gcc generates - a warning that you are using deprecated headers. - - -
- New headers replacing C-headers - - You should not use the C-headers (except for system-level - headers) from C++ programs. Instead, you should use a set of - headers that are named by prepending 'c' and, as usual, - omitting the extension (.h). For example, instead of using - <math.h>, you - should use <cmath>. In some cases this has - the advantage that the C++-header is more standardized than - the C-header (i.e. <ctime> (almost) - corresponds to either <time.h> or <sys/time.h>). - - The standard specifies that if you include the C-style header - (<math.h> in - this case), the symbols will be available both in the global - namespace and in namespace std:: (but - libstdc++ does not yet have fully compliant headers) On the - other hand, if you include only the new header (i.e. <cmath>), the symbols - will only be defined in namespace std:: - (and macros will be converted to inline-functions). - - - For more information on this, and for information on how the - GNU C++ implementation might reuse ("shadow") the C - library-functions, have a look at - www.cantrip.org. - -
- -
- - <filename class="headerfile"><fstream></filename> does - not define <command>std::cout</command>, - <command>std::cin</command> etc. - - In earlier versions of the standard, - <fstream.h>, - <ostream.h> - and <istream.h> - used to define - cout, cin and so on. Because - of the templatized iostreams in libstdc++-v3, you need to include - <iostream> - explicitly to define these. - -
-
- -
- Iterators - - The following are not proper uses of iterators, but may be working - fixes for existing uses of iterators. - - you cannot do - ostream::operator<<(iterator) to - print the address of the iterator => use - operator<< &*iterator instead ? - - - you cannot clear an iterator's reference - (iterator = 0) => use - iterator = iterator_type(); ? - - - if (iterator) won't work any - more => use if (iterator != iterator_type()) - ? - - - -
- -
- - Libc-macros (i.e. <command>isspace</command> from - <filename class = "headerfile"><cctype></filename>) - - Glibc 2.0.x and 2.1.x define the - <ctype.h> - -functionality as macros (isspace, isalpha etc.). Libstdc++-v3 - "shadows" these macros as described in the section about - c-headers. - - - Older implementations of libstdc++ (g++-2 for egcs 1.x and g++-3 - for gcc 2.95.x), however, keep these functions as macros, and so it - is not back-portable to use fully qualified names. For example: - - #include <cctype> - int main() { std::isspace('X'); } - - will result in something like this (unless using g++-v3): - - std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) - _ISspace ) ; - - - - One solution I can think of is to test for -v3 using - autoconf-macros, and define macros for each of the C-functions - (maybe that is possible with one "wrapper" macro as well ?). - - - Another solution which would fix g++ is to tell the user to modify a - header-file so that g++-2 (egcs 1.x) and g++-3 (gcc 2.95.x) define a - macro which tells <ctype.h> to define functions - instead of macros: - - // This keeps isalnum, et al from being propagated as macros. - #if __linux__ - #define __NO_CTYPE 1 - #endif - - [ now include <ctype.h> ] - - - - Another problem arises if you put a using namespace - std; declaration at the top, and include <ctype.h>. This will result in - ambiguities between the definitions in the global namespace - (<ctype.h>) and the - definitions in namespace std:: - (<cctype>). - - - The solution to this problem was posted to the libstdc++-v3 - mailing-list: - Benjamin Kosnik bkoz@redhat.com writes: - - --enable-cshadow-headers is currently broken. As a result, shadow - headers are not being searched.... - - This is now outdated, but gcc 3.0 still does not have fully - compliant "shadow headers". - -
- -
- State of streams - - At least some older implementations don't have - std::ios_base, so you should use - std::ios::badbit, std::ios::failbit - and std::ios::eofbit and - std::ios::goodbit. - -
- -
- vector::at is missing (i.e. gcc 2.95.x) - - One solution is to add an autoconf-test for this: - - AC_MSG_CHECKING(for container::at) - AC_TRY_COMPILE( - [ - #include <vector> - #include <deque> - #include <string> - - using namespace std; - ], - [ - deque<int> test_deque(3); - test_deque.at(2); - vector<int> test_vector(2); - test_vector.at(1); - string test_string("test_string"); - test_string.at(3); - ], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_CONTAINER_AT)], - [AC_MSG_RESULT(no)]) - - If you are using other (non-GNU) compilers it might be a good idea - to check for string::at separately. - -
- -
- Using std::char_traits<char>::eof() - - - #ifdef HAVE_CHAR_TRAITS - #define CPP_EOF std::char_traits<char>::eof() - #else - #define CPP_EOF EOF - #endif - - -
- -
- Using string::clear()/string::erase() - - There are two functions for deleting the contents of a string: - clear and erase (the latter - returns the string). - - void - clear() { _M_mutate(0, this->size(), 0); } - - - basic_string& - erase(size_type __pos = 0, size_type __n = npos) - { - return this->replace(_M_check(__pos), _M_fold(__pos, __n), - _M_data(), _M_data()); - } - - The implementation of erase seems to be more - complicated (from libstdc++-v3), but clear is not - implemented in gcc 2.95.x's libstdc++, so you should use - erase (which is probably faster than - operator=(charT*)). - -
- -
- GNU Extensions ostream::form and istream::scan - - These are not supported any more - use - - stringstreams instead. - -
- -
- Using stringstreams - - Libstdc++-v3 provides the new - i/ostringstream-classes, (<sstream>), but for compatibility - with older implementations you still have to use - i/ostrstream (<strstream>): - - #ifdef HAVE_SSTREAM - #include <sstream> - #else - #include <strstream> - #endif - - - strstream is considered to be - deprecated - - - strstream is limited to - char - - - with ostringstream you don't - have to take care of terminating the string or freeing its - memory - - - istringstream can be re-filled - (clear(); str(input);) - - - - - - You can then use output-stringstreams like this: - - #ifdef HAVE_SSTREAM - std::ostringstream oss; - #else - std::ostrstream oss; - #endif - oss << "Name=" << m_name << ", number=" << m_number << std::endl; - ... - #ifndef HAVE_SSTREAM - oss << std::ends; // terminate the char*-string - #endif - // str() returns char* for ostrstream and a string for ostringstream - // this also causes ostrstream to think that the buffer's memory - // is yours - m_label.set_text(oss.str()); - #ifndef HAVE_SSTREAM - // let the ostrstream take care of freeing the memory - oss.freeze(false); - #endif - - - - Input-stringstreams can be used similarly: - - std::string input; - ... - #ifdef HAVE_SSTREAM - std::istringstream iss(input); - #else - std::istrstream iss(input.c_str()); - #endif - int i; - iss >> i; - - One (the only?) restriction is that an istrstream cannot be re-filled: - - std::istringstream iss(numerator); - iss >> m_num; - // this is not possible with istrstream - iss.clear(); - iss.str(denominator); - iss >> m_den; - - If you don't care about speed, you can put these conversions in - a template-function: - - template <class X> - void fromString(const string& input, X& any) - { - #ifdef HAVE_SSTREAM - std::istringstream iss(input); - #else - std::istrstream iss(input.c_str()); - #endif - X temp; - iss >> temp; - if (iss.fail()) - throw runtime_error(..) - any = temp; - } - - Another example of using stringstreams is in this howto. - - - I have read the Josuttis book on Standard C++, so some information - comes from there. Additionally, there is information in - "info iostream", which covers the old implementation that gcc 2.95.x - uses. - -
- -
- About... - - Please send any experience, additions, corrections or questions to - fnatter@gmx.net or for - discussion to the libstdc++-v3-mailing-list. - -
- -
- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.html deleted file mode 100644 index c280990c9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.html +++ /dev/null @@ -1,992 +0,0 @@ - - -Porting libstdc++-v3 - - - - - - - - -

Porting libstdc++-v3

-
-


-Node: Top, -Next: , -Up: (dir) -
-
- -

Porting libstdc++-v3

- -

This document explains how to port libstdc++-v3 (the GNU C++ library) to -a new target. - -

In order to make the GNU C++ library (libstdc++-v3) work with a new -target, you must edit some configuration files and provide some new -header files. Unless this is done, libstdc++-v3 will use generic -settings which may not be correct for your target; even if they are -correct, they will likely be inefficient. - -

Before you get started, make sure that you have a working C library on -your target. The C library need not precisely comply with any -particular standard, but should generally conform to the requirements -imposed by the ANSI/ISO standard. - -

In addition, you should try to verify that the C++ compiler generally -works. It is difficult to test the C++ compiler without a working -library, but you should at least try some minimal test cases. - -

(Note that what we think of as a "target," the library refers to as -a "host." The comment at the top of configure.ac explains why.) - -

Here are the primary steps required to port the library: - -

- -
-


-Node: Operating system, -Next: , -Previous: Top, -Up: Top -
-
- -

Operating system

- -

If you are porting to a new operating system (as opposed to a new chip -using an existing operating system), you will need to create a new -directory in the config/os hierarchy. For example, the IRIX -configuration files are all in config/os/irix. There is no set -way to organize the OS configuration directory. For example, -config/os/solaris/solaris-2.6 and -config/os/solaris/solaris-2.7 are used as configuration -directories for these two versions of Solaris. On the other hand, both -Solaris 2.7 and Solaris 2.8 use the config/os/solaris/solaris-2.7 -directory. The important information is that there needs to be a -directory under config/os to store the files for your operating -system. - -

You might have to change the configure.host file to ensure that -your new directory is activated. Look for the switch statement that sets -os_include_dir, and add a pattern to handle your operating system -if the default will not suffice. The switch statement switches on only -the OS portion of the standard target triplet; e.g., the solaris2.8 -in sparc-sun-solaris2.8. If the new directory is named after the -OS portion of the triplet (the default), then nothing needs to be changed. - -

The first file to create in this directory, should be called -os_defines.h. This file contains basic macro definitions -that are required to allow the C++ library to work with your C library. - -

Several libstdc++-v3 source files unconditionally define the macro -_POSIX_SOURCE. On many systems, defining this macro causes -large portions of the C library header files to be eliminated -at preprocessing time. Therefore, you may have to #undef this -macro, or define other macros (like _LARGEFILE_SOURCE or -__EXTENSIONS__). You won't know what macros to define or -undefine at this point; you'll have to try compiling the library and -seeing what goes wrong. If you see errors about calling functions -that have not been declared, look in your C library headers to see if -the functions are declared there, and then figure out what macros you -need to define. You will need to add them to the -CPLUSPLUS_CPP_SPEC macro in the GCC configuration file for your -target. It will not work to simply define these macros in -os_defines.h. - -

At this time, there are a few libstdc++-v3-specific macros which may be -defined: - -

_GLIBCXX_USE_C99_CHECK may be defined to 1 to check C99 -function declarations (which are not covered by specialization below) -found in system headers against versions found in the library headers -derived from the standard. - -

_GLIBCXX_USE_C99_DYNAMIC may be defined to an expression that -yields 0 if and only if the system headers are exposing proper support -for C99 functions (which are not covered by specialization below). If -defined, it must be 0 while bootstrapping the compiler/rebuilding the -library. - -

_GLIBCXX_USE_C99_LONG_LONG_CHECK may be defined to 1 to check -the set of C99 long long function declarations found in system headers -against versions found in the library headers derived from the -standard. - -

_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC may be defined to an -expression that yields 0 if and only if the system headers are -exposing proper support for the set of C99 long long functions. If -defined, it must be 0 while bootstrapping the compiler/rebuilding the -library. - -

_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC may be defined to an -expression that yields 0 if and only if the system headers -are exposing proper support for the related set of macros. If defined, -it must be 0 while bootstrapping the compiler/rebuilding the library. - -

_GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK may be defined -to 1 to check the related set of function declarations found in system -headers against versions found in the library headers derived from -the standard. - -

_GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC may be defined -to an expression that yields 0 if and only if the system headers -are exposing proper support for the related set of functions. If defined, -it must be 0 while bootstrapping the compiler/rebuilding the library. - -

Finally, you should bracket the entire file in an include-guard, like -this: - -

     #ifndef _GLIBCXX_OS_DEFINES
-     #define _GLIBCXX_OS_DEFINES
-     ...
-     #endif
-     
- -

We recommend copying an existing os_defines.h to use as a -starting point. - -

-


-Node: CPU, -Next: , -Previous: Operating system, -Up: Top -
-
- -

CPU

- -

If you are porting to a new chip (as opposed to a new operating system -running on an existing chip), you will need to create a new directory in the -config/cpu hierarchy. Much like the Operating system setup, -there are no strict rules on how to organize the CPU configuration -directory, but careful naming choices will allow the configury to find your -setup files without explicit help. - -

We recommend that for a target triplet <CPU>-<vendor>-<OS>, you -name your configuration directory config/cpu/<CPU>. If you do this, -the configury will find the directory by itself. Otherwise you will need to -edit the configure.host file and, in the switch statement that sets -cpu_include_dir, add a pattern to handle your chip. - -

Note that some chip families share a single configuration directory, for -example, alpha, alphaev5, and alphaev6 all use the -config/cpu/alpha directory, and there is an entry in the -configure.host switch statement to handle this. - -

The cpu_include_dir sets default locations for the files controlling -Thread safety and Numeric limits, if the defaults are not -appropriate for your chip. - -

-


-Node: Character types, -Next: , -Previous: CPU, -Up: Top -
-
- -

Character types

- -

The library requires that you provide three header files to implement -character classification, analogous to that provided by the C libraries -<ctype.h> header. You can model these on the files provided in -config/os/generic. However, these files will almost -certainly need some modification. - -

The first file to write is ctype_base.h. This file provides -some very basic information about character classification. The libstdc++-v3 -library assumes that your C library implements <ctype.h> by using -a table (indexed by character code) containing integers, where each of -these integers is a bit-mask indicating whether the character is -upper-case, lower-case, alphabetic, etc. The ctype_base.h -file gives the type of the integer, and the values of the various bit -masks. You will have to peer at your own <ctype.h> to figure out -how to define the values required by this file. - -

The ctype_base.h header file does not need include guards. -It should contain a single struct definition called -ctype_base. This struct should contain two type -declarations, and one enumeration declaration, like this example, taken -from the IRIX configuration: - -

     struct ctype_base
-     {
-       typedef unsigned int 	mask;
-       typedef int* 		__to_type;
-     
-       enum
-       {
-         space = _ISspace,
-         print = _ISprint,
-         cntrl = _IScntrl,
-         upper = _ISupper,
-         lower = _ISlower,
-         alpha = _ISalpha,
-         digit = _ISdigit,
-         punct = _ISpunct,
-         xdigit = _ISxdigit,
-         alnum = _ISalnum,
-         graph = _ISgraph
-       };
-     };
-     
- -

The mask type is the type of the elements in the table. If your -C library uses a table to map lower-case numbers to upper-case numbers, -and vice versa, you should define __to_type to be the type of the -elements in that table. If you don't mind taking a minor performance -penalty, or if your library doesn't implement toupper and -tolower in this way, you can pick any pointer-to-integer type, -but you must still define the type. - -

The enumeration should give definitions for all the values in the above -example, using the values from your native <ctype.h>. They can -be given symbolically (as above), or numerically, if you prefer. You do -not have to include <ctype.h> in this header; it will always be -included before ctype_base.h is included. - -

The next file to write is ctype_noninline.h, which also does -not require include guards. This file defines a few member functions -that will be included in include/bits/locale_facets.h. The first -function that must be written is the ctype<char>::ctype -constructor. Here is the IRIX example: - -

     ctype<char>::ctype(const mask* __table = 0, bool __del = false,
-           size_t __refs = 0)
-       : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del),
-         _M_toupper(NULL),
-         _M_tolower(NULL),
-         _M_ctable(NULL),
-         _M_table(!__table
-                  ? (const mask*) (__libc_attr._ctype_tbl->_class + 1)
-                  : __table)
-       { }
-     
- -

There are two parts of this that you might choose to alter. The first, -and most important, is the line involving __libc_attr. That is -IRIX system-dependent code that gets the base of the table mapping -character codes to attributes. You need to substitute code that obtains -the address of this table on your system. If you want to use your -operating system's tables to map upper-case letters to lower-case, and -vice versa, you should initialize _M_toupper and -_M_tolower with those tables, in similar fashion. - -

Now, you have to write two functions to convert from upper-case to -lower-case, and vice versa. Here are the IRIX versions: - -

     char
-     ctype<char>::do_toupper(char __c) const
-     { return _toupper(__c); }
-     
-     char
-     ctype<char>::do_tolower(char __c) const
-     { return _tolower(__c); }
-     
- -

Your C library provides equivalents to IRIX's _toupper and -_tolower. If you initialized _M_toupper and -_M_tolower above, then you could use those tables instead. - -

Finally, you have to provide two utility functions that convert strings -of characters. The versions provided here will always work - but you -could use specialized routines for greater performance if you have -machinery to do that on your system: - -

     const char*
-     ctype<char>::do_toupper(char* __low, const char* __high) const
-     {
-       while (__low < __high)
-         {
-           *__low = do_toupper(*__low);
-           ++__low;
-         }
-       return __high;
-     }
-     
-     const char*
-     ctype<char>::do_tolower(char* __low, const char* __high) const
-     {
-       while (__low < __high)
-         {
-           *__low = do_tolower(*__low);
-           ++__low;
-         }
-       return __high;
-     }
-     
- -

You must also provide the ctype_inline.h file, which -contains a few more functions. On most systems, you can just copy -config/os/generic/ctype_inline.h and use it on your system. - -

In detail, the functions provided test characters for particular -properties; they are analogous to the functions like isalpha and -islower provided by the C library. - -

The first function is implemented like this on IRIX: - -

     bool
-     ctype<char>::
-     is(mask __m, char __c) const throw()
-     { return (_M_table)[(unsigned char)(__c)] & __m; }
-     
- -

The _M_table is the table passed in above, in the constructor. -This is the table that contains the bitmasks for each character. The -implementation here should work on all systems. - -

The next function is: - -

     const char*
-     ctype<char>::
-     is(const char* __low, const char* __high, mask* __vec) const throw()
-     {
-       while (__low < __high)
-         *__vec++ = (_M_table)[(unsigned char)(*__low++)];
-       return __high;
-     }
-     
- -

This function is similar; it copies the masks for all the characters -from __low up until __high into the vector given by -__vec. - -

The last two functions again are entirely generic: - -

     const char*
-     ctype<char>::
-     scan_is(mask __m, const char* __low, const char* __high) const throw()
-     {
-       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 throw()
-     {
-       while (__low < __high && this->is(__m, *__low))
-         ++__low;
-       return __low;
-     }
-     
- -
-


-Node: Thread safety, -Next: , -Previous: Character types, -Up: Top -
-
- -

Thread safety

- -

The C++ library string functionality requires a couple of atomic -operations to provide thread-safety. If you don't take any special -action, the library will use stub versions of these functions that are -not thread-safe. They will work fine, unless your applications are -multi-threaded. - -

If you want to provide custom, safe, versions of these functions, there -are two distinct approaches. One is to provide a version for your CPU, -using assembly language constructs. The other is to use the -thread-safety primitives in your operating system. In either case, you -make a file called atomicity.h, and the variable -ATOMICITYH must point to this file. - -

If you are using the assembly-language approach, put this code in -config/cpu/<chip>/atomicity.h, where chip is the name of -your processor (see CPU). No additional changes are necessary to -locate the file in this case; ATOMICITYH will be set by default. - -

If you are using the operating system thread-safety primitives approach, -you can also put this code in the same CPU directory, in which case no more -work is needed to locate the file. For examples of this approach, -see the atomicity.h file for IRIX or IA64. - -

Alternatively, if the primitives are more closely related to the OS -than they are to the CPU, you can put the atomicity.h file in -the Operating system directory instead. In this case, you must -edit configure.host, and in the switch statement that handles -operating systems, override the ATOMICITYH variable to point to -the appropriate os_include_dir. For examples of this approach, -see the atomicity.h file for AIX. - -

With those bits out of the way, you have to actually write -atomicity.h itself. This file should be wrapped in an -include guard named _GLIBCXX_ATOMICITY_H. It should define one -type, and two functions. - -

The type is _Atomic_word. Here is the version used on IRIX: - -

     typedef long _Atomic_word;
-     
- -

This type must be a signed integral type supporting atomic operations. -If you're using the OS approach, use the same type used by your system's -primitives. Otherwise, use the type for which your CPU provides atomic -primitives. - -

Then, you must provide two functions. The bodies of these functions -must be equivalent to those provided here, but using atomic operations: - -

     static inline _Atomic_word
-     __attribute__ ((__unused__))
-     __exchange_and_add (_Atomic_word* __mem, int __val)
-     {
-       _Atomic_word __result = *__mem;
-       *__mem += __val;
-       return __result;
-     }
-     
-     static inline void
-     __attribute__ ((__unused__))
-     __atomic_add (_Atomic_word* __mem, int __val)
-     {
-       *__mem += __val;
-     }
-     
- -
-


-Node: Numeric limits, -Next: , -Previous: Thread safety, -Up: Top -
-
- -

Numeric limits

- -

The C++ library requires information about the fundamental data types, -such as the minimum and maximum representable values of each type. -You can define each of these values individually, but it is usually -easiest just to indicate how many bits are used in each of the data -types and let the library do the rest. For information about the -macros to define, see the top of include/bits/std_limits.h. - -

If you need to define any macros, you can do so in os_defines.h. -However, if all operating systems for your CPU are likely to use the -same values, you can provide a CPU-specific file instead so that you -do not have to provide the same definitions for each operating system. -To take that approach, create a new file called cpu_limits.h in -your CPU configuration directory (see CPU). - -

-


-Node: Libtool, -Next: , -Previous: Numeric limits, -Up: Top -
-
- -

Libtool

- -

The C++ library is compiled, archived and linked with libtool. -Explaining the full workings of libtool is beyond the scope of this -document, but there are a few, particular bits that are necessary for -porting. - -

Some parts of the libstdc++-v3 library are compiled with the libtool ---tags CXX option (the C++ definitions for libtool). Therefore, -ltcf-cxx.sh in the top-level directory needs to have the correct -logic to compile and archive objects equivalent to the C version of libtool, -ltcf-c.sh. Some libtool targets have definitions for C but not -for C++, or C++ definitions which have not been kept up to date. - -

The C++ run-time library contains initialization code that needs to be -run as the library is loaded. Often, that requires linking in special -object files when the C++ library is built as a shared library, or -taking other system-specific actions. - -

The libstdc++-v3 library is linked with the C version of libtool, even -though it is a C++ library. Therefore, the C version of libtool needs to -ensure that the run-time library initializers are run. The usual way to -do this is to build the library using gcc -shared. - -

If you need to change how the library is linked, look at -ltcf-c.sh in the top-level directory. Find the switch statement -that sets archive_cmds. Here, adjust the setting for your -operating system. - -

-


-Node: GNU Free Documentation License, -Previous: Libtool, -Up: Top -
-
- -

GNU Free Documentation License

- -
Version 1.2, November 2002
-
     Copyright © 2000,2001,2002 Free Software Foundation, Inc.
-     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
-     
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-     
- -
    -
  1. PREAMBLE - -

    The purpose of this License is to make a manual, textbook, or other -functional and useful document free in the sense of freedom: to -assure everyone the effective freedom to copy and redistribute it, -with or without modifying it, either commercially or noncommercially. -Secondarily, this License preserves for the author and publisher a way -to get credit for their work, while not being considered responsible -for modifications made by others. - -

    This License is a kind of "copyleft", which means that derivative -works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft -license designed for free software. - -

    We have designed this License in order to use it for manuals for free -software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the -software does. But this License is not limited to software manuals; -it can be used for any textual work, regardless of subject matter or -whether it is published as a printed book. We recommend this License -principally for works whose purpose is instruction or reference. - -

  2. APPLICABILITY AND DEFINITIONS - -

    This License applies to any manual or other work, in any medium, that -contains a notice placed by the copyright holder saying it can be -distributed under the terms of this License. Such a notice grants a -world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, -refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you -copy, modify or distribute the work in a way requiring permission -under copyright law. - -

    A "Modified Version" of the Document means any work containing the -Document or a portion of it, either copied verbatim, or with -modifications and/or translated into another language. - -

    A "Secondary Section" is a named appendix or a front-matter section -of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall -subject (or to related matters) and contains nothing that could fall -directly within that overall subject. (Thus, if the Document is in -part a textbook of mathematics, a Secondary Section may not explain -any mathematics.) The relationship could be a matter of historical -connection with the subject or with related matters, or of legal, -commercial, philosophical, ethical or political position regarding -them. - -

    The "Invariant Sections" are certain Secondary Sections whose titles -are designated, as being those of Invariant Sections, in the notice -that says that the Document is released under this License. If a -section does not fit the above definition of Secondary then it is not -allowed to be designated as Invariant. The Document may contain zero -Invariant Sections. If the Document does not identify any Invariant -Sections then there are none. - -

    The "Cover Texts" are certain short passages of text that are listed, -as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. A Front-Cover Text may -be at most 5 words, and a Back-Cover Text may be at most 25 words. - -

    A "Transparent" copy of the Document means a machine-readable copy, -represented in a format whose specification is available to the -general public, that is suitable for revising the document -straightforwardly with generic text editors or (for images composed of -pixels) generic paint programs or (for drawings) some widely available -drawing editor, and that is suitable for input to text formatters or -for automatic translation to a variety of formats suitable for input -to text formatters. A copy made in an otherwise Transparent file -format whose markup, or absence of markup, has been arranged to thwart -or discourage subsequent modification by readers is not Transparent. -An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". - -

    Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for -output purposes only. - -

    The "Title Page" means, for a printed book, the title page itself, -plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, -preceding the beginning of the body of the text. - -

    A section "Entitled XYZ" means a named subunit of the Document whose -title either is precisely XYZ or contains XYZ in parentheses following -text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" -of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. - -

    The Document may include Warranty Disclaimers next to the notice which -states that this License applies to the Document. These Warranty -Disclaimers are considered to be included by reference in this -License, but only as regards disclaiming warranties: any other -implication that these Warranty Disclaimers may have is void and has -no effect on the meaning of this License. - -

  3. VERBATIM COPYING - -

    You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the -copyright notices, and the license notice saying this License applies -to the Document are reproduced in all copies, and that you add no other -conditions whatsoever to those of this License. You may not use -technical measures to obstruct or control the reading or further -copying of the copies you make or distribute. However, you may accept -compensation in exchange for copies. If you distribute a large enough -number of copies you must also follow the conditions in section 3. - -

    You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - -

  4. COPYING IN QUANTITY - -

    If you publish printed copies (or copies in media that commonly have -printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the -copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on -the back cover. Both covers must also clearly and legibly identify -you as the publisher of these copies. The front cover must present -the full title with all words of the title equally prominent and -visible. You may add other material on the covers in addition. -Copying with changes limited to the covers, as long as they preserve -the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - -

    If the required texts for either cover are too voluminous to fit -legibly, you should put the first ones listed (as many as fit -reasonably) on the actual cover, and continue the rest onto adjacent -pages. - -

    If you publish or distribute Opaque copies of the Document numbering -more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy -a computer-network location from which the general network-using -public has access to download using public-standard network protocols -a complete Transparent copy of the Document, free of added material. -If you use the latter option, you must take reasonably prudent steps, -when you begin distribution of Opaque copies in quantity, to ensure -that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an -Opaque copy (directly or through your agents or retailers) of that -edition to the public. - -

    It is requested, but not required, that you contact the authors of the -Document well before redistributing any large number of copies, to give -them a chance to provide you with an updated version of the Document. - -

  5. MODIFICATIONS - -

    You may copy and distribute a Modified Version of the Document under -the conditions of sections 2 and 3 above, provided that you release -the Modified Version under precisely this License, with the Modified -Version filling the role of the Document, thus licensing distribution -and modification of the Modified Version to whoever possesses a copy -of it. In addition, you must do these things in the Modified Version: - -

      -
    1. Use in the Title Page (and on the covers, if any) a title distinct -from that of the Document, and from those of previous versions -(which should, if there were any, be listed in the History section -of the Document). You may use the same title as a previous version -if the original publisher of that version gives permission. - -
    2. List on the Title Page, as authors, one or more persons or entities -responsible for authorship of the modifications in the Modified -Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has fewer than five), -unless they release you from this requirement. - -
    3. State on the Title page the name of the publisher of the -Modified Version, as the publisher. - -
    4. Preserve all the copyright notices of the Document. - -
    5. Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. - -
    6. Include, immediately after the copyright notices, a license notice -giving the public permission to use the Modified Version under the -terms of this License, in the form shown in the Addendum below. - -
    7. Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. - -
    8. Include an unaltered copy of this License. - -
    9. Preserve the section Entitled "History", Preserve its Title, and add -to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one -stating the title, year, authors, and publisher of the Document as -given on its Title Page, then add an item describing the Modified -Version as stated in the previous sentence. - -
    10. Preserve the network location, if any, given in the Document for -public access to a Transparent copy of the Document, and likewise -the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. -You may omit a network location for a work that was published at -least four years before the Document itself, or if the original -publisher of the version it refers to gives permission. - -
    11. For any section Entitled "Acknowledgements" or "Dedications", Preserve -the Title of the section, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. - -
    12. Preserve all the Invariant Sections of the Document, -unaltered in their text and in their titles. Section numbers -or the equivalent are not considered part of the section titles. - -
    13. Delete any section Entitled "Endorsements". Such a section -may not be included in the Modified Version. - -
    14. Do not retitle any existing section to be Entitled "Endorsements" or -to conflict in title with any Invariant Section. - -
    15. Preserve any Warranty Disclaimers. -
    - -

    If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material -copied from the Document, you may at your option designate some or all -of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. -These titles must be distinct from any other section titles. - -

    You may add a section Entitled "Endorsements", provided it contains -nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has -been approved by an organization as the authoritative definition of a -standard. - -

    You may add a passage of up to five words as a Front-Cover Text, and a -passage of up to 25 words as a Back-Cover Text, to the end of the list -of Cover Texts in the Modified Version. Only one passage of -Front-Cover Text and one of Back-Cover Text may be added by (or -through arrangements made by) any one entity. If the Document already -includes a cover text for the same cover, previously added by you or -by arrangement made by the same entity you are acting on behalf of, -you may not add another; but you may replace the old one, on explicit -permission from the previous publisher that added the old one. - -

    The author(s) and publisher(s) of the Document do not by this License -give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - -

  6. COMBINING DOCUMENTS - -

    You may combine the Document with other documents released under this -License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the -Invariant Sections of all of the original documents, unmodified, and -list them all as Invariant Sections of your combined work in its -license notice, and that you preserve all their Warranty Disclaimers. - -

    The combined work need only contain one copy of this License, and -multiple identical Invariant Sections may be replaced with a single -copy. If there are multiple Invariant Sections with the same name but -different contents, make the title of each such section unique by -adding at the end of it, in parentheses, the name of the original -author or publisher of that section if known, or else a unique number. -Make the same adjustment to the section titles in the list of -Invariant Sections in the license notice of the combined work. - -

    In the combination, you must combine any sections Entitled "History" -in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." - -

  7. COLLECTIONS OF DOCUMENTS - -

    You may make a collection consisting of the Document and other documents -released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in -the collection, provided that you follow the rules of this License for -verbatim copying of each of the documents in all other respects. - -

    You may extract a single document from such a collection, and distribute -it individually under this License, provided you insert a copy of this -License into the extracted document, and follow this License in all -other respects regarding verbatim copying of that document. - -

  8. AGGREGATION WITH INDEPENDENT WORKS - -

    A compilation of the Document or its derivatives with other separate -and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright -resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. -When the Document is included an aggregate, this License does not -apply to the other works in the aggregate which are not themselves -derivative works of the Document. - -

    If the Cover Text requirement of section 3 is applicable to these -copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on -covers that bracket the Document within the aggregate, or the -electronic equivalent of covers if the Document is in electronic form. -Otherwise they must appear on printed covers that bracket the whole -aggregate. - -

  9. TRANSLATION - -

    Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. -Replacing Invariant Sections with translations requires special -permission from their copyright holders, but you may include -translations of some or all Invariant Sections in addition to the -original versions of these Invariant Sections. You may include a -translation of this License, and all the license notices in the -Document, and any Warrany Disclaimers, provided that you also include -the original English version of this License and the original versions -of those notices and disclaimers. In case of a disagreement between -the translation and the original version of this License or a notice -or disclaimer, the original version will prevail. - -

    If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve -its Title (section 1) will typically require changing the actual -title. - -

  10. TERMINATION - -

    You may not copy, modify, sublicense, or distribute the Document except -as expressly provided for under this License. Any other attempt to -copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - -

  11. FUTURE REVISIONS OF THIS LICENSE - -

    The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. - -

    Each version of the License is given a distinguishing version number. -If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of -following the terms and conditions either of that specified version or -of any later version that has been published (not as a draft) by the -Free Software Foundation. If the Document does not specify a version -number of this License, you may choose any version ever published (not -as a draft) by the Free Software Foundation. -

- -

ADDENDUM: How to use this License for your documents

- -

To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and -license notices just after the title page: - -

       Copyright (C)  year  your name.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.2
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-       A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-     
- -

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: - -

         with the Invariant Sections being list their titles, with
-         the Front-Cover Texts being list, and with the Back-Cover Texts
-         being list.
-     
- -

If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -

If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, -to permit their use in free software. - - -

- - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.texi b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.texi deleted file mode 100644 index 090bdf771..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/17_intro/porting.texi +++ /dev/null @@ -1,570 +0,0 @@ -\input texinfo - -@c --------------------------------------------------------------------- -@c Prologue -@c --------------------------------------------------------------------- - -@setfilename porting.info -@settitle Porting libstdc++-v3 -@setchapternewpage odd - -@copying -Copyright @copyright{} 2000, 2001, 2002, 2003, 2005 -Free Software Foundation, Inc. - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.2 or -any later version published by the Free Software Foundation; with the -Invariant Sections being ``GNU General Public License'', the Front-Cover -texts being (a) (see below), and with the Back-Cover Texts being (b) -(see below). A copy of the license is included in the section entitled -``GNU Free Documentation License''. - -(a) The FSF's Front-Cover Text is: - - A GNU Manual - -(b) The FSF's Back-Cover Text is: - - You have freedom to copy and modify this GNU Manual, like GNU - software. Copies published by the Free Software Foundation raise - funds for GNU development. -@end copying - -@ifinfo -This file explains how to port libstdc++-v3 (the GNU C++ library) to -a new target. - -@insertcopying -@end ifinfo - -@c --------------------------------------------------------------------- -@c Titlepage -@c --------------------------------------------------------------------- - -@titlepage -@title Porting libstdc++-v3 -@author Mark Mitchell -@page -@vskip 0pt plus 1filll -@insertcopying -@end titlepage - -@c --------------------------------------------------------------------- -@c Top -@c --------------------------------------------------------------------- - -@node Top -@top Porting libstdc++-v3 - -This document explains how to port libstdc++-v3 (the GNU C++ library) to -a new target. - -In order to make the GNU C++ library (libstdc++-v3) work with a new -target, you must edit some configuration files and provide some new -header files. Unless this is done, libstdc++-v3 will use generic -settings which may not be correct for your target; even if they are -correct, they will likely be inefficient. - -Before you get started, make sure that you have a working C library on -your target. The C library need not precisely comply with any -particular standard, but should generally conform to the requirements -imposed by the ANSI/ISO standard. - -In addition, you should try to verify that the C++ compiler generally -works. It is difficult to test the C++ compiler without a working -library, but you should at least try some minimal test cases. - -(Note that what we think of as a ``target,'' the library refers to as -a ``host.'' The comment at the top of @file{configure.ac} explains why.) - -Here are the primary steps required to port the library: - -@menu -* Operating system:: Configuring for your operating system. -* CPU:: Configuring for your processor chip. -* Character types:: Implementing character classification. -* Thread safety:: Implementing atomic operations. -* Numeric limits:: Implementing numeric limits. -* Libtool:: Using libtool. -* GNU Free Documentation License:: How you can copy and share this manual. -@end menu - -@c --------------------------------------------------------------------- -@c Operating system -@c --------------------------------------------------------------------- - -@node Operating system -@chapter Operating system - -If you are porting to a new operating system (as opposed to a new chip -using an existing operating system), you will need to create a new -directory in the @file{config/os} hierarchy. For example, the IRIX -configuration files are all in @file{config/os/irix}. There is no set -way to organize the OS configuration directory. For example, -@file{config/os/solaris/solaris-2.6} and -@file{config/os/solaris/solaris-2.7} are used as configuration -directories for these two versions of Solaris. On the other hand, both -Solaris 2.7 and Solaris 2.8 use the @file{config/os/solaris/solaris-2.7} -directory. The important information is that there needs to be a -directory under @file{config/os} to store the files for your operating -system. - -You might have to change the @file{configure.host} file to ensure that -your new directory is activated. Look for the switch statement that sets -@code{os_include_dir}, and add a pattern to handle your operating system -if the default will not suffice. The switch statement switches on only -the OS portion of the standard target triplet; e.g., the @code{solaris2.8} -in @code{sparc-sun-solaris2.8}. If the new directory is named after the -OS portion of the triplet (the default), then nothing needs to be changed. - -The first file to create in this directory, should be called -@file{os_defines.h}. This file contains basic macro definitions -that are required to allow the C++ library to work with your C library. - -Several libstdc++-v3 source files unconditionally define the macro -@code{_POSIX_SOURCE}. On many systems, defining this macro causes -large portions of the C library header files to be eliminated -at preprocessing time. Therefore, you may have to @code{#undef} this -macro, or define other macros (like @code{_LARGEFILE_SOURCE} or -@code{__EXTENSIONS__}). You won't know what macros to define or -undefine at this point; you'll have to try compiling the library and -seeing what goes wrong. If you see errors about calling functions -that have not been declared, look in your C library headers to see if -the functions are declared there, and then figure out what macros you -need to define. You will need to add them to the -@code{CPLUSPLUS_CPP_SPEC} macro in the GCC configuration file for your -target. It will not work to simply define these macros in -@file{os_defines.h}. - -At this time, there are a few libstdc++-v3-specific macros which may be -defined: - -@code{_GLIBCXX_USE_C99_CHECK} may be defined to 1 to check C99 -function declarations (which are not covered by specialization below) -found in system headers against versions found in the library headers -derived from the standard. - -@code{_GLIBCXX_USE_C99_DYNAMIC} may be defined to an expression that -yields 0 if and only if the system headers are exposing proper support -for C99 functions (which are not covered by specialization below). If -defined, it must be 0 while bootstrapping the compiler/rebuilding the -library. - -@code{_GLIBCXX_USE_C99_LONG_LONG_CHECK} may be defined to 1 to check -the set of C99 long long function declarations found in system headers -against versions found in the library headers derived from the -standard. - -@code{_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC} may be defined to an -expression that yields 0 if and only if the system headers are -exposing proper support for the set of C99 long long functions. If -defined, it must be 0 while bootstrapping the compiler/rebuilding the -library. - -@code{_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC} may be defined to an -expression that yields 0 if and only if the system headers -are exposing proper support for the related set of macros. If defined, -it must be 0 while bootstrapping the compiler/rebuilding the library. - -@code{_GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_CHECK} may be defined -to 1 to check the related set of function declarations found in system -headers against versions found in the library headers derived from -the standard. - -@code{_GLIBCXX_USE_C99_FLOAT_TRANSCENDENTALS_DYNAMIC} may be defined -to an expression that yields 0 if and only if the system headers -are exposing proper support for the related set of functions. If defined, -it must be 0 while bootstrapping the compiler/rebuilding the library. - -Finally, you should bracket the entire file in an include-guard, like -this: - -@example -#ifndef _GLIBCXX_OS_DEFINES -#define _GLIBCXX_OS_DEFINES -... -#endif -@end example - -We recommend copying an existing @file{os_defines.h} to use as a -starting point. - -@c --------------------------------------------------------------------- -@c CPU -@c --------------------------------------------------------------------- - -@node CPU -@chapter CPU - -If you are porting to a new chip (as opposed to a new operating system -running on an existing chip), you will need to create a new directory in the -@file{config/cpu} hierarchy. Much like the @ref{Operating system} setup, -there are no strict rules on how to organize the CPU configuration -directory, but careful naming choices will allow the configury to find your -setup files without explicit help. - -We recommend that for a target triplet @code{--}, you -name your configuration directory @file{config/cpu/}. If you do this, -the configury will find the directory by itself. Otherwise you will need to -edit the @file{configure.host} file and, in the switch statement that sets -@code{cpu_include_dir}, add a pattern to handle your chip. - -Note that some chip families share a single configuration directory, for -example, @code{alpha}, @code{alphaev5}, and @code{alphaev6} all use the -@file{config/cpu/alpha} directory, and there is an entry in the -@file{configure.host} switch statement to handle this. - -The @code{cpu_include_dir} sets default locations for the files controlling -@ref{Thread safety} and @ref{Numeric limits}, if the defaults are not -appropriate for your chip. - - -@c --------------------------------------------------------------------- -@c Character types -@c --------------------------------------------------------------------- - -@node Character types -@chapter Character types - -The library requires that you provide three header files to implement -character classification, analogous to that provided by the C libraries -@file{} header. You can model these on the files provided in -@file{config/os/generic}. However, these files will almost -certainly need some modification. - -The first file to write is @file{ctype_base.h}. This file provides -some very basic information about character classification. The libstdc++-v3 -library assumes that your C library implements @file{} by using -a table (indexed by character code) containing integers, where each of -these integers is a bit-mask indicating whether the character is -upper-case, lower-case, alphabetic, etc. The @file{ctype_base.h} -file gives the type of the integer, and the values of the various bit -masks. You will have to peer at your own @file{} to figure out -how to define the values required by this file. - -The @file{ctype_base.h} header file does not need include guards. -It should contain a single @code{struct} definition called -@code{ctype_base}. This @code{struct} should contain two type -declarations, and one enumeration declaration, like this example, taken -from the IRIX configuration: - -@example -struct ctype_base -@{ - typedef unsigned int mask; - typedef int* __to_type; - - enum - @{ - space = _ISspace, - print = _ISprint, - cntrl = _IScntrl, - upper = _ISupper, - lower = _ISlower, - alpha = _ISalpha, - digit = _ISdigit, - punct = _ISpunct, - xdigit = _ISxdigit, - alnum = _ISalnum, - graph = _ISgraph - @}; -@}; -@end example - -@noindent -The @code{mask} type is the type of the elements in the table. If your -C library uses a table to map lower-case numbers to upper-case numbers, -and vice versa, you should define @code{__to_type} to be the type of the -elements in that table. If you don't mind taking a minor performance -penalty, or if your library doesn't implement @code{toupper} and -@code{tolower} in this way, you can pick any pointer-to-integer type, -but you must still define the type. - -The enumeration should give definitions for all the values in the above -example, using the values from your native @file{}. They can -be given symbolically (as above), or numerically, if you prefer. You do -not have to include @file{} in this header; it will always be -included before @file{ctype_base.h} is included. - -The next file to write is @file{ctype_noninline.h}, which also does -not require include guards. This file defines a few member functions -that will be included in @file{include/bits/locale_facets.h}. The first -function that must be written is the @code{ctype::ctype} -constructor. Here is the IRIX example: - -@example -ctype::ctype(const mask* __table = 0, bool __del = false, - size_t __refs = 0) - : _Ctype_nois(__refs), _M_del(__table != 0 && __del), - _M_toupper(NULL), - _M_tolower(NULL), - _M_ctable(NULL), - _M_table(!__table - ? (const mask*) (__libc_attr._ctype_tbl->_class + 1) - : __table) - @{ @} -@end example - -@noindent -There are two parts of this that you might choose to alter. The first, -and most important, is the line involving @code{__libc_attr}. That is -IRIX system-dependent code that gets the base of the table mapping -character codes to attributes. You need to substitute code that obtains -the address of this table on your system. If you want to use your -operating system's tables to map upper-case letters to lower-case, and -vice versa, you should initialize @code{_M_toupper} and -@code{_M_tolower} with those tables, in similar fashion. - -Now, you have to write two functions to convert from upper-case to -lower-case, and vice versa. Here are the IRIX versions: - -@example -char -ctype::do_toupper(char __c) const -@{ return _toupper(__c); @} - -char -ctype::do_tolower(char __c) const -@{ return _tolower(__c); @} -@end example - -@noindent -Your C library provides equivalents to IRIX's @code{_toupper} and -@code{_tolower}. If you initialized @code{_M_toupper} and -@code{_M_tolower} above, then you could use those tables instead. - -Finally, you have to provide two utility functions that convert strings -of characters. The versions provided here will always work -- but you -could use specialized routines for greater performance if you have -machinery to do that on your system: - -@example -const char* -ctype::do_toupper(char* __low, const char* __high) const -@{ - while (__low < __high) - @{ - *__low = do_toupper(*__low); - ++__low; - @} - return __high; -@} - -const char* -ctype::do_tolower(char* __low, const char* __high) const -@{ - while (__low < __high) - @{ - *__low = do_tolower(*__low); - ++__low; - @} - return __high; -@} -@end example - -You must also provide the @file{ctype_inline.h} file, which -contains a few more functions. On most systems, you can just copy -@file{config/os/generic/ctype_inline.h} and use it on your system. - -In detail, the functions provided test characters for particular -properties; they are analogous to the functions like @code{isalpha} and -@code{islower} provided by the C library. - -The first function is implemented like this on IRIX: - -@example -bool -ctype:: -is(mask __m, char __c) const throw() -@{ return (_M_table)[(unsigned char)(__c)] & __m; @} -@end example - -@noindent -The @code{_M_table} is the table passed in above, in the constructor. -This is the table that contains the bitmasks for each character. The -implementation here should work on all systems. - -The next function is: - -@example -const char* -ctype:: -is(const char* __low, const char* __high, mask* __vec) const throw() -@{ - while (__low < __high) - *__vec++ = (_M_table)[(unsigned char)(*__low++)]; - return __high; -@} -@end example - -@noindent -This function is similar; it copies the masks for all the characters -from @code{__low} up until @code{__high} into the vector given by -@code{__vec}. - -The last two functions again are entirely generic: - -@example -const char* -ctype:: -scan_is(mask __m, const char* __low, const char* __high) const throw() -@{ - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; -@} - -const char* -ctype:: -scan_not(mask __m, const char* __low, const char* __high) const throw() -@{ - while (__low < __high && this->is(__m, *__low)) - ++__low; - return __low; -@} -@end example - -@c --------------------------------------------------------------------- -@c Thread safety -@c --------------------------------------------------------------------- - -@node Thread safety -@chapter Thread safety - -The C++ library string functionality requires a couple of atomic -operations to provide thread-safety. If you don't take any special -action, the library will use stub versions of these functions that are -not thread-safe. They will work fine, unless your applications are -multi-threaded. - -If you want to provide custom, safe, versions of these functions, there -are two distinct approaches. One is to provide a version for your CPU, -using assembly language constructs. The other is to use the -thread-safety primitives in your operating system. In either case, you -make a file called @file{atomicity.h}, and the variable -@code{ATOMICITYH} must point to this file. - -If you are using the assembly-language approach, put this code in -@file{config/cpu//atomicity.h}, where chip is the name of -your processor (@pxref{CPU}). No additional changes are necessary to -locate the file in this case; @code{ATOMICITYH} will be set by default. - -If you are using the operating system thread-safety primitives approach, -you can also put this code in the same CPU directory, in which case no more -work is needed to locate the file. For examples of this approach, -see the @file{atomicity.h} file for IRIX or IA64. - -Alternatively, if the primitives are more closely related to the OS -than they are to the CPU, you can put the @file{atomicity.h} file in -the @ref{Operating system} directory instead. In this case, you must -edit @file{configure.host}, and in the switch statement that handles -operating systems, override the @code{ATOMICITYH} variable to point to -the appropriate @code{os_include_dir}. For examples of this approach, -see the @file{atomicity.h} file for AIX. - -With those bits out of the way, you have to actually write -@file{atomicity.h} itself. This file should be wrapped in an -include guard named @code{_GLIBCXX_ATOMICITY_H}. It should define one -type, and two functions. - -The type is @code{_Atomic_word}. Here is the version used on IRIX: - -@example -typedef long _Atomic_word; -@end example - -@noindent -This type must be a signed integral type supporting atomic operations. -If you're using the OS approach, use the same type used by your system's -primitives. Otherwise, use the type for which your CPU provides atomic -primitives. - -Then, you must provide two functions. The bodies of these functions -must be equivalent to those provided here, but using atomic operations: - -@example -static inline _Atomic_word -__attribute__ ((__unused__)) -__exchange_and_add (_Atomic_word* __mem, int __val) -@{ - _Atomic_word __result = *__mem; - *__mem += __val; - return __result; -@} - -static inline void -__attribute__ ((__unused__)) -__atomic_add (_Atomic_word* __mem, int __val) -@{ - *__mem += __val; -@} -@end example - -@c --------------------------------------------------------------------- -@c Numeric limits -@c --------------------------------------------------------------------- - -@node Numeric limits -@chapter Numeric limits - -The C++ library requires information about the fundamental data types, -such as the minimum and maximum representable values of each type. -You can define each of these values individually, but it is usually -easiest just to indicate how many bits are used in each of the data -types and let the library do the rest. For information about the -macros to define, see the top of @file{include/bits/std_limits.h}. - -If you need to define any macros, you can do so in @file{os_defines.h}. -However, if all operating systems for your CPU are likely to use the -same values, you can provide a CPU-specific file instead so that you -do not have to provide the same definitions for each operating system. -To take that approach, create a new file called @file{cpu_limits.h} in -your CPU configuration directory (@pxref{CPU}). - -@c --------------------------------------------------------------------- -@c Libtool -@c --------------------------------------------------------------------- - -@node Libtool -@chapter Libtool - -The C++ library is compiled, archived and linked with libtool. -Explaining the full workings of libtool is beyond the scope of this -document, but there are a few, particular bits that are necessary for -porting. - -Some parts of the libstdc++-v3 library are compiled with the libtool -@code{--tags CXX} option (the C++ definitions for libtool). Therefore, -@file{ltcf-cxx.sh} in the top-level directory needs to have the correct -logic to compile and archive objects equivalent to the C version of libtool, -@file{ltcf-c.sh}. Some libtool targets have definitions for C but not -for C++, or C++ definitions which have not been kept up to date. - -The C++ run-time library contains initialization code that needs to be -run as the library is loaded. Often, that requires linking in special -object files when the C++ library is built as a shared library, or -taking other system-specific actions. - -The libstdc++-v3 library is linked with the C version of libtool, even -though it is a C++ library. Therefore, the C version of libtool needs to -ensure that the run-time library initializers are run. The usual way to -do this is to build the library using @code{gcc -shared}. - -If you need to change how the library is linked, look at -@file{ltcf-c.sh} in the top-level directory. Find the switch statement -that sets @code{archive_cmds}. Here, adjust the setting for your -operating system. - -@c --------------------------------------------------------------------- -@c GFDL -@c --------------------------------------------------------------------- - -@include fdl.texi - -@c --------------------------------------------------------------------- -@c Epilogue -@c --------------------------------------------------------------------- - -@contents -@bye diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/18_support/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/18_support/howto.html deleted file mode 100644 index eff1c75be..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/18_support/howto.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 18: Library Support - - - - - - - - - -

Chapter 18: Library Support

- -

Chapter 18 deals with the functions called and objects created - automatically during the course of a program's existence. -

-

While we can't reproduce the contents of the Standard here (you need to - get your own copy from your nation's member body; see our homepage for - help), we can mention a couple of changes in what kind of support a C++ - program gets from the Standard Library. -

- - - -
-

Contents

- - -
- - - -

Types

-

All the types that you're used to in C are here in one form or - another. The only change that might affect people is the type of - NULL: while it is required to be a macro, the definition of that - macro is not allowed to be (void*)0, which is - often used in C. -

-

In g++, NULL is #define'd to be __null, a magic keyword - extension of g++. -

-

The biggest problem of #defining NULL to be something like - "0L" is that the compiler will view that as a long integer - before it views it as a pointer, so overloading won't do what you - expect. (This is why g++ has a magic extension, so that NULL is - always a pointer.) -

-

In his book - Effective C++, - Scott Meyers points out that the best way to solve this problem is to - not overload on pointer-vs-integer types to begin with. He also - offers a way to make your own magic NULL that will match pointers - before it matches integers: -

-
-   const                             // this is a const object...
-   class {
-   public:
-     template<class T>               // convertible to any type
-       operator T*() const           // of null non-member
-       { return 0; }                 // pointer...
-
-     template<class C, class T>      // or any type of null
-       operator T C::*() const       // member pointer...
-       { return 0; }
-
-   private:
-     void operator&() const;         // whose address can't be
-                                     // taken (see Item 27)...
-
-   } NULL;                           // and whose name is NULL
-   
-

(Cribbed from the published version of - the - Effective C++ CD, reproduced here with permission.) -

-

If you aren't using g++ (why?), but you do have a compiler which - supports member function templates, then you can use this definition - of NULL (be sure to #undef any existing versions). It only helps if - you actually use NULL in function calls, though; if you make a call of - foo(0); instead of foo(NULL);, then you're back - where you started. -

-

Added Note: When we contacted Dr. Meyers to ask - permission to - print this stuff, it prompted him to run this code through current - compilers to see what the state of the art is with respect to member - template functions. He posted - an - article to Usenet after discovering that the code above is not - valid! Even though it has no data members, it still needs a - user-defined constructor (which means that the class needs a type name - after all). The ctor can have an empty body; it just needs to be - there. (Stupid requirement? We think so too, and this will probably - be changed in the language itself.) -

-

Return to top of page or - to the FAQ. -

- -
-

Implementation properties

-

<limits>

-

This header mainly defines traits classes to give access to various - implementation defined-aspects of the fundamental types. The - traits classes -- fourteen in total -- are all specilizations of the - template class numeric_limits, documented - here - and defined as follows: -

-
-   template<typename T> struct class {
-      static const bool is_specialized;
-      static T max() throw();
-      static T min() throw();
-
-      static const int digits;
-      static const int digits10;
-      static const bool is_signed;
-      static const bool is_integer;
-      static const bool is_exact;
-      static const int radix;
-      static T epsilon() throw();
-      static T round_error() throw();
-
-      static const int min_exponent;
-      static const int min_exponent10;
-      static const int max_exponent;
-      static const int max_exponent10;
-
-      static const bool has_infinity;
-      static const bool has_quiet_NaN;
-      static const bool has_signaling_NaN;
-      static const float_denorm_style has_denorm;
-      static const bool has_denorm_loss;
-      static T infinity() throw();
-      static T quiet_NaN() throw();
-      static T denorm_min() throw();
-
-      static const bool is_iec559;
-      static const bool is_bounded;
-      static const bool is_modulo;
-
-      static const bool traps;
-      static const bool tinyness_before;
-      static const float_round_style round_style;
-   };
-

Return to top of page or - to the FAQ. -

- -
-

Start and Termination

-

Not many changes here to <cstdlib> (the old stdlib.h). - You should note that the abort() function does not call - the destructors of automatic nor static objects, so if you're depending - on those to do cleanup, it isn't going to happen. (The functions - registered with atexit() don't get called either, so you - can forget about that possibility, too.) -

-

The good old exit() function can be a bit funky, too, until - you look closer. Basically, three points to remember are: -

-
    -
  1. Static objects are destroyed in reverse order of their creation. -
  2. -
  3. Functions registered with atexit() are called in - reverse order of registration, once per registration call. - (This isn't actually new.) -
  4. -
  5. The previous two actions are "interleaved," that is, - given this pseudocode: -
    -              extern "C or C++" void  f1 (void);
    -              extern "C or C++" void  f2 (void);
    -
    -              static Thing obj1;
    -              atexit(f1);
    -              static Thing obj2;
    -              atexit(f2);
    -            
    - then at a call of exit(), f2 will be called, then - obj2 will be destroyed, then f1 will be called, and finally obj1 - will be destroyed. If f1 or f2 allow an exception to propagate - out of them, Bad Things happen. -
  6. -
-

Note also that atexit() is only required to store 32 - functions, and the compiler/library might already be using some of - those slots. If you think you may run out, we recommend using - the xatexit/xexit combination from libiberty, which has no such limit. -

-

Return to top of page or - to the FAQ. -

- -
-

Verbose terminate

-

If you are having difficulty with uncaught exceptions and want a - little bit of help debugging the causes of the core dumps, you can - make use of a GNU extension in GCC 3.1 and later: -

-
-   #include <exception>
-
-   int main()
-   {
-       std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
-       ...
-       throw anything;
-   }
-

The __verbose_terminate_handler function obtains the name - of the current exception, attempts to demangle it, and prints it to - stderr. If the exception is derived from std::exception - then the output from what() will be included. -

-

Any replacement termination function is required to kill the program - without returning; this one calls abort. -

-

For example: -

-
-   #include <exception>
-   #include <stdexcept>
-
-   struct argument_error : public std::runtime_error
-   {  
-     argument_error(const std::string& s): std::runtime_error(s) { }
-   };
-
-   int main(int argc)
-   {
-     std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
-     if (argc > 5)
-       throw argument_error("argc is greater than 5!");
-     else
-       throw argc;
-   }
-   
-

In GCC 3.1 and later, this gives -

-
-   % ./a.out
-   terminate called after throwing a `int'
-   Aborted
-   % ./a.out f f f f f f f f f f f
-   terminate called after throwing an instance of `argument_error'
-   what(): argc is greater than 5!
-   Aborted
-   %
-

The 'Aborted' line comes from the call to abort(), of course. -

-

UPDATE: Starting with GCC 3.4, this is the default - termination handler; nothing need be done to use it. To go back to - the previous "silent death" method, simply include - <exception> and <cstdlib>, - and call -

-
-       std::set_terminate(std::abort);
-

Return to top of page or - to the FAQ. -

- -

- This function will attempt to write to stderr. If your application - closes stderr or redirects it to an inappropriate location, - __verbose_terminate_handler will behave in an - unspecified manner. -

- -
-

Dynamic memory management

-

There are six flavors each of new and - delete, so make certain that you're using the right - ones! Here are quickie descriptions of new: -

-
    -
  • single object form, throwing a bad_alloc on errors; - this is what most people are used to using
  • -
  • single object "nothrow" form, returning NULL on errors
  • -
  • array new, throwing bad_alloc on errors
  • -
  • array nothrow new, returning NULL on errors
  • -
  • placement new, which does nothing (like it's supposed to)
  • -
  • placement array new, which also does nothing
  • -
-

They are distinguished by the parameters that you pass to them, like - any other overloaded function. The six flavors of delete - are distinguished the same way, but none of them are allowed to throw - an exception under any circumstances anyhow. (They match up for - completeness' sake.) -

-

Remember that it is perfectly okay to call delete on a - NULL pointer! Nothing happens, by definition. That is not the - same thing as deleting a pointer twice. -

-

By default, if one of the "throwing news" can't - allocate the memory requested, it tosses an instance of a - bad_alloc exception (or, technically, some class derived - from it). You can change this by writing your own function (called a - new-handler) and then registering it with set_new_handler(): -

-
-   typedef void (*PFV)(void);
-
-   static char*  safety;
-   static PFV    old_handler;
-
-   void my_new_handler ()
-   {
-       delete[] safety;
-       popup_window ("Dude, you are running low on heap memory.  You
-                      should, like, close some windows, or something.
-                      The next time you run out, we're gonna burn!");
-       set_new_handler (old_handler);
-       return;
-   }
-
-   int main ()
-   {
-       safety = new char[500000];
-       old_handler = set_new_handler (&my_new_handler);
-       ...
-   }
-   
-

bad_alloc is derived from the base exception - class defined in Chapter 19. -

-

Return to top of page or - to the FAQ. -

- -
-

RTTI, the ABI, and demangling

-

If you have read the source - documentation for namespace abi then you are aware - of the cross-vendor C++ ABI which we use. One of the exposed - functions is the one which we use for demangling in programs like - c++filt, and you can use it yourself as well. -

-

(The function itself might use different demanglers, but that's the - whole point of abstract interfaces. If we change the implementation, - you won't notice.) -

-

Probably the only times you'll be interested in demangling at runtime - are when you're seeing typeid strings in RTTI, or when - you're handling the runtime-support exception classes. For example: -

-
-#include <exception>
-#include <iostream>
-#include <cxxabi.h>
-
-struct empty { };
-
-template <typename T, int N>
-  struct bar { };
-
-
-int main()
-{
-  int     status;
-  char   *realname;
-
-  // exception classes not in <stdexcept>, thrown by the implementation
-  // instead of the user
-  std::bad_exception  e;
-  realname = abi::__cxa_demangle(e.what(), 0, 0, &status);
-  std::cout << e.what() << "\t=> " << realname << "\t: " << status << '\n';
-  free(realname);
-
-
-  // typeid
-  bar<empty,17>          u;
-  const std::type_info  &ti = typeid(u);
-
-  realname = abi::__cxa_demangle(ti.name(), 0, 0, &status);
-  std::cout << ti.name() << "\t=> " << realname << "\t: " << status << '\n';
-  free(realname);
-
-  return 0;
-}
-

With GCC 3.1 and later, this prints -

-
-      St13bad_exception       => std::bad_exception   : 0
-      3barI5emptyLi17EE       => bar<empty, 17>       : 0 
-

The demangler interface is described in the source documentation - linked to above. It is actually written in C, so you don't need to - be writing C++ in order to demangle C++. (That also means we have to - use crummy memory management facilities, so don't forget to free() - the returned char array.) -

-

Return to top of page or - to the FAQ. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/19_diagnostics/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/19_diagnostics/howto.html deleted file mode 100644 index 7bf44c641..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/19_diagnostics/howto.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 19: Diagnostics - - - - - - - - - -

Chapter 19: Diagnostics

- -

Chapter 19 deals with program diagnostics, such as exceptions - and assertions. You know, all the things we wish weren't even - necessary at all. -

- - - -
-

Contents

- - -
- - - -

Adding data to exceptions

-

The standard exception classes carry with them a single string as - data (usually describing what went wrong or where the 'throw' took - place). It's good to remember that you can add your own data to - these exceptions when extending the hierarchy: -

-
-   struct My_Exception : public std::runtime_error
-   {
-     public:
-       My_Exception (const string& whatarg)
-           : std::runtime_error(whatarg), e(errno), id(GetDataBaseID()) { }
-       int  errno_at_time_of_throw() const { return e; }
-       DBID id_of_thing_that_threw() const { return id; }
-     protected:
-       int    e;
-       DBID   id;     // some user-defined type
-   };
-   
-

Return to top of page or - to the FAQ. -

- -
-

Exception class hierarchy diagram

-

At one point we were going to make up a PDF of the exceptions - hierarchy, akin to the one done for the I/O class hierarchy. - Time was our enemy. Since then we've moved to Doxygen, which has - the useful property of not sucking. Specifically, when the source - code is changed, the diagrams are automatically brought up to date. - For the old way, we had to update the diagrams separately. -

-

There are several links to the Doxygen-generated pages from - here. -

-

Return to top of page or - to the FAQ. -

- -
-

Concept checkers -- new and improved!

-

Better taste! Less fat! Literally!

-

In 1999, SGI added concept checkers to their implementation - of the STL: code which checked the template parameters of - instantiated pieces of the STL, in order to insure that the parameters - being used met the requirements of the standard. For example, - the Standard requires that types passed as template parameters to - vector be "Assignable" (which means what you think - it means). The checking was done during compilation, and none of - the code was executed at runtime. -

-

Unfortunately, the size of the compiler files grew significantly - as a result. The checking code itself was cumbersome. And bugs - were found in it on more than one occasion. -

-

The primary author of the checking code, Jeremy Siek, had already - started work on a replacement implementation. The new code has been - formally reviewed and accepted into - the - Boost libraries, and we are pleased to incorporate it into the - GNU C++ library. -

-

The new version imposes a much smaller space overhead on the generated - object file. The checks are also cleaner and easier to read and - understand. -

-

They are off by default for all versions of GCC from 3.0 to 3.4 (the - latest release at the time of writing). - They can be enabled at configure time with - --enable-concept-checks. - You can enable them on a per-translation-unit basis with - #define _GLIBCXX_CONCEPT_CHECKS for GCC 3.4 and higher - (or with #define _GLIBCPP_CONCEPT_CHECKS for versions - 3.1, 3.2 and 3.3). -

-

Return to top of page or - to the FAQ. -

- - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/allocator.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/allocator.html deleted file mode 100644 index d847fc0af..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/allocator.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - - - - Allocators and allocation - - - - - - - -

Allocators and allocation

- -

- The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/20_util/allocator.html. -

- -

- To the libstdc++-v3 homepage. -

- - -
-

The C++ Standard encapsulates memory management characteristics - for strings, container classes, and parts of iostreams in a - template class called std::allocator. -

- -

- Standard requirements -

-

The C++ standard only gives a few directives in this area: -

-
    -
  • When you add elements to a container, and the container must allocate - more memory to hold them, the container makes the request via its - Allocator template parameter. This includes adding - chars to the string class, which acts as a regular STL container - in this respect. -
  • -
  • The default Allocator of every container-of-T is - std::allocator<T>. -
  • -
  • The interface of the allocator<T> class is - extremely simple. It has about 20 public declarations (nested - typedefs, member functions, etc), but the two which concern us most - are: -
    -      T*    allocate   (size_type n, const void* hint = 0);
    -      void  deallocate (T* p, size_type n);
    - (This is a simplification; the real signatures use nested typedefs.) - The "n" arguments in both those functions is a - count of the number of T's to allocate space for, - not their total size. -
  • -
  • "The storage is obtained by calling - ::operator new(size_t), but it is unspecified when or - how often this function is called. The use of hint - is unspecified, but intended as an aid to locality if an - implementation so desires." [20.4.1.1]/6 -
  • -
- -

Complete details cam be found in the C++ standard, look in - [20.4 Memory]. -

- -

- Problems and Possibilities -

-

The easiest way of fulfilling the requirements is to call operator new - each time a container needs memory, and to call operator delete each - time the container releases memory. BUT - this - method is horribly slow. -

-

Or we can keep old memory around, and reuse it in a pool to save time. - The old libstdc++-v2 used a memory pool, and so do we. As of 3.0, - it's - on by default. The pool is shared among all the containers in the - program: when your program's std::vector<int> gets cut in half - and frees a bunch of its storage, that memory can be reused by the - private std::list<WonkyWidget> brought in from a KDE library - that you linked against. And we don't have to call operators new and - delete to pass the memory on, either, which is a speed bonus. - BUT... -

-

What about threads? No problem: in a threadsafe environment, the - memory pool is manipulated atomically, so you can grow a container in - one thread and shrink it in another, etc. BUT what - if threads in libstdc++-v3 aren't set up properly? - That's been answered already. -

-

BUT what if you want to use your own allocator? What - if you plan on using a runtime-loadable version of malloc() which uses - shared telepathic anonymous mmap'd sections serializable over a - network, so that memory requests should go through malloc? - And what if you need to debug it? -

- -

- Implementation details of std::allocator -

-

The implementation of std::allocator has continued - to evolve through successive releases. Here's a brief history. -

- -
- 3.0, 3.1, 3.2, 3.3 -
-

During this period, all allocators were written to the SGI - style, and all STL containers expected this interface. This - interface had a traits class called _Alloc_traits that - attempted to provide more information for compile-time allocation - selection and optimization. This traits class had another allocator - wrapper, __simple_alloc<T,A>, which was a - wrapper around another allocator, A, which itself is an allocator - for instances of T. But wait, there's more: - __allocator<T,A> is another adapter. Many of - the provided allocator classes were SGI style: such classes can be - changed to a conforming interface with this wrapper: - __allocator<T, __alloc> is thus the same as - allocator<T>. -

- -

The class std::allocator use the typedef - __alloc to select an underlying allocator that - satisfied memory allocation requests. The selection of this - underlying allocator was not user-configurable. -

- -
- 3.4 -
-

For this and later releases, the only allocator interface that - is support is the standard C++ interface. As such, all STL - containers have been adjusted, and all external allocators have - been modified to support this change. Because of this, - __simple_alloc, __allocator, __alloc, and - _Alloc_traits have all been removed. -

- -

The class std::allocator just has typedef, - constructor, and rebind members. It inherits from one of the - high-speed extension allocators, covered below. Thus, all - allocation and deallocation depends on the base class. -

- -

The base class that std::allocator is derived from - is not user-configurable. -

- -
- How the default allocation strategy is selected. -
-

It's difficult to pick an allocation strategy that will provide - maximum utility, without excessively penalizing some behavior. In - fact, it's difficult just deciding which typical actions to measure - for speed. -

- -

Three synthetic benchmarks have been created that provide data - that is used to compare different C++ allocators. These tests are: -

- -
    -
  • Insertion. Over multiple iterations, various STL container - objects have elements inserted to some maximum amount. A variety - of allocators are tested. - Test source here. -
  • - -
  • Insertion, clear, and re-insertion in a multi-threaded - environment. Over multiple iterations, several threads are - started that insert elements into a STL container, then assign a - null instance of the same type to clear memory, and then - re-insert the same number of elements. Several STL containers and - multiple allocators are tested. This test shows the ability of - the allocator to reclaim memory on a pre-thread basis, as well as - measuring thread contention for memory resources. - Test source - - here. -
  • - -
  • A threaded producer/consumer model. - Test source - - here. -
  • -
- -
- Disabling memory caching. -
-

In use, std::allocator may allocate and deallocate - using implementation-specified strategies and heuristics. Because of - this, every call to an allocator object's allocate - member function may not actually call the global operator new. This - situation is also duplicated for calls to the - deallocate member function. -

- -

This can be confusing. -

- -

In particular, this can make debugging memory errors more - difficult, especially when using third party tools like valgrind or - debug versions of new. -

- -

There are various ways to solve this problem. One would be to - use a custom allocator that just called operators new - and delete directly, for every - allocation. (See include/ext/new_allocator.h, for instance.) - However, that option would involve changing source code to use the a - non-default allocator. Another option is to force the default - allocator to remove caching and pools, and to directly allocate - with every call of allocate and directly deallocate - with every call of deallocate, regardless of - efficiency. As it turns out, this last option is available, - although the exact mechanism has evolved with time. -

- -

For GCC releases from 2.95 through the 3.1 series, defining - __USE_MALLOC on the gcc command line would change the - default allocation strategy to instead use malloc and - free. See - this note - for details as to why this was something needing improvement. -

- -

Starting with GCC 3.2, and continued in the 3.3 series, to - globally disable memory caching within the library for the - default allocator, merely set GLIBCPP_FORCE_NEW (at this time, - with any value) in the system's environment before running the - program. If your program crashes with GLIBCPP_FORCE_NEW in the - environment, it likely means that you linked against objects - built against the older library. Code to support this extension - is fully compatible with 3.2 code if GLIBCPP_FORCE_NEW is not in - the environment. -

- -

As it turns out, the 3.4 code base continues to use this - mechanism, only the environment variable has been changed to - GLIBCXX_FORCE_NEW. -

- -

- Other allocators -

-

Several other allocators are provided as part of this - implementation. The location of the extension allocators and their - names have changed, but in all cases, functionality is - equivalent. Starting with gcc-3.4, all extension allocators are - standard style. Before this point, SGI style was the norm. Because of - this, the number of template arguments also changed. Here's a simple - chart to track the changes. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Allocator (3.4)Header (3.4)Allocator (3.[0-3])Header (3.[0-3])
__gnu_cxx::new_allocator<T><ext/new_allocator.h>std::__new_alloc<memory>
__gnu_cxx::malloc_allocator<T><ext/malloc_allocator.h>std::__malloc_alloc_template<int><memory>
__gnu_cxx::debug_allocator<T><ext/debug_allocator.h>std::debug_alloc<T><memory>
__gnu_cxx::__pool_alloc<T><ext/pool_allocator.h>std::__default_alloc_template<bool,int><memory>
__gnu_cxx::__mt_alloc<T><ext/mt_allocator.h>
__gnu_cxx::bitmap_allocator<T><ext/bitmap_allocator.h>
- -

Releases after gcc-3.4 have continued to add to the collection - of available allocators. All of these new allocators are - standard-style. The following table includes details, along with - the first released version of GCC that included the extension allocator. -

- - - - - - - - - - - - -
AllocatorIncludeVersion
__gnu_cxx::array_allocator<T><ext/array_allocator.h>4.0.0
- -

More details on each of these extension allocators follows.

-
    -
  • new_allocator -

    Simply wraps ::operator new - and ::operator delete. -

    -
  • -
  • malloc_allocator -

    Simply wraps - malloc and free. There is also a hook - for an out-of-memory handler (for new/delete this is taken care of - elsewhere). -

    -
  • -
  • array_allocator -

    Allows allocations of known and fixed sizes using existing - global or external storage allocated via construction of - std::tr1::array objects. By using this allocator, fixed size - containers (including std::string) can be used without - instances calling ::operator new and - ::operator delete. This capability allows the - use of STL abstractions without runtime complications or - overhead, even in situations such as program startup. For - usage examples, please consult the libstdc++ testsuite. -

    -
  • -
  • debug_allocator -

    A wrapper around an - arbitrary allocator A. It passes on slightly increased size - requests to A, and uses the extra memory to store size information. - When a pointer is passed to deallocate(), the stored - size is checked, and assert() is used to guarantee they match. -

    -
  • -
  • __pool_alloc -

    A high-performance, single pool allocator. The reusable - memory is shared among identical instantiations of this type. - It calls through ::operator new to obtain new memory - when its lists run out. If a client container requests a block - larger than a certain threshold size, then the pool is bypassed, - and the allocate/deallocate request is passed to - ::operator new directly.

    - -

    For versions of __pool_alloc after 3.4.0, there is - only one template parameter, as per the standard. -

    - -

    Older versions of this class take a boolean template parameter, - called thr, and an integer template parameter, - called inst. -

    - -

    The inst number is used to track additional memory - pools. The point of the number is to allow multiple - instantiations of the classes without changing the semantics at - all. All three of -

    - -
    -    typedef  __pool_alloc<true,0>    normal;
    -    typedef  __pool_alloc<true,1>    private;
    -    typedef  __pool_alloc<true,42>   also_private;
    -

    behave exactly the same way. However, the memory pool for each type - (and remember that different instantiations result in different types) - remains separate. -

    -

    The library uses 0 in all its instantiations. If you - wish to keep separate free lists for a particular purpose, use a - different number. -

    -

    The thr boolean determines whether the pool should - be manipulated atomically or not. When thr=true, the allocator - is is threadsafe, while thr=false, and is slightly faster but - unsafe for multiple threads. -

    - -

    For thread-enabled configurations, the pool is locked with a - single big lock. In some situations, this implementation detail may - result in severe performance degredation. -

    - -

    (Note that the GCC thread abstraction layer allows us to provide safe - zero-overhead stubs for the threading routines, if threads were - disabled at configuration time.) -

    - -
  • - -
  • __mt_alloc -

    A high-performance - fixed-size allocator. It has its own documentation, found here. -

    -
  • - -
  • bitmap_allocator -

    A high-performance allocator that uses a bit-map to keep track - of the used and unused memory locations. It has its own - documentation, found here. -

    -
  • -
- - -

- Using a specific allocator -

-

You can specify different memory management schemes on a - per-container basis, by overriding the default - Allocator template parameter. For example, an easy - (but non-portable) method of specifying that only malloc/free - should be used instead of the default node allocator is: -

-
-    std::list <int, __gnu_cxx::malloc_allocator<int> >  malloc_list;
- Likewise, a debugging form of whichever allocator is currently in use: -
-    std::deque <int, __gnu_cxx::debug_allocator<std::allocator<int> > >  debug_deque;
- - -

- Writing custom allocators -

-

Writing a portable C++ allocator would dictate that the - interface would look much like the one specified for - std::allocator. Additional member functions, but not - subtractions, would be permissible. -

- -

Probably the best place to start would be to copy one of the - extension allocators already shipped with libstdc++: say, - new_allocator . -

- - -

- Bibliography / Further Reading -

-

- ISO/IEC 14882:1998 Programming languages - C++ [20.4 Memory] -

- -

- Austern, Matt, C/C++ Users Journal. - The Standard Librarian: What Are Allocators Good - For? -

- -

- Berger, Emery, - The Hoard memory allocator -

- -

- Berger, Emery with Ben Zorn & Kathryn McKinley, OOPSLA 2002 - Reconsidering Custom Memory Allocation -

- -

- Kreft, Klaus and Angelika Langer, C++ Report, June 1998 - Allocator Types -

- -

- Stroustrup, Bjarne, 19.4 Allocators, The C++ Programming - Language, Special Edition, Addison Wesley, Inc. 2000 -

- -

- Yen, Felix, Yalloc: A Recycling C++ Allocator -

- -
-

Return to the top of the page or - to the libstdc++ homepage. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/howto.html deleted file mode 100644 index 4c404595a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/20_util/howto.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 20: General Utilities - - - - - - - - - - -

Chapter 20: General Utilities

- -

Chapter 20 deals with utility classes and functions, such as - the oft-debated auto_ptr<>. -

- - - -
-

Contents

- - -
- - - -

auto_ptr is not omnipotent

-

I'm not going to try and explain all of the fun and delicious - things that can happen with misuse of the auto_ptr class template - (called AP here), nor am I going to try and teach you how to use - AP safely in the presence of copying. The AP class is a really - nifty idea for a smart pointer, but it is one of the dumbest of - all the smart pointers -- and that's fine. -

-

AP is not meant to be a supersmart solution to all resource - leaks everywhere. Neither is it meant to be an effective form - of garbage collection (although it can help, a little bit). - And it can not be used for arrays! -

-

AP is meant to prevent nasty leaks in the presence of - exceptions. That's all. This code is AP-friendly: -

-
-    // not a recommend naming scheme, but good for web-based FAQs
-    typedef std::auto_ptr<MyClass>  APMC;
-
-    extern function_taking_MyClass_pointer (MyClass*);
-    extern some_throwable_function ();
-
-    void func (int data)
-    {
-        APMC  ap (new MyClass(data));
-
-        some_throwable_function();   // this will throw an exception
-
-        function_taking_MyClass_pointer (ap.get());
-    }
-   
-

When an exception gets thrown, the instance of MyClass that's - been created on the heap will be delete'd as the stack is - unwound past func(). -

-

Changing that code as follows is not AP-friendly: -

-
-        APMC  ap (new MyClass[22]);
-   
-

You will get the same problems as you would without the use - of AP: -

-
-        char*  array = new char[10];       // array new...
-        ...
-        delete array;                      // ...but single-object delete
-   
-

AP cannot tell whether the pointer you've passed at creation points - to one or many things. If it points to many things, you are about - to die. AP is trivial to write, however, so you could write your - own auto_array_ptr for that situation (in fact, this has - been done many times; check the mailing lists, Usenet, Boost, etc). -

-

Return to top of page or - to the FAQ. -

- -
-

auto_ptr inside container classes

-

All of the containers - described in the standard library require their contained types - to have, among other things, a copy constructor like this: -

-
-    struct My_Type
-    {
-        My_Type (My_Type const&);
-    };
-   
-

Note the const keyword; the object being copied shouldn't change. - The template class auto_ptr (called AP here) does not - meet this requirement. Creating a new AP by copying an existing - one transfers ownership of the pointed-to object, which means that - the AP being copied must change, which in turn means that the - copy ctors of AP do not take const objects. -

-

The resulting rule is simple: Never ever use a container of - auto_ptr objects. The standard says that "undefined" - behavior is the result, but it is guaranteed to be messy. -

-

To prevent you from doing this to yourself, the - concept checks built - in to this implementation will issue an error if you try to - compile code like this: -

-
-    #include <vector>
-    #include <memory>
-    
-    void f()
-    {
-        std::vector< std::auto_ptr<int> >   vec_ap_int;
-    }
-   
-

Should you try this with the checks enabled, you will see an error. -

-

Return to top of page or - to the FAQ. -

- -
-

Functors

-

If you don't know what functors are, you're not alone. Many people - get slightly the wrong idea. In the interest of not reinventing - the wheel, we will refer you to the introduction to the functor - concept written by SGI as part of their STL, in - their - http://www.sgi.com/tech/stl/functors.html. -

-

Return to top of page or - to the FAQ. -

- -
-

Pairs

-

The pair<T1,T2> is a simple and handy way to - carry around a pair of objects. One is of type T1, and another of - type T2; they may be the same type, but you don't get anything - extra if they are. The two members can be accessed directly, as - .first and .second. -

-

Construction is simple. The default ctor initializes each member - with its respective default ctor. The other simple ctor, -

-
-    pair (const T1& x, const T2& y);
-   
-

does what you think it does, first getting x - and second getting y. -

-

There is a copy constructor, but it requires that your compiler - handle member function templates: -

-
-    template <class U, class V> pair (const pair<U,V>& p);
-   
-

The compiler will convert as necessary from U to T1 and from - V to T2 in order to perform the respective initializations. -

-

The comparison operators are done for you. Equality - of two pair<T1,T2>s is defined as both first - members comparing equal and both second members comparing - equal; this simply delegates responsibility to the respective - operator== functions (for types like MyClass) or builtin - comparisons (for types like int, char, etc). -

-

- The less-than operator is a bit odd the first time you see it. It - is defined as evaluating to: - -

-
-    x.first  <  y.first  ||
-        ( !(y.first  <  x.first)  &&  x.second  <  y.second )
-   
-

The other operators are not defined using the rel_ops - functions above, but their semantics are the same. -

-

Finally, there is a template function called make_pair - that takes two references-to-const objects and returns an - instance of a pair instantiated on their respective types: -

-
-    pair<int,MyClass> p = make_pair(4,myobject);
-   
-

Return to top of page or - to the FAQ. -

- -
-

Memory allocators

-

The available free store ("heap") management classes are - described here. -

-

Return to top of page or - to the FAQ. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/gotw29a.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/gotw29a.txt deleted file mode 100644 index 932660485..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/gotw29a.txt +++ /dev/null @@ -1,159 +0,0 @@ -From: herbs@cntc.com (Herb Sutter) -Subject: Guru of the Week #29: Solution -Date: 22 Jan 1998 00:00:00 GMT -Message-ID: <6a8q26$9qa@netlab.cs.rpi.edu> -Newsgroups: comp.lang.c++.moderated - - - .--------------------------------------------------------------------. - | Guru of the Week problems and solutions are posted regularly on | - | news:comp.lang.c++.moderated. For past problems and solutions | - | see the GotW archive at http://www.cntc.com. | - | Is there a topic you'd like to see covered? mailto:herbs@cntc.com | - `--------------------------------------------------------------------' -_______________________________________________________ - -GotW #29: Strings - -Difficulty: 7 / 10 -_______________________________________________________ - - ->Write a ci_string class which is identical to the ->standard 'string' class, but is case-insensitive in the ->same way as the C function stricmp(): - -The "how can I make a case-insensitive string?" -question is so common that it probably deserves its own -FAQ -- hence this issue of GotW. - -Note 1: The stricmp() case-insensitive string -comparison function is not part of the C standard, but -it is a common extension on many C compilers. - -Note 2: What "case insensitive" actually means depends -entirely on your application and language. For -example, many languages do not have "cases" at all, and -for languages that do you have to decide whether you -want accented characters to compare equal to unaccented -characters, and so on. This GotW provides guidance on -how to implement case-insensitivity for standard -strings in whatever sense applies to your particular -situation. - - -Here's what we want to achieve: - -> ci_string s( "AbCdE" ); -> -> // case insensitive -> assert( s == "abcde" ); -> assert( s == "ABCDE" ); -> -> // still case-preserving, of course -> assert( strcmp( s.c_str(), "AbCdE" ) == 0 ); -> assert( strcmp( s.c_str(), "abcde" ) != 0 ); - -The key here is to understand what a "string" actually -is in standard C++. If you look in your trusty string -header, you'll see something like this: - - typedef basic_string string; - -So string isn't really a class... it's a typedef of a -template. In turn, the basic_string<> template is -declared as follows, in all its glory: - - template, - class Allocator = allocator > - class basic_string; - -So "string" really means "basic_string, allocator >". We don't need -to worry about the allocator part, but the key here is -the char_traits part because char_traits defines how -characters interact and compare(!). - -basic_string supplies useful comparison functions that -let you compare whether a string is equal to another, -less than another, and so on. These string comparisons -functions are built on top of character comparison -functions supplied in the char_traits template. In -particular, the char_traits template supplies character -comparison functions named eq(), ne(), and lt() for -equality, inequality, and less-than comparisons, and -compare() and find() functions to compare and search -sequences of characters. - -If we want these to behave differently, all we have to -do is provide a different char_traits template! Here's -the easiest way: - - struct ci_char_traits : public char_traits - // just inherit all the other functions - // that we don't need to override - { - static bool eq( char c1, char c2 ) { - return tolower(c1) == tolower(c2); - } - - static bool ne( char c1, char c2 ) { - return tolower(c1) != tolower(c2); - } - - static bool lt( char c1, char c2 ) { - return tolower(c1) < tolower(c2); - } - - static int compare( const char* s1, - const char* s2, - size_t n ) { - return strnicmp( s1, s2, n ); - // if available on your compiler, - // otherwise you can roll your own - } - - static const char* - find( const char* s, int n, char a ) { - while( n-- > 0 && tolower(*s) != tolower(a) ) { - ++s; - } - return n >= 0 ? s : 0; - } - }; - -[N.B. A bug in the original code has been fixed for the -GCC documentation, the corrected code was taken from -Herb Sutter's book, Exceptional C++] - -And finally, the key that brings it all together: - - typedef basic_string ci_string; - -All we've done is created a typedef named "ci_string" -which operates exactly like the standard "string", -except that it uses ci_char_traits instead of -char_traits to get its character comparison -rules. Since we've handily made the ci_char_traits -rules case-insensitive, we've made ci_string itself -case-insensitive without any further surgery -- that -is, we have a case-insensitive string without having -touched basic_string at all! - -This GotW should give you a flavour for how the -basic_string template works and how flexible it is in -practice. If you want different comparisons than the -ones stricmp() and tolower() give you, just replace the -five functions shown above with your own code that -performs character comparisons the way that's -appropriate in your particular application. - - - -Exercise for the reader: - -Is it safe to inherit ci_char_traits from -char_traits this way? Why or why not? - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/howto.html deleted file mode 100644 index ed2e74384..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/howto.html +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 21: Strings - - - - - - - - - -

Chapter 21: Strings

- -

Chapter 21 deals with the C++ strings library (a welcome relief). -

- - - -
-

Contents

- - -
- - - -

MFC's CString

-

A common lament seen in various newsgroups deals with the Standard - string class as opposed to the Microsoft Foundation Class called - CString. Often programmers realize that a standard portable - answer is better than a proprietary nonportable one, but in porting - their application from a Win32 platform, they discover that they - are relying on special functions offered by the CString class. -

-

Things are not as bad as they seem. In - this - message, Joe Buck points out a few very important things: -

-
    -
  • The Standard string supports all the operations - that CString does, with three exceptions. -
  • -
  • Two of those exceptions (whitespace trimming and case - conversion) are trivial to implement. In fact, we do so - on this page. -
  • -
  • The third is CString::Format, which allows formatting - in the style of sprintf. This deserves some mention: -
  • -
-

- The old libg++ library had a function called form(), which did much - the same thing. But for a Standard solution, you should use the - stringstream classes. These are the bridge between the iostream - hierarchy and the string class, and they operate with regular - streams seamlessly because they inherit from the iostream - hierarchy. An quick example: - -

-
-   #include <iostream>
-   #include <string>
-   #include <sstream>
-
-   string f (string& incoming)     // incoming is "foo  N"
-   {
-       istringstream   incoming_stream(incoming);
-       string          the_word;
-       int             the_number;
-
-       incoming_stream >> the_word        // extract "foo"
-                       >> the_number;     // extract N
-
-       ostringstream   output_stream;
-       output_stream << "The word was " << the_word
-                     << " and 3*N was " << (3*the_number);
-
-       return output_stream.str();
-   } 
-

A serious problem with CString is a design bug in its memory - allocation. Specifically, quoting from that same message: -

-
-   CString suffers from a common programming error that results in
-   poor performance.  Consider the following code:
-   
-   CString n_copies_of (const CString& foo, unsigned n)
-   {
-           CString tmp;
-           for (unsigned i = 0; i < n; i++)
-                   tmp += foo;
-           return tmp;
-   }
-   
-   This function is O(n^2), not O(n).  The reason is that each +=
-   causes a reallocation and copy of the existing string.  Microsoft
-   applications are full of this kind of thing (quadratic performance
-   on tasks that can be done in linear time) -- on the other hand,
-   we should be thankful, as it's created such a big market for high-end
-   ix86 hardware. :-)
-   
-   If you replace CString with string in the above function, the
-   performance is O(n).
-   
-

Joe Buck also pointed out some other things to keep in mind when - comparing CString and the Standard string class: -

-
    -
  • CString permits access to its internal representation; coders - who exploited that may have problems moving to string. -
  • -
  • Microsoft ships the source to CString (in the files - MFC\SRC\Str{core,ex}.cpp), so you could fix the allocation - bug and rebuild your MFC libraries. - Note: It looks like the the CString shipped - with VC++6.0 has fixed this, although it may in fact have been - one of the VC++ SPs that did it. -
  • -
  • string operations like this have O(n) complexity - if the implementors do it correctly. The libstdc++ - implementors did it correctly. Other vendors might not. -
  • -
  • While parts of the SGI STL are used in libstdc++-v3, their - string class is not. The SGI string is essentially - vector<char> and does not do any reference - counting like libstdc++-v3's does. (It is O(n), though.) - So if you're thinking about SGI's string or rope classes, - you're now looking at four possibilities: CString, the - libstdc++ string, the SGI string, and the SGI rope, and this - is all before any allocator or traits customizations! (More - choices than you can shake a stick at -- want fries with that?) -
  • -
-

Return to top of page or - to the FAQ. -

- -
-

A case-insensitive string class

-

The well-known-and-if-it-isn't-well-known-it-ought-to-be - Guru of the Week - discussions held on Usenet covered this topic in January of 1998. - Briefly, the challenge was, "write a 'ci_string' class which - is identical to the standard 'string' class, but is - case-insensitive in the same way as the (common but nonstandard) - C function stricmp():" -

-
-   ci_string s( "AbCdE" );
-
-   // case insensitive
-   assert( s == "abcde" );
-   assert( s == "ABCDE" );
-
-   // still case-preserving, of course
-   assert( strcmp( s.c_str(), "AbCdE" ) == 0 );
-   assert( strcmp( s.c_str(), "abcde" ) != 0 ); 
- -

The solution is surprisingly easy. The original answer pages - on the GotW website were removed into cold storage, in - preparation for - a - published book of GotW notes. Before being - put on the web, of course, it was posted on Usenet, and that - posting containing the answer is available - here. -

-

See? Told you it was easy!

-

Added June 2000: The May issue of C++ Report - contains - a fascinating article by Matt Austern (yes, the Matt Austern) - on why case-insensitive comparisons are not as easy as they seem, - and why creating a class is the wrong way to go about it in - production code. (The GotW answer mentions one of the principle - difficulties; his article mentions more.) -

-

Basically, this is "easy" only if you ignore some things, - things which may be too important to your program to ignore. (I chose - to ignore them when originally writing this entry, and am surprised - that nobody ever called me on it...) The GotW question and answer - remain useful instructional tools, however. -

-

Added September 2000: James Kanze provided a link to a - Unicode - Technical Report discussing case handling, which provides some - very good information. -

-

Return to top of page or - to the FAQ. -

- -
-

Breaking a C++ string into tokens

-

The Standard C (and C++) function strtok() leaves a lot to - be desired in terms of user-friendliness. It's unintuitive, it - destroys the character string on which it operates, and it requires - you to handle all the memory problems. But it does let the client - code decide what to use to break the string into pieces; it allows - you to choose the "whitespace," so to speak. -

-

A C++ implementation lets us keep the good things and fix those - annoyances. The implementation here is more intuitive (you only - call it once, not in a loop with varying argument), it does not - affect the original string at all, and all the memory allocation - is handled for you. -

-

It's called stringtok, and it's a template function. It's given - in this file in a less-portable form than - it could be, to keep this example simple (for example, see the - comments on what kind of string it will accept). The author uses - a more general (but less readable) form of it for parsing command - strings and the like. If you compiled and ran this code using it: -

-
-   std::list<string>  ls;
-   stringtok (ls, " this  \t is\t\n  a test  ");
-   for (std::list<string>const_iterator i = ls.begin();
-        i != ls.end(); ++i)
-   {
-       std::cerr << ':' << (*i) << ":\n";
-   } 
-

You would see this as output: -

-
-   :this:
-   :is:
-   :a:
-   :test: 
-

with all the whitespace removed. The original s is still - available for use, ls will clean up after itself, and - ls.size() will return how many tokens there were. -

-

As always, there is a price paid here, in that stringtok is not - as fast as strtok. The other benefits usually outweight that, however. - Another version of stringtok is given - here, suggested by Chris King and tweaked by Petr Prikryl, - and this one uses the - transformation functions mentioned below. If you are comfortable - with reading the new function names, this version is recommended - as an example. -

-

Added February 2001: Mark Wilden pointed out that the - standard std::getline() function can be used with standard - istringstreams to perform - tokenizing as well. Build an istringstream from the input text, - and then use std::getline with varying delimiters (the three-argument - signature) to extract tokens into a string. -

-

Return to top of page or - to the FAQ. -

- -
-

Simple transformations

-

Here are Standard, simple, and portable ways to perform common - transformations on a string instance, such as "convert - to all upper case." The word transformations is especially - apt, because the standard template function - transform<> is used. -

-

This code will go through some iterations (no pun). Here's the - simplistic version usually seen on Usenet: -

-
-   #include <string>
-   #include <algorithm>
-   #include <cctype>      // old <ctype.h>
-
-   struct ToLower
-   {
-     char operator() (char c) const  { return std::tolower(c); }
-   };
-
-   struct ToUpper
-   {
-     char operator() (char c) const  { return std::toupper(c); }
-   };
-
-   int main()
-   {
-     std::string  s ("Some Kind Of Initial Input Goes Here");
-
-     // Change everything into upper case
-     std::transform (s.begin(), s.end(), s.begin(), ToUpper());
-
-     // Change everything into lower case
-     std::transform (s.begin(), s.end(), s.begin(), ToLower());
-
-     // Change everything back into upper case, but store the
-     // result in a different string
-     std::string  capital_s;
-     capital_s.resize(s.size());
-     std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper());
-   } 
-

Note that these calls all - involve the global C locale through the use of the C functions - toupper/tolower. This is absolutely guaranteed to work -- - but only if the string contains only characters - from the basic source character set, and there are only - 96 of those. Which means that not even all English text can be - represented (certain British spellings, proper names, and so forth). - So, if all your input forevermore consists of only those 96 - characters (hahahahahaha), then you're done. -

-

Note that the - ToUpper and ToLower function objects - are needed because toupper and tolower - are overloaded names (declared in <cctype> and - <locale>) so the template-arguments for - transform<> cannot be deduced, as explained in - this - message. - At minimum, you can write short wrappers like -

-
-   char toLower (char c)
-   {
-      return std::tolower(c);
-   } 
-

The correct method is to use a facet for a particular locale - and call its conversion functions. These are discussed more in - Chapter 22; the specific part is - Correct Transformations, - which shows the final version of this code. (Thanks to James Kanze - for assistance and suggestions on all of this.) -

-

Another common operation is trimming off excess whitespace. Much - like transformations, this task is trivial with the use of string's - find family. These examples are broken into multiple - statements for readability: -

-
-   std::string  str (" \t blah blah blah    \n ");
-
-   // trim leading whitespace
-   string::size_type  notwhite = str.find_first_not_of(" \t\n");
-   str.erase(0,notwhite);
-
-   // trim trailing whitespace
-   notwhite = str.find_last_not_of(" \t\n"); 
-   str.erase(notwhite+1); 
-

Obviously, the calls to find could be inserted directly - into the calls to erase, in case your compiler does not - optimize named temporaries out of existence. -

-

Return to top of page or - to the FAQ. -

- -
-

Making strings of arbitrary character types

-

The std::basic_string is tantalizingly general, in that - it is parameterized on the type of the characters which it holds. - In theory, you could whip up a Unicode character class and instantiate - std::basic_string<my_unicode_char>, or assuming - that integers are wider than characters on your platform, maybe just - declare variables of type std::basic_string<int>. -

-

That's the theory. Remember however that basic_string has additional - type parameters, which take default arguments based on the character - type (called CharT here): -

-
-      template <typename CharT,
-                typename Traits = char_traits<CharT>,
-                typename Alloc = allocator<CharT> >
-      class basic_string { .... };
-

Now, allocator<CharT> will probably Do The Right - Thing by default, unless you need to implement your own allocator - for your characters. -

-

But char_traits takes more work. The char_traits - template is declared but not defined. - That means there is only -

-
-      template <typename CharT>
-        struct char_traits
-        {
-            static void foo (type1 x, type2 y);
-            ...
-        };
-

and functions such as char_traits<CharT>::foo() are not - actually defined anywhere for the general case. The C++ standard - permits this, because writing such a definition to fit all possible - CharT's cannot be done. (For a time, in earlier versions of GCC, - there was a mostly-correct implementation that let programmers be - lazy. :-) But it broke under many situations, so it was removed. - You are no longer allowed to be lazy and non-portable.) -

-

The C++ standard also requires that char_traits be specialized for - instantiations of char and wchar_t, and it - is these template specializations that permit entities like - basic_string<char,char_traits<char>> to work. -

-

If you want to use character types other than char and wchar_t, - such as unsigned char and int, you will - need to write specializations for them at the present time. If you - want to use your own special character class, then you have - a lot - of work to do, especially if you with to use i18n features - (facets require traits information but don't have a traits argument). -

-

One example of how to specialize char_traits is given in - this message, which was then put into the file - include/ext/pod_char_traits.h at a later date. We agree - that the way it's used with basic_string (scroll down to main()) - doesn't look nice, but that's because the - nice-looking first attempt turned out to not - be conforming C++, due to the rule that CharT must be a POD. - (See how tricky this is?) -

-

Other approaches were suggested in that same thread, such as providing - more specializations and/or some helper types in the library to assist - users writing such code. So far nobody has had the time... - do you? -

-

Return to top of page or - to the FAQ. -

- -
-

Shrink-to-fit strings

- -

From GCC 3.4 calling s.reserve(res) on a - string s with res < s.capacity() will - reduce the string's capacity to std::max(s.size(), res). -

-

This behaviour is suggested, but not required by the standard. Prior - to GCC 3.4 the following alternative can be used instead -

-
-      std::string(str.data(), str.size()).swap(str);
-   
-

This is similar to the idiom for reducing a vector's - memory usage (see FAQ 5.9) but - the regular copy constructor cannot be used because libstdc++'s - string is Copy-On-Write. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_h.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_h.txt deleted file mode 100644 index 81d87a6ef..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_h.txt +++ /dev/null @@ -1,102 +0,0 @@ -/* - * stringtok.h -- Breaks a string into tokens. This is an example for lib3. - * - * Template function looks like this: - * - * template - * void stringtok (Container &l, - * string const &s, - * char const * const ws = " \t\n"); - * - * A nondestructive version of strtok() that handles its own memory and can - * be broken up by any character(s). Does all the work at once rather than - * in an invocation loop like strtok() requires. - * - * Container is any type that supports push_back(a_string), although using - * list and deque are indicated due to their O(1) push_back. - * (I prefer deque<> because op[]/at() is available as well.) The first - * parameter references an existing Container. - * - * s is the string to be tokenized. From the parameter declaration, it can - * be seen that s is not affected. Since references-to-const may refer to - * temporaries, you could use stringtok(some_container, readline("")) when - * using the GNU readline library. - * - * The final parameter is an array of characters that serve as whitespace. - * Whitespace characters default to one or more of tab, space, and newline, - * in any combination. - * - * 'l' need not be empty on entry. On return, 'l' will have the token - * strings appended. - * - * - * [Example: - * list ls; - * stringtok (ls, " this \t is\t\n a test "); - * for (list::const_iterator i = ls.begin(); - * i != ls.end(); ++i) - * { - * cerr << ':' << (*i) << ":\n"; - * } - * - * would print - * :this: - * :is: - * :a: - * :test: - * -end example] - * - * pedwards@jaj.com May 1999 -*/ - - -#include -#include // for strchr - - -/***************************************************************** - * This is the only part of the implementation that I don't like. - * It can probably be improved upon by the reader... -*/ -namespace { - inline bool - isws (char c, char const * const wstr) - { - return (strchr(wstr,c) != NULL); - } -} - - -/***************************************************************** - * Simplistic and quite Standard, but a bit slow. This should be - * templatized on basic_string instead, or on a more generic StringT - * that just happens to support ::size_type, .substr(), and so on. - * I had hoped that "whitespace" would be a trait, but it isn't, so - * the user must supply it. Enh, this lets them break up strings on - * different things easier than traits would anyhow. -*/ -template -void -stringtok (Container &l, string const &s, char const * const ws = " \t\n") -{ - const string::size_type S = s.size(); - string::size_type i = 0; - - while (i < S) { - // eat leading whitespace - while ((i < S) && (isws(s[i],ws))) ++i; - if (i == S) return; // nothing left but WS - - // find end of word - string::size_type j = i+1; - while ((j < S) && (!isws(s[j],ws))) ++j; - - // add word - l.push_back(s.substr(i,j-i)); - - // set up for next loop - i = j+1; - } -} - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_std_h.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_std_h.txt deleted file mode 100644 index 2f3d7e073..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/21_strings/stringtok_std_h.txt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Same as stringtok_h.txt, but doesn't (visiably) use C functions. -*/ - -#include - -// The std:: prefix is not used here, for readability, and a line like -// "using namespace std;" is dangerous to have in a header file. - -template -void -stringtok (Container &container, string const &in, - const char * const delimiters = " \t\n") -{ - const string::size_type len = in.length(); - string::size_type i = 0; - - while ( i < len ) - { - // eat leading whitespace - i = in.find_first_not_of (delimiters, i); - if (i == string::npos) - return; // nothing left but white space - - // find the end of the token - string::size_type j = in.find_first_of (delimiters, i); - - // push token - if (j == string::npos) { - container.push_back (in.substr(i)); - return; - } else - container.push_back (in.substr(i, j-i)); - - // set up for next loop - i = j + 1; - } -} - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/codecvt.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/codecvt.html deleted file mode 100644 index fe5457584..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/codecvt.html +++ /dev/null @@ -1,595 +0,0 @@ - - - - - - - - - - Notes on the codecvt implementation. - - - - - - - -

- Notes on the codecvt implementation. -

-

- -prepared by Benjamin Kosnik (bkoz@redhat.com) on August 28, 2000 - -

- -

-1. Abstract -

-

-The standard class codecvt attempts to address conversions between -different character encoding schemes. In particular, the standard -attempts to detail conversions between the implementation-defined wide -characters (hereafter referred to as wchar_t) and the standard type -char that is so beloved in classic "C" (which can now be referred to -as narrow characters.) This document attempts to describe how the GNU -libstdc++-v3 implementation deals with the conversion between wide and -narrow characters, and also presents a framework for dealing with the -huge number of other encodings that iconv can convert, including -Unicode and UTF8. Design issues and requirements are addressed, and -examples of correct usage for both the required specializations for -wide and narrow characters and the implementation-provided extended -functionality are given. -

- -

-2. What the standard says -

-Around page 425 of the C++ Standard, this charming heading comes into view: - -
-22.2.1.5 - Template class codecvt [lib.locale.codecvt] -
- -The text around the codecvt definition gives some clues: - -
- --1- The class codecvt<internT,externT,stateT> is for use when -converting from one codeset to another, such as from wide characters -to multibyte characters, between wide character encodings such as -Unicode and EUC. - -
- -

-Hmm. So, in some unspecified way, Unicode encodings and -translations between other character sets should be handled by this -class. -

- -
- --2- The stateT argument selects the pair of codesets being mapped between. - -
- -

-Ah ha! Another clue... -

- -
- --3- The instantiations required in the Table ?? -(lib.locale.category), namely codecvt<wchar_t,char,mbstate_t> and -codecvt<char,char,mbstate_t>, convert the implementation-defined -native character set. codecvt<char,char,mbstate_t> implements a -degenerate conversion; it does not convert at -all. codecvt<wchar_t,char,mbstate_t> converts between the native -character sets for tiny and wide characters. Instantiations on -mbstate_t perform conversion between encodings known to the library -implementor. Other encodings can be converted by specializing on a -user-defined stateT type. The stateT object can contain any state that -is useful to communicate to or from the specialized do_convert member. - -
- -

-At this point, a couple points become clear: -

- -

-One: The standard clearly implies that attempts to add non-required -(yet useful and widely used) conversions need to do so through the -third template parameter, stateT.

- -

-Two: The required conversions, by specifying mbstate_t as the third -template parameter, imply an implementation strategy that is mostly -(or wholly) based on the underlying C library, and the functions -mcsrtombs and wcsrtombs in particular.

- -

-3. Some thoughts on what would be useful -

-Probably the most frequently asked question about code conversion is: -"So dudes, what's the deal with Unicode strings?" The dude part is -optional, but apparently the usefulness of Unicode strings is pretty -widely appreciated. Sadly, this specific encoding (And other useful -encodings like UTF8, UCS4, ISO 8859-10, etc etc etc) are not mentioned -in the C++ standard. - -

-In particular, the simple implementation detail of wchar_t's size -seems to repeatedly confound people. Many systems use a two byte, -unsigned integral type to represent wide characters, and use an -internal encoding of Unicode or UCS2. (See AIX, Microsoft NT, Java, -others.) Other systems, use a four byte, unsigned integral type to -represent wide characters, and use an internal encoding of -UCS4. (GNU/Linux systems using glibc, in particular.) The C -programming language (and thus C++) does not specify a specific size -for the type wchar_t. -

- -

-Thus, portable C++ code cannot assume a byte size (or endianness) either. -

- -

-Getting back to the frequently asked question: What about Unicode strings? -

- -

-What magic spell will do this conversion? -

- -

-A couple of comments: -

- -

-The thought that all one needs to convert between two arbitrary -codesets is two types and some kind of state argument is -unfortunate. In particular, encodings may be stateless. The naming of -the third parameter as stateT is unfortunate, as what is really needed -is some kind of generalized type that accounts for the issues that -abstract encodings will need. The minimum information that is required -includes: -

- -
    -
  • -

    - Identifiers for each of the codesets involved in the conversion. For -example, using the iconv family of functions from the Single Unix -Specification (what used to be called X/Open) hosted on the GNU/Linux -operating system allows bi-directional mapping between far more than -the following tantalizing possibilities: -

    - -

    -(An edited list taken from `iconv --list` on a Red Hat 6.2/Intel system: -

    - -
    -
    -8859_1, 8859_9, 10646-1:1993, 10646-1:1993/UCS4, ARABIC, ARABIC7,
    -ASCII, EUC-CN, EUC-JP, EUC-KR, EUC-TW, GREEK-CCIcode, GREEK, GREEK7-OLD,
    -GREEK7, GREEK8, HEBREW, ISO-8859-1, ISO-8859-2, ISO-8859-3,
    -ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8,
    -ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14,
    -ISO-8859-15, ISO-10646, ISO-10646/UCS2, ISO-10646/UCS4,
    -ISO-10646/UTF-8, ISO-10646/UTF8, SHIFT-JIS, SHIFT_JIS, UCS-2, UCS-4,
    -UCS2, UCS4, UNICODE, UNICODEBIG, UNICODELIcodeLE, US-ASCII, US, UTF-8,
    -UTF-16, UTF8, UTF16).
    -
    -
    - -

    -For iconv-based implementations, string literals for each of the -encodings (ie. "UCS-2" and "UTF-8") are necessary, -although for other, -non-iconv implementations a table of enumerated values or some other -mechanism may be required. -

    -
  • - -
  • - Maximum length of the identifying string literal. -
  • - -
  • - Some encodings are require explicit endian-ness. As such, some kind - of endian marker or other byte-order marker will be necessary. See - "Footnotes for C/C++ developers" in Haible for more information on - UCS-2/Unicode endian issues. (Summary: big endian seems most likely, - however implementations, most notably Microsoft, vary.) -
  • - -
  • - Types representing the conversion state, for conversions involving - the machinery in the "C" library, or the conversion descriptor, for - conversions using iconv (such as the type iconv_t.) Note that the - conversion descriptor encodes more information than a simple encoding - state type. -
  • - -
  • - Conversion descriptors for both directions of encoding. (ie, both - UCS-2 to UTF-8 and UTF-8 to UCS-2.) -
  • - -
  • - Something to indicate if the conversion requested if valid. -
  • - -
  • - Something to represent if the conversion descriptors are valid. -
  • - -
  • - Some way to enforce strict type checking on the internal and - external types. As part of this, the size of the internal and - external types will need to be known. -
  • -
- -

-4. Problems with "C" code conversions : thread safety, global -locales, termination. -

- -In addition, multi-threaded and multi-locale environments also impact -the design and requirements for code conversions. In particular, they -affect the required specialization codecvt<wchar_t, char, mbstate_t> -when implemented using standard "C" functions. - -

-Three problems arise, one big, one of medium importance, and one small. -

- -

-First, the small: mcsrtombs and wcsrtombs may not be multithread-safe -on all systems required by the GNU tools. For GNU/Linux and glibc, -this is not an issue. -

- -

-Of medium concern, in the grand scope of things, is that the functions -used to implement this specialization work on null-terminated -strings. Buffers, especially file buffers, may not be null-terminated, -thus giving conversions that end prematurely or are otherwise -incorrect. Yikes! -

- -

-The last, and fundamental problem, is the assumption of a global -locale for all the "C" functions referenced above. For something like -C++ iostreams (where codecvt is explicitly used) the notion of -multiple locales is fundamental. In practice, most users may not run -into this limitation. However, as a quality of implementation issue, -the GNU C++ library would like to offer a solution that allows -multiple locales and or simultaneous usage with computationally -correct results. In short, libstdc++-v3 is trying to offer, as an -option, a high-quality implementation, damn the additional complexity! -

- -

-For the required specialization codecvt<wchar_t, char, mbstate_t> , -conversions are made between the internal character set (always UCS4 -on GNU/Linux) and whatever the currently selected locale for the -LC_CTYPE category implements. -

- -

-5. Design -

-The two required specializations are implemented as follows: - -

- -codecvt<char, char, mbstate_t> - -

-

-This is a degenerate (ie, does nothing) specialization. Implementing -this was a piece of cake. -

- -

- -codecvt<char, wchar_t, mbstate_t> - -

-

-This specialization, by specifying all the template parameters, pretty -much ties the hands of implementors. As such, the implementation is -straightforward, involving mcsrtombs for the conversions between char -to wchar_t and wcsrtombs for conversions between wchar_t and char. -

- -

-Neither of these two required specializations deals with Unicode -characters. As such, libstdc++-v3 implements a partial specialization -of the codecvt class with and iconv wrapper class, __enc_traits as the -third template parameter. -

- -

-This implementation should be standards conformant. First of all, the -standard explicitly points out that instantiations on the third -template parameter, stateT, are the proper way to implement -non-required conversions. Second of all, the standard says (in Chapter -17) that partial specializations of required classes are a-ok. Third -of all, the requirements for the stateT type elsewhere in the standard -(see 21.1.2 traits typedefs) only indicate that this type be copy -constructible. -

- -

-As such, the type __enc_traits is defined as a non-templatized, POD -type to be used as the third type of a codecvt instantiation. This -type is just a wrapper class for iconv, and provides an easy interface -to iconv functionality. -

- -

-There are two constructors for __enc_traits: -

- -

- -__enc_traits() : __in_desc(0), __out_desc(0) - -

-

-This default constructor sets the internal encoding to some default -(currently UCS4) and the external encoding to whatever is returned by -nl_langinfo(CODESET). -

- -

- -__enc_traits(const char* __int, const char* __ext) - -

-

-This constructor takes as parameters string literals that indicate the -desired internal and external encoding. There are no defaults for -either argument. -

- -

-One of the issues with iconv is that the string literals identifying -conversions are not standardized. Because of this, the thought of -mandating and or enforcing some set of pre-determined valid -identifiers seems iffy: thus, a more practical (and non-migraine -inducing) strategy was implemented: end-users can specify any string -(subject to a pre-determined length qualifier, currently 32 bytes) for -encodings. It is up to the user to make sure that these strings are -valid on the target system. -

- -

- -void -_M_init() - -

-

-Strangely enough, this member function attempts to open conversion -descriptors for a given __enc_traits object. If the conversion -descriptors are not valid, the conversion descriptors returned will -not be valid and the resulting calls to the codecvt conversion -functions will return error. -

- -

- -bool -_M_good() - -

-

-Provides a way to see if the given __enc_traits object has been -properly initialized. If the string literals describing the desired -internal and external encoding are not valid, initialization will -fail, and this will return false. If the internal and external -encodings are valid, but iconv_open could not allocate conversion -descriptors, this will also return false. Otherwise, the object is -ready to convert and will return true. -

- -

- -__enc_traits(const __enc_traits&) - -

-

-As iconv allocates memory and sets up conversion descriptors, the copy -constructor can only copy the member data pertaining to the internal -and external code conversions, and not the conversion descriptors -themselves. -

- -

-Definitions for all the required codecvt member functions are provided -for this specialization, and usage of codecvt<internal character type, -external character type, __enc_traits> is consistent with other -codecvt usage. -

- -

-6. Examples -

- -
    -
  • - a. conversions involving string literals - -
    -  typedef codecvt_base::result                  result;
    -  typedef unsigned short                        unicode_t;
    -  typedef unicode_t                             int_type;
    -  typedef char                                  ext_type;
    -  typedef __enc_traits                          enc_type;
    -  typedef codecvt<int_type, ext_type, enc_type> unicode_codecvt;
    -
    -  const ext_type*       e_lit = "black pearl jasmine tea";
    -  int                   size = strlen(e_lit);
    -  int_type              i_lit_base[24] = 
    -  { 25088, 27648, 24832, 25344, 27392, 8192, 28672, 25856, 24832, 29184, 
    -    27648, 8192, 27136, 24832, 29440, 27904, 26880, 28160, 25856, 8192, 29696,
    -    25856, 24832, 2560
    -  };
    -  const int_type*       i_lit = i_lit_base;
    -  const ext_type*       efrom_next;
    -  const int_type*       ifrom_next;
    -  ext_type*             e_arr = new ext_type[size + 1];
    -  ext_type*             eto_next;
    -  int_type*             i_arr = new int_type[size + 1];
    -  int_type*             ito_next;
    -
    -  // construct a locale object with the specialized facet.
    -  locale                loc(locale::classic(), new unicode_codecvt);
    -  // sanity check the constructed locale has the specialized facet.
    -  VERIFY( has_facet<unicode_codecvt>(loc) );
    -  const unicode_codecvt& cvt = use_facet<unicode_codecvt>(loc); 
    -  // convert between const char* and unicode strings
    -  unicode_codecvt::state_type state01("UNICODE", "ISO_8859-1");
    -  initialize_state(state01);
    -  result r1 = cvt.in(state01, e_lit, e_lit + size, efrom_next, 
    -                     i_arr, i_arr + size, ito_next);
    -  VERIFY( r1 == codecvt_base::ok );
    -  VERIFY( !int_traits::compare(i_arr, i_lit, size) ); 
    -  VERIFY( efrom_next == e_lit + size );
    -  VERIFY( ito_next == i_arr + size );
    -
    -
  • -
  • - b. conversions involving std::string -
  • -
  • - c. conversions involving std::filebuf and std::ostream -
  • -
- -More information can be found in the following testcases: -
    -
  • testsuite/22_locale/codecvt_char_char.cc
  • -
  • testsuite/22_locale/codecvt_unicode_wchar_t.cc
  • -
  • testsuite/22_locale/codecvt_unicode_char.cc
  • -
  • testsuite/22_locale/codecvt_wchar_t_char.cc
  • -
- -

-7. Unresolved Issues -

-
    -
  • - a. things that are sketchy, or remain unimplemented: - do_encoding, max_length and length member functions - are only weakly implemented. I have no idea how to do - this correctly, and in a generic manner. Nathan? -
  • - -
  • - b. conversions involving std::string - -
      -
    • - how should operators != and == work for string of - different/same encoding? -
    • - -
    • - what is equal? A byte by byte comparison or an - encoding then byte comparison? -
    • - -
    • - conversions between narrow, wide, and unicode strings -
    • -
    -
  • -
  • - c. conversions involving std::filebuf and std::ostream -
      -
    • - how to initialize the state object in a - standards-conformant manner? -
    • - -
    • - how to synchronize the "C" and "C++" - conversion information? -
    • - -
    • - wchar_t/char internal buffers and conversions between - internal/external buffers? -
    • -
    -
  • -
- -

-8. Acknowledgments -

-Ulrich Drepper for the iconv suggestions and patient answering of -late-night questions, Jason Merrill for the template partial -specialization hints, language clarification, and wchar_t fixes. - -

-9. Bibliography / Referenced Documents -

- -Drepper, Ulrich, GNU libc (glibc) 2.2 manual. In particular, Chapters "6. Character Set Handling" and "7 Locales and Internationalization" - -

-Drepper, Ulrich, Numerous, late-night email correspondence -

- -

-Feather, Clive, "A brief description of Normative Addendum 1," in particular the parts on Extended Character Sets -http://www.lysator.liu.se/c/na1.html -

- -

-Haible, Bruno, "The Unicode HOWTO" v0.18, 4 August 2000 -ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html -

- -

-ISO/IEC 14882:1998 Programming languages - C++ -

- -

-ISO/IEC 9899:1999 Programming languages - C -

- -

-Khun, Markus, "UTF-8 and Unicode FAQ for Unix/Linux" -http://www.cl.cam.ac.uk/~mgk25/unicode.html -

- -

-Langer, Angelika and Klaus Kreft, Standard C++ IOStreams and Locales, Advanced Programmer's Guide and Reference, Addison Wesley Longman, Inc. 2000 -

- -

-Stroustrup, Bjarne, Appendix D, The C++ Programming Language, Special Edition, Addison Wesley, Inc. 2000 -

- -

-System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) -The Open Group/The Institute of Electrical and Electronics Engineers, Inc. -http://www.opennc.org/austin/docreg.html -

- - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/ctype.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/ctype.html deleted file mode 100644 index ee5e69f7c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/ctype.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - Notes on the ctype implementation. - - - - - - - -

- Notes on the ctype implementation. -

- -prepared by Benjamin Kosnik (bkoz@redhat.com) on August 30, 2000 - - -

-1. Abstract -

-

-Woe is me. -

- -

-2. What the standard says -

- - -

-3. Problems with "C" ctype : global locales, termination. -

- -

-For the required specialization codecvt<wchar_t, char, mbstate_t> , -conversions are made between the internal character set (always UCS4 -on GNU/Linux) and whatever the currently selected locale for the -LC_CTYPE category implements. -

- -

-4. Design -

-The two required specializations are implemented as follows: - -

- -ctype<char> - -

-

-This is simple specialization. Implementing this was a piece of cake. -

- -

- -ctype<wchar_t> - -

-

-This specialization, by specifying all the template parameters, pretty -much ties the hands of implementors. As such, the implementation is -straightforward, involving mcsrtombs for the conversions between char -to wchar_t and wcsrtombs for conversions between wchar_t and char. -

- -

-Neither of these two required specializations deals with Unicode -characters. As such, libstdc++-v3 implements -

- -

-5. Examples -

- -
-  typedef ctype<char> cctype;
-
- -More information can be found in the following testcases: -
    -
  • testsuite/22_locale/ctype_char_members.cc
  • -
  • testsuite/22_locale/ctype_wchar_t_members.cc
  • -
- -

-6. Unresolved Issues -

- -
    -
  • how to deal with the global locale issue?
  • - -
  • how to deal with different types than char, wchar_t?
  • - -
  • codecvt/ctype overlap: narrow/widen
  • - -
  • mask typedef in codecvt_base, argument types in codecvt. - what is know about this type?
  • - -
  • why mask* argument in codecvt?
  • - -
  • can this be made (more) generic? is there a simple way to - straighten out the configure-time mess that is a by-product of - this class?
  • - -
  • get the ctype<wchar_t>::mask stuff under control. Need to - make some kind of static table, and not do lookup evertime - somebody hits the do_is... functions. Too bad we can't just - redefine mask for ctype<wchar_t>
  • - -
  • rename abstract base class. See if just smash-overriding - is a better approach. Clarify, add sanity to naming.
  • - -
- - -

-7. Acknowledgments -

-Ulrich Drepper for patient answering of late-night questions, skeletal -examples, and C language expertise. - -

-8. Bibliography / Referenced Documents -

- -Drepper, Ulrich, GNU libc (glibc) 2.2 manual. In particular, Chapters "6. Character Set Handling" and "7 Locales and Internationalization" - -

-Drepper, Ulrich, Numerous, late-night email correspondence -

- -

-ISO/IEC 14882:1998 Programming languages - C++ -

- -

-ISO/IEC 9899:1999 Programming languages - C -

- -

-Langer, Angelika and Klaus Kreft, Standard C++ IOStreams and Locales, Advanced Programmer's Guide and Reference, Addison Wesley Longman, Inc. 2000 -

- -

-Stroustrup, Bjarne, Appendix D, The C++ Programming Language, Special Edition, Addison Wesley, Inc. 2000 -

- -

-System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) -The Open Group/The Institute of Electrical and Electronics Engineers, Inc. -http://www.opennc.org/austin/docreg.html -

- - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/howto.html deleted file mode 100644 index 30e1e1f50..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/howto.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 22: Localization - - - - - - - - - - - - - - - -

Chapter 22: Localization

- -

Chapter 22 deals with the C++ localization facilities. -

- - - - -
-

Contents

- - - - -
-

class locale

-

Notes made during the implementation of locales can be found - here. -

- -
-

class codecvt

-

Notes made during the implementation of codecvt can be found - here. -

- -

The following is the abstract from the implementation notes: -

-
- The standard class codecvt attempts to address conversions between - different character encoding schemes. In particular, the standard - attempts to detail conversions between the implementation-defined - wide characters (hereafter referred to as wchar_t) and the standard - type char that is so beloved in classic "C" (which can - now be referred to as narrow characters.) This document attempts - to describe how the GNU libstdc++-v3 implementation deals with the - conversion between wide and narrow characters, and also presents a - framework for dealing with the huge number of other encodings that - iconv can convert, including Unicode and UTF8. Design issues and - requirements are addressed, and examples of correct usage for both - the required specializations for wide and narrow characters and the - implementation-provided extended functionality are given. -
- -
-

class ctype

-

Notes made during the implementation of ctype can be found - here. -

- -
-

class messages

-

Notes made during the implementation of messages can be found - here. -

- -
-

Bjarne Stroustrup on Locales

-

Dr. Bjarne Stroustrup has released a - pointer - to Appendix D of his book, - The C++ - Programming Language (3rd Edition). It is a detailed - description of locales and how to use them. -

-

He also writes: -

-
- Please note that I still consider this detailed description of - locales beyond the needs of most C++ programmers. It is written - with experienced programmers in mind and novices will do best to - avoid it. -
- -
-

Nathan Myers on Locales

-

An article entitled "The Standard C++ Locale" was - published in Dr. Dobb's Journal and can be found - here. -

- -
-

Correct Transformations

- -

A very common question on newsgroups and mailing lists is, "How - do I do <foo> to a character string?" where <foo> is - a task such as changing all the letters to uppercase, to lowercase, - testing for digits, etc. A skilled and conscientious programmer - will follow the question with another, "And how do I make the - code portable?" -

-

(Poor innocent programmer, you have no idea the depths of trouble - you are getting yourself into. 'Twould be best for your sanity if - you dropped the whole idea and took up basket weaving instead. No? - Fine, you asked for it...) -

-

The task of changing the case of a letter or classifying a character - as numeric, graphical, etc, all depends on the cultural context of the - program at runtime. So, first you must take the portability question - into account. Once you have localized the program to a particular - natural language, only then can you perform the specific task. - Unfortunately, specializing a function for a human language is not - as simple as declaring - extern "Danish" int tolower (int); . -

-

The C++ code to do all this proceeds in the same way. First, a locale - is created. Then member functions of that locale are called to - perform minor tasks. Continuing the example from Chapter 21, we wish - to use the following convenience functions: -

-
-   namespace std {
-     template <class charT>
-       charT
-       toupper (charT c, const locale& loc) const;
-     template <class charT>
-       charT
-       tolower (charT c, const locale& loc) const;
-   }
-

- This function extracts the appropriate "facet" from the - locale loc and calls the appropriate member function of that - facet, passing c as its argument. The resulting character - is returned. -

-

For the C/POSIX locale, the results are the same as calling the - classic C toupper/tolower function that was used in previous - examples. For other locales, the code should Do The Right Thing. -

-

Of course, these functions take a second argument, and the - transformation algorithm's operator argument can only take a single - parameter. So we write simple wrapper structs to handle that. -

-

The next-to-final version of the code started in Chapter 21 looks like: -

-
-   #include <iterator>    // for back_inserter
-   #include <locale>
-   #include <string>
-   #include <algorithm>
-   #include <cctype>      // old <ctype.h>
-
-   struct ToUpper
-   {
-       ToUpper(std::locale const& l) : loc(l) {;}
-       char operator() (char c) const  { return std::toupper(c,loc); }
-   private:
-       std::locale const& loc;
-   };
-   
-   struct ToLower
-   {
-       ToLower(std::locale const& l) : loc(l) {;}
-       char operator() (char c) const  { return std::tolower(c,loc); }
-   private:
-       std::locale const& loc;
-   };
-   
-   int main ()
-   {
-      std::string  s("Some Kind Of Initial Input Goes Here");
-      ToUpper      up(std::locale::classic());
-      ToLower      down(std::locale::classic());
-   
-      // Change everything into upper case.
-      std::transform(s.begin(), s.end(), s.begin(), up);
-   
-      // Change everything into lower case.
-      std::transform(s.begin(), s.end(), s.begin(), down);
-   
-      // Change everything back into upper case, but store the
-      // result in a different string.
-      std::string  capital_s;
-      std::transform(s.begin(), s.end(), std::back_inserter(capital_s), up);
-   }
-

The ToUpper and ToLower structs can be - generalized for other character types by making operator() - a member function template. -

-

The final version of the code uses bind2nd to eliminate - the wrapper structs, but the resulting code is tricky. I have not - shown it here because no compilers currently available to me will - handle it. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/locale.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/locale.html deleted file mode 100644 index 57ef5b4e9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/locale.html +++ /dev/null @@ -1,543 +0,0 @@ - - - - - - - - - - Notes on the locale implementation. - - - - - - - -

- Notes on the locale implementation. -

- -prepared by Benjamin Kosnik (bkoz@redhat.com) on October 14, 2002 - - -

-1. Abstract -

-

-Describes the basic locale object, including nested -classes id, facet, and the reference-counted implementation object, -class _Impl. -

- -

-2. What the standard says -

-Class locale is non-templatized and has two distinct types nested -inside of it: - -
- -class facet -22.1.1.1.2 Class locale::facet - -
- -

-Facets actually implement locale functionality. For instance, a facet -called numpunct is the data objects that can be used to query for the -thousands separator is in the German locale. -

- -Literally, a facet is strictly defined: -
    -
  • containing the following public data member: -

    - static locale::id id; -

    -
  • - -
  • derived from another facet: -

    - class gnu_codecvt: public std::ctype<user-defined-type> -

    -
  • -
- -

-Of interest in this class are the memory management options explicitly -specified as an argument to facet's constructor. Each constructor of a -facet class takes a std::size_t __refs argument: if __refs == 0, the -facet is deleted when the locale containing it is destroyed. If __refs -== 1, the facet is not destroyed, even when it is no longer -referenced. -

- -
- -class id -22.1.1.1.3 - Class locale::id - -
- -

-Provides an index for looking up specific facets. -

- - -

-3. Interacting with "C" locales. -

- -

-Some help on determining the underlying support for locales on a system. -Note, this is specific to linux (and glibc-2.3.x) -

- -
    -
  • `locale -a` displays available locales. -
    -
    -af_ZA
    -ar_AE
    -ar_AE.utf8
    -ar_BH
    -ar_BH.utf8
    -ar_DZ
    -ar_DZ.utf8
    -ar_EG
    -ar_EG.utf8
    -ar_IN
    -ar_IQ
    -ar_IQ.utf8
    -ar_JO
    -ar_JO.utf8
    -ar_KW
    -ar_KW.utf8
    -ar_LB
    -ar_LB.utf8
    -ar_LY
    -ar_LY.utf8
    -ar_MA
    -ar_MA.utf8
    -ar_OM
    -ar_OM.utf8
    -ar_QA
    -ar_QA.utf8
    -ar_SA
    -ar_SA.utf8
    -ar_SD
    -ar_SD.utf8
    -ar_SY
    -ar_SY.utf8
    -ar_TN
    -ar_TN.utf8
    -ar_YE
    -ar_YE.utf8
    -be_BY
    -be_BY.utf8
    -bg_BG
    -bg_BG.utf8
    -br_FR
    -bs_BA
    -C
    -ca_ES
    -ca_ES@euro
    -ca_ES.utf8
    -ca_ES.utf8@euro
    -cs_CZ
    -cs_CZ.utf8
    -cy_GB
    -da_DK
    -da_DK.iso885915
    -da_DK.utf8
    -de_AT
    -de_AT@euro
    -de_AT.utf8
    -de_AT.utf8@euro
    -de_BE
    -de_BE@euro
    -de_BE.utf8
    -de_BE.utf8@euro
    -de_CH
    -de_CH.utf8
    -de_DE
    -de_DE@euro
    -de_DE.utf8
    -de_DE.utf8@euro
    -de_LU
    -de_LU@euro
    -de_LU.utf8
    -de_LU.utf8@euro
    -el_GR
    -el_GR.utf8
    -en_AU
    -en_AU.utf8
    -en_BW
    -en_BW.utf8
    -en_CA
    -en_CA.utf8
    -en_DK
    -en_DK.utf8
    -en_GB
    -en_GB.iso885915
    -en_GB.utf8
    -en_HK
    -en_HK.utf8
    -en_IE
    -en_IE@euro
    -en_IE.utf8
    -en_IE.utf8@euro
    -en_IN
    -en_NZ
    -en_NZ.utf8
    -en_PH
    -en_PH.utf8
    -en_SG
    -en_SG.utf8
    -en_US
    -en_US.iso885915
    -en_US.utf8
    -en_ZA
    -en_ZA.utf8
    -en_ZW
    -en_ZW.utf8
    -es_AR
    -es_AR.utf8
    -es_BO
    -es_BO.utf8
    -es_CL
    -es_CL.utf8
    -es_CO
    -es_CO.utf8
    -es_CR
    -es_CR.utf8
    -es_DO
    -es_DO.utf8
    -es_EC
    -es_EC.utf8
    -es_ES
    -es_ES@euro
    -es_ES.utf8
    -es_ES.utf8@euro
    -es_GT
    -es_GT.utf8
    -es_HN
    -es_HN.utf8
    -es_MX
    -es_MX.utf8
    -es_NI
    -es_NI.utf8
    -es_PA
    -es_PA.utf8
    -es_PE
    -es_PE.utf8
    -es_PR
    -es_PR.utf8
    -es_PY
    -es_PY.utf8
    -es_SV
    -es_SV.utf8
    -es_US
    -es_US.utf8
    -es_UY
    -es_UY.utf8
    -es_VE
    -es_VE.utf8
    -et_EE
    -et_EE.utf8
    -eu_ES
    -eu_ES@euro
    -eu_ES.utf8
    -eu_ES.utf8@euro
    -fa_IR
    -fi_FI
    -fi_FI@euro
    -fi_FI.utf8
    -fi_FI.utf8@euro
    -fo_FO
    -fo_FO.utf8
    -fr_BE
    -fr_BE@euro
    -fr_BE.utf8
    -fr_BE.utf8@euro
    -fr_CA
    -fr_CA.utf8
    -fr_CH
    -fr_CH.utf8
    -fr_FR
    -fr_FR@euro
    -fr_FR.utf8
    -fr_FR.utf8@euro
    -fr_LU
    -fr_LU@euro
    -fr_LU.utf8
    -fr_LU.utf8@euro
    -ga_IE
    -ga_IE@euro
    -ga_IE.utf8
    -ga_IE.utf8@euro
    -gl_ES
    -gl_ES@euro
    -gl_ES.utf8
    -gl_ES.utf8@euro
    -gv_GB
    -gv_GB.utf8
    -he_IL
    -he_IL.utf8
    -hi_IN
    -hr_HR
    -hr_HR.utf8
    -hu_HU
    -hu_HU.utf8
    -id_ID
    -id_ID.utf8
    -is_IS
    -is_IS.utf8
    -it_CH
    -it_CH.utf8
    -it_IT
    -it_IT@euro
    -it_IT.utf8
    -it_IT.utf8@euro
    -iw_IL
    -iw_IL.utf8
    -ja_JP.eucjp
    -ja_JP.utf8
    -ka_GE
    -kl_GL
    -kl_GL.utf8
    -ko_KR.euckr
    -ko_KR.utf8
    -kw_GB
    -kw_GB.utf8
    -lt_LT
    -lt_LT.utf8
    -lv_LV
    -lv_LV.utf8
    -mi_NZ
    -mk_MK
    -mk_MK.utf8
    -mr_IN
    -ms_MY
    -ms_MY.utf8
    -mt_MT
    -mt_MT.utf8
    -nl_BE
    -nl_BE@euro
    -nl_BE.utf8
    -nl_BE.utf8@euro
    -nl_NL
    -nl_NL@euro
    -nl_NL.utf8
    -nl_NL.utf8@euro
    -nn_NO
    -nn_NO.utf8
    -no_NO
    -no_NO.utf8
    -oc_FR
    -pl_PL
    -pl_PL.utf8
    -POSIX
    -pt_BR
    -pt_BR.utf8
    -pt_PT
    -pt_PT@euro
    -pt_PT.utf8
    -pt_PT.utf8@euro
    -ro_RO
    -ro_RO.utf8
    -ru_RU
    -ru_RU.koi8r
    -ru_RU.utf8
    -ru_UA
    -ru_UA.utf8
    -se_NO
    -sk_SK
    -sk_SK.utf8
    -sl_SI
    -sl_SI.utf8
    -sq_AL
    -sq_AL.utf8
    -sr_YU
    -sr_YU@cyrillic
    -sr_YU.utf8
    -sr_YU.utf8@cyrillic
    -sv_FI
    -sv_FI@euro
    -sv_FI.utf8
    -sv_FI.utf8@euro
    -sv_SE
    -sv_SE.iso885915
    -sv_SE.utf8
    -ta_IN
    -te_IN
    -tg_TJ
    -th_TH
    -th_TH.utf8
    -tl_PH
    -tr_TR
    -tr_TR.utf8
    -uk_UA
    -uk_UA.utf8
    -ur_PK
    -uz_UZ
    -vi_VN
    -vi_VN.tcvn
    -wa_BE
    -wa_BE@euro
    -yi_US
    -zh_CN
    -zh_CN.gb18030
    -zh_CN.gbk
    -zh_CN.utf8
    -zh_HK
    -zh_HK.utf8
    -zh_TW
    -zh_TW.euctw
    -zh_TW.utf8
    -
    -
    -
  • - -
  • `locale` displays environmental variables - that impact how locale("") will be deduced. - -
    -
    -LANG=en_US
    -LC_CTYPE="en_US"
    -LC_NUMERIC="en_US"
    -LC_TIME="en_US"
    -LC_COLLATE="en_US"
    -LC_MONETARY="en_US"
    -LC_MESSAGES="en_US"
    -LC_PAPER="en_US"
    -LC_NAME="en_US"
    -LC_ADDRESS="en_US"
    -LC_TELEPHONE="en_US"
    -LC_MEASUREMENT="en_US"
    -LC_IDENTIFICATION="en_US"
    -LC_ALL=
    -
    -
    -
  • -
- -

-From Josuttis, p. 697-698, which says, that "there is only *one* -relation (of the C++ locale mechanism) to the C locale mechanism: the -global C locale is modified if a named C++ locale object is set as the -global locale" (emphasis Paolo), that is: -

- std::locale::global(std::locale("")); - -

affects the C functions as if the following call was made:

- - std::setlocale(LC_ALL, ""); - -

-On the other hand, there is *no* viceversa, that is, calling setlocale -has *no* whatsoever on the C++ locale mechanism, in particular on the -working of locale(""), which constructs the locale object from the -environment of the running program, that is, in practice, the set of -LC_ALL, LANG, etc. variable of the shell. -

- - -

-4. Design -

- - -

-The major design challenge is fitting an object-orientated and -non-global locale design ontop of POSIX and other relevant stanards, -which include the Single Unix (nee X/Open.) -

- -

-Because POSIX falls down so completely, portibility is an issue. -

- -class _Impl -The internal representation of the std::locale object. - - -

-5. Examples -

- -More information can be found in the following testcases: -
    -
  • testsuite/22_locale/all
  • -
- -

-6. Unresolved Issues -

- -
    -
  • locale initialization: at what point does _S_classic, - _S_global get initialized? Can named locales assume this - initialization has already taken place?
  • - -
  • document how named locales error check when filling data - members. Ie, a fr_FR locale that doesn't have - numpunct::truename(): does it use "true"? Or is it a blank - string? What's the convention?
  • - -
  • explain how locale aliasing happens. When does "de_DE" - use "de" information? What is the rule for locales composed of - just an ISO language code (say, "de") and locales with both an - ISO language code and ISO country code (say, "de_DE").
  • - -
  • what should non-required facet instantiations do? If the - generic implemenation is provided, then how to end-users - provide specializations?
  • -
- -

-7. Acknowledgments -

- -

-8. Bibliography / Referenced Documents -

- -Drepper, Ulrich, GNU libc (glibc) 2.2 manual. In particular, Chapters "6. Character Set Handling" and "7 Locales and Internationalization" - -

-Drepper, Ulrich, Numerous, late-night email correspondence -

- -

-ISO/IEC 14882:1998 Programming languages - C++ -

- -

-ISO/IEC 9899:1999 Programming languages - C -

- -

-Langer, Angelika and Klaus Kreft, Standard C++ IOStreams and Locales, Advanced Programmer's Guide and Reference, Addison Wesley Longman, Inc. 2000 -

- -

-Stroustrup, Bjarne, Appendix D, The C++ Programming Language, Special Edition, Addison Wesley, Inc. 2000 -

- -

-System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) -The Open Group/The Institute of Electrical and Electronics Engineers, Inc. -http://www.opennc.org/austin/docreg.html -

- - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/messages.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/messages.html deleted file mode 100644 index 41e94a42f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/22_locale/messages.html +++ /dev/null @@ -1,461 +0,0 @@ - - - - - - - - - - Notes on the messages implementation. - - - - - - - -

-Notes on the messages implementation. -

- -prepared by Benjamin Kosnik (bkoz@redhat.com) on August 8, 2001 - - -

-1. Abstract -

-

-The std::messages facet implements message retrieval functionality -equivalent to Java's java.text.MessageFormat .using either GNU gettext -or IEEE 1003.1-200 functions. -

- -

-2. What the standard says -

-The std::messages facet is probably the most vaguely defined facet in -the standard library. It's assumed that this facility was built into -the standard library in order to convert string literals from one -locale to the other. For instance, converting the "C" locale's -const char* c = "please" to a German-localized "bitte" -during program execution. - -
-22.2.7.1 - Template class messages [lib.locale.messages] -
- -This class has three public member functions, which directly -correspond to three protected virtual member functions. - -The public member functions are: - -

-catalog open(const string&, const locale&) const -

- -

-string_type get(catalog, int, int, const string_type&) const -

- -

-void close(catalog) const -

- -

-While the virtual functions are: -

- -

-catalog do_open(const string&, const locale&) const -

-
- --1- Returns: A value that may be passed to get() to retrieve a -message, from the message catalog identified by the string name -according to an implementation-defined mapping. The result can be used -until it is passed to close(). Returns a value less than 0 if no such -catalog can be opened. - -
- -

-string_type do_get(catalog, int, int, const string_type&) const -

-
- --3- Requires: A catalog cat obtained from open() and not yet closed. --4- Returns: A message identified by arguments set, msgid, and dfault, -according to an implementation-defined mapping. If no such message can -be found, returns dfault. - -
- -

-void do_close(catalog) const -

-
- --5- Requires: A catalog cat obtained from open() and not yet closed. --6- Effects: Releases unspecified resources associated with cat. --7- Notes: The limit on such resources, if any, is implementation-defined. - -
- - -

-3. Problems with "C" messages: thread safety, -over-specification, and assumptions. -

-A couple of notes on the standard. - -

-First, why is messages_base::catalog specified as a typedef -to int? This makes sense for implementations that use -catopen, but not for others. Fortunately, it's not heavily -used and so only a minor irritant. -

- -

-Second, by making the member functions const, it is -impossible to save state in them. Thus, storing away information used -in the 'open' member function for use in 'get' is impossible. This is -unfortunate. -

- -

-The 'open' member function in particular seems to be oddly -designed. The signature seems quite peculiar. Why specify a const -string& argument, for instance, instead of just const -char*? Or, why specify a const locale& argument that is -to be used in the 'get' member function? How, exactly, is this locale -argument useful? What was the intent? It might make sense if a locale -argument was associated with a given default message string in the -'open' member function, for instance. Quite murky and unclear, on -reflection. -

- -

-Lastly, it seems odd that messages, which explicitly require code -conversion, don't use the codecvt facet. Because the messages facet -has only one template parameter, it is assumed that ctype, and not -codecvt, is to be used to convert between character sets. -

- -

-It is implicitly assumed that the locale for the default message -string in 'get' is in the "C" locale. Thus, all source code is assumed -to be written in English, so translations are always from "en_US" to -other, explicitly named locales. -

- -

-4. Design and Implementation Details -

-This is a relatively simple class, on the face of it. The standard -specifies very little in concrete terms, so generic implementations -that are conforming yet do very little are the norm. Adding -functionality that would be useful to programmers and comparable to -Java's java.text.MessageFormat takes a bit of work, and is highly -dependent on the capabilities of the underlying operating system. - -

-Three different mechanisms have been provided, selectable via -configure flags: -

- -
    -
  • generic -

    - This model does very little, and is what is used by default. -

    -
  • - -
  • gnu -

    - The gnu model is complete and fully tested. It's based on the - GNU gettext package, which is part of glibc. It uses the functions - textdomain, bindtextdomain, gettext - to implement full functionality. Creating message - catalogs is a relatively straight-forward process and is - lightly documented below, and fully documented in gettext's - distributed documentation. -

    -
  • - -
  • ieee_1003.1-200x -

    - This is a complete, though untested, implementation based on - the IEEE standard. The functions - catopen, catgets, catclose - are used to retrieve locale-specific messages given the - appropriate message catalogs that have been constructed for - their use. Note, the script po2msg.sed that is part - of the gettext distribution can convert gettext catalogs into - catalogs that catopen can use. -

    -
  • -
- -

-A new, standards-conformant non-virtual member function signature was -added for 'open' so that a directory could be specified with a given -message catalog. This simplifies calling conventions for the gnu -model. -

- -

-The rest of this document discusses details of the GNU model. -

- -

-The messages facet, because it is retrieving and converting between -characters sets, depends on the ctype and perhaps the codecvt facet in -a given locale. In addition, underlying "C" library locale support is -necessary for more than just the LC_MESSAGES mask: -LC_CTYPE is also necessary. To avoid any unpleasantness, all -bits of the "C" mask (ie LC_ALL) are set before retrieving -messages. -

- -

-Making the message catalogs can be initially tricky, but become quite -simple with practice. For complete info, see the gettext -documentation. Here's an idea of what is required: -

- -
    -
  • Make a source file with the required string literals - that need to be translated. See - intl/string_literals.cc for an example. -
  • - -
  • Make initial catalog (see "4 Making the PO Template File" - from the gettext docs). -

    - xgettext --c++ --debug string_literals.cc -o libstdc++.pot -

    -
  • - -
  • Make language and country-specific locale catalogs. -

    - cp libstdc++.pot fr_FR.po -

    -

    - cp libstdc++.pot de_DE.po -

    -
  • - -
  • Edit localized catalogs in emacs so that strings are - translated. -

    - emacs fr_FR.po -

    -
  • - -
  • Make the binary mo files. -

    - msgfmt fr_FR.po -o fr_FR.mo -

    -

    - msgfmt de_DE.po -o de_DE.mo -

    -
  • - -
  • Copy the binary files into the correct directory structure. -

    - cp fr_FR.mo (dir)/fr_FR/LC_MESSAGES/libstdc++-v3.mo -

    -

    - cp de_DE.mo (dir)/de_DE/LC_MESSAGES/libstdc++-v3.mo -

    -
  • - -
  • Use the new message catalogs. -

    - locale loc_de("de_DE"); -

    -

    - - use_facet<messages<char> >(loc_de).open("libstdc++", locale(), dir); - -

    -
  • -
- -

-5. Examples -

- -
    -
  • message converting, simple example using the GNU model. - -
    -#include <iostream>
    -#include <locale>
    -using namespace std;
    -
    -void test01()
    -{
    -  typedef messages<char>::catalog catalog;
    -  const char* dir =
    -  "/mnt/egcs/build/i686-pc-linux-gnu/libstdc++-v3/po/share/locale";  
    -  const locale loc_de("de_DE");
    -  const messages<char>& mssg_de = use_facet<messages<char> >(loc_de); 
    -
    -  catalog cat_de = mssg_de.open("libstdc++", loc_de, dir);
    -  string s01 = mssg_de.get(cat_de, 0, 0, "please");
    -  string s02 = mssg_de.get(cat_de, 0, 0, "thank you");
    -  cout << "please in german:" << s01 << '\n';
    -  cout << "thank you in german:" << s02 << '\n';
    -  mssg_de.close(cat_de);
    -}
    -
    -
  • -
- -More information can be found in the following testcases: -
    -
  • testsuite/22_locale/messages.cc
  • -
  • testsuite/22_locale/messages_byname.cc
  • -
  • testsuite/22_locale/messages_char_members.cc
  • -
- -

-6. Unresolved Issues -

-
    -
  • Things that are sketchy, or remain unimplemented: -
      -
    • _M_convert_from_char, _M_convert_to_char are in - flux, depending on how the library ends up doing - character set conversions. It might not be possible to - do a real character set based conversion, due to the - fact that the template parameter for messages is not - enough to instantiate the codecvt facet (1 supplied, - need at least 2 but would prefer 3). -
    • - -
    • There are issues with gettext needing the global - locale set to extract a message. This dependence on - the global locale makes the current "gnu" model non - MT-safe. Future versions of glibc, ie glibc 2.3.x will - fix this, and the C++ library bits are already in - place. -
    • -
    -
  • - -
  • Development versions of the GNU "C" library, glibc 2.3 will allow - a more efficient, MT implementation of std::messages, and will - allow the removal of the _M_name_messages data member. If this - is done, it will change the library ABI. The C++ parts to - support glibc 2.3 have already been coded, but are not in use: - once this version of the "C" library is released, the marked - parts of the messages implementation can be switched over to - the new "C" library functionality. -
  • -
  • At some point in the near future, std::numpunct will probably use - std::messages facilities to implement truename/falename - correctly. This is currently not done, but entries in - libstdc++.pot have already been made for "true" and "false" - string literals, so all that remains is the std::numpunct - coding and the configure/make hassles to make the installed - library search its own catalog. Currently the libstdc++.mo - catalog is only searched for the testsuite cases involving - messages members. -
  • - -
  • The following member functions: - -

    - - catalog - open(const basic_string<char>& __s, const locale& __loc) const - -

    - -

    - - catalog - open(const basic_string<char>&, const locale&, const char*) const; - -

    - -

    - Don't actually return a "value less than 0 if no such catalog - can be opened" as required by the standard in the "gnu" - model. As of this writing, it is unknown how to query to see - if a specified message catalog exists using the gettext - package. -

    -
  • -
- -

-7. Acknowledgments -

-Ulrich Drepper for the character set explanations, gettext details, -and patient answering of late-night questions, Tom Tromey for the java details. - - -

-8. Bibliography / Referenced Documents -

- -Drepper, Ulrich, GNU libc (glibc) 2.2 manual. In particular, Chapters -"7 Locales and Internationalization" - -

-Drepper, Ulrich, Thread-Aware Locale Model, A proposal. This is a -draft document describing the design of glibc 2.3 MT locale -functionality. -

- -

-Drepper, Ulrich, Numerous, late-night email correspondence -

- -

-ISO/IEC 9899:1999 Programming languages - C -

- -

-ISO/IEC 14882:1998 Programming languages - C++ -

- -

-Java 2 Platform, Standard Edition, v 1.3.1 API Specification. In -particular, java.util.Properties, java.text.MessageFormat, -java.util.Locale, java.util.ResourceBundle. -http://java.sun.com/j2se/1.3/docs/api -

- -

-System Interface Definitions, Issue 7 (IEEE Std. 1003.1-200x) -The Open Group/The Institute of Electrical and Electronics Engineers, Inc. -In particular see lines 5268-5427. -http://www.opennc.org/austin/docreg.html -

- -

GNU gettext tools, version 0.10.38, Native Language Support -Library and Tools. -http://sources.redhat.com/gettext -

- -

-Langer, Angelika and Klaus Kreft, Standard C++ IOStreams and Locales, -Advanced Programmer's Guide and Reference, Addison Wesley Longman, -Inc. 2000. See page 725, Internationalized Messages. -

- -

-Stroustrup, Bjarne, Appendix D, The C++ Programming Language, Special Edition, Addison Wesley, Inc. 2000 -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/howto.html deleted file mode 100644 index 55415affd..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/howto.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 23: Containers - - - - - - - - - -

Chapter 23: Containers

- -

Chapter 23 deals with container classes and what they offer. -

- - - -
-

Contents

- - -
- - - -

Making code unaware of the container/array difference

-

You're writing some code and can't decide whether to use builtin - arrays or some kind of container. There are compelling reasons - to use one of the container classes, but you're afraid that you'll - eventually run into difficulties, change everything back to arrays, - and then have to change all the code that uses those data types to - keep up with the change. -

-

If your code makes use of the standard algorithms, this isn't as - scary as it sounds. The algorithms don't know, nor care, about - the kind of "container" on which they work, since the - algorithms are only given endpoints to work with. For the container - classes, these are iterators (usually begin() and - end(), but not always). For builtin arrays, these are - the address of the first element and the - past-the-end element. -

-

Some very simple wrapper functions can hide all of that from the - rest of the code. For example, a pair of functions called - beginof can be written, one that takes an array, another - that takes a vector. The first returns a pointer to the first - element, and the second returns the vector's begin() - iterator. -

-

The functions should be made template functions, and should also - be declared inline. As pointed out in the comments in the code - below, this can lead to beginof being optimized out of - existence, so you pay absolutely nothing in terms of increased - code size or execution time. -

-

The result is that if all your algorithm calls look like -

-
-   std::transform(beginof(foo), endof(foo), beginof(foo), SomeFunction);
-

then the type of foo can change from an array of ints to a vector - of ints to a deque of ints and back again, without ever changing any - client code. -

-

This author has a collection of such functions, called "*of" - because they all extend the builtin "sizeof". It started - with some Usenet discussions on a transparent way to find the length - of an array. A simplified and much-reduced version for easier - reading is given here. -

-

Astute readers will notice two things at once: first, that the - container class is still a vector<T> instead of a - more general Container<T>. This would mean that - three functions for deque would have to be added, another - three for list, and so on. This is due to problems with - getting template resolution correct; I find it easier just to - give the extra three lines and avoid confusion. -

-

Second, the line -

-
-    inline unsigned int lengthof (T (&)[sz]) { return sz; } 
-

looks just weird! Hint: unused parameters can be left nameless. -

-

Return to top of page or - to the FAQ. -

- -
-

Variable-sized bitmasks

-

No, you cannot write code of the form -

- -
-      #include <bitset>
-
-      void foo (size_t n)
-      {
-          std::bitset<n>   bits;
-          ....
-      } 
-

because n must be known at compile time. Your compiler is - correct; it is not a bug. That's the way templates work. (Yes, it - is a feature.) -

-

There are a couple of ways to handle this kind of thing. Please - consider all of them before passing judgement. They include, in - no particular order: -

-
    -
  • A very large N in bitset<N>.
  • -
  • A container<bool>.
  • -
  • Extremely weird solutions.
  • -
-

A very large N in - bitset<N>.   It has - been pointed out a few times in newsgroups that N bits only takes up - (N/8) bytes on most systems, and division by a factor of eight is pretty - impressive when speaking of memory. Half a megabyte given over to a - bitset (recall that there is zero space overhead for housekeeping info; - it is known at compile time exactly how large the set is) will hold over - four million bits. If you're using those bits as status flags (e.g., - "changed"/"unchanged" flags), that's a lot - of state. -

-

You can then keep track of the "maximum bit used" during some - testing runs on representative data, make note of how many of those bits - really need to be there, and then reduce N to a smaller number. Leave - some extra space, of course. (If you plan to write code like the - incorrect example above, where the bitset is a local variable, then you - may have to talk your compiler into allowing that much stack space; - there may be zero space overhead, but it's all allocated inside the - object.) -

-

A container<bool>.   The Committee - made provision - for the space savings possible with that (N/8) usage previously mentioned, - so that you don't have to do wasteful things like - Container<char> or - Container<short int>. - Specifically, vector<bool> is required to be - specialized for that space savings. -

-

The problem is that vector<bool> doesn't behave like a - normal vector anymore. There have been recent journal articles which - discuss the problems (the ones by Herb Sutter in the May and - July/August 1999 issues of - C++ Report cover it well). Future revisions of the ISO C++ - Standard will change the requirement for vector<bool> - specialization. In the meantime, deque<bool> is - recommended (although its behavior is sane, you probably will not get - the space savings, but the allocation scheme is different than that - of vector). -

-

Extremely weird solutions.   If you have - access to - the compiler and linker at runtime, you can do something insane, like - figuring out just how many bits you need, then writing a temporary - source code file. That file contains an instantiation of - bitset - for the required number of bits, inside some wrapper functions with - unchanging signatures. Have your program then call the - compiler on that file using Position Independent Code, then open the - newly-created object file and load those wrapper functions. You'll have - an instantiation of bitset<N> for the exact - N - that you need at the time. Don't forget to delete the temporary files. - (Yes, this can be, and has been, done.) -

- -

This would be the approach of either a visionary genius or a raving - lunatic, depending on your programming and management style. Probably - the latter. -

-

Which of the above techniques you use, if any, are up to you and your - intended application. Some time/space profiling is indicated if it - really matters (don't just guess). And, if you manage to do anything - along the lines of the third category, the author would love to hear - from you... -

-

Also note that the implementation of bitset used in libstdc++-v3 has - some extensions. -

-

Return to top of page or - to the FAQ. -

- -
-

Containers and multithreading

-

This section discusses issues surrounding the design of - multithreaded applications which use Standard C++ containers. - All information in this section is current as of the gcc 3.0 - release and all later point releases. Although earlier gcc - releases had a different approach to threading configuration and - proper compilation, the basic code design rules presented here - were similar. For information on all other aspects of - multithreading as it relates to libstdc++, including details on - the proper compilation of threaded code (and compatibility between - threaded and non-threaded code), see Chapter 17. -

-

Two excellent pages to read when working with the Standard C++ - containers and threads are - SGI's - http://www.sgi.com/tech/stl/thread_safety.html and - SGI's - http://www.sgi.com/tech/stl/Allocators.html. -

-

However, please ignore all discussions about the user-level - configuration of the lock implementation inside the STL - container-memory allocator on those pages. For the sake of this - discussion, libstdc++-v3 configures the SGI STL implementation, - not you. This is quite different from how gcc pre-3.0 worked. - In particular, past advice was for people using g++ to - explicitly define _PTHREADS or other macros or port-specific - compilation options on the command line to get a thread-safe - STL. This is no longer required for any port and should no - longer be done unless you really know what you are doing and - assume all responsibility. -

-

Since the container implementation of libstdc++-v3 uses the SGI - code, we use the same definition of thread safety as SGI when - discussing design. A key point that beginners may miss is the - fourth major paragraph of the first page mentioned above - ("For most clients,"...), which points out that - locking must nearly always be done outside the container, by - client code (that'd be you, not us). There is a notable - exceptions to this rule. Allocators called while a container or - element is constructed uses an internal lock obtained and - released solely within libstdc++-v3 code (in fact, this is the - reason STL requires any knowledge of the thread configuration). -

-

For implementing a container which does its own locking, it is - trivial to provide a wrapper class which obtains the lock (as - SGI suggests), performs the container operation, and then - releases the lock. This could be templatized to a certain - extent, on the underlying container and/or a locking - mechanism. Trying to provide a catch-all general template - solution would probably be more trouble than it's worth. -

-

The STL implementation is currently configured to use the - high-speed caching memory allocator. Some people like to - test and/or normally run threaded programs with a different - default. For all details about how to globally override this - at application run-time see here. -

-

There is a better way (not standardized yet): It is possible to - force the malloc-based allocator on a per-case-basis for some - application code. The library team generally believes that this - is a better way to tune an application for high-speed using this - implementation of the STL. There is - more information on allocators here. -

-

Return to top of page or - to the FAQ. -

- -
-

"Hinting" during insertion

-

Section [23.1.2], Table 69, of the C++ standard lists this function - for all of the associative containers (map, set, etc): -

-
-      a.insert(p,t);
-

where 'p' is an iterator into the container 'a', and 't' is the item - to insert. The standard says that "iterator p is a hint - pointing to where the insert should start to search," but - specifies nothing more. (LWG Issue #233, currently in review, - addresses this topic, but I will ignore it here because it is not yet - finalized.) -

-

Here we'll describe how the hinting works in the libstdc++-v3 - implementation, and what you need to do in order to take advantage of - it. (Insertions can change from logarithmic complexity to amortized - constant time, if the hint is properly used.) Also, since the current - implementation is based on the SGI STL one, these points may hold true - for other library implementations also, since the HP/SGI code is used - in a lot of places. -

-

In the following text, the phrases greater than and less - than refer to the results of the strict weak ordering imposed on - the container by its comparison object, which defaults to (basically) - "<". Using those phrases is semantically sloppy, but I - didn't want to get bogged down in syntax. I assume that if you are - intelligent enough to use your own comparison objects, you are also - intelligent enough to assign "greater" and "lesser" - their new meanings in the next paragraph. *grin* -

-

If the hint parameter ('p' above) is equivalent to: -

-
    -
  • begin(), then the item being inserted should have a key - less than all the other keys in the container. The item will - be inserted at the beginning of the container, becoming the new - entry at begin(). -
  • -
  • end(), then the item being inserted should have a key - greater than all the other keys in the container. The item will - be inserted at the end of the container, becoming the new entry - at end(). -
  • -
  • neither begin() nor end(), then: Let h - be the entry in the container pointed to by hint, that - is, h = *hint. Then the item being inserted should have - a key less than that of h, and greater than that of the - item preceding h. The new item will be inserted - between h and h's predecessor. -
  • -
-

For multimap and multiset, the restrictions are - slightly looser: "greater than" should be replaced by - "not less than" and "less than" should be replaced - by "not greater than." (Why not replace greater with - greater-than-or-equal-to? You probably could in your head, but the - mathematicians will tell you that it isn't the same thing.) -

-

If the conditions are not met, then the hint is not used, and the - insertion proceeds as if you had called a.insert(t) - instead. (Note that GCC releases prior to 3.0.2 - had a bug in the case with hint == begin() for the - map and set classes. You should not use a hint - argument in those releases.) -

-

This behavior goes well with other container's insert() - functions which take an iterator: if used, the new item will be - inserted before the iterator passed as an argument, same as the other - containers. The exception - (in a sense) is with a hint of end(): the new item will - actually be inserted after end(), but it also becomes the - new end(). -

-

Note also that the hint in this implementation is a - one-shot. The insertion-with-hint routines check the immediately - surrounding entries to ensure that the new item would in fact belong - there. If the hint does not point to the correct place, then no - further local searching is done; the search begins from scratch in - logarithmic time. (Further local searching would only increase the - time required when the hint is too far off.) -

-

Return to top of page or - to the FAQ. -

- -
-

Bitmasks and string arguments

-

Bitmasks do not take char* nor const char* arguments in their - constructors. This is something of an accident, but you can read - about the problem: follow the library's "Links" from the - homepage, and from the C++ information "defect reflector" - link, select the library issues list. Issue number 116 describes the - problem. -

-

For now you can simply make a temporary string object using the - constructor expression: -

-
-      std::bitset<5> b ( std::string("10110") );
-      
- instead of -
-      std::bitset<5> b ( "10110" );    // invalid
-      
-

Return to top of page or - to the FAQ. -

- -
-

std::list::size() is O(n)!

-

Yes it is, and that's okay. This is a decision that we preserved when - we imported SGI's STL implementation. The following is quoted from - their FAQ: -

-
-

The size() member function, for list and slist, takes time - proportional to the number of elements in the list. This was a - deliberate tradeoff. The only way to get a constant-time size() for - linked lists would be to maintain an extra member variable containing - the list's size. This would require taking extra time to update that - variable (it would make splice() a linear time operation, for example), - and it would also make the list larger. Many list algorithms don't - require that extra word (algorithms that do require it might do better - with vectors than with lists), and, when it is necessary to maintain - an explicit size count, it's something that users can do themselves. -

-

This choice is permitted by the C++ standard. The standard says that - size() "should" be constant time, and "should" - does not mean the same thing as "shall". This is the - officially recommended ISO wording for saying that an implementation - is supposed to do something unless there is a good reason not to. -

-

One implication of linear time size(): you should never write -

-
-         if (L.size() == 0)
-             ...
- Instead, you should write -
-         if (L.empty())
-             ...
-
-

Return to top of page or - to the FAQ. -

- -
-

Space overhead management for vectors

-

In - this - message to the list, Daniel Kostecky announced work on an - alternate form of std::vector that would support hints - on the number of elements to be over-allocated. The design was also - described, along with possible implementation choices. -

-

The first two alpha releases were announced - here - and - here. - The releases themselves are available at - - http://www.kotelna.sk/dk/sw/caphint/. -

-

Return to top of page or - to the FAQ. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/wrappers_h.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/wrappers_h.txt deleted file mode 100644 index 53b592042..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/23_containers/wrappers_h.txt +++ /dev/null @@ -1,48 +0,0 @@ - -/***************************************************************** - * Functions to help treat arrays in a uniform manner. These were - * inspired by a thread on comp.lang.c++.moderated, started by Dietmar - * Kuehl and contributed to by the rest of the entire planet. - * - * beginof (x), endof (x), lengthof (x) now accompany sizeof, where x - * can be either a container (currently only sequences) or a builtin - * array (/not/ a pointer). The beginof/endof are intended for use in - * the algorithms library, and lengthof is a "sizing" function. - * - * Note example: - * char an_array [17]; - * cerr << lengthof(an_array) << endl; - * produces assembly code of - * mov 17,register0 - * call ofstream_put - * i.e., the template function inlining really does work; g++ - * requires -O3 (or -finline-functions) before it does this, though. - * - * pedwards 13Nov98 -*/ -// beginof -template - inline typename vector::iterator beginof (vector &v) - { return v.begin(); } - -template - inline T* beginof (T (&array)[sz]) { return array; } - - -// endof -template - inline typename vector::iterator endof (vector &v) - { return v.end(); } - -template - inline T* endof (T (&array)[sz]) { return array + sz; } - - -// lengthof -template - inline typename vector::size_type lengthof (vector &v) - { return v.size(); } - -template - inline unsigned int lengthof (T (&)[sz]) { return sz; } - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/24_iterators/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/24_iterators/howto.html deleted file mode 100644 index e4d557d37..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/24_iterators/howto.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 24: Iterators - - - - - - - - - -

Chapter 24: Iterators

- -

Chapter 24 deals with the FORTRAN subroutines for automatically - transforming lemmings into gold. -

- - - -
-

Contents

- - -
- - - -

They ain't pointers!

-

FAQ 5.1 points out that iterators - are not implemented as pointers. They are a generalization of - pointers, but they are implemented in libstdc++-v3 as separate classes. -

-

Keeping that simple fact in mind as you design your code will - prevent a whole lot of difficult-to-understand bugs. -

-

You can think of it the other way 'round, even. Since iterators - are a generalization, that means that pointers are - iterators, and that pointers can be used whenever an - iterator would be. All those functions in the Algorithms chapter - of the Standard will work just as well on plain arrays and their - pointers. -

-

That doesn't mean that when you pass in a pointer, it gets wrapped - into some special delegating iterator-to-pointer class with a layer - of overhead. (If you think that's the case anywhere, you don't - understand templates to begin with...) Oh, no; if you pass - in a pointer, then the compiler will instantiate that template - using T* as a type, and good old high-speed pointer arithmetic as - its operations, so the resulting code will be doing exactly the same - things as it would be doing if you had hand-coded it yourself (for - the 273rd time). -

-

How much overhead is there when using an interator class? - Very little. Most of the layering classes contain nothing but - typedefs, and typedefs are "meta-information" that simply - tell the compiler some nicknames; they don't create code. That - information gets passed down through inheritance, so while the - compiler has to do work looking up all the names, your runtime code - does not. (This has been a prime concern from the beginning.) -

-

Return to top of page or - to the FAQ. -

- -
-

It ends where?

-

This starts off sounding complicated, but is actually very easy, - especially towards the end. Trust me. -

-

Beginners usually have a little trouble understand the whole - 'past-the-end' thing, until they remember their early algebra classes - (see, they told you that stuff would come in handy!) and - the concept of half-open ranges. -

-

First, some history, and a reminder of some of the funkier rules in - C and C++ for builtin arrays. The following rules have always been - true for both languages: -

-
    -
  1. You can point anywhere in the array, or to the first element - past the end of the array. A pointer that points to one - past the end of the array is guaranteed to be as unique as a - pointer to somewhere inside the array, so that you can compare - such pointers safely. -
  2. -
  3. You can only dereference a pointer that points into an array. - If your array pointer points outside the array -- even to just - one past the end -- and you dereference it, Bad Things happen. -
  4. -
  5. Strictly speaking, simply pointing anywhere else invokes - undefined behavior. Most programs won't puke until such a - pointer is actually dereferenced, but the standards leave that - up to the platform. -
  6. -
-

The reason this past-the-end addressing was allowed is to make it - easy to write a loop to go over an entire array, e.g., - while (*d++ = *s++);. -

-

So, when you think of two pointers delimiting an array, don't think - of them as indexing 0 through n-1. Think of them as boundary - markers: -

-
-
-   beginning            end
-     |                   |
-     |                   |               This is bad.  Always having to
-     |                   |               remember to add or subtract one.
-     |                   |               Off-by-one bugs very common here.
-     V                   V
-        array of N elements
-     |---|---|--...--|---|---|
-     | 0 | 1 |  ...  |N-2|N-1|
-     |---|---|--...--|---|---|
-
-     ^                       ^
-     |                       |
-     |                       |           This is good.  This is safe.  This
-     |                       |           is guaranteed to work.  Just don't
-     |                       |           dereference 'end'.
-   beginning                end
-
-   
-

See? Everything between the boundary markers is part of the array. - Simple. -

-

Now think back to your junior-high school algebra course, when you - were learning how to draw graphs. Remember that a graph terminating - with a solid dot meant, "Everything up through this point," - and a graph terminating with an open dot meant, "Everything up - to, but not including, this point," respectively called closed - and open ranges? Remember how closed ranges were written with - brackets, [a,b], and open ranges were written with parentheses, - (a,b)? -

-

The boundary markers for arrays describe a half-open range, - starting with (and including) the first element, and ending with (but - not including) the last element: [beginning,end). See, I - told you it would be simple in the end. -

-

Iterators, and everything working with iterators, follows this same - time-honored tradition. A container's begin() method returns - an iterator referring to the first element, and its end() - method returns a past-the-end iterator, which is guaranteed to be - unique and comparable against any other iterator pointing into the - middle of the container. -

-

Container constructors, container methods, and algorithms, all take - pairs of iterators describing a range of values on which to operate. - All of these ranges are half-open ranges, so you pass the beginning - iterator as the starting parameter, and the one-past-the-end iterator - as the finishing parameter. -

-

This generalizes very well. You can operate on sub-ranges quite - easily this way; functions accepting a [first,last) range - don't know or care whether they are the boundaries of an entire {array, - sequence, container, whatever}, or whether they only enclose a few - elements from the center. This approach also makes zero-length - sequences very simple to recognize: if the two endpoints compare - equal, then the {array, sequence, container, whatever} is empty. -

-

Just don't dereference end(). -

-

Return to top of page or - to the FAQ. -

- - - - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/25_algorithms/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/25_algorithms/howto.html deleted file mode 100644 index fe45f3237..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/25_algorithms/howto.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 25: Algorithms - - - - - - - - - -

Chapter 25: Algorithms

- -

Chapter 25 deals with the generalized subroutines for automatically - transforming lemmings into gold. -

- - - -
-

Contents

- - -
- - - -

Prerequisites

-

The neatest accomplishment of the algorithms chapter is that all the - work is done via iterators, not containers directly. This means two - important things: -

-
    -
  1. Anything that behaves like an iterator can be used in one of - these algorithms. Raw pointers make great candidates, thus - built-in arrays are fine containers, as well as your own iterators. -
  2. -
  3. The algorithms do not (and cannot) affect the container as a - whole; only the things between the two iterator endpoints. If - you pass a range of iterators only enclosing the middle third of - a container, then anything outside that range is inviolate. -
  4. -
-

Even strings can be fed through the algorithms here, although the - string class has specialized versions of many of these functions (for - example, string::find()). Most of the examples on this - page will use simple arrays of integers as a playground for - algorithms, just to keep things simple. - The use of N as a size in the - examples is to keep things easy to read but probably won't be valid - code. You can use wrappers such as those described in the - containers chapter to keep - real code readable. -

-

The single thing that trips people up the most is the definition of - range used with iterators; the famous - "past-the-end" rule that everybody loves to hate. The - iterators chapter of this - document has a complete explanation of this simple rule that seems to - cause so much confusion. Once you get range into your head - (it's not that hard, honest!), then the algorithms are a cakewalk. -

-

Return to top of page or - to the FAQ. -

- -
-

Special swaps

-

If you call std::swap(x,y); where x and y are standard - containers, then the call will automatically be replaced by a call to - x.swap(y); instead. -

-

This allows member functions of each container class to take over, and - containers' swap functions should have O(1) complexity according to - the standard. (And while "should" allows implementations to - behave otherwise and remain compliant, this implementation does in - fact use constant-time swaps.) This should not be surprising, since - for two containers of the same type to swap contents, only some - internal pointers to storage need to be exchanged. -

-

Return to top of page or - to the FAQ. -

- - - - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/26_numerics/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/26_numerics/howto.html deleted file mode 100644 index 48dc84c35..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/26_numerics/howto.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 26: Numerics - - - - - - - - - -

Chapter 26: Numerics

- -

Chapter 26 deals with building block abstractions to aid in - numerical computing: -

-
    -
  • Template data structures such as valarray<> - and complex<>. -
  • -
  • Template numerical functions such as accumulate, - inner_product, partial_sum, and - adjacent_difference. -
  • -
-

All of the Standard C math functions are of course included in C++, - and overloaded versions for long, float, and - long double have been added for all of them. -

- - -
-

Contents

- - -
- - - -

Complex Number Processing

-

Using complex<> becomes even more comple- er, sorry, - complicated, with the not-quite-gratuitously-incompatible - addition of complex types to the C language. David Tribble has - compiled a list of C++98 and C99 conflict points; his description of - C's new type versus those of C++ and how to get them playing together - nicely is -here. -

-

complex<> is intended to be instantiated with a - floating-point type. As long as you meet that and some other basic - requirements, then the resulting instantiation has all of the usual - math operators defined, as well as definitions of op<< - and op>> that work with iostreams: op<< - prints (u,v) and op>> can read u, - (u), and (u,v). -

-

Return to top of page or - to the FAQ. -

- -
-

Array Processing

-

One of the major reasons why FORTRAN can chew through numbers so well - is that it is defined to be free of pointer aliasing, an assumption - that C89 is not allowed to make, and neither is C++98. C99 adds a new - keyword, restrict, to apply to individual pointers. The - C++ solution is contained in the library rather than the language - (although many vendors can be expected to add this to their compilers - as an extension). -

-

That library solution is a set of two classes, five template classes, - and "a whole bunch" of functions. The classes are required - to be free of pointer aliasing, so compilers can optimize the - daylights out of them the same way that they have been for FORTRAN. - They are collectively called valarray, although strictly - speaking this is only one of the five template classes, and they are - designed to be familiar to people who have worked with the BLAS - libraries before. -

-

Some more stuff should go here once somebody has time to write it. -

-

Return to top of page or - to the FAQ. -

- -
-

Numerical Functions

-

There are four generalized functions in the <numeric> header - that follow the same conventions as those in <algorithm>. Each - of them is overloaded: one signature for common default operations, - and a second for fully general operations. Their names are - self-explanatory to anyone who works with numerics on a regular basis: -

-
    -
  • accumulate
  • -
  • inner_product
  • -
  • partial_sum
  • -
  • adjacent_difference
  • -
-

Here is a simple example of the two forms of accumulate. -

-
-   int   ar[50];
-   int   someval = somefunction();
-
-   // ...initialize members of ar to something...
-
-   int  sum       = std::accumulate(ar,ar+50,0);
-   int  sum_stuff = std::accumulate(ar,ar+50,someval);
-   int  product   = std::accumulate(ar,ar+50,1,std::multiplies<int>());
-   
-

The first call adds all the members of the array, using zero as an - initial value for sum. The second does the same, but uses - someval as the starting value (thus, sum_stuff == sum + - someval). The final call uses the second of the two signatures, - and multiplies all the members of the array; here we must obviously - use 1 as a starting value instead of 0. -

-

The other three functions have similar dual-signature forms. -

-

Return to top of page or - to the FAQ. -

- -
-

C99

-

In addition to the other topics on this page, we'll note here some - of the C99 features that appear in libstdc++-v3. -

-

The C99 features depend on the --enable-c99 configure flag. - This flag is already on by default, but it can be disabled by the - user. Also, the configuration machinery will disable it if the - necessary support for C99 (e.g., header files) cannot be found. -

-

As of GCC 3.0, C99 support includes classification functions - such as isnormal, isgreater, - isnan, etc. - The functions used for 'long long' support such as strtoll - are supported, as is the lldiv_t typedef. Also supported - are the wide character functions using 'long long', like - wcstoll. -

-

Return to top of page or - to the FAQ. -

- - - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kanze.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kanze.txt deleted file mode 100644 index 65d79c996..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kanze.txt +++ /dev/null @@ -1,51 +0,0 @@ - -From: James Kanze -Newsgroups: comp.lang.c++.moderated -Subject: Re: binary iostreams ? -Date: 3 Feb 2001 14:28:19 -0500 -Message-ID: <86lmro86qp.fsf@alex.gabi-soft.de> - -"Plinio Conti" writes: - -|> Why std c++ library stream classes are only text-oriented? - -Because that is the only universally recognized format. - -|> I mean, if I want to write an int, a float, etc. AS IT IS I can't -|> use streams, because they write and read a human readable text -|> format of numbers. - -Correct. - -|> Does anyone know how to solve the problem? - -It depends on what you really want to do. If you are just dumping a -block of memory to disk, in order to free up memory, and will reread it -later in the same run of the same program, ostream::write and -istream::read are what you need. Note, however, that this ony works 1) -in the same run of the same program, and 2) for PODs without pointers. - -If you are writing something that will be read by another program, or a -later run of the same program, you'll have to define a specific format -to use, and implement streams to input and output that. If you are -writing something that will be read by an existing program, or be -transmitted over a network to another machine, you will have to find out -what protocol is expected, and adher to it. - -|> Any public library? - -Not that I know of. I think that there is a library somewhere that -outputs in format RPC, or maybe some Internet format. - -|> What do you think about this choice? - -What other choice is possible? It's not reasonable to ask the standard -to support all binary formats, and it's not reasonable for it to favor -any one of them. Given that, what else can you do. - --- -James Kanze mailto:kanze@gabi-soft.de -Conseils en informatique orientée objet/ - Beratung in objektorientierter Datenverarbeitung -Ziegelhüttenweg 17a, 60598 Frankfurt, Germany Tel. +49(069)63198627 - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kuehl.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kuehl.txt deleted file mode 100644 index 901701ff4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/binary_iostreams_kuehl.txt +++ /dev/null @@ -1,89 +0,0 @@ - -From: kuehl@ramsen.informatik.uni-konstanz.de (Dietmar Kuehl) -Newsgroups: comp.std.c++ -Subject: Re: binary iostreams ? -Date: Sat, 3 Feb 2001 17:17:49 GMT -Message-ID: <95hctq$suu$2@news.BelWue.DE> - -Hi, -Plinio Conti (plinio.contiNO@SPAMMINGmclink.it) wrote: -: Why std c++ library stream classes are only text-oriented? - -There is only a text oriented front end to stream buffers because text -input and output does not vary between platforms. This is very -different for binary output. For example, binary output has to consider - -- word sizes: Is an 'int' two, four, or eight bytes long? The same - questions arise for all other built-in types. - -- what is the bit pattern of a value? I think that at least implicitly - in the standard a binary representation for integer types is required. - I don't think that it is required to use two's complement. In any - case, the floating point representations do differ, eg. in their - number of bytes used. - -- what "endianess" is to be used? - -Basically it is possible to decide a format for each of those. This, -however, implies inefficient implementations on platforms where the -format does not match the internal representation. - -What many people asking for binary I/O forget is that binary I/O also -requires some form of formatting! Assuming that just writing data and -then reading it in will work is asking for problems, eg. when the -compiler version changes and they decided to use a 32 bit integer -rather than a 16 bit integer: It is not even necessary to switch -platforms to run into problems! - -: I mean, if I want to write an int, a float, etc. AS IT IS I can't use -: streams, because they write and read a human readable text format of -: numbers. - -Which is for most I/O a reasonable approach. If it is not for you, you -might want to consider a data base: File I/O is not really useful as a -persistance mechanism. It is fine eg. for user interaction (text I/O), -logging (text I/O), cross platfrom program interaction (formatted I/O), -and data exchange (formatted I/O). In all these cases, the I/O is -formatted, although possible using a binary format. For persistance, -data bases are used. Depending on your needs, a relational or an object -oriented one may be better suited. - -That said, it is worth to mention that it is easy to create a hierarchy -similar to IOStreams built on top of stream buffers but doing binary -formatting. A somewhat aged example is found at -. -This uses XDR formatting of the binary data (well, if I remmeber -correctly, it is easy to plug in a different binary formatting). - -: Does anyone know how to solve the problem? - -Use a data base, text formatting, or binary formatting. With the -details you have given it is impossible to tell which of those is the -right approach because you haven't told *why* you want a binary format -and *what* you want to do. That basically means that you came up with -solution and you want us to confirm that it is the right one without -telling us what problem is solved! Until I have seen the problem I -doubt that binary I/O is the right approach... - -... and, BTW, using 'std::istream::read()' and 'std::ostream::write()' -is almost certainly the *wrong* approach! These functions are an -historical mistake which should have been corrected in the standard: -It is my understanding that these methods were present in the IOStream -version predating the rework from Jerry Schwartz and were left in to -be compatible with the earlier stuff although they were not necessary: -You could get binary I/O from the stream buffer level. The original -IOStream library (maybe you remember using ) did not have -stream buffers and thus basic support for binary I/O was also present -on the streams level. - -: What do you think about this choice? - -When I wrote the above paragraph about confirming your choice, I haven't -read this question! As I said above: You told us what solution you have -choosen without stating what problem is solved. We cannot determine -whether your choice is the right one. Actually, I'm pretty sure it is -the wrong one but without seen the details I can't be certain. --- - -Phaidros eaSE - Easy Software Engineering: - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/howto.html deleted file mode 100644 index a9a3bbe38..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/27_io/howto.html +++ /dev/null @@ -1,779 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Chapter 27: Input/Output - - - - - - - - - -

Chapter 27: Input/Output

- -

Chapter 27 deals with iostreams and all their subcomponents - and extensions. All kinds of fun stuff. -

- - - -
-

Contents

- - -
- - - -

Copying a file

-

So you want to copy a file quickly and easily, and most important, - completely portably. And since this is C++, you have an open - ifstream (call it IN) and an open ofstream (call it OUT): -

-
-   #include <fstream>
-
-   std::ifstream  IN ("input_file");
-   std::ofstream  OUT ("output_file"); 
-

Here's the easiest way to get it completely wrong: -

-
-   OUT << IN;
-

For those of you who don't already know why this doesn't work - (probably from having done it before), I invite you to quickly - create a simple text file called "input_file" containing - the sentence -

-
-      The quick brown fox jumped over the lazy dog.
-

surrounded by blank lines. Code it up and try it. The contents - of "output_file" may surprise you. -

-

Seriously, go do it. Get surprised, then come back. It's worth it. -

-
-

The thing to remember is that the basic_[io]stream classes - handle formatting, nothing else. In particular, they break up on - whitespace. The actual reading, writing, and storing of data is - handled by the basic_streambuf family. Fortunately, the - operator<< is overloaded to take an ostream and - a pointer-to-streambuf, in order to help with just this kind of - "dump the data verbatim" situation. -

-

Why a pointer to streambuf and not just a streambuf? Well, - the [io]streams hold pointers (or references, depending on the - implementation) to their buffers, not the actual - buffers. This allows polymorphic behavior on the part of the buffers - as well as the streams themselves. The pointer is easily retrieved - using the rdbuf() member function. Therefore, the easiest - way to copy the file is: -

-
-   OUT << IN.rdbuf();
-

So what was happening with OUT<<IN? Undefined - behavior, since that particular << isn't defined by the Standard. - I have seen instances where it is implemented, but the character - extraction process removes all the whitespace, leaving you with no - blank lines and only "Thequickbrownfox...". With - libraries that do not define that operator, IN (or one of IN's - member pointers) sometimes gets converted to a void*, and the output - file then contains a perfect text representation of a hexidecimal - address (quite a big surprise). Others don't compile at all. -

-

Also note that none of this is specific to o*f*streams. - The operators shown above are all defined in the parent - basic_ostream class and are therefore available with all possible - descendents. -

-

Return to top of page or - to the FAQ. -

- -
-

The buffering is screwing up my program!

- -

First, are you sure that you understand buffering? Particularly - the fact that C++ may not, in fact, have anything to do with it? -

-

The rules for buffering can be a little odd, but they aren't any - different from those of C. (Maybe that's why they can be a bit - odd.) Many people think that writing a newline to an output - stream automatically flushes the output buffer. This is true only - when the output stream is, in fact, a terminal and not a file - or some other device -- and that may not even be true - since C++ says nothing about files nor terminals. All of that is - system-dependent. (The "newline-buffer-flushing only occurring - on terminals" thing is mostly true on Unix systems, though.) -

-

Some people also believe that sending endl down an - output stream only writes a newline. This is incorrect; after a - newline is written, the buffer is also flushed. Perhaps this - is the effect you want when writing to a screen -- get the text - out as soon as possible, etc -- but the buffering is largely - wasted when doing this to a file: -

-
-   output << "a line of text" << endl;
-   output << some_data_variable << endl;
-   output << "another line of text" << endl; 
-

The proper thing to do in this case to just write the data out - and let the libraries and the system worry about the buffering. - If you need a newline, just write a newline: -

-
-   output << "a line of text\n"
-          << some_data_variable << '\n'
-          << "another line of text\n"; 
-

I have also joined the output statements into a single statement. - You could make the code prettier by moving the single newline to - the start of the quoted text on the last line, for example. -

-

If you do need to flush the buffer above, you can send an - endl if you also need a newline, or just flush the buffer - yourself: -

-
-   output << ...... << flush;    // can use std::flush manipulator
-   output.flush();               // or call a member fn 
-

On the other hand, there are times when writing to a file should - be like writing to standard error; no buffering should be done - because the data needs to appear quickly (a prime example is a - log file for security-related information). The way to do this is - just to turn off the buffering before any I/O operations at - all have been done (note that opening counts as an I/O operation): -

-
-   std::ofstream    os;
-   std::ifstream    is;
-   int   i;
-
-   os.rdbuf()->pubsetbuf(0,0);
-   is.rdbuf()->pubsetbuf(0,0);
-
-   os.open("/foo/bar/baz");
-   is.open("/qux/quux/quuux");
-   ...
-   os << "this data is written immediately\n";
-   is >> i;   // and this will probably cause a disk read 
-

Since all aspects of buffering are handled by a streambuf-derived - member, it is necessary to get at that member with rdbuf(). - Then the public version of setbuf can be called. The - arguments are the same as those for the Standard C I/O Library - function (a buffer area followed by its size). -

-

A great deal of this is implementation-dependent. For example, - streambuf does not specify any actions for its own - setbuf()-ish functions; the classes derived from - streambuf each define behavior that "makes - sense" for that class: an argument of (0,0) turns off buffering - for filebuf but does nothing at all for its siblings - stringbuf and strstreambuf, and specifying - anything other than (0,0) has varying effects. - User-defined classes derived from streambuf can - do whatever they want. (For filebuf and arguments for - (p,s) other than zeros, libstdc++ does what you'd expect: - the first s bytes of p are used as a buffer, - which you must allocate and deallocate.) -

-

A last reminder: there are usually more buffers involved than - just those at the language/library level. Kernel buffers, disk - buffers, and the like will also have an effect. Inspecting and - changing those are system-dependent. -

-

Return to top of page or - to the FAQ. -

- -
-

Binary I/O

-

The first and most important thing to remember about binary I/O is - that opening a file with ios::binary is not, repeat - not, the only thing you have to do. It is not a silver - bullet, and will not allow you to use the <</>> - operators of the normal fstreams to do binary I/O. -

-

Sorry. Them's the breaks. -

-

This isn't going to try and be a complete tutorial on reading and - writing binary files (because "binary" - covers a lot of ground), but we will try and clear - up a couple of misconceptions and common errors. -

-

First, ios::binary has exactly one defined effect, no more - and no less. Normal text mode has to be concerned with the newline - characters, and the runtime system will translate between (for - example) '\n' and the appropriate end-of-line sequence (LF on Unix, - CRLF on DOS, CR on Macintosh, etc). (There are other things that - normal mode does, but that's the most obvious.) Opening a file in - binary mode disables this conversion, so reading a CRLF sequence - under Windows won't accidentally get mapped to a '\n' character, etc. - Binary mode is not supposed to suddenly give you a bitstream, and - if it is doing so in your program then you've discovered a bug in - your vendor's compiler (or some other part of the C++ implementation, - possibly the runtime system). -

-

Second, using << to write and >> to - read isn't going to work with the standard file stream classes, even - if you use skipws during reading. Why not? Because - ifstream and ofstream exist for the purpose of formatting, - not reading and writing. Their job is to interpret the data into - text characters, and that's exactly what you don't want to happen - during binary I/O. -

-

Third, using the get() and put()/write() member - functions still aren't guaranteed to help you. These are - "unformatted" I/O functions, but still character-based. - (This may or may not be what you want, see below.) -

-

Notice how all the problems here are due to the inappropriate use - of formatting functions and classes to perform something - which requires that formatting not be done? There are a - seemingly infinite number of solutions, and a few are listed here: -

-
    -
  • "Derive your own fstream-type classes and write your own - <</>> operators to do binary I/O on whatever data - types you're using." This is a Bad Thing, because while - the compiler would probably be just fine with it, other humans - are going to be confused. The overloaded bitshift operators - have a well-defined meaning (formatting), and this breaks it. -
  • -
  • "Build the file structure in memory, then mmap() - the file and copy the structure." Well, this is easy to - make work, and easy to break, and is pretty equivalent to - using ::read() and ::write() directly, and - makes no use of the iostream library at all... -
  • -
  • "Use streambufs, that's what they're there for." - While not trivial for the beginner, this is the best of all - solutions. The streambuf/filebuf layer is the layer that is - responsible for actual I/O. If you want to use the C++ - library for binary I/O, this is where you start. -
  • -
-

How to go about using streambufs is a bit beyond the scope of this - document (at least for now), but while streambufs go a long way, - they still leave a couple of things up to you, the programmer. - As an example, byte ordering is completely between you and the - operating system, and you have to handle it yourself. -

-

Deriving a streambuf or filebuf - class from the standard ones, one that is specific to your data - types (or an abstraction thereof) is probably a good idea, and - lots of examples exist in journals and on Usenet. Using the - standard filebufs directly (either by declaring your own or by - using the pointer returned from an fstream's rdbuf()) - is certainly feasible as well. -

-

One area that causes problems is trying to do bit-by-bit operations - with filebufs. C++ is no different from C in this respect: I/O - must be done at the byte level. If you're trying to read or write - a few bits at a time, you're going about it the wrong way. You - must read/write an integral number of bytes and then process the - bytes. (For example, the streambuf functions take and return - variables of type int_type.) -

-

Another area of problems is opening text files in binary mode. - Generally, binary mode is intended for binary files, and opening - text files in binary mode means that you now have to deal with all of - those end-of-line and end-of-file problems that we mentioned before. - An instructive thread from comp.lang.c++.moderated delved off into - this topic starting more or less at - this - article and continuing to the end of the thread. (You'll have to - sort through some flames every couple of paragraphs, but the points - made are good ones.) -

- -
-

What is this <sstream>/stringstreams thing?

-

Stringstreams (defined in the header <sstream>) - are in this author's opinion one of the coolest things since - sliced time. An example of their use is in the Received Wisdom - section for Chapter 21 (Strings), - describing how to - format strings. -

-

The quick definition is: they are siblings of ifstream and ofstream, - and they do for std::string what their siblings do for - files. All that work you put into writing << and - >> functions for your classes now pays off - again! Need to format a string before passing the string - to a function? Send your stuff via << to an - ostringstream. You've read a string as input and need to parse it? - Initialize an istringstream with that string, and then pull pieces - out of it with >>. Have a stringstream and need to - get a copy of the string inside? Just call the str() - member function. -

-

This only works if you've written your - <</>> functions correctly, though, - and correctly means that they take istreams and ostreams as - parameters, not ifstreams and ofstreams. If they - take the latter, then your I/O operators will work fine with - file streams, but with nothing else -- including stringstreams. -

-

If you are a user of the strstream classes, you need to update - your code. You don't have to explicitly append ends to - terminate the C-style character array, you don't have to mess with - "freezing" functions, and you don't have to manage the - memory yourself. The strstreams have been officially deprecated, - which means that 1) future revisions of the C++ Standard won't - support them, and 2) if you use them, people will laugh at you. -

- -
-

Deriving a stream buffer

-

Creating your own stream buffers for I/O can be remarkably easy. - If you are interested in doing so, we highly recommend two very - excellent books: - Standard C++ - IOStreams and Locales by Langer and Kreft, ISBN 0-201-18395-1, and - The C++ Standard Library - by Nicolai Josuttis, ISBN 0-201-37926-0. Both are published by - Addison-Wesley, who isn't paying us a cent for saying that, honest. -

-

Here is a simple example, io/outbuf1, from the Josuttis text. It - transforms everything sent through it to uppercase. This version - assumes many things about the nature of the character type being - used (for more information, read the books or the newsgroups): -

-
-    #include <iostream>
-    #include <streambuf>
-    #include <locale>
-    #include <cstdio>
-
-    class outbuf : public std::streambuf
-    {
-      protected:
-	/* central output function
-	 * - print characters in uppercase mode
-	 */
-	virtual int_type overflow (int_type c) {
-	    if (c != EOF) {
-		// convert lowercase to uppercase
-		c = std::toupper(static_cast<char>(c),getloc());
-
-		// and write the character to the standard output
-		if (putchar(c) == EOF) {
-		    return EOF;
-		}
-	    }
-	    return c;
-	}
-    };
-
-    int main()
-    {
-	// create special output buffer
-	outbuf ob;
-	// initialize output stream with that output buffer
-	std::ostream out(&ob);
-
-	out << "31 hexadecimal: "
-	    << std::hex << 31 << std::endl;
-	return 0;
-    }
-   
-

Try it yourself! More examples can be found in 3.1.x code, in - include/ext/*_filebuf.h, and on - Dietmar - Kühl's IOStreams page. -

- -
-

More on binary I/O

-

Towards the beginning of February 2001, the subject of - "binary" I/O was brought up in a couple of places at the - same time. One notable place was Usenet, where James Kanze and - Dietmar Kühl separately posted articles on why attempting - generic binary I/O was not a good idea. (Here are copies of - Kanze's article and - Kühl's article.) -

-

Briefly, the problems of byte ordering and type sizes mean that - the unformatted functions like ostream::put() and - istream::get() cannot safely be used to communicate - between arbitrary programs, or across a network, or from one - invocation of a program to another invocation of the same program - on a different platform, etc. -

-

The entire Usenet thread is instructive, and took place under the - subject heading "binary iostreams" on both comp.std.c++ - and comp.lang.c++.moderated in parallel. Also in that thread, - Dietmar Kühl mentioned that he had written a pair of stream - classes that would read and write XDR, which is a good step towards - a portable binary format. -

- -
-

Pathetic performance? Ditch C.

-

It sounds like a flame on C, but it isn't. Really. Calm down. - I'm just saying it to get your attention. -

-

Because the C++ library includes the C library, both C-style and - C++-style I/O have to work at the same time. For example: -

-
-     #include <iostream>
-     #include <cstdio>
-
-     std::cout << "Hel";
-     std::printf ("lo, worl");
-     std::cout << "d!\n";
-   
-

This must do what you think it does. -

-

Alert members of the audience will immediately notice that buffering - is going to make a hash of the output unless special steps are taken. -

-

The special steps taken by libstdc++, at least for version 3.0, - involve doing very little buffering for the standard streams, leaving - most of the buffering to the underlying C library. (This kind of - thing is tricky to get right.) - The upside is that correctness is ensured. The downside is that - writing through cout can quite easily lead to awful - performance when the C++ I/O library is layered on top of the C I/O - library (as it is for 3.0 by default). Some patches have been applied - which improve the situation for 3.1. -

-

However, the C and C++ standard streams only need to be kept in sync - when both libraries' facilities are in use. If your program only uses - C++ I/O, then there's no need to sync with the C streams. The right - thing to do in this case is to call -

-
-     #include any of the I/O headers such as ios, iostream, etc
-
-     std::ios::sync_with_stdio(false);
-   
-

You must do this before performing any I/O via the C++ stream objects. - Once you call this, the C++ streams will operate independently of the - (unused) C streams. For GCC 3.x, this means that cout and - company will become fully buffered on their own. -

-

Note, by the way, that the synchronization requirement only applies to - the standard streams (cin, cout, - cerr, - clog, and their wide-character counterparts). File stream - objects that you declare yourself have no such requirement and are fully - buffered. -

- -
-

Threads and I/O

-

I'll assume that you have already read the - general notes on library threads, - and the - notes on threaded container - access (you might not think of an I/O stream as a container, but - the points made there also hold here). If you have not read them, - please do so first. -

-

This gets a bit tricky. Please read carefully, and bear with me. -

-

Structure

-

As described here, a wrapper - type called __basic_file provides our abstraction layer - for the std::filebuf classes. Nearly all decisions dealing - with actual input and output must be made in __basic_file. -

-

A generic locking mechanism is somewhat in place at the filebuf layer, - but is not used in the current code. Providing locking at any higher - level is akin to providing locking within containers, and is not done - for the same reasons (see the links above). -

-

The defaults for 3.0.x

-

The __basic_file type is simply a collection of small wrappers around - the C stdio layer (again, see the link under Structure). We do no - locking ourselves, but simply pass through to calls to fopen, - fwrite, and so forth. -

-

So, for 3.0, the question of "is multithreading safe for I/O" - must be answered with, "is your platform's C library threadsafe - for I/O?" Some are by default, some are not; many offer multiple - implementations of the C library with varying tradeoffs of threadsafety - and efficiency. You, the programmer, are always required to take care - with multiple threads. -

-

(As an example, the POSIX standard requires that C stdio FILE* - operations are atomic. POSIX-conforming C libraries (e.g, on Solaris - and GNU/Linux) have an internal mutex to serialize operations on - FILE*s. However, you still need to not do stupid things like calling - fclose(fs) in one thread followed by an access of - fs in another.) -

-

So, if your platform's C library is threadsafe, then your - fstream I/O operations will be threadsafe at the lowest - level. For higher-level operations, such as manipulating the data - contained in the stream formatting classes (e.g., setting up callbacks - inside an std::ofstream), you need to guard such accesses - like any other critical shared resource. -

-

The future

-

As already mentioned here, a - second choice is available for I/O implementations: libio. This is - disabled by default, and in fact will not currently work due to other - issues. It will be revisited, however. -

-

The libio code is a subset of the guts of the GNU libc (glibc) I/O - implementation. When libio is in use, the __basic_file - type is basically derived from FILE. (The real situation is more - complex than that... it's derived from an internal type used to - implement FILE. See libio/libioP.h to see scary things done with - vtbls.) The result is that there is no "layer" of C stdio - to go through; the filebuf makes calls directly into the same - functions used to implement fread, fwrite, - and so forth, using internal data structures. (And when I say - "makes calls directly," I mean the function is literally - replaced by a jump into an internal function. Fast but frightening. - *grin*) -

-

Also, the libio internal locks are used. This requires pulling in - large chunks of glibc, such as a pthreads implementation, and is one - of the issues preventing widespread use of libio as the libstdc++ - cstdio implementation. -

-

But we plan to make this work, at least as an option if not a future - default. Platforms running a copy of glibc with a recent-enough - version will see calls from libstdc++ directly into the glibc already - installed. For other platforms, a copy of the libio subsection will - be built and included in libstdc++. -

-

Alternatives

-

Don't forget that other cstdio implemenations are possible. You could - easily write one to perform your own forms of locking, to solve your - "interesting" problems. -

- -
-

Which header?

-

To minimize the time you have to wait on the compiler, it's good to - only include the headers you really need. Many people simply include - <iostream> when they don't need to -- and that can penalize - your runtime as well. Here are some tips on which header to use - for which situations, starting with the simplest. -

-

<iosfwd> should be included whenever you simply - need the name of an I/O-related class, such as - "ofstream" or "basic_streambuf". Like the name - implies, these are forward declarations. (A word to all you fellow - old school programmers: trying to forward declare classes like - "class istream;" won't work. Look in the iosfwd header if - you'd like to know why.) For example, -

-
-    #include <iosfwd>
-
-    class MyClass
-    {
-        ....
-        std::ifstream&   input_file;
-    };
-
-    extern std::ostream& operator<< (std::ostream&, MyClass&);
-   
-

<ios> declares the base classes for the entire - I/O stream hierarchy, std::ios_base and std::basic_ios<charT>, the - counting types std::streamoff and std::streamsize, the file - positioning type std::fpos, and the various manipulators like - std::hex, std::fixed, std::noshowbase, and so forth. -

-

The ios_base class is what holds the format flags, the state flags, - and the functions which change them (setf(), width(), precision(), - etc). You can also store extra data and register callback functions - through ios_base, but that has been historically underused. Anything - which doesn't depend on the type of characters stored is consolidated - here. -

-

The template class basic_ios is the highest template class in the - hierarchy; it is the first one depending on the character type, and - holds all general state associated with that type: the pointer to the - polymorphic stream buffer, the facet information, etc. -

-

<streambuf> declares the template class - basic_streambuf, and two standard instantiations, streambuf and - wstreambuf. If you need to work with the vastly useful and capable - stream buffer classes, e.g., to create a new form of storage - transport, this header is the one to include. -

-

<istream>/<ostream> are - the headers to include when you are using the >>/<< - interface, or any of the other abstract stream formatting functions. - For example, -

-
-    #include <istream>
-
-    std::ostream& operator<< (std::ostream& os, MyClass& c)
-    {
-       return os << c.data1() << c.data2();
-    }
-   
-

The std::istream and std::ostream classes are the abstract parents of - the various concrete implementations. If you are only using the - interfaces, then you only need to use the appropriate interface header. -

-

<iomanip> provides "extractors and inserters - that alter information maintained by class ios_base and its dervied - classes," such as std::setprecision and std::setw. If you need - to write expressions like os << setw(3); or - is >> setbase(8);, you must include <iomanip>. -

-

<sstream>/<fstream> - declare the six stringstream and fstream classes. As they are the - standard concrete descendants of istream and ostream, you will already - know about them. -

-

Finally, <iostream> provides the eight standard - global objects (cin, cout, etc). To do this correctly, this header - also provides the contents of the <istream> and <ostream> - headers, but nothing else. The contents of this header look like -

-
-    #include <ostream>
-    #include <istream>
-
-    namespace std
-    {
-        extern istream cin;
-        extern ostream cout;
-        ....
-
-        // this is explained below
-        static ios_base::Init __foo;    // not its real name
-    }
-   
-

Now, the runtime penalty mentioned previously: the global objects - must be initialized before any of your own code uses them; this is - guaranteed by the standard. Like any other global object, they must - be initialized once and only once. This is typically done with a - construct like the one above, and the nested class ios_base::Init is - specified in the standard for just this reason. -

-

How does it work? Because the header is included before any of your - code, the __foo object is constructed before any of - your objects. (Global objects are built in the order in which they - are declared, and destroyed in reverse order.) The first time the - constructor runs, the eight stream objects are set up. -

-

The static keyword means that each object file compiled - from a source file containing <iostream> will have its own - private copy of __foo. There is no specified order - of construction across object files (it's one of those pesky NP - problems that make life so interesting), so one copy in each object - file means that the stream objects are guaranteed to be set up before - any of your code which uses them could run, thereby meeting the - requirements of the standard. -

-

The penalty, of course, is that after the first copy of - __foo is constructed, all the others are just wasted - processor time. The time spent is merely for an increment-and-test - inside a function call, but over several dozen or hundreds of object - files, that time can add up. (It's not in a tight loop, either.) -

-

The lesson? Only include <iostream> when you need to use one of - the standard objects in that source file; you'll pay less startup - time. Only include the header files you need to in general; your - compile times will go down when there's less parsing work to do. -

- - -
-

Using FILE*s and file descriptors with IOStreams

- -

The v2 library included non-standard extensions to construct - std::filebufs from C stdio types such as - FILE*s and POSIX file descriptors. - Today the recommended way to use stdio types with libstdc++-v3 - IOStreams is via the stdio_filebuf class (see below), - but earlier releases provided slightly different mechanisms. -

-
    -
  • 3.0.x filebufs have another ctor with this signature: -
    - basic_filebuf(__c_file_type*, ios_base::openmode, int_type); -
    This comes in very handy in a number of places, such as - attaching Unix sockets, pipes, and anything else which uses file - descriptors, into the IOStream buffering classes. The three - arguments are as follows: -
      -
    • __c_file_type* F - // the __c_file_type typedef usually boils down to stdio's FILE -
    • -
    • ios_base::openmode M - // same as all the other uses of openmode -
    • -
    • int_type B - // buffer size, defaults to BUFSIZ if not specified -
    • -
    - For those wanting to use file descriptors instead of FILE*'s, I - invite you to contemplate the mysteries of C's fdopen(). -
  • -
  • In library snapshot 3.0.95 and later, filebufs bring - back an old extension: the fd() member function. The - integer returned from this function can be used for whatever file - descriptors can be used for on your platform. Naturally, the - library cannot track what you do on your own with a file descriptor, - so if you perform any I/O directly, don't expect the library to be - aware of it. -
  • -
  • Beginning with 3.1, the extra filebuf constructor and - the fd() function were removed from the standard - filebuf. Instead, <ext/stdio_filebuf.h> contains - a derived class called - __gnu_cxx::stdio_filebuf. - This class can be constructed from a C FILE* or a file - descriptor, and provides the fd() function. -
  • -
-

If you want to access a filebufs file descriptor to - implement file locking (e.g. using the fcntl() system - call) then you might be interested in Henry Suter's - RWLock - class. -

- - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/Makefile b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/Makefile deleted file mode 100644 index a0b335aaa..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/Makefile +++ /dev/null @@ -1,41 +0,0 @@ - -PWD_COMMAND=$${PWDCMD-pwd} -MAKEINFO=makeinfo -INC=../../../gcc/doc/include - -all: documentation.html \ - faq/index.txt \ - 17_intro/confdeps.png \ - 17_intro/porting.html \ - 17_intro/porting-howto.html - -# chock full of GNUism, probably -documentation.html: $(wildcard */howto.html) - sed -n '1,/beginlist/p' $@ > tmp.top - sed -n '/endlist/,$$p' $@ > tmp.bottom - echo '
    ' > tmp.middle - for i in [0-9]*/howto.html; do \ - title=`grep 'h1 ' $$i |\ - sed 's=.*\(Chapter [[:digit:]]*\):[[:space:]]*\(.*\).*=\2 (\1)='` ;\ - awk -v file=$$i -v "title=$$title" -f makedoc.awk $$i >> tmp.middle ;\ - done - awk -v file=ext/howto.html -v "title=Extensions to the Standard Library"\ - -f makedoc.awk ext/howto.html >> tmp.middle ;\ - echo '
' >> tmp.middle - cat tmp.top tmp.middle tmp.bottom > $@ - rm tmp.top tmp.middle tmp.bottom - -faq/index.txt: faq/index.html - lynx -dump $< | sed "s%file://localhost`${PWD_COMMAND}`%..%" > $@ - -17_intro/porting.html: 17_intro/porting.texi - ${MAKEINFO} -I ${INC} --html --no-split $< -o $@ - -# known to work under RH; this can be cleaned up later if needed -17_intro/porting-howto.html: 17_intro/porting-howto.xml - xltproc -o $@ /usr/share/xml/docbook/xsl-stylesheets-1.48-2/html/docbook.xsl $< - -17_intro/confdeps.png: 17_intro/confdeps.dot - dot -Tpng -o $@ $< - -# vim:noet ts=4 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/abi.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/abi.html deleted file mode 100644 index 1971b3aa6..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/abi.html +++ /dev/null @@ -1,902 +0,0 @@ - - - - - - - - - - Standard C++ Library ABI - - - - - - -

C++ Standard Library ABI

- -

- The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/abi.html. -

- -

- To the libstdc++-v3 homepage. -

- - -
-

- The C++ interface -

- -

C++ applications often dependent on specific language support -routines, say for throwing exceptions, or catching exceptions, and -perhaps also dependent on features in the C++ Standard Library. -

- -

The C++ Standard Library has many include files, types defined in -those include files, specific named functions, and other behavior. The -text of these behaviors, as written in source include files, is called -the Application Programing Interface, or API. -

- -

Furthermore, C++ source that is compiled into object files is - transformed by the compiler: it arranges objects with specific - alignment and in a particular layout, mangling names according to a - well-defined algorithm, has specific arrangements for the support of - virtual functions, etc. These details are defined as the compiler - Application Binary Interface, or ABI. The GNU C++ compiler uses an - industry-standard C++ ABI starting with version 3. Details can be - found in the - ABI specification. -

- -

- The GNU C++ compiler, g++, has a compiler command line option to - switch between various different C++ ABIs. This explicit version - switch is the flag -fabi-version. In addition, some - g++ command line options may change the ABI as a side-effect of - use. Such flags include -fpack-struct and - -fno-exceptions, but include others: see the complete - list in the GCC manual under the heading Options - for Code Generation Conventions. -

- -

The configure options used when building a specific libstdc++ -version may also impact the resulting library ABI. The available -configure options, and their impact on the library ABI, are documented - -here. -

- -

Putting all of these ideas together results in the C++ Standard -library ABI, which is the compilation of a given library API by a -given compiler ABI. In a nutshell: -

- - library API + compiler ABI = library ABI - -

- The library ABI is mostly of interest for end-users who have - unresolved symbols and are linking dynamically to the C++ Standard - library, and who thus must be careful to compile their application - with a compiler that is compatible with the available C++ Standard - library binary. In this case, compatible is defined with the equation - above: given an application compiled with a given compiler ABI and - library API, it will work correctly with a Standard C++ Library - created with the same constraints. -

- -

- To use a specific version of the C++ ABI, one must use a - corresponding GNU C++ toolchain (Ie, g++ and libstdc++) that - implements the C++ ABI in question. -

- -

- Versioning -

- -

The C++ interface has evolved throughout the history of the GNU -C++ toolchain. With each release, various details have been changed so -as to give distinct versions to the C++ interface. -

- -
- Goals of versioning -
- -

Extending existing, stable ABIs. Versioning gives subsequent stable -releases series libraries the ability to add new symbols and add -functionality, all the while retaining backwards compatibility with -the previous releases in the series. Note: the reverse is not true. It -is not possible to take binaries linked with the latest version of a -release series (if symbols have been added) and expect the initial -release of the series to remain link compatible. -

- -

Allows multiple, incompatible ABIs to coexist at the same time. -

- -

-

- -
- Version History -
-

- How can this complexity be managed? What does C++ versioning mean? - Because library and compiler changes often make binaries compiled - with one version of the GNU tools incompatible with binaries - compiled with other (either newer or older) versions of the same GNU - tools, specific techniques are used to make managing this complexity - easier. -

- -

- The following techniques are used: -

- -
    - -
  • Release versioning on the libgcc_s.so binary. This is -implemented via file names and the ELF DT_SONAME mechanism (at least -on ELF systems).

    - -

    It is versioned as follows: -

    -
      -
    • gcc-3.0.0: libgcc_s.so.1
    • -
    • gcc-3.0.1: libgcc_s.so.1
    • -
    • gcc-3.0.2: libgcc_s.so.1
    • -
    • gcc-3.0.3: libgcc_s.so.1
    • -
    • gcc-3.0.4: libgcc_s.so.1
    • -
    • gcc-3.1.0: libgcc_s.so.1
    • -
    • gcc-3.1.1: libgcc_s.so.1
    • -
    • gcc-3.2.0: libgcc_s.so.1
    • -
    • gcc-3.2.1: libgcc_s.so.1
    • -
    • gcc-3.2.2: libgcc_s.so.1
    • -
    • gcc-3.2.3: libgcc_s.so.1
    • -
    • gcc-3.3.0: libgcc_s.so.1
    • -
    • gcc-3.3.1: libgcc_s.so.1
    • -
    • gcc-3.3.2: libgcc_s.so.1
    • -
    • gcc-3.3.3: libgcc_s.so.1
    • -
    • gcc-3.4.0: on m68k-linux and hppa-linux this is either libgcc_s.so.1 - (when configuring --with-sjlj-exceptions) or - libgcc_s.so.2. For all others, this is libgcc_s.so.1. -
    • -
    -

    -
  • - -
  • Release versioning on the libstdc++.so binary, implemented in the same was as the libgcc_s.so binary, above. - -

    It is versioned as follows: -

    -
      -
    • gcc-3.0.0: libstdc++.so.3.0.0
    • -
    • gcc-3.0.1: libstdc++.so.3.0.1
    • -
    • gcc-3.0.2: libstdc++.so.3.0.2
    • -
    • gcc-3.0.3: libstdc++.so.3.0.2 (Error should be libstdc++.so.3.0.3)
    • -
    • gcc-3.0.4: libstdc++.so.3.0.4
    • -
    • gcc-3.1.0: libstdc++.so.4.0.0
    • -
    • gcc-3.1.1: libstdc++.so.4.0.1
    • -
    • gcc-3.2.0: libstdc++.so.5.0.0
    • -
    • gcc-3.2.1: libstdc++.so.5.0.1
    • -
    • gcc-3.2.2: libstdc++.so.5.0.2
    • -
    • gcc-3.2.3: libstdc++.so.5.0.3 (Not strictly required)
    • -
    • gcc-3.3.0: libstdc++.so.5.0.4
    • -
    • gcc-3.3.1: libstdc++.so.5.0.5
    • -
    • gcc-3.3.2: libstdc++.so.5.0.5
    • -
    • gcc-3.3.3: libstdc++.so.5.0.5
    • -
    • gcc-3.4.0: libstdc++.so.6.0.0
    • -
    • gcc-3.4.1: libstdc++.so.6.0.1
    • -
    -

    -
  • - -
  • Symbol versioning on the libgcc_s.so binary. -

    mapfile: gcc/libgcc-std.ver

    - -

    It is versioned with the following labels and version definitions:

    -
      -
    • gcc-3.0.0: GCC_3.0
    • -
    • gcc-3.0.1: GCC_3.0
    • -
    • gcc-3.0.2: GCC_3.0
    • -
    • gcc-3.0.3: GCC_3.0
    • -
    • gcc-3.0.4: GCC_3.0
    • -
    • gcc-3.1.0: GCC_3.0
    • -
    • gcc-3.1.1: GCC_3.0
    • -
    • gcc-3.2.0: GCC_3.0
    • -
    • gcc-3.2.1: GCC_3.0
    • -
    • gcc-3.2.2: GCC_3.0
    • -
    • gcc-3.2.3: GCC_3.0
    • -
    • gcc-3.3.0: GCC_3.0
    • -
    • gcc-3.3.1: GCC_3.0
    • -
    • gcc-3.3.2: GCC_3.0
    • -
    • gcc-3.3.3: GCC_3.0
    • -
    • gcc-3.4.0: GCC_3.0
    • -
    -

    -
  • - -
  • Symbol versioning on the libstdc++.so binary. - -

    mapfile: libstdc++-v3/config/linker-map.gnu

    -

    It is versioned with the following labels and version - definitions, where the version definition is the maximum for a - particular release. Note, only symbol which are newly introduced - will use the maximum version definition. Thus, for release series - with the same label, but incremented version definitions, the later - release has both versions. (An example of this would be the - gcc-3.2.1 release, which has GLIBCPP_3.2.1 for new symbols and - GLIBCPP_3.2 for symbols that were introduced in the gcc-3.2.0 - release.) -

    -
      -
    • gcc-3.0.0: (Error, not versioned)
    • -
    • gcc-3.0.1: (Error, not versioned)
    • -
    • gcc-3.0.2: (Error, not versioned)
    • -
    • gcc-3.0.3: (Error, not versioned)
    • -
    • gcc-3.0.4: (Error, not versioned)
    • -
    • gcc-3.1.0: GLIBCPP_3.1, CXXABI_1
    • -
    • gcc-3.1.1: GLIBCPP_3.1, CXXABI_1
    • -
    • gcc-3.2.0: GLIBCPP_3.2, CXXABI_1.2
    • -
    • gcc-3.2.1: GLIBCPP_3.2.1, CXXABI_1.2
    • -
    • gcc-3.2.2: GLIBCPP_3.2.2, CXXABI_1.2
    • -
    • gcc-3.2.3: GLIBCPP_3.2.2, CXXABI_1.2
    • -
    • gcc-3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1
    • -
    • gcc-3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1
    • -
    • gcc-3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1
    • -
    • gcc-3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1
    • -
    • gcc-3.4.0: GLIBCXX_3.4, CXXABI_1.3
    • -
    • gcc-3.4.1: GLIBCXX_3.4.1, CXXABI_1.3
    • -
    -

    -
  • - -
  • -

    Incremental bumping of a compiler pre-defined macro, - __GXX_ABI_VERSION. This macro is defined as the version of the - compiler v3 ABI, with g++ 3.0.x being version 100. This macro will - be automatically defined whenever g++ is used (the curious can - test this by invoking g++ with the '-v' flag.) -

    - -

    - This macro was defined in the file "lang-specs.h" in the gcc/cp directory. - Later versions defined it in "c-common.c" in the gcc directory, and from - G++ 3.4 it is defined in c-cppbuiltin.c and its value determined by the - '-fabi-version' command line option. -

    - -

    - It is versioned as follows, where 'n' is given by '-fabi-version=n': -

    -
      -
    • gcc-3.0.x: 100
    • -
    • gcc-3.1.x: 100 (Error, should be 101)
    • -
    • gcc-3.2.x: 102
    • -
    • gcc-3.3.x: 102
    • -
    • gcc-3.4.x: 102 (when n=1)
    • -
    • gcc-3.4.x: 1000 + n (when n>1)
    • -
    • gcc-3.4.x: 999999 (when n=0)
    • -
    -

    -
  • - -
  • -

    Changes to the default compiler option for - -fabi-version. -

    -

    - It is versioned as follows: -

    -
      -
    • gcc-3.0.x: (Error, not versioned)
    • -
    • gcc-3.1.x: (Error, not versioned)
    • -
    • gcc-3.2.x: -fabi-version=1
    • -
    • gcc-3.3.x: -fabi-version=1
    • -
    • gcc-3.4.x: -fabi-version=2
    • -
    -

    -
  • - -
  • -

    Incremental bumping of a library pre-defined macro. For releases - before 3.4.0, the macro is __GLIBCPP__. For later releases, it's - __GLIBCXX__. (The libstdc++ project generously changed from CPP to - CXX throughout its source to allow the "C" pre-processor the CPP - macro namespace.) These macros are defined as the date the library - was released, in compressed ISO date format, as an unsigned long. -

    - -

    - In addition, the pre-defined macro is defined in the file - "c++config" in the "libstdc++-v3/include/bits" directory and is - changed every night by an automated script. -

    -

    - It is versioned as follows: -

    -
      -
    • gcc-3.0.0: 20010615
    • -
    • gcc-3.0.1: 20010819
    • -
    • gcc-3.0.2: 20011023
    • -
    • gcc-3.0.3: 20011220
    • -
    • gcc-3.0.4: 20020220
    • -
    • gcc-3.1.0: 20020514
    • -
    • gcc-3.1.1: 20020725
    • -
    • gcc-3.2.0: 20020814
    • -
    • gcc-3.2.1: 20021119
    • -
    • gcc-3.2.2: 20030205
    • -
    • gcc-3.2.3: 20030422
    • -
    • gcc-3.3.0: 20030513
    • -
    • gcc-3.3.1: 20030804
    • -
    • gcc-3.3.2: 20031016
    • -
    • gcc-3.3.3: 20040214
    • -
    • gcc-3.4.0: 20040419
    • -
    • gcc-3.4.1: 20040701
    • -
    -

    -
  • - - -
  • -

    - Incremental bumping of a library pre-defined macro, - _GLIBCPP_VERSION. This macro is defined as the released version of - the library, as a string literal. This is only implemented in - gcc-3.1.0 releases and higher, and is deprecated in 3.4 (where it - is called _GLIBCXX_VERSION). -

    - -

    - This macro is defined in the file "c++config" in the - "libstdc++-v3/include/bits" directory and is generated - automatically by autoconf as part of the configure-time generation - of config.h. -

    - -

    - It is versioned as follows: -

    -
      -
    • gcc-3.0.0: "3.0.0"
    • -
    • gcc-3.0.1: "3.0.0" (Error, should be "3.0.1")
    • -
    • gcc-3.0.2: "3.0.0" (Error, should be "3.0.2")
    • -
    • gcc-3.0.3: "3.0.0" (Error, should be "3.0.3")
    • -
    • gcc-3.0.4: "3.0.0" (Error, should be "3.0.4")
    • -
    • gcc-3.1.0: "3.1.0"
    • -
    • gcc-3.1.1: "3.1.1"
    • -
    • gcc-3.2.0: "3.2"
    • -
    • gcc-3.2.1: "3.2.1"
    • -
    • gcc-3.2.2: "3.2.2"
    • -
    • gcc-3.2.3: "3.2.3"
    • -
    • gcc-3.3.0: "3.3"
    • -
    • gcc-3.3.1: "3.3.1"
    • -
    • gcc-3.3.2: "3.3.2"
    • -
    • gcc-3.3.3: "3.3.3"
    • -
    • gcc-3.4.0: "version-unused"
    • -
    • gcc-3.4.1: "version-unused"
    • -
    -

    -
  • - -
  • -

    - Matching each specific C++ compiler release to a specific set of - C++ include files. This is only implemented in gcc-3.1.1 releases - and higher. -

    -

    - All C++ includes are installed in include/c++, then nest in a - directory hierarchy corresponding to the C++ compiler's released - version. This version corresponds to the variable "gcc_version" in - "libstdc++-v3/acinclude.m4," and more details can be found in that - file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before gcc-3.4.0). -

    -

    - C++ includes are versioned as follows: -

    -
      -
    • gcc-3.0.0: include/g++-v3
    • -
    • gcc-3.0.1: include/g++-v3
    • -
    • gcc-3.0.2: include/g++-v3
    • -
    • gcc-3.0.3: include/g++-v3
    • -
    • gcc-3.0.4: include/g++-v3
    • -
    • gcc-3.1.0: include/g++-v3
    • -
    • gcc-3.1.1: include/c++/3.1.1
    • -
    • gcc-3.2.0: include/c++/3.2
    • -
    • gcc-3.2.1: include/c++/3.2.1
    • -
    • gcc-3.2.2: include/c++/3.2.2
    • -
    • gcc-3.2.3: include/c++/3.2.3
    • -
    • gcc-3.3.0: include/c++/3.3
    • -
    • gcc-3.3.1: include/c++/3.3.1
    • -
    • gcc-3.3.2: include/c++/3.3.2
    • -
    • gcc-3.3.3: include/c++/3.3.3
    • -
    • gcc-3.4.0: include/c++/3.4.0
    • -
    • gcc-3.4.1: include/c++/3.4.1
    • -
    -

    -
  • -
-

- Taken together, these techniques can accurately specify interface - and implementation changes in the GNU C++ tools themselves. Used - properly, they allow both the GNU C++ tools implementation, and - programs using them, an evolving yet controlled development that - maintains backward compatibility. -

- - - -
- Minimum requirements for a versioned ABI -
-

- Minimum environment that supports a versioned ABI: A supported - dynamic linker, a GNU linker of sufficient vintage to understand - demangled C++ name globbing (ld), a shared executable compiled with - g++, and shared libraries (libgcc_s, libstdc++-v3) compiled by a - compiler (g++) with a compatible ABI. Phew. -

- -

- On top of all that, an additional constraint: libstdc++ did not - attempt to version symbols (or age gracefully, really) until version - 3.1.0. -

- -

- Most modern Linux and BSD versions, particularly ones using - gcc-3.1.x tools and more recent vintages, will meet the requirements above. -

- - -
- What configure options impact symbol versioning? -
-

- It turns out that most of the configure options that change default - behavior will impact the mangled names of exported symbols, and thus - impact versioning and compatibility. -

- -

- For more information on configure options, including ABI impacts, see: - http://gcc.gnu.org/onlinedocs/libstdc++/configopts.html -

- -

- There is one flag that explicitly deals with symbol versioning: - --enable-symvers. -

- -

- In particular, libstdc++-v3/acinclude.m4 has a macro called - GLIBCXX_ENABLE_SYMVERS that defaults to yes (or the argument passed - in via --enable-symvers=foo). At that point, the macro attempts to - make sure that all the requirement for symbol versioning are in - place. For more information, please consult acinclude.m4. -

- - -
- How to tell if symbol versioning is, indeed, active? -
-

- When the GNU C++ library is being built with symbol versioning on, - you should see the following at configure time for libstdc++-v3: -

- - - checking versioning on shared library symbols... gnu - -

- If you don't see this line in the configure output, or if this line - appears but the last word is 'no', then you are out of luck. -

- -

- If the compiler is pre-installed, a quick way to test is to compile - the following (or any) simple C++ file and link it to the shared - libstdc++ library: -

- -
-#include <iostream>
-
-int main()
-{ std::cout << "hello" << std::endl; return 0; }
-
-%g++ hello.cc -o hello.out
-
-%ldd hello.out
-        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000)
-        libm.so.6 => /lib/tls/libm.so.6 (0x004a8000)
-        libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40016000)
-        libc.so.6 => /lib/tls/libc.so.6 (0x0036d000)
-        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
-
-%nm hello.out
-
- -

-If you see symbols in the resulting output with "GLIBCXX_3" as part -of the name, then the executable is versioned. Here's an example: -

- - U _ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4 - -

- Library allowed ABI changes -

-

-The following will cause the library minor version number to -increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5". -

-
    -
  • adding an exported global or static data member
  • -
  • adding an exported function, static or non-virtual member function
  • -
  • adding an exported symbol or symbols by additional instantiations
  • -
-

-

-

-Other allowed changes are possible. -

- - -

- Library disallowed ABI changes -

- -

-The following non-exhaustive list will cause the library major version -number to increase, say from "libstdc++.so.3.0.4" to -"libstdc++.so.4.0.0". -

-
    -
  • changes in the gcc/g++ compiler ABI
  • -
  • changing size of an exported symbol
  • -
  • changing alignment of an exported symbol
  • -
  • changing the layout of an exported symbol
  • -
  • changing mangling on an exported symbol
  • -
  • deleting an exported symbol
  • -
  • changing the inheritance properties of a type by adding or removing - base classes
  • -
  • - changing the size, alignment, or layout of types - specified in the C++ standard. These may not necessarily be - instantiated or otherwise exported in the library binary, and - include all the required locale facets, as well as things like - std::basic_streambuf, et al. -
  • - -
  • adding an explicit copy constructor or destructor to a -class that would otherwise have implicit versions. This will change -the way the compiler deals with this class in by-value return -statements or parameters: instead of being passing instances of this -class in registers, the compiler will be forced to use memory. See this part - of the C++ ABI documentation for further details. -
  • - -
- -

- Library implementation strategy

- -
    -
  • Separation of interface and implementation -

    This is accomplished by two techniques that separate the API from -the ABI: forcing undefined references to link against a library binary -for definitions. -

    - -
    -
    Include files have declarations, source files have defines
    - -
    For non-templatized types, such as much of class - locale, the appropriate standard C++ include, say - locale, can contain full declarations, while various - source files (say locale.cc, locale_init.cc, - localename.cc) contain definitions.
    - -
    Extern template on required types
    - -
    For parts of the standard that have an explicit list of required - instantiations, the GNU extension syntax extern template - can be used to control where template definitions - reside. By marking required instantiations as extern - template in include files, and providing explicit - instantiations in the appropriate instantiation files, non-inlined - template functions can be versioned. This technique is mostly used - on parts of the standard that require char and - wchar_t instantiations, and includes - basic_string, the locale facets, and the types in - iostreams.
    - -
    -

    In addition, these techniques have the additional benefit that - they reduce binary size, which can increase runtime performance. -

    -
  • - -
  • Namespaces linking symbol definitions to export mapfiles - -

    All symbols in the shared library binary are processed by a linker -script at build time that either allows or disallows external -linkage. Because of this, some symbols, regardless of normal C/C++ -linkage, are not visible. Symbols that are internal have several -appealing characteristics: by not exporting the symbols, there are no -relocations when the shared library is started and thus this makes for -faster runtime loading performance by the underlying dynamic loading -mechanism. In addition, they have the possibility of changing without -impacting ABI compatibility. -

    - -

    The following namespaces are transformed by the mapfile:

    - -
    -
    namespace std
    -
    Defaults to exporting all symbols in label -GLIBCXX that do not begin with an underscore, ie -__test_func would not be exported by default. Select -exceptional symbols are allowed to be visible.
    - -
    namespace __gnu_cxx
    -
    Defaults to not exporting any symbols in label -GLIBCXX, select items are allowed to be visible.
    - -
    namespace __gnu_internal
    -
    Defaults to not exported, no items are allowed to be visible.
    - -
    namespace __cxxabiv1, aliased to namespace abi
    -
    Defaults to not exporting any symbols in label -CXXABI, select items are allowed to be visible.
    -
    -

    -

    -
  • - -
  • Freezing the API -

    Disallowed changes, as above, are not made on a stable release -branch. Enforcement tends to be less strict with GNU extensions that -standard includes.

    -
  • -
- -

- Testing ABI changes -

- -

-Testing for GNU C++ ABI changes is composed of two distinct areas: -testing the C++ compiler (g++) for compiler changes, and testing the -C++ library (libstdc++) for library changes. -

- -

-Testing the C++ compiler ABI can be done various ways. -

- -

-One. -Intel ABI checker. More information can be obtained -here. -

- -

-Two. -The second is yet unreleased, but has been announced on the gcc -mailing list. It is yet unspecified if these tools will be freely -available, and able to be included in a GNU project. Please contact -Mark Mitchell (mark@codesourcery.com) for more details, and current -status. -

- -

-Three. -Involves using the vlad.consistency test framework. This has also been -discussed on the gcc mailing lists. -

- -

-Testing the C++ library ABI can also be done various ways. -

- -

-One. -(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways, -one with a new compiler and an old library, and the other with an old -compiler and a new library, and look for testsuite regressions) -

- -

-Details on how to set this kind of test up can be found here: -http://gcc.gnu.org/ml/gcc/2002-08/msg00142.html -

- -

-Two. -Use the 'make check-abi' rule in the libstdc++-v3 Makefile. -

- -

-This is a proactive check the library ABI. Currently, exported symbol -names that are either weak or defined are checked against a last known -good baseline. Currently, this baseline is keyed off of 3.4.0 -binaries, as this was the last time the .so number was incremented. In -addition, all exported names are demangled, and the exported objects -are checked to make sure they are the same size as the same object in -the baseline. - -Notice that each baseline is relative to a default -configured library and compiler: in particular, if options such as ---enable-clocale, or --with-cpu, in case of multilibs, are used at -configure time, the check may fail, either because of substantive -differences or because of limitations of the current checking -machinery. -

- -

-This dataset is insufficient, yet a start. Also needed is a -comprehensive check for all user-visible types part of the standard -library for sizeof() and alignof() changes. -

- -

-Verifying compatible layouts of objects is not even attempted. It -should be possible to use sizeof, alignof, and offsetof to compute -offsets for each structure and type in the standard library, saving to -another datafile. Then, compute this in a similar way for new -binaries, and look for differences. -

- -

-Another approach might be to use the -fdump-class-hierarchy flag to -get information. However, currently this approach gives insufficient -data for use in library testing, as class data members, their offsets, -and other detailed data is not displayed with this flag. -(See g++/7470 on how this was used to find bugs.) -

- -

-Perhaps there are other C++ ABI checkers. If so, please notify -us. We'd like to know about them! -

- -

- Testing Multi-ABI binaries -

- -

-A "C" application, dynamically linked to two shared libraries, liba, -libb. The dependent library liba is C++ shared library compiled with -gcc-3.3.x, and uses io, exceptions, locale, etc. The dependent library -libb is a C++ shared library compiled with gcc-3.4.x, and also uses io, -exceptions, locale, etc. -

- -

As above, libone is constructed as follows:

-
-%$bld/H-x86-gcc-3.4.0/bin/g++ -fPIC -DPIC -c a.cc
-
-%$bld/H-x86-gcc-3.4.0/bin/g++ -shared -Wl,-soname -Wl,libone.so.1 -Wl,-O1 -Wl,-z,defs a.o -o libone.so.1.0.0
-
-%ln -s libone.so.1.0.0 libone.so
-
-%$bld/H-x86-gcc-3.4.0/bin/g++ -c a.cc
-
-%ar cru libone.a a.o 
-
- -

And, libtwo is constructed as follows:

- -
-%$bld/H-x86-gcc-3.3.3/bin/g++ -fPIC -DPIC -c b.cc
-
-%$bld/H-x86-gcc-3.3.3/bin/g++ -shared -Wl,-soname -Wl,libtwo.so.1 -Wl,-O1 -Wl,-z,defs b.o -o libtwo.so.1.0.0
-
-%ln -s libtwo.so.1.0.0 libtwo.so
-
-%$bld/H-x86-gcc-3.3.3/bin/g++ -c b.cc
-
-%ar cru libtwo.a b.o 
-
- -

...with the resulting libraries looking like

-
-%ldd libone.so.1.0.0
-        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40016000)
-        libm.so.6 => /lib/tls/libm.so.6 (0x400fa000)
-        libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x4011c000)
-        libc.so.6 => /lib/tls/libc.so.6 (0x40125000)
-        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
-
-%ldd libtwo.so.1.0.0
-        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40027000)
-        libm.so.6 => /lib/tls/libm.so.6 (0x400e1000)
-        libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40103000)
-        libc.so.6 => /lib/tls/libc.so.6 (0x4010c000)
-        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
-
-
- -

Then, the "C" compiler is used to compile a source file that uses -functions from each library.

-
-gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so.6
-
- -

-Which gives the expected: -

-
-%ldd a.out
-        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000)
-        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40015000)
-        libc.so.6 => /lib/tls/libc.so.6 (0x0036d000)
-        libm.so.6 => /lib/tls/libm.so.6 (0x004a8000)
-        libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x400e5000)
-        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000)
-
- -

-This resulting binary, when executed, will be able to safely use code -from both liba, and the dependent libstdc++.so.6, and libb, with the -dependent libstdc++.so.5. -

- -

- Bibliography / Further Reading -

- -

-ABIcheck, a vague idea of checking ABI compatibility -
-http://abicheck.sourceforge.net/ -

- -

-C++ ABI reference -
-http://www.codesourcery.com/cxx-abi/ -

- -

-Intel ABI documentation, "Intel® Compilers for Linux* -Compatibility with the GNU Compilers" -
-http://developer.intel.com/software/products/compilers/techtopics/LinuxCompilersCompatibility.htm -

- -

-Sun Solaris 2.9 docs -
-Linker and Libraries Guide (document 816-1386) -
-C++ Migration Guide (document 816-2459) -
-http://docs.sun.com/db/prod/solaris.9 -
-http://docs.sun.com/?p=/doc/816-1386&a=load -

- -

-Ulrich Drepper, "ELF Symbol Versioning" -
-http://people.redhat.com/drepper/symbol-versioning -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/configopts.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/configopts.html deleted file mode 100644 index b396a2d18..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/configopts.html +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - - - - libstdc++-v3 configure options - - - - - -

Interesting configure -options

- -

- The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/configopts.html. -

- -

- To the libstdc++-v3 homepage. -

- - -
-

Here are some of the non-obvious options to libstdc++'s configure. - Keep in mind that - - they - all have opposite forms as well - (enable/disable and with/without). The defaults are for current - development sources, which may be different than those for - released versions. -

-

The canonical way to find out the configure options that are - available for a given set of libstdc++ sources is to go to the - source directory and then type: ./configure --help -

- -
-
--enable-multilib [default]
-

This is part of the generic multilib support for building cross - compilers. As such, targets like "powerpc-elf" will have - libstdc++ built many different ways: "-msoft-float" - and not, etc. A different libstdc++ will be built for each of - the different multilib versions. This option is on by default. -

-
- -
--enable-sjlj-exceptions
-

Forces old, set-jump/long-jump exception handling model. If - at all possible, the new, frame unwinding exception handling routines - should be used instead, as they significantly reduce both - runtime memory usage and executable size. This option can - change the library ABI. -

-
- -
--enable-version-specific-runtime-libs
-

Specify that run-time libraries should be installed in the - compiler-specific subdirectory (i.e., - ${libdir}/gcc-lib/${target_alias}/${gcc_version}) - instead of ${libdir}. This option is useful if you - intend to use several versions of gcc in parallel. In addition, - libstdc++'s include files will be installed in - ${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++, - unless you also specify - --with-gxx-include-dir=dirname during configuration. -

-
- -
--with-gxx-include-dir=<include-files dir>
-

Adds support for named libstdc++ include directory. For instance, - the following puts all the libstdc++ headers into a directory - called "2.97-20001008" instead of the usual - "c++/(version)". -

-
-   --with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/2.97-20001008
- -
--enable-cstdio
-

This is an abbreviated form of '--enable-cstdio=stdio' - (described next). This option can change the library ABI. -

-
- -
--enable-cstdio=OPTION
-

Select a target-specific I/O package. At the moment, the only - choice is to use 'stdio', a generic "C" abstraction. - The default is 'stdio'. A longer explanation is here. -

-
- -
--enable-clocale
-

This is an abbreviated form of '--enable-clocale=generic' - (described next). This option can change the library ABI. -

-
- -
--enable-clocale=OPTION
-

Select a target-specific underlying locale package. The - choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix - (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, - 'gnu' to specify a model based on functionality from the GNU C - library (langinfo/iconv/gettext) (from glibc, the GNU C - library), or 'generic' to use a generic "C" - abstraction which consists of "C" locale info. -

- -

As part of the configuration process, the "C" library is - probed both for sufficient vintage, and installed locale - data. If either of these elements are not present, the C++ - locale model default to 'generic.' On glibc-based systems of - version 2.2.5 and above with installed locale files, 'gnu' is - automatically selected. -

-
- -
--enable-libstdcxx-allocator
-

This is an abbreviated form of - '--enable-libstdcxx-allocator=auto' (described - next). This option can change the library ABI. -

-
- -
--enable-libstdcxx-allocator=OPTION
-

Select a target-specific underlying std::allocator. The - choices are 'new' to specify a wrapper for new, 'malloc' to - specify a wrapper for malloc, 'mt' for a fixed power of two allocator - (documented under extensions), - 'pool' for the SGI pooled allocator or 'bitmap' for a bitmap allocator. - This option can change the library ABI. -

-
- -
--enable-cheaders=OPTION
-

This allows the user to define what kind of C headers are - used. Options are c and c_std. These correspond to the source - directory's include/c and include/c_std. The default is c_std. -

-
- -
--enable-threads
-

This is an abbreviated form of '--enable-threads=yes' - (described next). This option can change the library ABI. -

-
- -
--enable-threads=OPTION
-

Select a threading library. A full description is given in the - general compiler - configuration instructions. -

-
- -
--enable-libstdcxx-debug
-

Build separate debug libraries in addition to what is normally built. - By default, the debug libraries are compiled with - CXXFLAGS='-g3 -O0' - , are installed in ${libdir}/debug, and have the - same names and versioning information as the non-debug - libraries. This option is off by default. -

-

Note this make command, executed in - the build directory, will do much the same thing, without the - configuration difference and without building everything twice: - make CXXFLAGS='-g3 -O0' all -

-
- -
--enable-libstdcxx-debug-flags=FLAGS
- -

This option is only valid when --enable-debug - is also specified, and applies to the debug builds only. With - this option, you can pass a specific string of flags to the - compiler to use when building the debug versions of libstdc++. - FLAGS is a quoted string of options, like -

-
-  --enable-libstdcxx-debug-flags='-g3 -O1 -gdwarf-2'
-
- -
--enable-cxx-flags=FLAGS
-

With this option, you can pass a string of -f (functionality) - flags to the compiler to use when building libstdc++. This - option can change the library ABI. FLAGS is a quoted string of - options, like -

-
-  --enable-cxx-flags='-fvtable-gc -fomit-frame-pointer -ansi'
-

- Note that the flags don't necessarily have to all be -f flags, - as shown, but usually those are the ones that will make sense - for experimentation and configure-time overriding. -

-

The advantage of --enable-cxx-flags over setting CXXFLAGS in - the 'make' environment is that, if files are automatically - rebuilt, the same flags will be used when compiling those files - as well, so that everything matches. -

-

Fun flags to try might include combinations of -

-
-  -fstrict-aliasing
-  -fno-exceptions
-  -ffunction-sections
-  -fvtable-gc
-

and opposite forms (-fno-) of the same. Tell us (the libstdc++ - mailing list) if you discover more! -

-
- -
--enable-c99
-

The "long long" type was introduced in C99, along - with many other functions for wide characters, and math - classification macros, etc. If enabled, all C99 functions not - specified by the C++ standard will be put into namespace - __gnu_cxx, and then all these names will - be injected into namespace std, so that C99 functions can be - used "as if" they were in the C++ standard (as they - will eventually be in some future revision of the standard, - without a doubt). By default, C99 support is on, assuming the - configure probes find all the necessary functions and bits - necessary. This option can change the library ABI. -

-
- -
--enable-wchar_t [default]
-

Template specializations for the "wchar_t" type are - required for wide character conversion support. Disabling - wide character specializations may be expedient for initial - porting efforts, but builds only a subset of what is required by - ISO, and is not recommended. By default, this option is on. - This option can change the library ABI. -

-
- -
--enable-long-long
-

The "long long" type was introduced in C99. It is - provided as a GNU extension to C++98 in g++. This flag builds - support for "long long" into the library (specialized - templates and the like for iostreams). This option is on by default: - if enabled, users will have to either use the new-style "C" - headers by default (i.e., <cmath> not <math.h>) - or add appropriate compile-time flags to all compile lines to - allow "C" visibility of this feature (on GNU/Linux, - the flag is -D_ISOC99_SOURCE, which is added automatically via - CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE). - This option can change the library ABI. -

-
- -
--enable-fully-dynamic-string
-

This option enables a special version of basic_string avoiding - the optimization that allocates empty objects in static memory. - Mostly useful together with shared memory allocators, see PR - libstdc++/16612 for details. -

-
- -
--enable-concept-checks
-

This turns on additional compile-time checks for instantiated - library templates, in the form of specialized templates, - described here. They - can help users discover when they break the rules of the STL, before - their programs run. -

-
- -
--enable-symvers[=style]
-

In 3.1 and later, tries to turn on symbol versioning in the - shared library (if a shared library has been requested). The - only 'style' currently supported is 'gnu' which requires that - a recent version of the GNU linker be in use. With no style - given, the configure script will try to guess if the 'gnu' - style can be used, and if so, will turn it on. Hopefully - people will volunteer to do other 'style' options. -

-
- -
--enable-libstdcxx-pch
-

In 3.4 and later, tries to turn on the generation of - stdc++.h.gch, a pre-compiled file including all the standard - C++ includes. If enabled (as by default), and the compiler - seems capable of passing the simple sanity checks thrown at - it, try to build stdc++.h.gch as part of the make process. - In addition, this generated file is used later on (by appending - --include bits/stdc++.h to CXXFLAGS) when running the - testsuite. -

-
- -
--disable-hosted-libstdcxx
-

By default, a complete hosted C++ library is built. The - C++ Standard also describes a freestanding environment, - in which only a minimal set of headers are provided. This option - builds such an environment. -

-
-
-

Return to the top of the page or - to the libstdc++ homepage. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug.html deleted file mode 100644 index 0242d4363..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - - - - Debugging schemes and strategies - - - - - -

Debugging schemes and strategies

- -

- The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/debug.html. -

- -

- To the libstdc++-v3 homepage. -

- - -
-

There are numerous things that can be done to improve the ease with - which C++ binaries are debugged when using the GNU - tool chain. Here are some of them. -

- -

Compiler flags determine debug info

-

The default optimizations and debug flags for a libstdc++ build are - -g -O2. However, both debug and optimization flags can - be varied to change debugging characteristics. For instance, - turning off all optimization via the -g -O0 flag will - disable inlining, so that stepping through all functions, including - inlined constructors and destructors, is possible. In addition, - -fno-eliminate-unused-debug-types can be used when - additional debug information, such as nested class info, is desired. -

- -

Or, the debug format that the compiler and debugger use to communicate - information about source constructs can be changed via - -gdwarf-2 or -gstabs flags: some debugging - formats permit more expressive type and scope information to be - shown in gdb. The default debug information for a particular - platform can be identified via the value set by the - PREFERRED_DEBUGGING_TYPE macro in the gcc sources. -

- -

Many other options are available: please see -"Options for Debugging Your Program" - in Using the GNU Compiler Collection (GCC) for a complete list. -

- -

Using special flags to make a debug binary

-

If you would like debug symbols in libstdc++, there are two ways to - build libstdc++ with debug flags. The first is to run make from the - toplevel in a freshly-configured tree with -

-
-     --enable-libstdcxx-debug
-
-

and perhaps

-
-     --enable-libstdcxx-debug-flags='...'
-
-

to create a separate debug build. Both the normal build and the - debug build will persist, without having to specify - CXXFLAGS, and the debug library will be installed in a - separate directory tree, in (prefix)/lib/debug. For - more information, look at the configuration - options document. -

- -

A second approach is to use the configuration flags -

-
-     make CXXFLAGS='-g3 -O0' all
-
- -

This quick and dirty approach is often sufficient for quick - debugging tasks, when you cannot or don't want to recompile your - application to use the debug mode.

- -

The libstdc++ debug mode

-

By default, libstdc++ is built with efficiency in mind, and - therefore performs little or no error checking that is not required - by the C++ standard. This means that programs that incorrectly use - the C++ standard library will exhibit behavior that is not portable - and may not even be predictable, because they tread into - implementation-specific or undefined behavior. To detect some of - these errors before they can become problematic, libstdc++ offers a - debug mode that provides additional checking of library facilities, - and will report errors in the use of libstdc++ as soon as they can - be detected by emitting a description of the problem to standard - error and aborting the program. This debug mode is available with - GCC 3.4.0 and later versions.

- -

The libstdc++ debug mode performs checking for many areas of the C++ - standard, but the focus is on checking interactions among standard - iterators, containers, and algorithms, including:

- -
    -
  • Safe iterators: Iterators keep track of the - container whose elements they reference, so errors such as - incrementing a past-the-end iterator or dereferencing an iterator - that points to a container that has been destructed are diagnosed - immediately.
  • - -
  • Algorithm preconditions: Algorithms attempt to - validate their input parameters to detect errors as early as - possible. For instance, the set_intersection - algorithm requires that its iterator - parameters first1 and last1 form a valid - iterator range, and that the sequence - [first1, last1) is sorted according to - the same predicate that was passed - to set_intersection; the libstdc++ debug mode will - detect an error if the sequence is not sorted or was sorted by a - different predicate.
  • -
- -

Using the libstdc++ debug mode

-

To use the libstdc++ debug mode, compile your application with the - compiler flag -D_GLIBCXX_DEBUG. Note that this flag - changes the sizes and behavior of standard class templates such - as std::vector, and therefore you can only link code - compiled with debug mode and code compiled without debug mode if no - instantiation of a container is passed between the two translation - units.

- -

For information about the design of the libstdc++ debug mode, - please see the libstdc++ debug mode design - document.

- -

Using the debugging containers without debug - mode

-

When it is not feasible to recompile your entire application, or - only specific containers need checking, debugging containers are - available as GNU extensions. These debugging containers are - functionally equivalent to the standard drop-in containers used in - debug mode, but they are available in a separate namespace as GNU - extensions and may be used in programs compiled with either release - mode or with debug mode. The - following table provides the names and headers of the debugging - containers: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ContainerHeaderDebug containerDebug header
std::bitset<bitset>__gnu_debug::bitset<debug/bitset>
std::deque<deque>__gnu_debug::deque<debug/deque>
std::list<list>__gnu_debug::list<debug/list>
std::map<map>__gnu_debug::map<debug/map>
std::multimap<map>__gnu_debug::multimap<debug/map>
std::multiset<set>__gnu_debug::multiset<debug/set>
std::set<set>__gnu_debug::set<debug/set>
std::string<string>__gnu_debug::string<debug/string>
std::wstring<string>__gnu_debug::wstring<debug/string>
std::basic_string<string>__gnu_debug::basic_string<debug/string>
std::vector<vector>__gnu_debug::vector<debug/vector>
__gnu_cxx::hash_map<ext/hash_map>__gnu_debug::hash_map<debug/hash_map>
__gnu_cxx::hash_multimap<ext/hash_map>__gnu_debug::hash_multimap<debug/hash_map>
__gnu_cxx::hash_set<ext/hash_set>__gnu_debug::hash_set<debug/hash_set>
__gnu_cxx::hash_multiset<ext/hash_set>__gnu_debug::hash_multiset<debug/hash_set>
- -

Debug mode semantics

-

A program that uses the C++ standard library correctly - will maintain the same semantics under debug mode as it had with - the normal (release) library. All functional and exception-handling - guarantees made by the normal library also hold for the debug mode - library, with one exception: performance guarantees made by the - normal library may not hold in the debug mode library. For - instance, erasing an element in a std::list is a - constant-time operation in normal library, but in debug mode it is - linear in the number of iterators that reference that particular - list. So while your (correct) program won't change its results, it - is likely to execute more slowly.

- -

libstdc++ includes many extensions to the C++ standard library. In - some cases the extensions are obvious, such as the hashed - associative containers, whereas other extensions give predictable - results to behavior that would otherwise be undefined, such as - throwing an exception when a std::basic_string is - constructed from a NULL character pointer. This latter category also - includes implementation-defined and unspecified semantics, such as - the growth rate of a vector. Use of these extensions is not - considered incorrect, so code that relies on them will not be - rejected by debug mode. However, use of these extensions may affect - the portability of code to other implementations of the C++ standard - library, and is therefore somewhat hazardous. For this reason, the - libstdc++ debug mode offers a "pedantic" mode (similar to - GCC's -pedantic compiler flag) that attempts to emulate - the semantics guaranteed by the C++ standard. For - instance, constructing a std::basic_string with a NULL - character pointer would result in an exception under normal mode or - non-pedantic debug mode (this is a libstdc++ extension), whereas - under pedantic debug mode libstdc++ would signal an error. To enable - the pedantic debug mode, compile your program with - both -D_GLIBCXX_DEBUG - and -D_GLIBCXX_DEBUG_PEDANTIC . - (N.B. In GCC 3.4.x and 4.0.0, due to a bug, - -D_GLIBXX_DEBUG_PEDANTIC was also needed. The problem has - been fixed in GCC 4.0.1 and later versions.)

- -

The following library components provide extra debugging - capabilities in debug mode:

-
    -
  • std::basic_string (no safe iterators)
  • -
  • std::bitset
  • -
  • std::deque
  • -
  • __gnu_cxx::hash_map
  • -
  • __gnu_cxx::hash_multimap
  • -
  • __gnu_cxx::hash_multiset
  • -
  • __gnu_cxx::hash_set
  • -
  • std::list
  • -
  • std::map
  • -
  • std::multimap
  • -
  • std::multiset
  • -
  • std::set
  • -
  • std::vector
  • -
- - -

Tips for memory leak hunting

- -

There are various third party memory tracing and debug utilities - that can be used to provide detailed memory allocation information - about C++ code. An exhaustive list of tools is not going to be - attempted, but includes mtrace, valgrind, - mudflap, and the non-free commercial product - purify. In addition, libcwd has a - replacement for the global new and delete operators that can track - memory allocation and deallocation and provide useful memory - statistics. -

- -

Regardless of the memory debugging tool being used, there is one - thing of great importance to keep in mind when debugging C++ code - that uses new and delete: - there are different kinds of allocation schemes that can be used by - std::allocator . For implementation details, see this - document and look specifically for - GLIBCXX_FORCE_NEW. -

- -

In a nutshell, the default allocator used by - std::allocator is a high-performance pool allocator, and can - give the mistaken impression that in a suspect executable, memory - is being leaked, when in reality the memory "leak" is a pool being - used by the library's allocator and is reclaimed after program - termination. -

- -

For valgrind, there are some specific items to keep in mind. First - of all, use a version of valgrind that will work with current GNU - C++ tools: the first that can do this is valgrind 1.0.4, but later - versions should work at least as well. Second of all, use a - completely unoptimized build to avoid confusing valgrind. Third, - use GLIBCXX_FORCE_NEW to keep extraneous pool allocation noise from - cluttering debug information. -

- -

Fourth, it may be necessary to force deallocation in other - libraries as well, namely the "C" library. On linux, this can be - accomplished with the appropriate use of the - __cxa_atexit or atexit functions. -

- -
-   #include <cstdlib>
-
-   extern "C" void __libc_freeres(void);
-
-   void do_something() { }
-
-   int main()
-   {
-     atexit(__libc_freeres);
-     do_something();
-     return 0;
-   }
-
- - -

or, using __cxa_atexit:

- -
-   extern "C" void __libc_freeres(void);
-   extern "C" int __cxa_atexit(void (*func) (void *), void *arg, void *d);
-
-   void do_something() { }
-
-   int main()
-   {
-      extern void* __dso_handle __attribute__ ((__weak__));
-      __cxa_atexit((void (*) (void *)) __libc_freeres, NULL, 
-                   &__dso_handle ? __dso_handle : NULL);
-      do_test();
-      return 0;
-   }
-
- -

Suggested valgrind flags, given the suggestions above about setting - up the runtime environment, library, and test file, might be: -

-
 
-   valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out
-
- - -

Some gdb strategies

-

Many options are available for gdb itself: please see - "GDB features for C++" in the gdb documentation. Also - recommended: the other parts of this manual. -

- -

These settings can either be switched on in at the gdb command - line, or put into a .gdbint file to establish default debugging - characteristics, like so: -

- -
-   set print pretty on
-   set print object on
-   set print static-members on
-   set print vtbl on
-   set print demangle on
-   set demangle-style gnu-v3
-
- - -

Tracking uncaught exceptions

-

The verbose termination handler - gives information about uncaught exceptions which are killing the - program. It is described in the linked-to page. -

- - -

Return to the top of the page or - to the libstdc++ homepage. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug_mode.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug_mode.html deleted file mode 100644 index b62ad8f55..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/debug_mode.html +++ /dev/null @@ -1,590 +0,0 @@ - - - - - - - - - - Design of the libstdc++ debug mode - - - - -

Design of the libstdc++ debug mode

- -

- The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/debug_mode.html. -

- -

- To the libstdc++-v3 homepage. -

- - - - -
-

Debug mode design

-

The libstdc++ debug mode replaces unsafe (but efficient) standard - containers and iterators with semantically equivalent safe standard - containers and iterators to aid in debugging user programs. The - following goals directed the design of the libstdc++ debug mode:

- -
    - -
  • Correctness: the libstdc++ debug mode must not change - the semantics of the standard library for all cases specified in - the ANSI/ISO C++ standard. The essence of this constraint is that - any valid C++ program should behave in the same manner regardless - of whether it is compiled with debug mode or release mode. In - particular, entities that are defined in namespace std in release - mode should remain defined in namespace std in debug mode, so that - legal specializations of namespace std entities will remain - valid. A program that is not valid C++ (e.g., invokes undefined - behavior) is not required to behave similarly, although the debug - mode will abort with a diagnostic when it detects undefined - behavior.
  • - -
  • Performance: the additional of the libstdc++ debug mode - must not affect the performance of the library when it is compiled - in release mode. Performance of the libstdc++ debug mode is - secondary (and, in fact, will be worse than the release - mode).
  • - -
  • Usability: the libstdc++ debug mode should be easy to - use. It should be easily incorporated into the user's development - environment (e.g., by requiring only a single new compiler switch) - and should produce reasonable diagnostics when it detects a - problem with the user program. Usability also involves detection - of errors when using the debug mode incorrectly, e.g., by linking - a release-compiled object against a debug-compiled object if in - fact the resulting program will not run correctly.
  • - -
  • Minimize recompilation: While it is expected that - users recompile at least part of their program to use debug - mode, the amount of recompilation affects the - detect-compile-debug turnaround time. This indirectly affects the - usefulness of the debug mode, because debugging some applications - may require rebuilding a large amount of code, which may not be - feasible when the suspect code may be very localized. There are - several levels of conformance to this requirement, each with its - own usability and implementation characteristics. In general, the - higher-numbered conformance levels are more usable (i.e., require - less recompilation) but are more complicated to implement than - the lower-numbered conformance levels. -
      -
    1. Full recompilation: The user must recompile his or - her entire application and all C++ libraries it depends on, - including the C++ standard library that ships with the - compiler. This must be done even if only a small part of the - program can use debugging features.
    2. - -
    3. Full user recompilation: The user must recompile - his or her entire application and all C++ libraries it depends - on, but not the C++ standard library itself. This must be done - even if only a small part of the program can use debugging - features. This can be achieved given a full recompilation - system by compiling two versions of the standard library when - the compiler is installed and linking against the appropriate - one, e.g., a multilibs approach.
    4. - -
    5. Partial recompilation: The user must recompile the - parts of his or her application and the C++ libraries it - depends on that will use the debugging facilities - directly. This means that any code that uses the debuggable - standard containers would need to be recompiled, but code - that does not use them (but may, for instance, use IOStreams) - would not have to be recompiled.
    6. - -
    7. Per-use recompilation: The user must recompile the - parts of his or her application and the C++ libraries it - depends on where debugging should occur, and any other code - that interacts with those containers. This means that a set of - translation units that accesses a particular standard - container instance may either be compiled in release mode (no - checking) or debug mode (full checking), but must all be - compiled in the same way; a translation unit that does not see - that standard container instance need not be recompiled. This - also means that a translation unit A that contains a - particular instantiation - (say, std::vector<int>) compiled in release - mode can be linked against a translation unit B that - contains the same instantiation compiled in debug mode (a - feature not present with partial recompilation). While this - behavior is technically a violation of the One Definition - Rule, this ability tends to be very important in - practice. The libstdc++ debug mode supports this level of - recompilation.
    8. - -
    9. Per-unit recompilation: The user must only - recompile the translation units where checking should occur, - regardless of where debuggable standard containers are - used. This has also been dubbed "-g mode", - because the -g compiler switch works in this way, - emitting debugging information at a per--translation-unit - granularity. We believe that this level of recompilation is in - fact not possible if we intend to supply safe iterators, leave - the program semantics unchanged, and not regress in - performance under release mode because we cannot associate - extra information with an iterator (to form a safe iterator) - without either reserving that space in release mode - (performance regression) or allocating extra memory associated - with each iterator with new (changes the program - semantics).
    10. -
    -
  • -
- -

Other implementations

-

There are several existing implementations of debug modes for C++ - standard library implementations, although none of them directly - supports debugging for programs using libstdc++. The existing - implementations include:

-
    -
  • SafeSTL: - SafeSTL was the original debugging version of the Standard Template - Library (STL), implemented by Cay S. Horstmann on top of the - Hewlett-Packard STL. Though it inspired much work in this area, it - has not been kept up-to-date for use with modern compilers or C++ - standard library implementations.
  • - -
  • STLport: STLport is a free - implementation of the C++ standard library derived from the SGI implementation, and - ported to many other platforms. It includes a debug mode that uses a - wrapper model (that in some way inspired the libstdc++ debug mode - design), although at the time of this writing the debug mode is - somewhat incomplete and meets only the "Full user recompilation" (2) - recompilation guarantee by requiring the user to link against a - different library in debug mode vs. release mode.
  • - -
  • Metrowerks - CodeWarrior: The C++ standard library that ships with Metrowerks - CodeWarrior includes a debug mode. It is a full debug-mode - implementation (including debugging for CodeWarrior extensions) and - is easy to use, although it meets only the "Full recompilation" (1) - recompilation guarantee.
  • -
- -

Debug mode design methodology

-

This section provides an overall view of the design of the - libstdc++ debug mode and details the relationship between design - decisions and the stated design goals.

- -

The wrapper model

-

The libstdc++ debug mode uses a wrapper model where the debugging - versions of library components (e.g., iterators and containers) form - a layer on top of the release versions of the library - components. The debugging components first verify that the operation - is correct (aborting with a diagnostic if an error is found) and - will then forward to the underlying release-mode container that will - perform the actual work. This design decision ensures that we cannot - regress release-mode performance (because the release-mode - containers are left untouched) and partially enables mixing debug and release code at link time, - although that will not be discussed at this time.

- -

Two types of wrappers are used in the implementation of the debug - mode: container wrappers and iterator wrappers. The two types of - wrappers interact to maintain relationships between iterators and - their associated containers, which are necessary to detect certain - types of standard library usage errors such as dereferencing - past-the-end iterators or inserting into a container using an - iterator from a different container.

- -

Safe iterators

-

Iterator wrappers provide a debugging layer over any iterator that - is attached to a particular container, and will manage the - information detailing the iterator's state (singular, - dereferenceable, etc.) and tracking the container to which the - iterator is attached. Because iterators have a well-defined, common - interface the iterator wrapper is implemented with the iterator - adaptor class template __gnu_debug::_Safe_iterator, - which takes two template parameters:

- -
    -
  • Iterator: The underlying iterator type, which must - be either the iterator or const_iterator - typedef from the sequence type this iterator can reference.
  • - -
  • Sequence: The type of sequence that this iterator - references. This sequence must be a safe sequence (discussed below) - whose iterator or const_iterator typedef - is the type of the safe iterator.
  • -
- -

Safe sequences (containers)

-

Container wrappers provide a debugging layer over a particular - container type. Because containers vary greatly in the member - functions they support and the semantics of those member functions - (especially in the area of iterator invalidation), container - wrappers are tailored to the container they reference, e.g., the - debugging version of std::list duplicates the entire - interface of std::list, adding additional semantic - checks and then forwarding operations to the - real std::list (a public base class of the debugging - version) as appropriate. However, all safe containers inherit from - the class template __gnu_debug::_Safe_sequence, - instantiated with the type of the safe container itself (an instance - of the curiously recurring template pattern).

- -

The iterators of a container wrapper will be - safe iterators that reference sequences - of this type and wrap the iterators provided by the release-mode - base class. The debugging container will use only the safe - iterators within its own interface (therefore requiring the user to - use safe iterators, although this does not change correct user - code) and will communicate with the release-mode base class with - only the underlying, unsafe, release-mode iterators that the base - class exports.

- -

The debugging version of std::list will have the - following basic structure:

- -
-template<typename _Tp, typename _Allocator = allocator<_Tp>
-  class debug-list :
-    public release-list<_Tp, _Allocator>,
-    public __gnu_debug::_Safe_sequence<debug-list<_Tp, _Allocator> >
-  {
-    typedef release-list<_Tp, _Allocator> _Base;
-    typedef debug-list<_Tp, _Allocator>   _Self;
-
-  public:
-    typedef __gnu_debug::_Safe_iterator<typename _Base::iterator, _Self>       iterator;
-    typedef __gnu_debug::_Safe_iterator<typename _Base::const_iterator, _Self> const_iterator;
-
-    // duplicate std::list interface with debugging semantics
-  };
-
- -

Precondition checking

-

The debug mode operates primarily by checking the preconditions of - all standard library operations that it supports. Preconditions that - are always checked (regardless of whether or not we are in debug - mode) are checked via the __check_xxx macros defined - and documented in the source - file include/debug/debug.h. Preconditions that may or - may not be checked, depending on the debug-mode - macro _GLIBCXX_DEBUG, are checked via - the __requires_xxx macros defined and documented in the - same source file. Preconditions are validated using any additional - information available at run-time, e.g., the containers that are - associated with a particular iterator, the position of the iterator - within those containers, the distance between two iterators that may - form a valid range, etc. In the absence of suitable information, - e.g., an input iterator that is not a safe iterator, these - precondition checks will silently succeed.

- -

The majority of precondition checks use the aforementioned macros, - which have the secondary benefit of having prewritten debug - messages that use information about the current status of the - objects involved (e.g., whether an iterator is singular or what - sequence it is attached to) along with some static information - (e.g., the names of the function parameters corresponding to the - objects involved). When not using these macros, the debug mode uses - either the debug-mode assertion - macro _GLIBCXX_DEBUG_ASSERT , its pedantic - cousin _GLIBCXX_DEBUG_PEDASSERT, or the assertion - check macro that supports more advance formulation of error - messages, _GLIBCXX_DEBUG_VERIFY. These macros are - documented more thoroughly in the debug mode source code.

- -

Release- and debug-mode coexistence

-

The libstdc++ debug mode is the first debug mode we know of that - is able to provide the "Per-use recompilation" (4) guarantee, that - allows release-compiled and debug-compiled code to be linked and - executed together without causing unpredictable behavior. This - guarantee minimizes the recompilation that users are required to - perform, shortening the detect-compile-debug bughunting cycle - and making the debug mode easier to incorporate into development - environments by minimizing dependencies.

- -

Achieving link- and run-time coexistence is not a trivial - implementation task. To achieve this goal we required a small - extension to the GNU C++ compiler (described in the GCC Manual for - C++ Extensions, see strong - using), and a complex organization of debug- and - release-modes. The end result is that we have achieved per-use - recompilation but have had to give up some checking of the - std::basic_string class template (namely, safe - iterators). -

- -

Compile-time coexistence of release- and - debug-mode components

-

Both the release-mode components and the debug-mode - components need to exist within a single translation unit so that - the debug versions can wrap the release versions. However, only one - of these components should be user-visible at any particular - time with the standard name, e.g., std::list.

- -

In release mode, we define only the release-mode version of the - component with its standard name and do not include the debugging - component at all. The release mode version is defined within the - namespace __gnu_norm, and then associated with namespace - std via a "strong using" directive. Minus the - namespace associations, this method leaves the behavior of release - mode completely unchanged from its behavior prior to the - introduction of the libstdc++ debug mode. Here's an example of what - this ends up looking like, in C++.

- -
-namespace __gnu_norm
-{
-  using namespace std; 
-  
-  template<typename _Tp, typename _Alloc = allocator<_Tp> >
-    class list
-    {
-      // ...
-    };
-} // namespace __gnu_norm
-
-namespace std
-{
-  using namespace __gnu_norm __attribute__ ((strong));
-}
-
- -

In debug mode we include the release-mode container and also the -debug-mode container. The release mode version is defined exactly as -before, and the debug-mode container is defined within the namespace -__gnu_debug, which is associated with namespace -std via a "strong using" directive. This method allows -the debug- and release-mode versions of the same component to coexist -at compile-time without causing an unreasonable maintenance burden, -while minimizing confusion. Again, this boils down to C++ code as -follows:

- -
-namespace __gnu_norm
-{
-  using namespace std; 
-  
-  template<typename _Tp, typename _Alloc = allocator<_Tp> >
-    class list
-    {
-      // ...
-    };
-} // namespace __gnu_norm
-
-namespace __gnu_debug
-{
-  using namespace std; 
-  
-  template<typename _Tp, typename _Alloc = allocator<_Tp> >
-    class list
-    : public __gnu_norm::list<_Tp, _Alloc>,
-      public __gnu_debug::_Safe_sequence<list<_Tp, _Alloc> >
-    {
-      // ...
-    };
-} // namespace __gnu_norm
-
-namespace std
-{
-  using namespace __gnu_debug __attribute__ ((strong));
-}
-
- -

Link- and run-time coexistence of release- and - debug-mode components

- -

Because each component has a distinct and separate release and -debug implementation, there are are no issues with link-time -coexistence: the separate namespaces result in different mangled -names, and thus unique linkage.

- -

However, components that are defined and used within the C++ -standard library itself face additional constraints. For instance, -some of the member functions of std::moneypunct return -std::basic_string. Normally, this is not a problem, but -with a mixed mode standard library that could be using either -debug-mode or release-mode basic_string objects, things -get more complicated. As the return value of a function is not -encoded into the mangled name, there is no way to specify a -release-mode or a debug-mode string. In practice, this results in -runtime errors. A simplified example of this problem is as follows. -

- -

Take this translation unit, compiled in debug-mode:

-
-// -D_GLIBCXX_DEBUG
-#include <string>
-
-std::string test02();
- 
-std::string test01()
-{
-  return test02();
-}
- 
-int main()
-{
-  test01();
-  return 0;
-}
-
- -

... and linked to this translation unit, compiled in release mode:

- -
-#include <string>
- 
-std::string
-test02()
-{
-  return std::string("toast");
-}
-
- -

For this reason we cannot easily provide safe iterators for - the std::basic_string class template, as it is present - throughout the C++ standard library. For instance, locale facets - define typedefs that include basic_string: in a mixed - debug/release program, should that typedef be based on the - debug-mode basic_string or the - release-mode basic_string? While the answer could be - "both", and the difference hidden via renaming a la the - debug/release containers, we must note two things about locale - facets:

- -
    -
  1. They exist as shared state: one can create a facet in one - translation unit and access the facet via the same type name in a - different translation unit. This means that we cannot have two - different versions of locale facets, because the types would not be - the same across debug/release-mode translation unit barriers.
  2. - -
  3. They have virtual functions returning strings: these functions - mangle in the same way regardless of the mangling of their return - types (see above), and their precise signatures can be relied upon - by users because they may be overridden in derived classes.
  4. -
- -

With the design of libstdc++ debug mode, we cannot effectively hide - the differences between debug and release-mode strings from the - user. Failure to hide the differences may result in unpredictable - behavior, and for this reason we have opted to only - perform basic_string changes that do not require ABI - changes. The effect on users is expected to be minimal, as there are - simple alternatives (e.g., __gnu_debug::basic_string), - and the usability benefit we gain from the ability to mix debug- and - release-compiled translation units is enormous.

- -

Alternatives for Coexistence

-

The coexistence scheme above was chosen over many alternatives, - including language-only solutions and solutions that also required - extensions to the C++ front end. The following is a partial list of - solutions, with justifications for our rejection of each.

- -
    -
  • Completely separate debug/release libraries: This is by - far the simplest implementation option, where we do not allow any - coexistence of debug- and release-compiled translation units in a - program. This solution has an extreme negative affect on usability, - because it is quite likely that some libraries an application - depends on cannot be recompiled easily. This would not meet - our usability or minimize recompilation criteria - well.
  • - -
  • Add a Debug boolean template parameter: - Partial specialization could be used to select the debug - implementation when Debug == true, and the state - of _GLIBCXX_DEBUG could decide whether the - default Debug argument is true - or false. This option would break conformance with the - C++ standard in both debug and release modes. This would - not meet our correctness criteria.
  • - -
  • Packaging a debug flag in the allocators: We could - reuse the Allocator template parameter of containers - by adding a sentinel wrapper debug<> that - signals the user's intention to use debugging, and pick up - the debug<> allocator wrapper in a partial - specialization. However, this has two drawbacks: first, there is a - conformance issue because the default allocator would not be the - standard-specified std::allocator<T>. Secondly - (and more importantly), users that specify allocators instead of - implicitly using the default allocator would not get debugging - containers. Thus this solution fails the correctness - criteria.
  • - -
  • Define debug containers in another namespace, and employ - a using declaration (or directive): This is an - enticing option, because it would eliminate the need for - the link_name extension by aliasing the - templates. However, there is no true template aliasing mechanism - is C++, because both using directives and using - declarations disallow specialization. This method fails - the correctness criteria.
  • - -
  • Use implementation-specific properties of anonymous - namespaces. - See this post - - This method fails the correctness criteria.
  • - -
  • Extension: allow reopening on namespaces: This would - allow the debug mode to effectively alias the - namespace std to an internal namespace, such - as __gnu_std_debug, so that it is completely - separate from the release-mode std namespace. While - this will solve some renaming problems and ensure that - debug- and release-compiled code cannot be mixed unsafely, it ensures that - debug- and release-compiled code cannot be mixed at all. For - instance, the program would have two std::cout - objects! This solution would fails the minimize - recompilation requirement, because we would only be able to - support option (1) or (2).
  • - -
  • Extension: use link name: This option involves - complicated re-naming between debug-mode and release-mode - components at compile time, and then a g++ extension called - link name to recover the original names at link time. There - are two drawbacks to this approach. One, it's very verbose, - relying on macro renaming at compile time and several levels of - include ordering. Two, ODR issues remained with container member - functions taking no arguments in mixed-mode settings resulting in - equivalent link names, vector::push_back() being - one example. - See link - name
  • -
- -

Other options may exist for implementing the debug mode, many of - which have probably been considered and others that may still be - lurking. This list may be expanded over time to include other - options that we could have implemented, but in all cases the full - ramifications of the approach (as measured against the design goals - for a libstdc++ debug mode) should be considered first. The DejaGNU - testsuite includes some testcases that check for known problems with - some solutions (e.g., the using declaration solution - that breaks user specialization), and additional testcases will be - added as we are able to identify other typical problem cases. These - test cases will serve as a benchmark by which we can compare debug - mode implementations.

- - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/documentation.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/documentation.html deleted file mode 100644 index f45bde8df..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/documentation.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - GNU C++ Standard Library - - - - - - - -

All of these documents (in fact, this entire homepage set) - are bundled with the library source, under the docs - subdirectory, for releases and snapshots. The sole exception is the - automatically-generated source documentation, available separately. -

- -
-
-

Introduction

-

This is a short list of text files pertaining to this implementation of - ISO 14882. A brief description may follow the name of the file. -

- - -
-
-

Configuring, Building, Testing, Installing

- - - -
-
-

Source-Level Documentation

-

The library sources have been specially formatted so that with the - proper invocation of another tool (Doxygen), a set of HTML pages - are generated from the sources files themselves. The resultant - documentation is referred to as Source-Level Documentation, and is - useful for examining the signatures of public member functions for - the library classes, finding out what is in a particular include - file, looking at inheritance diagrams, etc. -

-

The source-level documentation for the most recent releases can - be viewed online: -

- -

This generated HTML collection, as above, is also available for download in - the libstdc++ snapshots directory at - <URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/>. - You will almost certainly need to use one of the - mirror sites to download - the tarball. After unpacking, simply load libstdc++-html-*/index.html - into a browser. -

-

Documentation for older releases is available for download only, not - online viewing. -

-

In addition, an initial set of man pages are also available in the - same place as the HTML collections. Start with C++Intro(3). -

- - -
-
-

Chapter-Specific Documentation

-

Information, extensions, notes and advice on specific implementation - capabilites and/or liabilities broken down into chapter names based on the - C++ standard. -

- - - - - -
-
-

Contributor-Specific Information

- - - - -

Return to the libstdc++ homepage.

- -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/explanations.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/explanations.html deleted file mode 100644 index 938b449d4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/explanations.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - Explanatory notes about libstdc++-v3 design - - - - - -

Explanatory notes about libstdc++-v3 -design

- -

- The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/explanations.html. -

- -

- To the libstdc++-v3 homepage. -

- - - -
-

"I/O packages", --enable-cstdio

-

In addition to all the nifty things which C++ can do for I/O, its library - also includes all of the I/O capabilites of C. Making them work together - can be a challenge, not only - for the programmer but for the - implementors as well. -

-

There are two ways to do a C++ library: the cool way, and the easy way. - More specifically, the cool-but-easy-to-get-wrong way, and the - easy-to-guarantee-correct-behavior way. For 3.0, the easy way is used. -

-

Choosing 'stdio' is the easy way. It builds a C++ library which forwards - all operations to the C library. Many of the C++ I/O functions are - specified in the standard 'as if' they called a certain C function; the - easiest way to get it correct is to actually call that function. The - disadvantage is that the C++ code will run slower (fortunately, the layer - is thin). -

-

Other packages are possible. For a new package, a header must be - written to provide types like streamsize (usually just a typedef), as - well as some internal types like __c_file_type and - __c_lock (for the stdio case, these are FILE (as in - "FILE*") and a simple POSIX mutex, respectively). An - interface class called __basic_file must also be filled in; - as an example, for the stdio case, these member functions are all - inline calles to fread, fwrite, etc. -

-

Return to the top of the page or - to the homepage. -

- - -
-

Internal Allocators

-

-

-

Return to the top of the page or - to the homepage. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/ballocator_doc.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/ballocator_doc.html deleted file mode 100644 index 7b1f4d23e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/ballocator_doc.html +++ /dev/null @@ -1,426 +0,0 @@ - - - - - Bitmap Allocator - - - - -

Bitmap Allocator

-
-The latest version of this document is always available -at -http://gcc.gnu.org/onlinedocs/libstdc++/ext/ballocator_doc.html.

-
- To the libstdc++-v3 -homepage.
-
-

-As this name suggests, this allocator uses a bit-map to keep track of -the used and unused memory locations for it's book-keeping purposes.
-
-This allocator will make use of 1 single bit to keep track of whether -it has been allocated or not. A bit 1 indicates free, while 0 indicates -allocated. This has been done so that you can easily check a collection -of bits for a free block. This kind of Bitmapped strategy works best -for single object allocations, and with the STL type parameterized -allocators, we do not need to choose any size for the block which will -be represented by a single bit. This will be the size of the parameter -around which the allocator has been parameterized. Thus, close to -optimal performance will result. Hence, this should be used for node -based containers which call the allocate function with an argument of 1.
-
-The bitmapped allocator's internal pool is exponentially growing. -Meaning that internally, the blocks acquired from the Free List Store -will double every time the bitmapped allocator runs out of memory.
-
-

-The macro __GTHREADS decides whether to use Mutex Protection around -every allocation/deallocation. The state of the macro is picked up -automatically from the gthr abstration layer.
-
-
-

What is the Free List Store?

-
-The Free List Store (referred to as FLS for the remaining part of this -document) is the Global memory pool that is shared by all instances of -the bitmapped allocator instantiated for any type. This maintains a -sorted order of all free memory blocks given back to it by the -bitmapped allocator, and is also responsible for giving memory to the -bitmapped allocator when it asks for more.
-
-Internally, there is a Free List threshold which indicates the Maximum -number of free lists that the FLS can hold internally (cache). -Currently, this value is set at 64. So, if there are more than 64 free -lists coming in, then some of them will be given back to the OS using -operator delete so that at any given time the Free List's size does not -exceed 64 entries. This is done because a Binary Search is used to -locate an entry in a free list when a request for memory comes along. -Thus, the run-time complexity of the search would go up given an -increasing size, for 64 entries however, lg(64) == 6 comparisons are -enough to locate the correct free list if it exists.
-
-Suppose the free list size has reached it's threshold, then the largest -block from among those in the list and the new block will be selected -and given back to the OS. This is done because it reduces external -fragmentation, and allows the OS to use the larger blocks later in an -orderly fashion, possibly merging them later. Also, on some systems, -large blocks are obtained via calls to mmap, so giving them back to -free system resources becomes most important.
-
-The function _S_should_i_give decides the policy that determines -whether the current block of memory should be given to the allocator -for the request that it has made. That's because we may not always have -exact fits for the memory size that the allocator requests. We do this -mainly to prevent external fragmentation at the cost of a little -internal fragmentation. Now, the value of this internal fragmentation -has to be decided by this function. I can see 3 possibilities right -now. Please add more as and when you find better strategies.
-
-
    -
  1. Equal size check. Return true only when the 2 blocks are of equal -size.
  2. -
  3. Difference Threshold: Return true only when the _block_size is -greater than or equal to the _required_size, and if the _BS is > _RS -by a difference of less than some THRESHOLD value, then return true, -else return false.
  4. -
  5. Percentage Threshold. Return true only when the _block_size is -greater than or equal to the _required_size, and if the _BS is > _RS -by a percentage of less than some THRESHOLD value, then return true, -else return false.
  6. -
-
-Currently, (3) is being used with a value of 36% Maximum wastage per -Super Block.
-
-
1) -What is a super block? Why is it needed?
-
-A super block is the block of memory acquired from the FLS from which -the bitmap allocator carves out memory for single objects and satisfies -the user's requests. These super blocks come in sizes that are powers -of 2 and multiples of 32 (_Bits_Per_Block). Yes both at the same time! -That's because the next super block acquired will be 2 times the -previous one, and also all super blocks have to be multiples of the -_Bits_Per_Block value.
-
-2) How does it interact with the free -list store?
-
-The super block is contained in the FLS, and the FLS is responsible for -getting / returning Super Bocks to and from the OS using operator new -as defined by the C++ standard.
-
-
-

How does the allocate function Work?

-
-The allocate function is specialized for single object allocation ONLY. -Thus, ONLY if n == 1, will the bitmap_allocator's specialized algorithm -be used. Otherwise, the request is satisfied directly by calling -operator new.
-
-Suppose n == 1, then the allocator does the following:
-
-
    -
  1. Checks to see whether the a free block exists somewhere in a -region of memory close to the last satisfied request. If so, then that -block is marked as allocated in the bit map and given to the user. If -not, then (2) is executed.
  2. -
  3. Is there a free block anywhere after the current block right upto -the end of the memory that we have? If so, that block is found, and the -same procedure is applied as above, and returned to the user. If not, -then (3) is executed.
  4. -
  5. Is there any block in whatever region of memory that we own free? -This is done by checking
    -
    -
      -
    • The use count for each super block, and if that fails then
    • -
    • The individual bit-maps for each super block.
    • -
    -
    -Note: Here we are never touching any of the memory that the user will -be given, and we are confining all memory accesses to a small region of -memory! This helps reduce cache misses. If this succeeds then we apply -the same procedure on that bit-map as (1), and return that block of -memory to the user. However, if this process fails, then we resort to -(4).
  6. -
  7. This process involves Refilling the internal exponentially -growing memory pool. The said effect is achieved by calling -_S_refill_pool which does the following:
    -
    -
      -
    • Gets more memory from the Global Free List of the Required -size.
    • -
    • Adjusts the size for the next call to itself.
    • -
    • Writes the appropriate headers in the bit-maps.
    • -
    • Sets the use count for that super-block just allocated to 0 -(zero).
    • -
    • All of the above accounts to maintaining the basic invariant -for the allocator. If the invariant is maintained, we are sure that all -is well. Now, the same process is applied on the newly acquired free -blocks, which are dispatched accordingly.
    • -
    -
    -
  8. -
-
-Thus, you can clearly see that the allocate function is nothing but a -combination of the next-fit and first-fit algorithm optimized ONLY for -single object allocations.
-
-
-
-

How does the deallocate function work?

-
-The deallocate function again is specialized for single objects ONLY. -For all n belonging to > 1, the operator delete is called without -further ado, and the deallocate function returns.
-
-However for n == 1, a series of steps are performed:
-
-
    -
  1. We first need to locate that super-block which holds the memory -location given to us by the user. For that purpose, we maintain a -static variable _S_last_dealloc_index, which holds the index into the -vector of block pairs which indicates the index of the last super-block -from which memory was freed. We use this strategy in the hope that the -user will deallocate memory in a region close to what he/she -deallocated the last time around. If the check for belongs_to succeeds, -then we determine the bit-map for the given pointer, and locate the -index into that bit-map, and mark that bit as free by setting it.
  2. -
  3. If the _S_last_dealloc_index does not point to the memory block -that we're looking for, then we do a linear search on the block stored -in the vector of Block Pairs. This vector in code is called -_S_mem_blocks. When the corresponding super-block is found, we apply -the same procedure as we did for (1) to mark the block as free in the -bit-map.
  4. -
-
-Now, whenever a block is freed, the use count of that particular super -block goes down by 1. When this use count hits 0, we remove that super -block from the list of all valid super blocks stored in the vector. -While doing this, we also make sure that the basic invariant is -maintained by making sure that _S_last_request and -_S_last_dealloc_index point to valid locations within the vector.
-
-

-

Data Layout for a Super Block:

-
-Each Super Block will be of some size that is a multiple of the number -of Bits Per Block. Typically, this value is chosen as Bits_Per_Byte x -sizeof(size_t). On an x86 system, this gives the figure  8 x -4 = 32. Thus, each Super Block will be of size 32 x Some_Value. This -Some_Value is sizeof(value_type). For now, let it be called 'K'. Thus, -finally, Super Block size is 32 x K bytes.
-
-This value of 32 has been chosen because each size_t has 32-bits -and Maximum use of these can be made with such a figure.
-
-Consider a block of size 64 ints. In memory, it would look like this: -(assume a 32-bit system where, size_t is a 32-bit entity).
-
- - - - - - - - - - -
268
-
0
-
4294967295
-
4294967295
-
Data -> -Space for 64 ints
-
-
-
-The first Column(268) represents the size of the Block in bytes as seen -by -the Bitmap Allocator. Internally, a global free list is used to keep -track of the free blocks used and given back by the bitmap allocator. -It is this Free List Store that is responsible for writing and managing -this information. Actually the number of bytes allocated in this case -would be: 4 + 4 + (4x2) + (64x4) = 272 bytes, but the first 4 bytes are -an -addition by the Free List Store, so the Bitmap Allocator sees only 268 -bytes. These first 4 bytes about which the bitmapped allocator is not -aware hold the value 268.
-
-What do the remaining values represent?
-
-The 2nd 4 in the expression is the sizeof(size_t) because the -Bitmapped Allocator maintains a used count for each Super Block, which -is initially set to 0 (as indicated in the diagram). This is -incremented every time a block is removed from this super block -(allocated), and decremented whenever it is given back. So, when the -used count falls to 0, the whole super block will be given back to the -Free List Store.
-
-The value 4294967295 represents the integer corresponding to the bit -representation of all bits set: 11111111111111111111111111111111.
-
-The 3rd 4x2 is size of the bitmap itself, which is the size of 32-bits -x 2, -which is 8-bytes, or 2 x sizeof(size_t).
-
-

-Another issue would be whether to keep the all bitmaps in a separate -area in memory, or to keep them near the actual blocks that will be -given out or allocated for the client. After some testing, I've decided -to keep these bitmaps close to the actual blocks. this will help in 2 -ways.
-
-
    -
  1. Constant time access for the bitmap themselves, since no kind of -look up will be needed to find the correct bitmap list or it's -equivalent.
  2. -
  3. And also this would preserve the cache as far as possible.
  4. -
-
-So in effect, this kind of an allocator might prove beneficial from a -purely cache point of view. But this allocator has been made to try and -roll out the defects of the node_allocator, wherein the nodes get -skewed about in memory, if they are not returned in the exact reverse -order or in the same order in which they were allocated. Also, the -new_allocator's book keeping overhead is too much for small objects and -single object allocations, though it preserves the locality of blocks -very well when they are returned back to the allocator.
-
-

-Expected overhead per block would be 1 bit in memory. Also, once the -address of the free list has been found, the cost for -allocation/deallocation would be negligible, and is supposed to be -constant time. For these very reasons, it is very important to minimize -the linear time costs, which include finding a free list with a free -block while allocating, and finding the corresponding free list for a -block while deallocating. Therefore, I have decided that the growth of -the internal pool for this allocator will be exponential as compared to -linear for node_allocator. There, linear time works well, because we -are mainly concerned with speed of allocation/deallocation and memory -consumption, whereas here, the allocation/deallocation part does have -some linear/logarithmic complexity components in it. Thus, to try and -minimize them would be a good thing to do at the cost of a little bit -of memory.
-
-Another thing to be noted is the the pool size will double every time -the internal pool gets exhausted, and all the free blocks have been -given away. The initial size of the pool would be sizeof(size_t) x 8 -which is the number of bits in an integer, which can fit exactly -in a CPU register. Hence, the term given is exponential growth of the -internal pool.
-
-
After reading all this, you may -still have a few questions about the internal working of this -allocator, like my friend had!
-
-Well here are the exact questions that he posed:
-
-Q1) The "Data Layout" section is -cryptic. I have no idea of what you are trying to say. Layout of what? -The free-list? Each bitmap? The Super Block?
-
-
The layout of a Super Block of a given -size. In the example, a super block of size 32 x 1 is taken. The -general formula for calculating the size of a super block is -32 x sizeof(value_type) x 2^n, where n ranges from 0 to 32 for 32-bit -systems.
-
-
-Q2) And since I just mentioned the -term `each bitmap', what in the world is meant by it? What does each -bitmap manage? How does it relate to the super block? Is the Super -Block a bitmap as well?
-
-
Good question! Each bitmap is part of -a -Super Block which is made up of 3 parts as I have mentioned earlier. -Re-iterating, 1. The use count, 2. The bit-map for that Super Block. 3. -The actual memory that will be eventually given to the user. Each -bitmap is a multiple of 32 in size. If there are 32 x (2^3) blocks of -single objects to be given, there will be '32 x (2^3)' bits present. -Each -32 bits managing the allocated / free status for 32 blocks. Since each -size_t contains 32-bits, one size_t can manage upto 32 -blocks' status. Each bit-map is made up of a number of size_t, -whose exact number for a super-block of a given size I have just -mentioned.
-
-
-Q3) How do the allocate and deallocate -functions work in regard to bitmaps?
-
-
The allocate and deallocate functions -manipulate the bitmaps and have nothing to do with the memory that is -given to the user. As I have earlier mentioned, a 1 in the bitmap's bit -field indicates free, while a 0 indicates allocated. This lets us check -32 bits at a time to check whether there is at lease one free block in -those 32 blocks by testing for equality with (0). Now, the allocate -function will given a memory block find the corresponding bit in the -bitmap, and will reset it (ie. make it re-set (0)). And when the -deallocate function is called, it will again set that bit after -locating it to indicate that that particular block corresponding to -this bit in the bit-map is not being used by anyone, and may be used to -satisfy future requests.
-
-eg: Consider a bit-map of 64-bits as represented below:
-1111111111111111111111111111111111111111111111111111111111111111
-
-Now, when the first request for allocation of a single object comes -along, the first block in address order is returned. And since the -bit-maps in the reverse order to that of the address order, the last -bit(LSB if the bit-map is considered as a binary word of 64-bits) is -re-set to 0.
-
-The bit-map now looks like this:
-1111111111111111111111111111111111111111111111111111111111111110
-
-
-
-

-(Tech-Stuff, Please stay out if you are not interested in the selection -of certain constants. This has nothing to do with the algorithm per-se, -only with some vales that must be chosen correctly to ensure that the -allocator performs well in a real word scenario, and maintains a good -balance between the memory consumption and the allocation/deallocation -speed).
-
-The formula for calculating the maximum wastage as a percentage:
-
-(32 x k + 1) / (2 x (32 x k + 1 + 32 x c)) x 100.
-
-Where,
-k => The constant overhead per node. eg. for list, it is 8 bytes, -and for map it is 12 bytes.
-c => The size of the base type on which the map/list is -instantiated. Thus, suppose the the type1 is int and type2 is double, -they are related by the relation sizeof(double) == 2*sizeof(int). Thus, -all types must have this double size relation for this formula to work -properly.
-
-Plugging-in: For List: k = 8 and c = 4 (int and double), we get:
-33.376%
-
-For map/multimap: k = 12, and c = 4 (int and double), we get:
-37.524%
-
-Thus, knowing these values, and based on the sizeof(value_type), we may -create a function that returns the Max_Wastage_Percentage for us to use.
-
-
See license.html -for copying conditions. Comments and suggestions are welcome, and may -be -sent to the libstdc++ mailing -list.
-

-
- - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/howto.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/howto.html deleted file mode 100644 index b2e8b5b2d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/howto.html +++ /dev/null @@ -1,562 +0,0 @@ - - - - - - - - - - - libstdc++-v3 HOWTO: Extensions - - - - - - - - - -

Extensions

- -

Here we will make an attempt at describing the non-Standard extensions to - the library. Some of these are from SGI's STL, some of these are GNU's, - and some just seemed to appear on the doorstep. -

-

Before you leap in and use these, be aware of two things: -

-
    -
  1. Non-Standard means exactly that. The behavior, and the very - existence, of these extensions may change with little or no - warning. (Ideally, the really good ones will appear in the next - revision of C++.) Also, other platforms, other compilers, other - versions of g++ or libstdc++-v3 may not recognize these names, or - treat them differently, or...
  2. -
  3. You should know how to access - these headers properly.
  4. -
- - - -
-

Contents

- - -
- - - -

Ropes and trees and hashes, oh my!

-

The SGI headers

-
-     <bvector>
-     <hash_map>
-     <hash_set>
-     <rope>
-     <slist>
-     <tree>
-   
-

are all here; <bvector> exposes the old bit_vector - class that was used before specialization of vector<bool> was - available (it's actually a typedef for the specialization now). - <hash_map> and <hash_set> - are discussed further below. <rope> is the SGI - specialization for large strings ("rope," "large - strings," get it? love those SGI folks). - <slist> is a singly-linked list, for when the - doubly-linked list<> is too much space overhead, and - <tree> exposes the red-black tree classes used in the - implementation of the standard maps and sets. -

-

Okay, about those hashing classes... I'm going to foist most of the - work off onto SGI's own site. -

-

Each of the associative containers map, multimap, set, and multiset - have a counterpart which uses a - hashing - function to do the arranging, instead of a strict weak ordering - function. The classes take as one of their template parameters a - function object that will return the hash value; by default, an - instantiation of - hash. - You should specialize this functor for your class, or define your own, - before trying to use one of the hashing classes. -

-

The hashing classes support all the usual associative container - functions, as well as some extra constructors specifying the number - of buckets, etc. -

-

Why would you want to use a hashing class instead of the - "normal" implementations? Matt Austern writes: -

-
[W]ith a well chosen hash function, hash tables - generally provide much better average-case performance than binary - search trees, and much worse worst-case performance. So if your - implementation has hash_map, if you don't mind using nonstandard - components, and if you aren't scared about the possibility of - pathological cases, you'll probably get better performance from - hash_map.
-

(Side note: for those of you wondering, "Why wasn't a hash - table included in the Standard in the first #!$@ place?" - I'll give a quick answer: it was proposed, but too late and in too - unorganized a fashion. Some sort of hashing will undoubtedly be - included in a future Standard.) -

-

Return to top of page or - to the FAQ. -

- -
-

Added members and types

-

Some of the classes in the Standard Library have additional - publicly-available members, and some classes are themselves not in - the standard. Of those, some are intended purely for the implementors, - for example, additional typedefs. Those won't be described here - (or anywhere else). -

-
    -
  • The extensions added by SGI are so numerous that they have - their own page. Since the SGI STL is no - longer actively maintained, we will try and keep this code working - ourselves.
  • -
  • Extensions allowing filebufs to be constructed from - stdio types are described in the - chapter 27 notes.
  • -
-

Return to top of page or - to the FAQ. -

- -
-

Compile-time checks

-

Currently libstdc++-v3 uses the concept checkers from the Boost - library to perform optional - compile-time checking of template instantiations of the standard - containers. They are described in the linked-to page. -

-

Return to top of page or - to the FAQ. -

- -
-

LWG Issues

-

Everybody's got issues. Even the C++ Standard Library. -

-

The Library Working Group, or LWG, is the ISO subcommittee responsible - for making changes to the library. They periodically publish an - Issues List containing problems and possible solutions. As they reach - a consensus on proposed solutions, we often incorporate the solution - into libstdc++-v3. -

-

Here are the issues which have resulted in code changes to the library. - The links are to the specific defect reports from a partial - copy of the Issues List. You can read the full version online - at the ISO C++ - Committee homepage, linked to on the - GCC "Readings" - page. If - you spend a lot of time reading the issues, we recommend downloading - the ZIP file and reading them locally. -

-

(NB: partial copy means that not all links within - the lwg-*.html pages will work. - Specifically, links to defect reports that have not been accorded full - DR status will probably break. Rather than trying to mirror the - entire issues list on our overworked web server, we recommend you go - to the LWG homepage instead.) -

-

- If a DR is not listed here, we may simply not have gotten to it yet; - feel free to submit a patch. Search the include/bits and src - directories for appearances of _GLIBCXX_RESOLVE_LIB_DEFECTS for - examples of style. Note that we usually do not make changes to the code - until an issue has reached DR status. -

-
-
5: - string::compare specification questionable -
-
This should be two overloaded functions rather than a single function. -
- -
17: - Bad bool parsing -
-
Apparently extracting Boolean values was messed up... -
- -
19: - "Noconv" definition too vague -
-
If codecvt::do_in returns noconv there are - no changes to the values in [to, to_limit). -
- -
22: - Member open vs flags -
-
Re-opening a file stream does not clear the state flags. -
- -
25: - String operator<< uses width() value wrong -
-
Padding issues. -
- -
48: - Use of non-existent exception constructor -
-
An instance of ios_base::failure is constructed instead. -
- -
49: - Underspecification of ios_base::sync_with_stdio -
-
The return type is the previous state of synchronization. -
- -
50: - Copy constructor and assignment operator of ios_base -
-
These members functions are declared private and are - thus inaccessible. Specifying the correct semantics of - "copying stream state" was deemed too complicated. -
- -
60: - What is a formatted input function? -
-
This DR made many widespread changes to basic_istream - and basic_ostream all of which have been implemented. -
- -
63: - Exception-handling policy for unformatted output -
-
Make the policy consistent with that of formatted input, unformatted - input, and formatted output. -
- -
68: - Extractors for char* should store null at end -
-
And they do now. An editing glitch in the last item in the list of - [27.6.1.2.3]/7. -
- -
74: - Garbled text for codecvt::do_max_length -
-
The text of the standard was gibberish. Typos gone rampant. -
- -
75: - Contradiction in codecvt::length's argument types -
-
Change the first parameter to stateT& and implement - the new effects paragraph. -
- -
83: - string::npos vs. string::max_size() -
-
Safety checks on the size of the string should test against - max_size() rather than npos. -
- -
90: - Incorrect description of operator>> for strings -
-
The effect contain isspace(c,getloc()) which must be - replaced by isspace(c,is.getloc()). -
- -
91: - Description of operator>> and getline() for string<> - might cause endless loop -
-
They behave as a formatted input function and as an unformatted - input function, respectively (except that getline is - not required to set gcount). -
- -
103: - set::iterator is required to be modifiable, but this allows - modification of keys. -
-
For associative containers where the value type is the same as - the key type, both iterator and const_iterator - are constant iterators. -
- -
109: - Missing binders for non-const sequence elements -
-
The binder1st and binder2nd didn't have an - operator() taking a non-const parameter. -
- -
110: - istreambuf_iterator::equal not const -
-
This was not a const member function. Note that the DR says to - replace the function with a const one; we have instead provided an - overloaded version with identical contents. -
- -
117: - basic_ostream uses nonexistent num_put member functions -
-
num_put::put() was overloaded on the wrong types. -
- -
118: - basic_istream uses nonexistent num_get member functions -
-
Same as 117, but for num_get::get(). -
- -
129: - Need error indication from seekp() and seekg() -
-
These functions set failbit on error now. -
- -
136: - seekp, seekg setting wrong streams? -
-
seekp should only set the output stream, and - seekg should only set the input stream. -
- - - -
167: - Improper use of traits_type::length() -
-
op<< with a const char* was - calculating an incorrect number of characters to write. -
- -
171: - Strange seekpos() semantics due to joint position -
-
Quite complex to summarize... -
- -
181: - make_pair() unintended behavior -
-
This function used to take its arguments as reference-to-const, now - it copies them (pass by value). -
- -
195: - Should basic_istream::sentry's constructor ever set eofbit? -
-
Yes, it can, specifically if EOF is reached while skipping whitespace. -
- -
211: - operator>>(istream&, string&) doesn't set failbit -
-
If nothing is extracted into the string, op>> now - sets failbit (which can cause an exception, etc, etc). -
- -
214: - set::find() missing const overload -
-
Both set and multiset were missing - overloaded find, lower_bound, upper_bound, and equal_range functions - for const instances. -
- -
231: - Precision in iostream? -
-
For conversion from a floating-point type, str.precision() - is specified in the conversion specification. -
- -
235: - No specification of default ctor for reverse_iterator -
-
The declaration of reverse_iterator lists a default constructor. - However, no specification is given what this constructor should do. -
- -
243: - get and getline when sentry reports failure -
-
Store a null character only if the character array has a non-zero size. -
- -
251: - basic_stringbuf missing allocator_type -
-
This nested typedef was originally not specified. -
- -
253: - valarray helper functions are almost entirely useless -
-
Make the copy constructor and copy-assignment operator declarations - public in gslice_array, indirect_array, mask_array, slice_array; provide - definitions. -
- -
265: - std::pair::pair() effects overly restrictive -
-
The default ctor would build its members from copies of temporaries; - now it simply uses their respective default ctors. -
- -
266: - bad_exception::~bad_exception() missing Effects clause -
-
The bad_* classes no longer have destructors (they - are trivial), since no description of them was ever given. -
- -
271: - basic_iostream missing typedefs -
-
The typedefs it inherits from its base classes can't be used, since - (for example) basic_iostream<T>::traits_type is ambiguous. -
- -
275: - Wrong type in num_get::get() overloads -
-
Similar to 118. -
- -
280: - Comparison of reverse_iterator to const reverse_iterator -
-
Add global functions with two template parameters. - (NB: not added for now a templated assignment operator) -
- -
292: - Effects of a.copyfmt (a) -
-
If (this == &rhs) do nothing. -
- -
300: - List::merge() specification incomplete -
-
If (this == &x) do nothing. -
- -
303: - Bitset input operator underspecified -
-
Basically, compare the input character to is.widen(0) - and is.widen(1). -
- -
305: - Default behavior of codecvt<wchar_t, char, mbstate_t>::length() -
-
Do not specify what codecvt<wchar_t, char, mbstate_t>::do_length - must return. -
- -
328: - Bad sprintf format modifier in money_put<>::do_put() -
-
Change the format string to "%.0Lf". -
- -
365: - Lack of const-qualification in clause 27 -
-
Add const overloads of is_open. -
- -
389: - Const overload of valarray::operator[] returns by value -
-
Change it to return a const T&. -
- -
402: - Wrong new expression in [some_]allocator::construct -
-
Replace "new" with "::new". -
- -
409: - Closing an fstream should clear the error state -
-
Have open clear the error flags. -
- -
434: - bitset::to_string() hard to use -
-
Add three overloads, taking fewer template arguments. -
- -
453: - basic_stringbuf::seekoff need not always fail for an empty stream -
-
Don't fail if the next pointer is null and newoff is zero. -
- -
464: - Suggestion for new member functions in standard containers -
-
Add data() to std::vector and - at(const key_type&) to std::map. -
- -
-

Return to top of page or - to the FAQ. -

- - - - -
-

-See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

- - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-active.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-active.html deleted file mode 100644 index f5b7662ed..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-active.html +++ /dev/null @@ -1,5467 +0,0 @@ - -C++ Standard Library Active Issues List - - - - - - - - - - - - - - - - - - - -
Doc. no.N1908=05-0168
Date:2005-10-23
Project:Programming Language C++
Reply to:Howard Hinnant <howard.hinnant@gmail.com>
-

C++ Standard Library Active Issues List (Revision R39)

-

Reference ISO/IEC IS 14882:1998(E)

-

Also see:

- -

The purpose of this document is to record the status of issues - which have come before the Library Working Group (LWG) of the ANSI - (J16) and ISO (WG21) C++ Standards Committee. Issues represent - potential defects in the ISO/IEC IS 14882:1998(E) document. Issues - are not to be used to request new features.

- -

This document contains only library issues which are actively being - considered by the Library Working Group. That is, issues which have a - status of New, Open, - Ready, and Review. See - Library Defect Reports List for issues considered defects and - Library Closed Issues List for issues considered closed.

- -

The issues in these lists are not necessarily formal ISO Defect - Reports (DR's). While some issues will eventually be elevated to - official Defect Report status, other issues will be disposed of in - other ways. See Issue Status.

- -

This document is in an experimental format designed for both - viewing via a world-wide web browser and hard-copy printing. It - is available as an HTML file for browsing or PDF file for - printing.

- -

Prior to Revision 14, library issues lists existed in two slightly - different versions; a Committee Version and a Public - Version. Beginning with Revision 14 the two versions were combined - into a single version.

- -

This document includes [bracketed italicized notes] as a - reminder to the LWG of current progress on issues. Such notes are - strictly unofficial and should be read with caution as they may be - incomplete or incorrect. Be aware that LWG support for a particular - resolution can quickly change if new viewpoints or killer examples are - presented in subsequent discussions.

- -

For the most current official version of this document see - http://www.open-std.org/jtc1/sc22/wg21/. - Requests for further information about this document should include - the document number above, reference ISO/IEC 14882:1998(E), and be - submitted to Information Technology Industry Council (ITI), 1250 Eye - Street NW, Washington, DC 20005.

- -

Public information as to how to obtain a copy of the C++ Standard, - join the standards committee, submit an issue, or comment on an issue - can be found in the comp.std.c++ FAQ. - Public discussion of C++ Standard related issues occurs on news:comp.std.c++. -

- -

For committee members, files available on the committee's private - web site include the HTML version of the Standard itself. HTML - hyperlinks from this issues list to those files will only work for - committee members who have downloaded them into the same disk - directory as the issues list files.

-

Revision History

-
    -
  • R39: -2005-10-14 post-Mont Tremblant mailing. -Added new issues 526-528. -Moved issues 280, 461, 464, 465, 467, 468, 474, 496 from Ready to WP as per the vote from Mont Tremblant. -Moved issues 247, 294, 342, 362, 369, 371, 376, 384, 475, 478, 495, 497 from Review to Ready. -Moved issues 498, 504, 506, 509, 510, 511, 512, 513, 514 from New to Open. -Moved issues 505, 507, 508, 519 from New to Ready. -Moved issue 500 from New to NAD. -Moved issue 518 from New to Review. -
  • -
  • R38: -2005-07-03 pre-Mont Tremblant mailing. -Merged open TR1 issues in 504-522. -Added new issues 523-523 -
  • -
  • R37: -2005-06 mid-term mailing. -Added new issues 498-503. -
  • -
  • R36: -2005-04 post-Lillehammer mailing. All issues in "ready" status except -for 454 were moved to "DR" status, and all issues -previously in "DR" status were moved to "WP". -
  • -
  • R35: -2005-03 pre-Lillehammer mailing. -
  • -
  • R34: -2005-01 mid-term mailing. Added new issues 488-494. -
  • -
  • R33: -2004-11 post-Redmond mailing. Reflects actions taken in Redmond. -
  • -
  • R32: -2004-09 pre-Redmond mailing: reflects new proposed resolutions and -new issues received after the 2004-07 mailing. Added -new issues 479-481. -
  • -
  • R31: -2004-07 mid-term mailing: reflects new proposed resolutions and -new issues received after the post-Sydney mailing. Added -new issues 463-478. -
  • -
  • R30: -Post-Sydney mailing: reflects decisions made at the Sydney meeting. -Voted all "Ready" issues from R29 into the working paper. -Added new issues 460-462. -
  • -
  • R29: -Pre-Sydney mailing. Added new issues 441-457. -
  • -
  • R28: -Post-Kona mailing: reflects decisions made at the Kona meeting. -Added new issues 432-440. -
  • -
  • R27: -Pre-Kona mailing. Added new issues 404-431. -
  • -
  • R26: -Post-Oxford mailing: reflects decisions made at the Oxford meeting. -All issues in Ready status were voted into DR status. All issues in -DR status were voted into WP status. -
  • -
  • R25: -Pre-Oxford mailing. Added new issues 390-402. -
  • -
  • R24: -Post-Santa Cruz mailing: reflects decisions made at the Santa Cruz -meeting. All Ready issues from R23 with the exception of 253, which has been given a new proposed resolution, were -moved to DR status. Added new issues 383-389. (Issues 387-389 were discussed -at the meeting.) Made progress on issues 225, 226, 229: 225 and 229 have been moved to Ready status, and the only remaining -concerns with 226 involve wording. -
  • -
  • R23: -Pre-Santa Cruz mailing. Added new issues 367-382. -Moved issues in the TC to TC status. -
  • -
  • R22: -Post-Curaçao mailing. Added new issues 362-366. -
  • -
  • R21: -Pre-Curaçao mailing. Added new issues 351-361. -
  • -
  • R20: -Post-Redmond mailing; reflects actions taken in Redmond. Added -new issues 336-350, of which issues -347-350 were added since Redmond, hence -not discussed at the meeting. - -All Ready issues were moved to DR status, with the exception of issues -284, 241, and 267. - -Noteworthy issues discussed at Redmond include -120 202, 226, 233, -270, 253, 254, 323. -
  • -
  • R19: -Pre-Redmond mailing. Added new issues -323-335. -
  • -
  • R18: -Post-Copenhagen mailing; reflects actions taken in Copenhagen. -Added new issues 312-317, and discussed -new issues 271-314. - -Changed status of issues -103 118 136 153 -165 171 183 184 -185 186 214 221 -234 237 243 248 -251 252 256 260 -261 262 263 265 -268 -to DR. - -Changed status of issues -49 109 117 182 -228 230 232 235 -238 241 242 250 -259 264 266 267 -271 272 273 275 -281 284 285 286 -288 292 295 297 -298 301 303 306 -307 308 312 -to Ready. - -Closed issues -111 277 279 287 -289 293 302 313 -314 -as NAD. - -
  • -
  • R17: -Pre-Copenhagen mailing. Converted issues list to XML. Added proposed -resolutions for issues 49, 76, 91, 235, 250, 267. -Added new issues 278-311. -
  • -
  • R16: -post-Toronto mailing; reflects actions taken in Toronto. Added new -issues 265-277. Changed status of issues -3, 8, 9, 19, -26, 31, 61, -63, 86, 108, -112, 114, 115, -122, 127, 129, -134, 137, 142, -144, 146, 147, -159, 164, 170, -181, 199, 208, -209, 210, 211, -212, 217, 220, -222, 223, 224, -227 to "DR". Reopened issue 23. Reopened -issue 187. Changed issues 2 and -4 to NAD. Fixed a typo in issue 17. Fixed -issue 70: signature should be changed both places it -appears. Fixed issue 160: previous version didn't fix -the bug in enough places. -
  • -
  • R15: -pre-Toronto mailing. Added issues -233-264. Some small HTML formatting -changes so that we pass Weblint tests. -
  • -
  • R14: -post-Tokyo II mailing; reflects committee actions taken in -Tokyo. Added issues 228 to 232. (00-0019R1/N1242) -
  • -
  • R13: -pre-Tokyo II updated: Added issues 212 to 227. -
  • -
  • R12: -pre-Tokyo II mailing: Added issues 199 to -211. Added "and paragraph 5" to the proposed resolution -of issue 29. Add further rationale to issue -178. -
  • -
  • R11: -post-Kona mailing: Updated to reflect LWG and full committee actions -in Kona (99-0048/N1224). Note changed resolution of issues -4 and 38. Added issues 196 -to 198. Closed issues list split into "defects" and -"closed" documents. Changed the proposed resolution of issue -4 to NAD, and changed the wording of proposed resolution -of issue 38. -
  • -
  • R10: -pre-Kona updated. Added proposed resolutions 83, -86, 91, 92, -109. Added issues 190 to -195. (99-0033/D1209, 14 Oct 99) -
  • -
  • R9: -pre-Kona mailing. Added issues 140 to -189. Issues list split into separate "active" and -"closed" documents. (99-0030/N1206, 25 Aug 99) -
  • -
  • R8: -post-Dublin mailing. Updated to reflect LWG and full committee actions -in Dublin. (99-0016/N1193, 21 Apr 99) -
  • -
  • R7: -pre-Dublin updated: Added issues 130, 131, -132, 133, 134, -135, 136, 137, -138, 139 (31 Mar 99) -
  • -
  • R6: -pre-Dublin mailing. Added issues 127, 128, -and 129. (99-0007/N1194, 22 Feb 99) -
  • -
  • R5: -update issues 103, 112; added issues -114 to 126. Format revisions to prepare -for making list public. (30 Dec 98) -
  • -
  • R4: -post-Santa Cruz II updated: Issues 110, -111, 112, 113 added, several -issues corrected. (22 Oct 98) -
  • -
  • R3: -post-Santa Cruz II: Issues 94 to 109 -added, many issues updated to reflect LWG consensus (12 Oct 98) -
  • -
  • R2: -pre-Santa Cruz II: Issues 73 to 93 added, -issue 17 updated. (29 Sep 98) -
  • -
  • R1: -Correction to issue 55 resolution, 60 code -format, 64 title. (17 Sep 98) -
  • -
-

-Issue Status

-

New - The issue has not yet been - reviewed by the LWG. Any Proposed Resolution is purely a - suggestion from the issue submitter, and should not be construed as - the view of LWG.

- -

Open - The LWG has discussed the issue - but is not yet ready to move the issue forward. There are several - possible reasons for open status:

-
    -
  • Consensus may have not yet have been reached as to how to deal - with the issue.
  • -
  • Informal consensus may have been reached, but the LWG awaits - exact Proposed Resolution wording for review.
  • -
  • The LWG wishes to consult additional technical experts before - proceeding.
  • -
  • The issue may require further study.
  • -
- -

A Proposed Resolution for an open issue is still not be - construed as the view of LWG. Comments on the current state of - discussions are often given at the end of open issues in an italic - font. Such comments are for information only and should not be given - undue importance.

- -

Dup - The LWG has reached consensus that - the issue is a duplicate of another issue, and will not be further - dealt with. A Rationale identifies the duplicated issue's - issue number.

- -

NAD - The LWG has reached consensus that - the issue is not a defect in the Standard, and the issue is ready to - forward to the full committee as a proposed record of response. A - Rationale discusses the LWG's reasoning.

- -

Review - Exact wording of a - Proposed Resolution is now available for review on an issue - for which the LWG previously reached informal consensus.

- -

Ready - The LWG has reached consensus - that the issue is a defect in the Standard, the Proposed - Resolution is correct, and the issue is ready to forward to the - full committee for further action as a Defect Report (DR).

- -

DR - (Defect Report) - The full J16 - committee has voted to forward the issue to the Project Editor to be - processed as a Potential Defect Report. The Project Editor reviews - the issue, and then forwards it to the WG21 Convenor, who returns it - to the full committee for final disposition. This issues list - accords the status of DR to all these Defect Reports regardless of - where they are in that process.

- -

TC - (Technical Corrigenda) - The full - WG21 committee has voted to accept the Defect Report's Proposed - Resolution as a Technical Corrigenda. Action on this issue is thus - complete and no further action is possible under ISO rules.

- -

WP - (Working Paper) - The proposed - resolution has not been accepted as a Technical Corrigendum, but - the full WG21 committee has voted to apply the Defect Report's Proposed - Resolution to the working paper.

- -

RR - (Record of Response) - The full WG21 - committee has determined that this issue is not a defect in the - Standard. Action on this issue is thus complete and no further - action is possible under ISO rules.

- -

Future - In addition to the regular - status, the LWG believes that this issue should be revisited at the - next revision of the standard. It is usually paired with NAD.

- -

Issues are always given the status of New when - they first appear on the issues list. They may progress to - Open or Review while the LWG - is actively working on them. When the LWG has reached consensus on - the disposition of an issue, the status will then change to - Dup, NAD, or Ready as appropriate. Once the full J16 committee votes to - forward Ready issues to the Project Editor, they are given the - status of Defect Report ( DR). These in turn may - become the basis for Technical Corrigenda (TC), - or are closed without action other than a Record of Response - (RR ). The intent of this LWG process is that - only issues which are truly defects in the Standard move to the - formal ISO DR status. -

- -

Active Issues

-
-

23. Num_get overflow result

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: Open  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The current description of numeric input does not account for the -possibility of overflow. This is an implicit result of changing the -description to rely on the definition of scanf() (which fails to -report overflow), and conflicts with the documented behavior of -traditional and current implementations.

- -

Users expect, when reading a character sequence that results in a -value unrepresentable in the specified type, to have an error -reported. The standard as written does not permit this.

- -

Further comments from Dietmar:

- -

-I don't feel comfortable with the proposed resolution to issue 23: It -kind of simplifies the issue to much. Here is what is going on: -

- -

-Currently, the behavior of numeric overflow is rather counter intuitive -and hard to trace, so I will describe it briefly: -

- -
    -
  • - According to 22.2.2.1.2 [lib.facet.num.get.virtuals] - paragraph 11 failbit is set if scanf() would - return an input error; otherwise a value is converted to the rules - of scanf. -
  • -
  • - scanf() is defined in terms of fscanf(). -
  • -
  • - fscanf() returns an input failure if during conversion no - character matching the conversion specification could be extracted - before reaching EOF. This is the only reason for fscanf() - to fail due to an input error and clearly does not apply to the case - of overflow. -
  • -
  • - Thus, the conversion is performed according to the rules of - fscanf() which basically says that strtod, - strtol(), etc. are to be used for the conversion. -
  • -
  • - The strtod(), strtol(), etc. functions consume as - many matching characters as there are and on overflow continue to - consume matching characters but also return a value identical to - the maximum (or minimum for signed types if there was a leading minus) - value of the corresponding type and set errno to ERANGE. -
  • -
  • - Thus, according to the current wording in the standard, overflows - can be detected! All what is to be done is to check errno - after reading an element and, of course, clearing errno - before trying a conversion. With the current wording, it can be - detected whether the overflow was due to a positive or negative - number for signed types. -
  • -
- -

Further discussion from Redmond:

- -

The basic problem is that we've defined our behavior, -including our error-reporting behavior, in terms of C90. However, -C90's method of reporting overflow in scanf is not technically an -"input error". The strto_* functions are more precise.

- -

There was general consensus that failbit should be set -upon overflow. We considered three options based on this:

-
    -
  1. Set failbit upon conversion error (including overflow), and - don't store any value.
  2. -
  3. Set failbit upon conversion error, and also set errno to - indicated the precise nature of the error.
  4. -
  5. Set failbit upon conversion error. If the error was due to - overflow, store +-numeric_limits<T>::max() as an - overflow indication.
  6. -
- -

Straw poll: (1) 5; (2) 0; (3) 8.

- - -

Proposed resolution:

- -

Discussed at Lillehammer. General outline of what we want the - solution to look like: we want to say that overflow is an error, and - provide a way to distinguish overflow from other kinds of errors. - Choose candidate field the same way scanf does, but don't describe - the rest of the process in terms of format. If a finite input field - is too large (positive or negative) to be represented as a finite - value, then set failbit and assign the nearest representable value. - Bill will provide wording.

- -
-

96. Vector<bool> is not a container

Section: 23.2.5 [lib.vector.bool]  Status: Open  Submitter: AFNOR  Date: 7 Oct 1998

-

vector<bool> is not a container as its reference and -pointer types are not references and pointers.

- -

Also it forces everyone to have a space optimization instead of a -speed one.

- -

See also: 99-0008 == N1185 Vector<bool> is -Nonconforming, Forces Optimization Choice.

-

Proposed resolution:

- -

[In Santa Cruz the LWG felt that this was Not A Defect.]

- -

[In Dublin many present felt that failure to meet Container -requirements was a defect. There was disagreement as to whether -or not the optimization requirements constituted a defect.]

- -

[The LWG looked at the following resolutions in some detail: -
-     * Not A Defect.
-     * Add a note explaining that vector<bool> does not meet -Container requirements.
-     * Remove vector<bool>.
-     * Add a new category of container requirements which -vector<bool> would meet.
-     * Rename vector<bool>.
-
-No alternative had strong, wide-spread, support and every alternative -had at least one "over my dead body" response.
-
-There was also mention of a transition scheme something like (1) add -vector_bool and deprecate vector<bool> in the next standard. (2) -Remove vector<bool> in the following standard.]

- -

[Modifying container requirements to permit returning proxies -(thus allowing container requirements conforming vector<bool>) -was also discussed.]

- -

[It was also noted that there is a partial but ugly workaround in -that vector<bool> may be further specialized with a customer -allocator.]

- -

[Kona: Herb Sutter presented his paper J16/99-0035==WG21/N1211, -vector<bool>: More Problems, Better Solutions. Much discussion -of a two step approach: a) deprecate, b) provide replacement under a -new name. LWG straw vote on that: 1-favor, 11-could live with, 2-over -my dead body. This resolution was mentioned in the LWG report to the -full committee, where several additional committee members indicated -over-my-dead-body positions.]

- -

Discussed at Lillehammer. General agreement that we should - deprecate vector<bool> and introduce this functionality under - a different name, e.g. bit_vector. This might make it possible to - remove the vector<bool> specialization in the standard that comes - after C++0x. There was also a suggestion that - in C++0x we could additional say that it's implementation defined - whether vector<bool> refers to the specialization or to the - primary template, but there wasn't general agreement that this was a - good idea.

- -

We need a paper for the new bit_vector class.

- -
-

201. Numeric limits terminology wrong

Section: 18.2.1 [lib.limits]  Status: Open  Submitter: Stephen Cleary  Date: 21 Dec 1999

-

-In some places in this section, the terms "fundamental types" and -"scalar types" are used when the term "arithmetic types" is intended. -The current usage is incorrect because void is a fundamental type and -pointers are scalar types, neither of which should have -specializations of numeric_limits. -

-

Proposed resolution:

-

[Lillehammer: it remains true that numeric_limits is using - imprecise language. However, none of the proposals for changed - wording are clearer. A redesign of numeric_limits is needed, but this - is more a task than an open issue.]

-
-

233. Insertion hints in associative containers

Section: 23.1.2 [lib.associative.reqmts]  Status: Open  Submitter: Andrew Koenig  Date: 30 Apr 2000

-

-If mm is a multimap and p is an iterator -into the multimap, then mm.insert(p, x) inserts -x into mm with p as a hint as -to where it should go. Table 69 claims that the execution time is -amortized constant if the insert winds up taking place adjacent to -p, but does not say when, if ever, this is guaranteed to -happen. All it says it that p is a hint as to where to -insert. -

-

-The question is whether there is any guarantee about the relationship -between p and the insertion point, and, if so, what it -is. -

-

-I believe the present state is that there is no guarantee: The user -can supply p, and the implementation is allowed to -disregard it entirely. -

- -

Additional comments from Nathan:
- -The vote [in Redmond] was on whether to elaborately specify the use of -the hint, or to require behavior only if the value could be inserted -adjacent to the hint. I would like to ensure that we have a chance to -vote for a deterministic treatment: "before, if possible, otherwise -after, otherwise anywhere appropriate", as an alternative to the -proposed "before or after, if possible, otherwise [...]". -

- - -

Proposed resolution:

- -

In table 69 "Associative Container Requirements" in 23.1.2 [lib.associative.reqmts], in the row for a.insert(p, t), -change

- -
-iterator p is a hint pointing to where the insert -should start to search. -
- -

to

- -
-insertion adjacent to iterator p is preferred if -more than one insertion point is valid. -
- -

and change

- -
-logarithmic in general, but amortized constant if -t is inserted right after p. -
- -

to

- -
-logarithmic in general, but amortized constant if -t is inserted adjacent to iterator p. -
- -

[Toronto: there was general agreement that this is a real defect: -when inserting an element x into a multiset that already contains -several copies of x, there is no way to know whether the hint will be -used. The proposed resolution was that the new element should always -be inserted as close to the hint as possible. So, for example, if -there is a subsequence of equivalent values, then providing a.begin() -as the hint means that the new element should be inserted before the -subsequence even if a.begin() is far away. JC van Winkel supplied -precise wording for this proposed resolution, and also for an -alternative resolution in which hints are only used when they are -adjacent to the insertion point.]

- -

[Copenhagen: the LWG agreed to the original proposed resolution, -in which an insertion hint would be used even when it is far from the -insertion point. This was contingent on seeing a reference -implementation showing that it is possible to implement this -requirement without loss of efficiency. John Potter provided such a -reference implementation.]

- -

[Redmond: The LWG was reluctant to adopt the proposal that -emerged from Copenhagen: it seemed excessively complicated, and went -beyond fixing the defect that we identified in Toronto. PJP provided -the new wording described in this issue. Nathan agrees that we -shouldn't adopt the more detailed semantics, and notes: "we know that -you can do it efficiently enough with a red-black tree, but there are -other (perhaps better) balanced tree techniques that might differ -enough to make the detailed semantics hard to satisfy."]

- -

[Curaçao: Nathan should give us the alternative wording he -suggests so the LWG can decide between the two options.]

- -

[Lillehammer: The LWG previously rejected the more detailed - semantics, because it seemed more loike a new feature than like - defect fixing. We're now more sympathetic to it, but we (especially - Bill) are still worried about performance. N1780 describes a naive - algorithm, but it's not clear whether there is a non-naive - implementation. Is it possible to implement this as efficently as - the current version of insert?]

- -

[Post Lillehammer: N1780 updated in post meeting mailing with -feedback from Lillehammer with more information regarding performance. -]

- -
-

247. vector, deque::insert complexity

Section: 23.2.4.3 [lib.vector.modifiers]  Status: Ready  Submitter: Lisa Lippincott  Date: 06 June 2000

-

Paragraph 2 of 23.2.4.3 [lib.vector.modifiers] describes the complexity -of vector::insert:

- -
- Complexity: If first and last are forward iterators, bidirectional - iterators, or random access iterators, the complexity is linear in - the number of elements in the range [first, last) plus the distance - to the end of the vector. If they are input iterators, the complexity - is proportional to the number of elements in the range [first, last) - times the distance to the end of the vector. -
- -

First, this fails to address the non-iterator forms of -insert.

- -

Second, the complexity for input iterators misses an edge case -- -it requires that an arbitrary number of elements can be added at -the end of a vector in constant time.

- -

I looked to see if deque had a similar problem, and was -surprised to find that deque places no requirement on the -complexity of inserting multiple elements (23.2.1.3 [lib.deque.modifiers], -paragraph 3):

- -
- Complexity: In the worst case, inserting a single element into a - deque takes time linear in the minimum of the distance from the - insertion point to the beginning of the deque and the distance - from the insertion point to the end of the deque. Inserting a - single element either at the beginning or end of a deque always - takes constant time and causes a single call to the copy constructor - of T. -
-

Proposed resolution:

- -

Change Paragraph 2 of 23.2.4.3 [lib.vector.modifiers] to

-
- Complexity: The complexity is linear in the number of elements - inserted plus the distance to the end of the vector. -
- -

[For input iterators, one may achieve this complexity by first - inserting at the end of the vector, and then using - rotate.]

- -

Change 23.2.1.3 [lib.deque.modifiers], paragraph 3, to:

- -
- Complexity: The complexity is linear in the number of elements - inserted plus the shorter of the distances to the beginning and - end of the deque. Inserting a single element at either the - beginning or the end of a deque causes a single call to the copy - constructor of T. -
- -

Rationale:

-

This is a real defect, and proposed resolution fixes it: some - complexities aren't specified that should be. This proposed - resolution does constrain deque implementations (it rules out the - most naive possible implementations), but the LWG doesn't see a - reason to permit that implementation.

-
-

254. Exception types in clause 19 are constructed from std::string -

Section: 19.1 [lib.std.exceptions]  Status: Open  Submitter: Dave Abrahams  Date: 01 Aug 2000

-

-Many of the standard exception types which implementations are -required to throw are constructed with a const std::string& -parameter. For example: -

- -
     19.1.5  Class out_of_range                          [lib.out.of.range]
-     namespace std {
-       class out_of_range : public logic_error {
-       public:
-         explicit out_of_range(const string& what_arg);
-       };
-     }
-
-   1 The class out_of_range defines the type of objects  thrown  as  excep-
-     tions to report an argument value not in its expected range.
-
-     out_of_range(const string& what_arg);
-
-     Effects:
-       Constructs an object of class out_of_range.
-     Postcondition:
-       strcmp(what(), what_arg.c_str()) == 0.
-
- -

-There are at least two problems with this: -

-
    -
  1. A program which is low on memory may end up throwing -std::bad_alloc instead of out_of_range because memory runs out while -constructing the exception object.
  2. -
  3. An obvious implementation which stores a std::string data member -may end up invoking terminate() during exception unwinding because the -exception object allocates memory (or rather fails to) as it is being -copied.
  4. -
- -

-There may be no cure for (1) other than changing the interface to -out_of_range, though one could reasonably argue that (1) is not a -defect. Personally I don't care that much if out-of-memory is reported -when I only have 20 bytes left, in the case when out_of_range would -have been reported. People who use exception-specifications might care -a lot, though. -

- -

-There is a cure for (2), but it isn't completely obvious. I think a -note for implementors should be made in the standard. Avoiding -possible termination in this case shouldn't be left up to chance. The -cure is to use a reference-counted "string" implementation -in the exception object. I am not necessarily referring to a -std::string here; any simple reference-counting scheme for a NTBS -would do. -

- -

Further discussion, in email:

- -

-...I'm not so concerned about (1). After all, a library implementation -can add const char* constructors as an extension, and users don't -need to avail themselves of the standard exceptions, though this is -a lame position to be forced into. FWIW, std::exception and -std::bad_alloc don't require a temporary basic_string. -

- -

-...I don't think the fixed-size buffer is a solution to the problem, -strictly speaking, because you can't satisfy the postcondition -
-   strcmp(what(), what_arg.c_str()) == 0 -
-For all values of what_arg (i.e. very long values). That means that -the only truly conforming solution requires a dynamic allocation. -

- -

Further discussion, from Redmond:

- -

The most important progress we made at the Redmond meeting was -realizing that there are two separable issues here: the const -string& constructor, and the copy constructor. If a user writes -something like throw std::out_of_range("foo"), the const -string& constructor is invoked before anything gets thrown. The -copy constructor is potentially invoked during stack unwinding.

- -

The copy constructor is a more serious problem, becuase failure -during stack unwinding invokes terminate. The copy -constructor must be nothrow. Curaçao: Howard thinks this -requirement may already be present.

- -

The fundamental problem is that it's difficult to get the nothrow -requirement to work well with the requirement that the exception -objects store a string of unbounded size, particularly if you also try -to make the const string& constructor nothrow. Options discussed -include:

- -
    -
  • Limit the size of a string that exception objects are required to -throw: change the postconditions of 19.1.2 [lib.domain.error] paragraph 3 -and 19.1.6 [lib.runtime.error] paragraph 3 to something like this: -"strncmp(what(), what_arg._str(), N) == 0, where N is an -implementation defined constant no smaller than 256".
  • -
  • Allow the const string& constructor to throw, but not the -copy constructor. It's the implementor's responsibility to get it -right. (An implementor might use a simple refcount class.)
  • -
  • Compromise between the two: an implementation is not allowed to -throw if the string's length is less than some N, but, if it doesn't -throw, the string must compare equal to the argument.
  • -
  • Add a new constructor that takes a const char*
  • -
- -

(Not all of these options are mutually exclusive.)

- -

Proposed resolution:

-

Rationale:

- -

Throwing a bad_alloc while trying to construct a message for another -exception-derived class is not necessarily a bad thing. And the -bad_alloc constructor already has a no throw spec on it (18.4.2.1).

- -

Future:

- -

All involved would like to see const char* constructors added, but -this should probably be done for C++0X as opposed to a DR.

- -

I believe the no throw specs currently decorating these functions -could be improved by some kind of static no throw spec checking -mechanism (in a future C++ language). As they stand, the copy -constructors might fail via a call to unexpected. I think what is -intended here is that the copy constructors can't fail.

- -

[Pre-Sydney: reopened at the request of Howard Hinnant. - Post-Redmond: James Kanze noticed that the copy constructors of - exception-derived classes do not have nothrow clauses. Those - classes have no copy constructors declared, meaning the - compiler-generated implicit copy constructors are used, and those - compiler-generated constructors might in principle throw anything.]

- -
-

258. Missing allocator requirement

Section: 20.1.5 [lib.allocator.requirements]  Status: Open  Submitter: Matt Austern  Date: 22 Aug 2000

-

->From lib-7752: -

- -

-I've been assuming (and probably everyone else has been assuming) that -allocator instances have a particular property, and I don't think that -property can be deduced from anything in Table 32. -

- -

-I think we have to assume that allocator type conversion is a -homomorphism. That is, if x1 and x2 are of type X, where -X::value_type is T, and if type Y is X::template -rebind<U>::other, then Y(x1) == Y(x2) if and only if x1 == x2. -

- -

-Further discussion: Howard Hinnant writes, in lib-7757: -

- -

-I think I can prove that this is not provable by Table 32. And I agree -it needs to be true except for the "and only if". If x1 != x2, I see no -reason why it can't be true that Y(x1) == Y(x2). Admittedly I can't -think of a practical instance where this would happen, or be valuable. -But I also don't see a need to add that extra restriction. I think we -only need: -

- -
- if (x1 == x2) then Y(x1) == Y(x2) -
- -

-If we decide that == on allocators is transitive, then I think I can -prove the above. But I don't think == is necessarily transitive on -allocators. That is: -

- -

-Given x1 == x2 and x2 == x3, this does not mean x1 == x3. -

- -

Example:

- -
-

-x1 can deallocate pointers from: x1, x2, x3
-x2 can deallocate pointers from: x1, x2, x4
-x3 can deallocate pointers from: x1, x3
-x4 can deallocate pointers from: x2, x4 -

- -

-x1 == x2, and x2 == x4, but x1 != x4 -

-
-

Proposed resolution:

- -

[Toronto: LWG members offered multiple opinions. One -opinion is that it should not be required that x1 == x2 -implies Y(x1) == Y(x2), and that it should not even be -required that X(x1) == x1. Another opinion is that -the second line from the bottom in table 32 already implies the -desired property. This issue should be considered in light of -other issues related to allocator instances.]

-
-

290. Requirements to for_each and its function object

Section: 25.1.1 [lib.alg.foreach]  Status: Open  Submitter: Angelika Langer  Date: 03 Jan 2001

-

The specification of the for_each algorithm does not have a -"Requires" section, which means that there are no -restrictions imposed on the function object whatsoever. In essence it -means that I can provide any function object with arbitrary side -effects and I can still expect a predictable result. In particular I -can expect that the function object is applied exactly last - first -times, which is promised in the "Complexity" section. -

- -

I don't see how any implementation can give such a guarantee -without imposing requirements on the function object. -

- -

Just as an example: consider a function object that removes -elements from the input sequence. In that case, what does the -complexity guarantee (applies f exactly last - first times) mean? -

- -

One can argue that this is obviously a nonsensical application and -a theoretical case, which unfortunately it isn't. I have seen -programmers shooting themselves in the foot this way, and they did not -understand that there are restrictions even if the description of the -algorithm does not say so. -

-

Proposed resolution:

-

[Lillehammer: This is more general than for_each. We don't want - the function object in transform invalidiating iterators - either. There should be a note somewhere in clause 17 (17, not 25) - saying that user code operating on a range may not invalidate - iterators unless otherwise specified. Bill will provide wording.]

- -
-

294. User defined macros and standard headers

Section: 17.4.3.1.1 [lib.macro.names]  Status: Ready  Submitter: James Kanze  Date: 11 Jan 2001

-

Paragraph 2 of 17.4.3.1.1 [lib.macro.names] reads: "A -translation unit that includes a header shall not contain any macros -that define names declared in that header." As I read this, it -would mean that the following program is legal:

- -
  #define npos 3.14
-  #include <sstream>
-
- -

since npos is not defined in <sstream>. It is, however, defined -in <string>, and it is hard to imagine an implementation in -which <sstream> didn't include <string>.

- -

I think that this phrase was probably formulated before it was -decided that a standard header may freely include other standard -headers. The phrase would be perfectly appropriate for C, for -example. In light of 17.4.4.1 [lib.res.on.headers] paragraph 1, however, -it isn't stringent enough.

-

Proposed resolution:

-

For 17.4.3.1.1 [lib.macro.names], replace the current wording, which reads:

-
-

Each name defined as a macro in a header is reserved to the - implementation for any use if the translation unit includes - the header.168)

- -

A translation unit that includes a header shall not contain any - macros that define names declared or defined in that header. Nor shall - such a translation unit define macros for names lexically - identical to keywords.

- -

168) It is not permissible to remove a library macro definition by - using the #undef directive.

-
- -

with the wording:

- -
-

A translation unit that includes a standard library header shall not - #define or #undef names declared in any standard library header.

- -

A translation unit shall not #define or #undef names lexically - identical to keywords.

-
- -

[Lillehammer: Beman provided new wording]

- -
-

299. Incorrect return types for iterator dereference

Section: 24.1.4 [lib.bidirectional.iterators], 24.1.5 [lib.random.access.iterators]  Status: Open  Submitter: John Potter  Date: 22 Jan 2001

-

-In section 24.1.4 [lib.bidirectional.iterators], -Table 75 gives the return type of *r-- as convertible to T. This is -not consistent with Table 74 which gives the return type of *r++ as -T&. *r++ = t is valid while *r-- = t is invalid. -

- -

-In section 24.1.5 [lib.random.access.iterators], -Table 76 gives the return type of a[n] as convertible to T. This is -not consistent with the semantics of *(a + n) which returns T& by -Table 74. *(a + n) = t is valid while a[n] = t is invalid. -

- -

-Discussion from the Copenhagen meeting: the first part is -uncontroversial. The second part, operator[] for Random Access -Iterators, requires more thought. There are reasonable arguments on -both sides. Return by value from operator[] enables some potentially -useful iterators, e.g. a random access "iota iterator" (a.k.a -"counting iterator" or "int iterator"). There isn't any obvious way -to do this with return-by-reference, since the reference would be to a -temporary. On the other hand, reverse_iterator takes an -arbitrary Random Access Iterator as template argument, and its -operator[] returns by reference. If we decided that the return type -in Table 76 was correct, we would have to change -reverse_iterator. This change would probably affect user -code. -

- -

-History: the contradiction between reverse_iterator and the -Random Access Iterator requirements has been present from an early -stage. In both the STL proposal adopted by the committee -(N0527==94-0140) and the STL technical report (HPL-95-11 (R.1), by -Stepanov and Lee), the Random Access Iterator requirements say that -operator[]'s return value is "convertible to T". In N0527 -reverse_iterator's operator[] returns by value, but in HPL-95-11 -(R.1), and in the STL implementation that HP released to the public, -reverse_iterator's operator[] returns by reference. In 1995, the -standard was amended to reflect the contents of HPL-95-11 (R.1). The -original intent for operator[] is unclear. -

- -

-In the long term it may be desirable to add more fine-grained -iterator requirements, so that access method and traversal strategy -can be decoupled. (See "Improved Iterator Categories and -Requirements", N1297 = 01-0011, by Jeremy Siek.) Any decisions -about issue 299 should keep this possibility in mind. -

- -

Further discussion: I propose a compromise between John Potter's -resolution, which requires T& as the return type of -a[n], and the current wording, which requires convertible to -T. The compromise is to keep the convertible to T -for the return type of the expression a[n], but to also add -a[n] = t as a valid expression. This compromise "saves" the -common case uses of random access iterators, while at the same time -allowing iterators such as counting iterator and caching file -iterators to remain random access iterators (iterators where the -lifetime of the object returned by operator*() is tied to the -lifetime of the iterator). -

- -

-Note that the compromise resolution necessitates a change to -reverse_iterator. It would need to use a proxy to support -a[n] = t. -

- -

-Note also there is one kind of mutable random access iterator that -will no longer meet the new requirements. Currently, iterators that -return an r-value from operator[] meet the requirements for a -mutable random access iterartor, even though the expression a[n] = -t will only modify a temporary that goes away. With this proposed -resolution, a[n] = t will be required to have the same -operational semantics as *(a + n) = t. -

- -

Proposed resolution:

- -

-In section 24.1.4 [lib.bidirectdional.iterators], change the return -type in table 75 from "convertible to T" to -T&. -

- -

-In section 24.1.5 [lib.random.access.iterators], change the -operational semantics for a[n] to " the r-value of -a[n] is equivalent to the r-value of *(a + -n)". Add a new row in the table for the expression a[n] = t -with a return type of convertible to T and operational semantics of -*(a + n) = t. -

- -

[Lillehammer: Real problem, but should be addressed as part of - iterator redesign]

- -
-

342. seek and eofbit

Section: 27.6.1.3 [lib.istream.unformatted]  Status: Ready  Submitter: Howard Hinnant  Date: 09 Oct 2001

-

I think we have a defect.

- -

According to lwg issue 60 which is now a dr, the -description of seekg in 27.6.1.3 [lib.istream.unformatted] paragraph 38 now looks -like:

- -
-Behaves as an unformatted input function (as described in 27.6.1.3, -paragraph 1), except that it does not count the number of characters -extracted and does not affect the value returned by subsequent calls to -gcount(). After constructing a sentry object, if fail() != true, -executes rdbuf()­>pubseekpos( pos). -
- -

And according to lwg issue 243 which is also now a dr, -27.6.1.3, paragraph 1 looks like:

- -
-Each unformatted input function begins execution by constructing an -object of class sentry with the default argument noskipws (second) -argument true. If the sentry object returns true, when converted to a -value of type bool, the function endeavors to obtain the requested -input. Otherwise, if the sentry constructor exits by throwing an -exception or if the sentry object returns false, when converted to a -value of type bool, the function returns without attempting to obtain -any input. In either case the number of extracted characters is set to -0; unformatted input functions taking a character array of non-zero -size as an argument shall also store a null character (using charT()) -in the first location of the array. If an exception is thrown during -input then ios::badbit is turned on in *this'ss error state. If -(exception()&badbit)!= 0 then the exception is rethrown. It also counts -the number of characters extracted. If no exception has been thrown it -ends by storing the count in a member object and returning the value -specified. In any event the sentry object is destroyed before leaving -the unformatted input function. -
- -

And finally 27.6.1.1.2/5 says this about sentry:

- -
-If, after any preparation is completed, is.good() is true, ok_ != false -otherwise, ok_ == false. -
- -

-So although the seekg paragraph says that the operation proceeds if -!fail(), the behavior of unformatted functions says the operation -proceeds only if good(). The two statements are contradictory when only -eofbit is set. I don't think the current text is clear which condition -should be respected. -

- -

Further discussion from Redmond:

- -

PJP: It doesn't seem quite right to say that seekg is -"unformatted". That makes specific claims about sentry that -aren't quite appropriate for seeking, which has less fragile failure -modes than actual input. If we do really mean that it's unformatted -input, it should behave the same way as other unformatted input. On -the other hand, "principle of least surprise" is that seeking from EOF -ought to be OK.

-

Proposed resolution:

- -

Change 27.6.1.3 [lib.istream.unformatted] to:

-
-Behaves as an unformatted input function (as described in 27.6.1.3, -paragraph 1), except that it does not count the number of characters -extracted, does not affect the value returned by subsequent calls to -gcount(), and does not examine the value returned by the sentry -object. After constructing a sentry object, if fail() != -true, executes rdbuf()->pubseekpos(pos). In -case of success, the function calls clear(). -In case of failure, the function calls setstate(failbit) -(which may throw ios_base::failure). -
- -

[Lillehammer: Matt provided wording.]

- -

Rationale:

-

In C, fseek does clear EOF. This is probably what most users would - expect. We agree that having eofbit set should not deter a seek, - and that a successful seek should clear eofbit. Note - that fail() is true only if failbit - or badbit is set, so using !fail(), rather - than good(), satisfies this goal.

-
-

362. bind1st/bind2nd type safety

Section: 20.3.6.2 [lib.bind.1st]  Status: Ready  Submitter: Andrew Demkin  Date: 26 Apr 2002

-

-The definition of bind1st() (20.3.6.2 [lib.bind.1st]) can result in -the construction of an unsafe binding between incompatible pointer -types. For example, given a function whose first parameter type is -'pointer to T', it's possible without error to bind an argument of -type 'pointer to U' when U does not derive from T: -

-
   foo(T*, int);
-
-   struct T {};
-   struct U {};
-
-   U u;
-
-   int* p;
-   int* q;
-
-   for_each(p, q, bind1st(ptr_fun(foo), &u));    // unsafe binding
-
- -

-The definition of bind1st() includes a functional-style conversion to -map its argument to the expected argument type of the bound function -(see below): -

-
  typename Operation::first_argument_type(x)
-
- -

-A functional-style conversion (5.2.3 [expr.type.conv]) is defined to be -semantically equivalent to an explicit cast expression (5.4 [expr.cast]), which may (according to 5.4, paragraph 5) be interpreted -as a reinterpret_cast, thus masking the error. -

- -

The problem and proposed change also apply to 20.3.6.4 [lib.bind.2nd].

-

Proposed resolution:

-

Add this sentence to the end of 20.3.6 [lib.binders]/1: - "Binders bind1st and bind2nd are deprecated in - favor of std::tr1::bind."

- -

(Notes to editor: (1) when and if tr1::bind is incorporated into - the standard, "std::tr1::bind" should be changed to "std::bind". (2) - 20.3.6 should probably be moved to Annex D.

-

Rationale:

-

There is no point in fixing bind1st and bind2nd. tr1::bind is a - superior solution. It solves this problem and others.

-
-

369. io stream objects and static ctors

Section: 27.3 [lib.iostream.objects]  Status: Ready  Submitter: Ruslan Abdikeev  Date: 8 Jul 2002

-

-Is it safe to use standard iostream objects from constructors of -static objects? Are standard iostream objects constructed and are -their associations established at that time? -

- -

Surpisingly enough, Standard does NOT require that.

- -

-27.3/2 [lib.iostream.objects] guarantees that standard iostream -objects are constructed and their associations are established before -the body of main() begins execution. It also refers to ios_base::Init -class as the panacea for constructors of static objects. -

- -

-However, there's nothing in 27.3 [lib.iostream.objects], -in 27.4.2 [lib.ios.base], and in 27.4.2.1.6 [lib.ios::Init], -that would require implementations to allow access to standard -iostream objects from constructors of static objects. -

- -

Details:

- -

Core text refers to some magic object ios_base::Init, which will -be discussed below:

- -
- "The [standard iostream] objects are constructed, and their - associations are established at some time prior to or during - first time an object of class basic_ios<charT,traits>::Init - is constructed, and in any case before the body of main - begins execution." (27.3/2 [lib.iostream.objects]) -
- -

-The first non-normative footnote encourages implementations -to initialize standard iostream objects earlier than required. -

- -

However, the second non-normative footnote makes an explicit -and unsupported claim:

- -
- "Constructors and destructors for static objects can access these - [standard iostream] objects to read input from stdin or write output - to stdout or stderr." (27.3/2 footnote 265 [lib.iostream.objects]) -
- -

-The only bit of magic is related to that ios_base::Init class. AFAIK, -the rationale behind ios_base::Init was to bring an instance of this -class to each translation unit which #included <iostream> or -related header. Such an inclusion would support the claim of footnote -quoted above, because in order to use some standard iostream object it -is necessary to #include <iostream>. -

- -

-However, while Standard explicitly describes ios_base::Init as -an appropriate class for doing the trick, I failed to found a -mention of an _instance_ of ios_base::Init in Standard. -

-

Proposed resolution:

- -

Add to 27.3 [lib.iostream.objects], p2, immediately before the last sentence -of the paragraph, the following two sentences:

- -
-If a translation unit includes <iostream>, or explicitly -constructs an ios_base::Init object, these stream objects shall -be constructed before dynamic initialization of non-local -objects defined later in that translation unit, and these stream -objects shall be destroyed after the destruction of dynamically -initialized non-local objects defined later in that translation unit. -
- -

[Lillehammer: Matt provided wording.]

-

[Mont Tremblant: Matt provided revised wording.]

-

Rationale:

-

-The original proposed resolution unconditionally required -implementations to define an ios_base::Init object of some -implementation-defined name in the header <iostream>. That's an -overspecification. First, defining the object may be unnecessary -and even detrimental to performance if an implementation can -guarantee that the 8 standard iostream objects will be initialized -before any other user-defined object in a program. Second, there -is no need to require implementations to document the name of the -object.

- -

-The new proposed resolution gives users guidance on what they need to -do to ensure that stream objects are constructed during startup.

-
-

371. Stability of multiset and multimap member functions

Section: 23.1 [lib.container.requirements]  Status: Ready  Submitter: Frank Compagner  Date: 20 Jul 2002

-

-The requirements for multiset and multimap containers (23.1 -[lib.containers.requirements], 23.1.2 [lib.associative.reqmnts], -23.3.2 [lib.multimap] and 23.3.4 [lib.multiset]) make no mention of -the stability of the required (mutating) member functions. It appears -the standard allows these functions to reorder equivalent elements of -the container at will, yet the pervasive red-black tree implementation -appears to provide stable behaviour. -

- -

This is of most concern when considering the behaviour of erase(). -A stability requirement would guarantee the correct working of the -following 'idiom' that removes elements based on a certain predicate -function. -

- -
  multimap<int, int> m;
-  multimap<int, int>::iterator i = m.begin();
-  while (i != m.end()) {
-      if (pred(i))
-          m.erase (i++);
-      else
-          ++i;
-  }
-
- -

-Although clause 23.1.2/8 guarantees that i remains a valid iterator -througout this loop, absence of the stability requirement could -potentially result in elements being skipped. This would make -this code incorrect, and, furthermore, means that there is no way -of erasing these elements without iterating first over the entire -container, and second over the elements to be erased. This would -be unfortunate, and have a negative impact on both performance and -code simplicity. -

- -

-If the stability requirement is intended, it should be made explicit -(probably through an extra paragraph in clause 23.1.2). -

-

-If it turns out stability cannot be guaranteed, i'd argue that a -remark or footnote is called for (also somewhere in clause 23.1.2) to -warn against relying on stable behaviour (as demonstrated by the code -above). If most implementations will display stable behaviour, any -problems emerging on an implementation without stable behaviour will -be hard to track down by users. This would also make the need for an -erase_if() member function that much greater. -

- -

This issue is somewhat related to LWG issue 130.

- -

Proposed resolution:

- -

Add the following to the end of 23.1.2 [lib.associative.reqmts] paragraph 4: -"For multiset and multimap, insertand erase - are stable: they preserve the relative ordering of equivalent - elements.

- -

[Lillehammer: Matt provided wording]

-

[Joe Gottman points out that the provided wording does not address -multimap and multiset. N1780 also addresses this issue and suggests -wording.]

- -

[Mont Tremblant: Changed set and map to multiset and multimap.]

- -

Rationale:

-

The LWG agrees that this guarantee is necessary for common user - idioms to work, and that all existing implementations provide this - property. Note that this resolution guarantees stability for - multimap and multiset, not for all associative containers in - general.

- -
-

376. basic_streambuf semantics

Section: 27.7.1.3 [lib.stringbuf.virtuals]  Status: Ready  Submitter: Ray Lischner  Date: 14 Aug 2002

-

-In Section 27.7.1.3 [lib.stringbuf.virtuals], Table 90, the implication is that -the four conditions should be mutually exclusive, but they are not. -The first two cases, as written, are subcases of the third.

- -

-As written, it is unclear what should be the result if cases 1 and 2 -are both true, but case 3 is false. -

- -

Proposed resolution:

- -

Rewrite these conditions as:

-
-

- (which & (ios_base::in|ios_base::out)) == ios_base::in -

- -

- (which & (ios_base::in|ios_base::out)) == ios_base::out -

- -

- (which & (ios_base::in|ios_base::out)) == -(ios_base::in|ios_base::out) - and way == either ios_base::beg or ios_base::end -

- -

Otherwise

-
- -

Rationale:

-

It's clear what we wanted to say, we just failed to say it. This - fixes it.

-
-

382. codecvt do_in/out result

Section: 22.2.1.5 [lib.locale.codecvt]  Status: Open  Submitter: Martin Sebor  Date: 30 Aug 2002

-

-It seems that the descriptions of codecvt do_in() and do_out() leave -sufficient room for interpretation so that two implementations of -codecvt may not work correctly with the same filebuf. Specifically, -the following seems less than adequately specified: -

- -
    -
  1. - the conditions under which the functions terminate -
  2. -
  3. - precisely when the functions return ok -
  4. -
  5. - precisely when the functions return partial -
  6. -
  7. - the full set of conditions when the functions return error -
  8. -
- -
    -
  1. - 22.2.1.5.2 [lib.locale.codecvt.virtuals], p2 says this about the effects of the - function: ...Stops if it encounters a character it cannot - convert... This assumes that there *is* a character to - convert. What happens when there is a sequence that doesn't form a - valid source character, such as an unassigned or invalid UNICODE - character, or a sequence that cannot possibly form a character - (e.g., the sequence "\xc0\xff" in UTF-8)? -
  2. -
  3. - Table 53 says that the function returns codecvt_base::ok - to indicate that the function(s) "completed the conversion." - Suppose that the source sequence is "\xc0\x80" in UTF-8, - with from pointing to '\xc0' and (from_end==from + 1). - It is not clear whether the return value should be ok - or partial (see below). -
  4. -
  5. - Table 53 says that the function returns codecvt_base::partial - if "not all source characters converted." With the from pointers - set up the same way as above, it is not clear whether the return - value should be partial or ok (see above). -
  6. -
  7. - Table 53, in the row describing the meaning of error mistakenly - refers to a "from_type" character, without the symbol from_type - having been defined. Most likely, the word "source" character - is intended, although that is not sufficient. The functions - may also fail when they encounter an invalid source sequence - that cannot possibly form a valid source character (e.g., as - explained in bullet 1 above). -
  8. -
-

-Finally, the conditions described at the end of 22.2.1.5.2 [lib.locale.codecvt.virtuals], p4 don't seem to be possible: -

-
- "A return value of partial, if (from_next == from_end), - indicates that either the destination sequence has not - absorbed all the available destination elements, or that - additional source elements are needed before another - destination element can be produced." -
-

-If the value is partial, it's not clear to me that (from_next -==from_end) could ever hold if there isn't enough room -in the destination buffer. In order for (from_next==from_end) to -hold, all characters in that range must have been successfully -converted (according to 22.2.1.5.2 [lib.locale.codecvt.virtuals], p2) and since there are no -further source characters to convert, no more room in the -destination buffer can be needed. -

-

-It's also not clear to me that (from_next==from_end) could ever -hold if additional source elements are needed to produce another -destination character (not element as incorrectly stated in the -text). partial is returned if "not all source characters have -been converted" according to Table 53, which also implies that -(from_next==from) does NOT hold. -

-

-Could it be that the intended qualifying condition was actually -(from_next != from_end), i.e., that the sentence was supposed -to read -

-
- "A return value of partial, if (from_next != from_end),..." -
-

-which would make perfect sense, since, as far as I understand it, -partial can only occur if (from_next != from_end)? -

-

Proposed resolution:

- -

[Lillehammer: Defer for the moment, but this really needs to be - fixed. Right now, the description of codecvt is too vague for it to - be a useful contract between providers and clients of codecvt - facets. (Note that both vendors and users can be both providers and - clients of codecvt facets.) The major philosophical issue is whether - the standard should only describe mappings that take a single wide - character to multiple narrow characters (and vice versa), or whether - it should describe fully general N-to-M conversions. When the - original standard was written only the former was contemplated, but - today, in light of the popularity of utf8 and utf16, that doesn't - seem sufficient for C++0x. Bill supports general N-to-M conversions; - we need to make sure Martin and Howard agree.]

- -
-

384. equal_range has unimplementable runtime complexity

Section: 25.3.3.3 [lib.equal.range]  Status: Ready  Submitter: Hans Bos  Date: 18 Oct 2002

-

-Section 25.3.3.3 [lib.equal.range] -states that at most 2 * log(last - first) + 1 -comparisons are allowed for equal_range. -

- -

It is not possible to implement equal_range with these constraints.

- -

In a range of one element as in:

-
    int x = 1;
-    equal_range(&x, &x + 1, 1)
-
- -

it is easy to see that at least 2 comparison operations are needed.

- -

For this case at most 2 * log(1) + 1 = 1 comparison is allowed.

- -

I have checked a few libraries and they all use the same (nonconforming) -algorithm for equal_range that has a complexity of

-
     2* log(distance(first, last)) + 2.
-
-

I guess this is the algorithm that the standard assumes for equal_range.

- -

-It is easy to see that 2 * log(distance) + 2 comparisons are enough -since equal range can be implemented with lower_bound and upper_bound -(both log(distance) + 1). -

- -

-I think it is better to require something like 2log(distance) + O(1) (or -even logarithmic as multiset::equal_range). -Then an implementation has more room to optimize for certain cases (e.g. -have log(distance) characteristics when at most match is found in the range -but 2log(distance) + 4 for the worst case). -

- -

Proposed resolution:

-

In 25.3.3.1 [lib.lower.bound]/4, change log(last - first) + 1 -to log2(last - first) + O(1).

- -

In 25.3.3.2 [lib.upper.bound]/4, change log(last - first) + 1 -to log2(last - first) + O(1).

- -

In 25.3.3.3 [lib.equal.range]/4, change 2*log(last - first) + 1 -to 2*log2(last - first) + O(1).

- -

[Matt provided wording]

-

Rationale:

-

The LWG considered just saying O(log n) for all three, but -Ê decided that threw away too much valuable information.Ê The fact -Ê that lower_bound is twice as fast as equal_range is important. -Ê However, it's better to allow an arbitrary additive constant than to -Ê specify an exact count.Ê An exact count would have to -Ê involve floor or ceil.Ê It would be too easy to -Ê get this wrong, and don't provide any substantial value for users.

-
-

385. Does call by value imply the CopyConstructible requirement?

Section: 17 [lib.library]  Status: Open  Submitter: Matt Austern  Date: 23 Oct 2002

-

-Many function templates have parameters that are passed by value; -a typical example is find_if's pred parameter in -25.1.2 [lib.alg.find]. Are the corresponding template parameters -(Predicate in this case) implicitly required to be -CopyConstructible, or does that need to be spelled out explicitly? -

- -

-This isn't quite as silly a question as it might seem to be at first -sight. If you call find_if in such a way that template -argument deduction applies, then of course you'll get call by value -and you need to provide a copy constructor. If you explicitly provide -the template arguments, however, you can force call by reference by -writing something like find_if<my_iterator, -my_predicate&>. The question is whether implementation -are required to accept this, or whether this is ill-formed because -my_predicate& is not CopyConstructible. -

- -

-The scope of this problem, if it is a problem, is unknown. Function -object arguments to generic algorithms in clauses 25 [lib.algorithms] -and 26 [lib.numerics] are obvious examples. A review of the whole -library is necessary. -

-

Proposed resolution:

-

[ -This is really two issues. First, predicates are typically passed by -value but we don't say they must be Copy Constructible. They should -be. Second: is specialization allowed to transform value arguments -into references? References aren't copy constructible, so this should -not be allowed. -]

-
-

387. std::complex over-encapsulated

Section: 26.2 [lib.complex.numbers]  Status: Open  Submitter: Gabriel Dos Reis  Date: 8 Nov 2002

-

-The absence of explicit description of std::complex<T> layout -makes it imposible to reuse existing software developed in traditional -languages like Fortran or C with unambigous and commonly accepted -layout assumptions. There ought to be a way for practitioners to -predict with confidence the layout of std::complex<T> whenever T -is a numerical datatype. The absence of ways to access individual -parts of a std::complex<T> object as lvalues unduly promotes -severe pessimizations. For example, the only way to change, -independently, the real and imaginary parts is to write something like -

- -
complex<T> z;
-// ...
-// set the real part to r
-z = complex<T>(r, z.imag());
-// ...
-// set the imaginary part to i
-z = complex<T>(z.real(), i);
-
- -

-At this point, it seems appropriate to recall that a complex number -is, in effect, just a pair of numbers with no particular invariant to -maintain. Existing practice in numerical computations has it that a -complex number datatype is usually represented by Cartesian -coordinates. Therefore the over-encapsulation put in the specification -of std::complex<> is not justified. -

- -

Proposed resolution:

-

Add the following requirements to 26.2 [lib.complex.numbers] as 26.2/4:

-
-

If z is an lvalue expression of type cv std::complex<T> then

- -
    -
  • the expression reinterpret_cast<cv T(&)[2]>(z) -is well-formed; and
  • -
  • reinterpret_cast<cvT(&)[2]>(z)[0]designates the -real part of z; and
  • -
  • reinterpret_cast<cvT(&)[2]>(z)[1]designates the -imaginary part of z.
  • -
- -

-Moreover, if a is an expression of pointer type cv complex<T>* -and the expression a[i] is well-defined for an integer expression -i then: -

- -
    -
  • reinterpret_cast<cvT*>(a)[2+i] designates the real -part of a[i]; and
  • -
  • reinterpret_cast<cv T*>(a)[2+i+1] designates the -imaginary part of a[i].
  • -
-
- -

In the header synopsis in 26.2.1 [lib.complex.synopsis], replace

-
  template<class T> T real(const complex<T>&);
-  template<class T> T imag(const complex<T>&);
-
- -

with

- -
  template<class T> const T& real(const complex<T>&);
-  template<class T>       T& real(      complex<T>&);
-  template<class T> const T& imag(const complex<T>&);
-  template<class T>       T& imag(      complex<T>&);
-
- -

In 26.2.7 [lib.complex.value.ops] paragraph 1, change

-
  template<class T> T real(const complex<T>&);
-
-

to

-
  template<class T> const T& real(const complex<T>&);
-  template<class T>       T& real(      complex<T>&);
-
-

and change the Returns clause to "Returns: The real -part of x

. - -

In 26.2.7 [lib.complex.value.ops] paragraph 2, change

-
  template<class T> T imag(const complex<T>&);
-
-

to

-
  template<class T> const T& imag(const complex<T>&);
-  template<class T>       T& imag(      complex<T>&);
-
-

and change the Returns clause to "Returns: The imaginary -part of x

. - -

[Kona: The layout guarantee is absolutely necessary for C - compatibility. However, there was disagreement about the other part - of this proposal: retrieving elements of the complex number as - lvalues. An alternative: continue to have real() and imag() return - rvalues, but add set_real() and set_imag(). Straw poll: return - lvalues - 2, add setter functions - 5. Related issue: do we want - reinterpret_cast as the interface for converting a complex to an - array of two reals, or do we want to provide a more explicit way of - doing it? Howard will try to resolve this issue for the next - meeting.]

- -

[pre-Sydney: Howard summarized the options in n1589.]

- -

Rationale:

-

The LWG believes that C99 compatibility would be enough -justification for this change even without other considerations. All -existing implementations already have the layout proposed here.

-
-

394. behavior of formatted output on failure

Section: 27.6.2.5.1 [lib.ostream.formatted.reqmts]  Status: Open  Submitter: Martin Sebor  Date: 27 Dec 2002

-

-There is a contradiction in Formatted output about what bit is -supposed to be set if the formatting fails. On sentence says it's -badbit and another that it's failbit. -

-

-27.6.2.5.1, p1 says in the Common Requirements on Formatted output -functions: -

     ... If the generation fails, then the formatted output function
-     does setstate(ios::failbit), which might throw an exception.
-
-

-

-27.6.2.5.2, p1 goes on to say this about Arithmetic Inserters: -

-

- ... The formatting conversion occurs as if it performed the - following code fragment: -

-

-

     bool failed =
-         use_facet<num_put<charT,ostreambuf_iterator<charT,traits>
-         > >
-         (getloc()).put(*this, *this, fill(), val). failed();
-
-     ... If failed is true then does setstate(badbit) ...
-
-

-

-The original intent of the text, according to Jerry Schwarz (see -c++std-lib-10500), is captured in the following paragraph: -

-

-In general "badbit" should mean that the stream is unusable because -of some underlying failure, such as disk full or socket closure; -"failbit" should mean that the requested formatting wasn't possible -because of some inconsistency such as negative widths. So typically -if you clear badbit and try to output something else you'll fail -again, but if you clear failbit and try to output something else -you'll succeed. -

-

-In the case of the arithmetic inserters, since num_put cannot -report failure by any means other than exceptions (in response -to which the stream must set badbit, which prevents the kind of -recoverable error reporting mentioned above), the only other -detectable failure is if the iterator returned from num_put -returns true from failed(). -

-

-Since that can only happen (at least with the required iostream -specializations) under such conditions as the underlying failure -referred to above (e.g., disk full), setting badbit would seem -to be the appropriate response (indeed, it is required in -27.6.2.5.2, p1). It follows that failbit can never be directly -set by the arithmetic (it can only be set by the sentry object -under some unspecified conditions). -

-

-The situation is different for other formatted output functions -which can fail as a result of the streambuf functions failing -(they may do so by means other than exceptions), and which are -then required to set failbit. -

-

-The contradiction, then, is that ostream::operator<<(int) will -set badbit if the disk is full, while operator<<(ostream&, -char) will set failbit under the same conditions. To make the behavior -consistent, the Common requirements sections for the Formatted output -functions should be changed as proposed below. -

-

Proposed resolution:

- - -

[Kona: There's agreement that this is a real issue. What we - decided at Kona: 1. An error from the buffer (which can be detected - either directly from streambuf's member functions or by examining a - streambuf_iterator) should always result in badbit getting set. - 2. There should never be a circumstance where failbit gets set. - That represents a formatting error, and there are no circumstances - under which the output facets are specified as signaling a - formatting error. (Even more so for string output that for numeric - because there's nothing to format.) If we ever decide to make it - possible for formatting errors to exist then the facets can signal - the error directly, and that should go in clause 22, not clause 27. - 3. The phrase "if generation fails" is unclear and should be - eliminated. It's not clear whether it's intended to mean a buffer - error (e.g. a full disk), a formatting error, or something else. - Most people thought it was supposed to refer to buffer errors; if - so, we should say so. Martin will provide wording.]

- -

Rationale:

- -
-

396. what are characters zero and one

Section: 23.3.5.1 [lib.bitset.cons]  Status: Open  Submitter: Martin Sebor  Date: 5 Jan 2003

-

-23.3.5.1, p6 [lib.bitset.cons] talks about a generic character -having the value of 0 or 1 but there is no definition of what -that means for charT other than char and wchar_t. And even for -those two types, the values 0 and 1 are not actually what is -intended -- the values '0' and '1' are. This, along with the -converse problem in the description of to_string() in 23.3.5.2, -p33, looks like a defect remotely related to DR 303. -

-

-http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#303 -

-
23.3.5.1:
-  -6-  An element of the constructed string has value zero if the
-       corresponding character in str, beginning at position pos,
-       is 0. Otherwise, the element has the value one.
-    
-
23.3.5.2:
-  -33-  Effects: Constructs a string object of the appropriate
-        type and initializes it to a string of length N characters.
-        Each character is determined by the value of its
-        corresponding bit position in *this. Character position N
-        ?- 1 corresponds to bit position zero. Subsequent decreasing
-        character positions correspond to increasing bit positions.
-        Bit value zero becomes the character 0, bit value one becomes
-        the character 1.
-    
-

-Also note the typo in 23.3.5.1, p6: the object under construction -is a bitset, not a string. -

-

Proposed resolution:

-

Change the constructor's function declaration immediately before -23.3.5.1 [lib.bitset.cons] p3 to:

-
    template <class charT, class traits, class Allocator>
-    explicit
-    bitset(const basic_string<charT, traits, Allocator>& str,
-           typename basic_string<charT, traits, Allocator>::size_type pos = 0,
-           typename basic_string<charT, traits, Allocator>::size_type n =
-             basic_string<charT, traits, Allocator>::npos,
-           charT zero = charT('0'), charT one = charT('1'))
-
-

Change the first two sentences of 23.3.5.1 [lib.bitset.cons] p6 to: "An -element of the constructed string has value 0 if the corresponding -character in str, beginning at position pos, -is zero. Otherwise, the element has the value 1.

- -

Change the text of the second sentence in 23.3.5.1, p5 to read: - "The function then throws invalid_argument if any of the rlen - characters in str beginning at position pos is other than zero - or one. The function uses traits::eq() to compare the character - values." -

- -

Change the declaration of the to_string member function - immediately before 23.3.5.2 [lib.bitset.members] p33 to:

-
    template <class charT, class traits, class Allocator>
-    basic_string<charT, traits, Allocator> 
-    to_string(charT zero = charT('0'), charT one = charT('1')) const;
-
-

Change the last sentence of 23.3.5.2 [lib.bitset.members] p33 to: "Bit - value 0 becomes the character zero, bit value 1 becomes the - character one.

-

Change 23.3.5.3 [lib.bitset.operators] p8 to:

-

Returns:

-
  os << x.template to_string<charT,traits,allocator<charT> >(
-      use_facet<ctype<charT> >(os.getloc()).widen('0'),
-      use_facet<ctype<charT> >(os.getloc()).widen('1'));
-
-

Rationale:

-

There is a real problem here: we need the character values of '0' - and '1', and we have no way to get them since strings don't have - imbued locales. In principle the "right" solution would be to - provide an extra object, either a ctype facet or a full locale, - which would be used to widen '0' and '1'. However, there was some - discomfort about using such a heavyweight mechanism. The proposed - resolution allows those users who care about this issue to get it - right.

-

We fix the inserter to use the new arguments. Note that we already - fixed the analogous problem with the extractor in issue 303.

- -
-

397. ostream::sentry dtor throws exceptions

Section: 27.6.2.3 [lib.ostream::sentry]  Status: Open  Submitter: Martin Sebor  Date: 5 Jan 2003

-

-17.4.4.8, p3 prohibits library dtors from throwing exceptions. -

-

-27.6.2.3, p4 says this about the ostream::sentry dtor: -

-
    -4- If ((os.flags() & ios_base::unitbuf) && !uncaught_exception())
-        is true, calls os.flush().
-    
-

-27.6.2.6, p7 that describes ostream::flush() says: -

-
    -7- If rdbuf() is not a null pointer, calls rdbuf()->pubsync().
-        If that function returns ?-1 calls setstate(badbit) (which
-        may throw ios_base::failure (27.4.4.3)).
-    
-

-That seems like a defect, since both pubsync() and setstate() can -throw an exception. -

-

Proposed resolution:

-

[ -The contradiction is real. Clause 17 says destructors may never -throw exceptions, and clause 27 specifies a destructor that does -throw. In principle we might change either one. We're leaning -toward changing clause 17: putting in an "unless otherwise specified" -clause, and then putting in a footnote saying the sentry destructor -is the only one that can throw. PJP suggests specifying that -sentry::~sentry() should internally catch any exceptions it might cause. -]

-
-

398. effects of end-of-file on unformatted input functions

Section: 27.6.2.3 [lib.ostream::sentry]  Status: Open  Submitter: Martin Sebor  Date: 5 Jan 2003

-

-While reviewing unformatted input member functions of istream -for their behavior when they encounter end-of-file during input -I found that the requirements vary, sometimes unexpectedly, and -in more than one case even contradict established practice (GNU -libstdc++ 3.2, IBM VAC++ 6.0, STLPort 4.5, SunPro 5.3, HP aCC -5.38, Rogue Wave libstd 3.1, and Classic Iostreams). -

-

-The following unformatted input member functions set eofbit if they -encounter an end-of-file (this is the expected behavior, and also -the behavior of all major implementations): -

-

-

    basic_istream<charT, traits>&
-    get (char_type*, streamsize, char_type);
-    
-

-

- Also sets failbit if it fails to extract any characters. -

-

-

    basic_istream<charT, traits>&
-    get (char_type*, streamsize);
-    
-

-

- Also sets failbit if it fails to extract any characters. -

-

-

    basic_istream<charT, traits>&
-    getline (char_type*, streamsize, char_type);
-    
-

-

- Also sets failbit if it fails to extract any characters. -

-

-

    basic_istream<charT, traits>&
-    getline (char_type*, streamsize);
-    
-

-

- Also sets failbit if it fails to extract any characters. -

-

-

    basic_istream<charT, traits>&
-    ignore (int, int_type);
-    
-

-

-

    basic_istream<charT, traits>&
-    read (char_type*, streamsize);
-    
-

-

- Also sets failbit if it encounters end-of-file. -

-

-

    streamsize readsome (char_type*, streamsize);
-    
-

- -

-The following unformated input member functions set failbit but -not eofbit if they encounter an end-of-file (I find this odd -since the functions make it impossible to distinguish a general -failure from a failure due to end-of-file; the requirement is -also in conflict with all major implementation which set both -eofbit and failbit): -

-

-

    int_type get();
-    
-

-

-

    basic_istream<charT, traits>&
-    get (char_type&);
-    
-

-

-These functions only set failbit of they extract no characters, -otherwise they don't set any bits, even on failure (I find this -inconsistency quite unexpected; the requirement is also in -conflict with all major implementations which set eofbit -whenever they encounter end-of-file): -

-

-

    basic_istream<charT, traits>&
-    get (basic_streambuf<charT, traits>&, char_type);
-    
-

-

-

    basic_istream<charT, traits>&
-    get (basic_streambuf<charT, traits>&);
-    
-

-

-This function sets no bits (all implementations except for -STLport and Classic Iostreams set eofbit when they encounter -end-of-file): -

-

-

    int_type peek ();
-    
-

-

Proposed resolution:

-

Informally, what we want is a global statement of intent saying - that eofbit gets set if we trip across EOF, and then we can take - away the specific wording for individual functions. A full review - is necessary. The wording currently in the standard is a mishmash, - and changing it on an individual basis wouldn't make things better. - Dietmar will do this work.

-
-

401.  incorrect type casts in table 32 in lib.allocator.requirements

Section: 20.1.5 [lib.allocator.requirements]  Status: Open  Submitter: Markus Mauhart  Date: 27 Feb 2003

-

-I think that in par2 of 20.1.5 [lib.allocator.requirements] the last two -lines of table 32 contain two incorrect type casts. The lines are ... -

- -
  a.construct(p,t)   Effect: new((void*)p) T(t)
-  a.destroy(p)       Effect: ((T*)p)?->~T()
-
- -

-.... with the prerequisits coming from the preceding two paragraphs, especially -from table 31: -

- -
  alloc<T>             a     ;// an allocator for T
-  alloc<T>::pointer    p     ;// random access iterator
-                              // (may be different from T*)
-  alloc<T>::reference  r = *p;// T&
-  T const&             t     ;
-
- -

-For that two type casts ("(void*)p" and "(T*)p") to be well-formed -this would require then conversions to T* and void* for all -alloc<T>::pointer, so it would implicitely introduce extra -requirements for alloc<T>::pointer, additionally to the only -current requirement (being a random access iterator). -

-

Proposed resolution:

-

-"(void*)p" should be replaced with "(void*)&*p" and that -"((T*)p)?->" should be replaced with "(*p)." or with -"(&*p)->". -

- -

-Note: Actually I would prefer to replace "((T*)p)?->dtor_name" with -"p?->dtor_name", but AFAICS this is not possible cause of an omission -in 13.5.6 [over.ref] (for which I have filed another DR on 29.11.2002). -

- -

[Kona: The LWG thinks this is somewhere on the border between - Open and NAD. The intend is clear: construct constructs an - object at the location p. It's reading too much into the - description to think that literally calling new is - required. Tweaking this description is low priority until we can do - a thorough review of allocators, and, in particular, allocators with - non-default pointer types.]

- -
-

408. Is vector<reverse_iterator<char*> > forbidden?

Section: 24.1 [lib.iterator.requirements]  Status: Open  Submitter: Nathan Myers  Date: 3 June 2003

-

-I've been discussing iterator semantics with Dave Abrahams, and a -surprise has popped up. I don't think this has been discussed before. -

- -

-24.1 [lib.iterator.requirements] says that the only operation that can be performed on "singular" -iterator values is to assign a non-singular value to them. (It -doesn't say they can be destroyed, and that's probably a defect.) -Some implementations have taken this to imply that there is no need -to initialize the data member of a reverse_iterator<> in the default -constructor. As a result, code like -

-
- std::vector<std::reverse_iterator<char*> > v(7); - v.reserve(1000); -
-

-invokes undefined behavior, because it must default-initialize the -vector elements, and then copy them to other storage. Of course many -other vector operations on these adapters are also left undefined, -and which those are is not reliably deducible from the standard. -

- -

-I don't think that 24.1 was meant to make standard-library iterator -types unsafe. Rather, it was meant to restrict what operations may -be performed by functions which take general user- and standard -iterators as arguments, so that raw pointers would qualify as -iterators. However, this is not clear in the text, others have come -to the opposite conclusion. -

- -

-One question is whether the standard iterator adaptors have defined -copy semantics. Another is whether they have defined destructor -semantics: is -

-
- { std::vector<std::reverse_iterator<char*> > v(7); } -
-

-undefined too? -

- -

-Note this is not a question of whether algorithms are allowed to -rely on copy semantics for arbitrary iterators, just whether the -types we actually supply support those operations. I believe the -resolution must be expressed in terms of the semantics of the -adapter's argument type. It should make clear that, e.g., the -reverse_iterator<T> constructor is actually required to execute -T(), and so copying is defined if the result of T() is copyable. -

- -

-Issue 235, which defines reverse_iterator's default -constructor more precisely, has some relevance to this issue. -However, it is not the whole story. -

- -

-The issue was whether -

-
- reverse_iterator() { } -
-

-is allowed, vs. -

-
- reverse_iterator() : current() { } -
- -

-The difference is when T is char*, where the first leaves the member -uninitialized, and possibly equal to an existing pointer value, or -(on some targets) may result in a hardware trap when copied. -

- -

-8.5 paragraph 5 seems to make clear that the second is required to -satisfy DR 235, at least for non-class Iterator argument -types. -

- -

-But that only takes care of reverse_iterator, and doesn't establish -a policy for all iterators. (The reverse iterator adapter was just -an example.) In particular, does my function -

-
- template <typename Iterator> - void f() { std::vector<Iterator> v(7); } -
-

-evoke undefined behavior for some conforming iterator definitions? -I think it does, now, because vector<> will destroy those singular -iterator values, and that's explicitly disallowed. -

- -

-24.1 shouldn't give blanket permission to copy all singular iterators, -because then pointers wouldn't qualify as iterators. However, it -should allow copying of that subset of singular iterator values that -are default-initialized, and it should explicitly allow destroying any -iterator value, singular or not, default-initialized or not. -

- -

Related issue: 407

-

Proposed resolution:

- -

[ -We don't want to require all singular iterators to be copyable, -because that is not the case for pointers. However, default -construction may be a special case. Issue: is it really default -construction we want to talk about, or is it something like value -initialization? We need to check with core to see whether default -constructed pointers are required to be copyable; if not, it would be -wrong to impose so strict a requirement for iterators. -]

- -
-

416. definitions of XXX_MIN and XXX_MAX macros in climits

Section: 18.2.2 [lib.c.limits]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

- -Given two overloads of the function foo(), one taking an argument of type -int and the other taking a long, which one will the call foo(LONG_MAX) -resolve to? The expected answer should be foo(long), but whether that -is true depends on the #defintion of the LONG_MAX macro, specifically -its type. This issue is about the fact that the type of these macros -is not actually required to be the same as the the type each respective -limit. -
- -Section 18.2.2 of the C++ Standard does not specify the exact types of -the XXX_MIN and XXX_MAX macros #defined in the <climits> and <limits.h> -headers such as INT_MAX and LONG_MAX and instead defers to the C standard. -
- -Section 5.2.4.2.1, p1 of the C standard specifies that "The values [of -these constants] shall be replaced by constant expressions suitable for use -in #if preprocessing directives. Moreover, except for CHAR_BIT and MB_LEN_MAX, -the following shall be replaced by expressions that have the same type as -would an expression that is an object of the corresponding type converted -according to the integer promotions." -
- -The "corresponding type converted according to the integer promotions" for -LONG_MAX is, according to 6.4.4.1, p5 of the C standard, the type of long -converted to the first of the following set of types that can represent it: -int, long int, long long int. So on an implementation where (sizeof(long) -== sizeof(int)) this type is actually int, while on an implementation where -(sizeof(long) > sizeof(int)) holds this type will be long. -
- -This is not an issue in C since the type of the macro cannot be detected -by any conforming C program, but it presents a portability problem in C++ -where the actual type is easily detectable by overload resolution. - -

-

Proposed resolution:

- -

[Kona: the LWG does not believe this is a defect. The C macro - definitions are what they are; we've got a better - mechanism, std::numeric_limits, that is specified more - precisely than the C limit macros. At most we should add a - nonnormative note recommending that users who care about the exact - types of limit quantities should use <limits> instead of - <climits>.]

- -
-

417. what does ctype::do_widen() return on failure

Section: 22.2.1.1.2 [lib.locale.ctype.virtuals]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-The Effects and Returns clauses of the do_widen() member function of -the ctype facet fail to specify the behavior of the function on failure. -That the function may not be able to simply cast the narrow character -argument to the type of the result since doing so may yield the wrong value -for some wchar_t encodings. Popular implementations of ctype<wchar_t> that -use mbtowc() and UTF-8 as the native encoding (e.g., GNU glibc) will fail -when the argument's MSB is set. There is no way for the the rest of locale -and iostream to reliably detect this failure. -

-

Proposed resolution:

-

[Kona: This is a real problem. Widening can fail. It's unclear - what the solution should be. Returning WEOF works for the wchar_t - specialization, but not in general. One option might be to add a - default, like narrow. But that's an incompatible change. - Using traits::eof might seem like a good idea, but facets - don't have access to traits (a recurring problem). We could - have widen throw an exception, but that's a scary option; - existing library components aren't written with the assumption - that widen can throw.]

-
-

418. exceptions thrown during iostream cleanup

Section: 27.4.2.1.6 [lib.ios::Init]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-The dtor of the ios_base::Init object is supposed to call flush() on the -6 standard iostream objects cout, cerr, clog, wcout, wcerr, and wclog. -This call may cause an exception to be thrown. -

- -

-17.4.4.8, p3 prohibits all library destructors from throwing exceptions. -

- -

-The question is: What should this dtor do if one or more of these calls -to flush() ends up throwing an exception? This can happen quite easily -if one of the facets installed in the locale imbued in the iostream -object throws. -

-

Proposed resolution:

-

[Kona: We probably can't do much better than what we've got, so - the LWG is leaning toward NAD. At the point where the standard - stream objects are being cleaned up, the usual error reporting - mechanism are all unavailable. And exception from flush at this - point will definitely cause problems. A quality implementation - might reasonably swallow the exception, or call abort, or do - something even more drastic.]

-
-

419. istream extractors not setting failbit if eofbit is already set

Section: 27.6.1.1.2 [lib.istream::sentry]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

- -27.6.1.1.2, p2 says that istream::sentry ctor prepares for input if is.good() -is true. p4 then goes on to say that the ctor sets the sentry::ok_ member to -true if the stream state is good after any preparation. 27.6.1.2.1, p1 then -says that a formatted input function endeavors to obtain the requested input -if the sentry's operator bool() returns true. - -Given these requirements, no formatted extractor should ever set failbit if -the initial stream rdstate() == eofbit. That is contrary to the behavior of -all implementations I tested. The program below prints out - -eof = 1, fail = 0 -eof = 1, fail = 1 - -on all of them. -

-
-#include <sstream>
-#include <cstdio>
-
-int main()
-{
-    std::istringstream strm ("1");
-
-    int i = 0;
-
-    strm >> i;
-
-    std::printf ("eof = %d, fail = %d\n",
-                 !!strm.eof (), !!strm.fail ());
-
-    strm >> i;
-
-    std::printf ("eof = %d, fail = %d\n",
-                 !!strm.eof (), !!strm.fail ());
-}
-
-
-

-
- -Comments from Jerry Schwarz (c++std-lib-11373): -
- -Jerry Schwarz wrote: -
- -I don't know where (if anywhere) it says it in the standard, but the -formatted extractors are supposed to set failbit if they don't extract -any characters. If they didn't then simple loops like -
- -while (cin >> x); -
- -would loop forever. -
- -Further comments from Martin Sebor: -
- -The question is which part of the extraction should prevent this from happening -by setting failbit when eofbit is already set. It could either be the sentry -object or the extractor. It seems that most implementations have chosen to -set failbit in the sentry [...] so that's the text that will need to be -corrected. - -

-

Proposed resolution:

-

Kona: Possibly NAD. If eofbit is set then good() will return false. We - then set ok to false. We believe that the sentry's - constructor should always set failbit when ok is false, and - we also think the standard already says that. Possibly it could be - clearer.

- -
-

421. is basic_streambuf copy-constructible?

Section: 27.5.2.1 [lib.streambuf.cons]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-The reflector thread starting with c++std-lib-11346 notes that the class -template basic_streambuf, along with basic_stringbuf and basic_filebuf, -is copy-constructible but that the semantics of the copy constructors -are not defined anywhere. Further, different implementations behave -differently in this respect: some prevent copy construction of objects -of these types by declaring their copy ctors and assignment operators -private, others exhibit undefined behavior, while others still give -these operations well-defined semantics. -

- -

-Note that this problem doesn't seem to be isolated to just the three -types mentioned above. A number of other types in the library section -of the standard provide a compiler-generated copy ctor and assignment -operator yet fail to specify their semantics. It's believed that the -only types for which this is actually a problem (i.e. types where the -compiler-generated default may be inappropriate and may not have been -intended) are locale facets. See issue 439. -

-

Proposed resolution:

-

-27.5.2 [lib.streambuf]: Add into the synopsis, public section, just above the destructor declaration: -

- -
-
basic_streambuf(const basic_streambuf& sb);
-basic_streambuf& operator=(const basic_streambuf& sb);
-
-
- -

Insert after 27.5.2.1, paragraph 2:

-
-
basic_streambuf(const basic_streambuf& sb);
-
- -

Constructs a copy of sb.

-

Postcondtions:

-
                eback() == sb.eback()
-                gptr()  == sb.gptr()
-                egptr() == sb.egptr()
-                pbase() == sb.pbase()
-                pptr()  == sb.pptr()
-                epptr() == sb.epptr()
-                getloc() == sb.getloc()
-
- -
basic_streambuf& operator=(const basic_streambuf& sb);
-
- -

Assigns the data members of sb to this.

- -

Postcondtions:

-
                eback() == sb.eback()
-                gptr()  == sb.gptr()
-                egptr() == sb.egptr()
-                pbase() == sb.pbase()
-                pptr()  == sb.pptr()
-                epptr() == sb.epptr()
-                getloc() == sb.getloc()
-
- -

Returns: *this.

-
- -

27.7.1 [lib.stringbuf]:

- -Option A: - -
-

Insert into the basic_stringbuf synopsis in the private section:

- -
basic_stringbuf(const basic_stringbuf&);             // not defined
-basic_stringbuf& operator=(const basic_stringbuf&);  // not defined
-
-
- -Option B: - -
-

Insert into the basic_stringbuf synopsis in the public section:

- -
basic_stringbuf(const basic_stringbuf& sb);
-basic_stringbuf& operator=(const basic_stringbuf& sb);
-
- -

27.7.1.1, insert after paragraph 4:

- -
basic_stringbuf(const basic_stringbuf& sb);
- -

-Constructs an independent copy of sb as if with sb.str(), and with the openmode that sb was constructed with. -

- -

Postcondtions:

-
               str() == sb.str()
-               gptr()  - eback() == sb.gptr()  - sb.eback()
-               egptr() - eback() == sb.egptr() - sb.eback()
-               pptr()  - pbase() == sb.pptr()  - sb.pbase()
-               getloc() == sb.getloc()
-
- -

-Note: The only requirement on epptr() is that it point beyond the -initialized range if an output sequence exists. There is no requirement -that epptr() - pbase() == sb.epptr() - sb.pbase(). -

- -
basic_stringbuf& operator=(const basic_stringbuf& sb);
-

After assignment the basic_stringbuf has the same state as if it -were initially copy constructed from sb, except that the -basic_stringbuf is allowed to retain any excess capacity it might have, -which may in turn effect the value of epptr(). -

-
- -

27.8.1.1 [lib.filebuf]

- -

Insert at the bottom of the basic_filebuf synopsis:

- -
-
private:
-  basic_filebuf(const basic_filebuf&);             // not defined
-  basic_filebuf& operator=(const basic_filebuf&);  // not defined
-
-
-

[Kona: this is an issue for basic_streambuf itself and for its - derived classes. We are leaning toward allowing basic_streambuf to - be copyable, and specifying its precise semantics. (Probably the - obvious: copying the buffer pointers.) We are less sure whether - the streambuf derived classes should be copyable. Howard will - write up a proposal.]

- -

[Sydney: Dietmar presented a new argument against basic_streambuf - being copyable: it can lead to an encapsulation violation. Filebuf - inherits from streambuf. Now suppose you inhert a my_hijacking_buf - from streambuf. You can copy the streambuf portion of a filebuf to a - my_hijacking_buf, giving you access to the pointers into the - filebuf's internal buffer. Perhaps not a very strong argument, but - it was strong enough to make people nervous. There was weak - preference for having streambuf not be copyable. There was weak - preference for having stringbuf not be copyable even if streambuf - is. Move this issue to open for now. -]

- -

Rationale:

-

-27.5.2 [lib.streambuf]: The proposed basic_streambuf copy constructor -and assignment operator are the same as currently implied by the lack -of declarations: public and simply copies the data members. This -resolution is not a change but a clarification of the current -standard. -

- -

-27.7.1 [lib.stringbuf]: There are two reasonable options: A) Make -basic_stringbuf not copyable. This is likely the status-quo of -current implementations. B) Reasonable copy semantics of -basic_stringbuf can be defined and implemented. A copyable -basic_streambuf is arguably more useful than a non-copyable one. This -should be considered as new functionality and not the fixing of a -defect. If option B is chosen, ramifications from issue 432 are taken -into account. -

- -

-27.8.1.1 [lib.filebuf]: There are no reasonable copy semantics for -basic_filebuf. -

- -
-

422. explicit specializations of member functions of class templates

Section: 17.4.3.1 [lib.reserved.names]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-It has been suggested that 17.4.3.1, p1 may or may not allow programs to -explicitly specialize members of standard templates on user-defined types. -The answer to the question might have an impact where library requirements -are given using the "as if" rule. I.e., if programs are allowed to specialize -member functions they will be able to detect an implementation's strict -conformance to Effects clauses that describe the behavior of the function -in terms of the other member function (the one explicitly specialized by -the program) by relying on the "as if" rule. -

-

Proposed resolution:

- -

- Add the following sentence immediately after the text of 17.4.3.1 [lib.reserved.names], p1: -

- -
- The behavior of a program that declares explicit specializations - of any members of class templates or explicit specializations of - any member templates of classes or class templates defined in - this library is undefined. -
- - -

[Kona: straw poll was 6-1 that user programs should not be - allowed to specialize individual member functions of standard - library class templates, and that doing so invokes undefined - behavior. Post-Kona: Martin provided wording.]

- -

[Sydney: The LWG agrees that the standard shouldn't permit users -to specialize individual member functions unless they specialize the -whole class, but we're not sure these words say what we want them to; -they could be read as prohibiting the specialization of any standard -library class templates. We need to consult with CWG to make sure we -use the right wording.]

- -
-

423. effects of negative streamsize in iostreams

Section: 27 [lib.input.output]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

- -

-A third party test suite tries to exercise istream::ignore(N) with -a negative value of N and expects that the implementation will treat -N as if it were 0. Our implementation asserts that (N >= 0) holds and -aborts the test. -

- -

-I can't find anything in section 27 that prohibits such values but I don't -see what the effects of such calls should be, either (this applies to -a number of unformatted input functions as well as some member functions -of the basic_streambuf template). -

-

Proposed resolution:

-

-I propose that we add to each function in clause 27 that takes an argument, -say N, of type streamsize a Requires clause saying that "N >= 0." The intent -is to allow negative streamsize values in calls to precision() and width() -but disallow it in calls to streambuf::sgetn(), istream::ignore(), or -ostream::write(). -

- -

[Kona: The LWG agreed that this is probably what we want. However, we - need a review to find all places where functions in clause 27 take - arguments of type streamsize that shouldn't be allowed to go - negative. Martin will do that review.]

- -
-

424. normative notes

Section: 17.3.1.1 [lib.structure.summary]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

- -

-The text in 17.3.1.1, p1 says: -
- -"Paragraphs labelled "Note(s):" or "Example(s):" are informative, other -paragraphs are normative." -
- -The library section makes heavy use of paragraphs labeled "Notes(s)," -some of which are clearly intended to be normative (see list 1), while -some others are not (see list 2). There are also those where the intent -is not so clear (see list 3). -
- -List 1 -- Examples of (presumably) normative Notes: -
- -20.4.1.1, p3, 20.4.1.1, p10, 21.3.1, p11, 22.1.1.2, p11, 23.2.1.3, p2, -25.3.7, p3, 26.2.6, p14a, 27.5.2.4.3, p7. -
- -List 2 -- Examples of (presumably) informative Notes: -
- -18.4.1.3, p3, 21.3.5.6, p14, 22.2.1.5.2, p3, 25.1.1, p4, 26.2.5, p1, -27.4.2.5, p6. -
- -List 3 -- Examples of Notes that are not clearly either normative -or informative: -
- -22.1.1.2, p8, 22.1.1.5, p6, 27.5.2.4.5, p4. -
- -None of these lists is meant to be exhaustive. -

- -

Proposed resolution:

- -

[Definitely a real problem. The big problem is there's material - that doesn't quite fit any of the named paragraph categories - (e.g. Effects). Either we need a new kind of named - paragraph, or we need to put more material in unnamed paragraphs - jsut after the signature. We need to talk to the Project Editor - about how to do this. -]

- -
-

427. stage 2 and rationale of DR 221

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-The requirements specified in Stage 2 and reiterated in the rationale -of DR 221 (and echoed again in DR 303) specify that num_get<charT>:: -do_get() compares characters on the stream against the widened elements -of "012...abc...ABCX+-" -

- -

-An implementation is required to allow programs to instantiate the num_get -template on any charT that satisfies the requirements on a user-defined -character type. These requirements do not include the ability of the -character type to be equality comparable (the char_traits template must -be used to perform tests for equality). Hence, the num_get template cannot -be implemented to support any arbitrary character type. The num_get template -must either make the assumption that the character type is equality-comparable -(as some popular implementations do), or it may use char_traits<charT> to do -the comparisons (some other popular implementations do that). This diversity -of approaches makes it difficult to write portable programs that attempt to -instantiate the num_get template on user-defined types. -

-

Proposed resolution:

-

[Kona: the heart of the problem is that we're theoretically - supposed to use traits classes for all fundamental character - operations like assignment and comparison, but facets don't have - traits parameters. This is a fundamental design flaw and it - appears all over the place, not just in this one place. It's not - clear what the correct solution is, but a thorough review of facets - and traits is in order. The LWG considered and rejected the - possibility of changing numeric facets to use narrowing instead of - widening. This may be a good idea for other reasons (see issue - 459), but it doesn't solve the problem raised by this - issue. Whether we use widen or narrow the num_get facet - still has no idea which traits class the user wants to use for - the comparison, because only streams, not facets, are passed traits - classes. The standard does not require that two different - traits classes with the same char_type must necessarily - have the same behavior.]

- -

Informally, one possibility: require that some of the basic -character operations, such as eq, lt, -and assign, must behave the same way for all traits classes -with the same char_type. If we accept that limitation on -traits classes, then the facet could reasonably be required to -use char_traits<charT>

. - -
-

430. valarray subset operations

Section: 26.3.2.4 [lib.valarray.sub]  Status: Open  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-The standard fails to specify the behavior of valarray::operator[](slice) -and other valarray subset operations when they are passed an "invalid" -slice object, i.e., either a slice that doesn't make sense at all (e.g., -slice (0, 1, 0) or one that doesn't specify a valid subset of the valarray -object (e.g., slice (2, 1, 1) for a valarray of size 1). -

-

Proposed resolution:

-

[Kona: the LWG believes that invalid slices should invoke - undefined behavior. Valarrays are supposed to be designed for high - performance, so we don't want to require specific checking. We - need wording to express this decision.]

-
-

431. Swapping containers with unequal allocators

Section: 20.1.5 [lib.allocator.requirements], 25 [lib.algorithms]  Status: Open  Submitter: Matt Austern  Date: 20 Sep 2003

-

Clause 20.1.5 [lib.allocator.requirements] paragraph 4 says that implementations - are permitted to supply containers that are unable to cope with - allocator instances and that container implementations may assume - that all instances of an allocator type compare equal. We gave - implementers this latitude as a temporary hack, and eventually we - want to get rid of it. What happens when we're dealing with - allocators that don't compare equal? -

- -

In particular: suppose that v1 and v2 are both - objects of type vector<int, my_alloc> and that - v1.get_allocator() != v2.get_allocator(). What happens if - we write v1.swap(v2)? Informally, three possibilities:

- -

1. This operation is illegal. Perhaps we could say that an - implementation is required to check and to throw an exception, or - perhaps we could say it's undefined behavior.

-

2. The operation performs a slow swap (i.e. using three - invocations of operator=, leaving each allocator with its - original container. This would be an O(N) operation.

-

3. The operation swaps both the vectors' contents and their - allocators. This would be an O(1) operation. That is:

-
-
    my_alloc a1(...);
-    my_alloc a2(...);
-    assert(a1 != a2);
-
-    vector<int, my_alloc> v1(a1);
-    vector<int, my_alloc> v2(a2);
-    assert(a1 == v1.get_allocator());
-    assert(a2 == v2.get_allocator());
-
-    v1.swap(v2);
-    assert(a1 == v2.get_allocator());
-    assert(a2 == v1.get_allocator());
-  
-
- -

Proposed resolution:

- -

[Kona: This is part of a general problem. We need a paper - saying how to deal with unequal allocators in general.]

- -

[pre-Sydney: Howard argues for option 3 in n1599.]

- -
-

446. Iterator equality between different containers

Section: 24.1 [lib.iterator.requirements], 23.1 [lib.container.requirements]  Status: Open  Submitter: Andy Koenig  Date: 16 Dec 2003

-

-What requirements does the standard place on equality comparisons between -iterators that refer to elements of different containers. For example, if -v1 and v2 are empty vectors, is v1.end() == v2.end() allowed to yield true? -Is it allowed to throw an exception? -

- -

-The standard appears to be silent on both questions. -

-

Proposed resolution:

- -

[Sydney: The intention is that comparing two iterators from -different containers is undefined, but it's not clear if we say that, -or even whether it's something we should be saying in clause 23 or in -clause 24. Intuitively we might want to say that equality is defined -only if one iterator is reachable from another, but figuring out how -to say it in any sensible way is a bit tricky: reachability is defined -in terms of equality, so we can't also define equality in terms of -reachability. -]

- -
-

454. basic_filebuf::open should accept wchar_t names

Section: 27.8.1.3 [lib.filebuf.members]  Status: Open  Submitter: Bill Plauger  Date: 30 Jan 2004

-
    basic_filebuf *basic_filebuf::open(const char *, ios_base::open_mode);
-
- -

should be supplemented with the overload:

- -
    basic_filebuf *basic_filebuf::open(const wchar_t *, ios_base::open_mode);
-
- -

-Depending on the operating system, one of these forms is fundamental and -the other requires an implementation-defined mapping to determine the -actual filename. -

- -

[Sydney: Yes, we want to allow wchar_t filenames. Bill will - provide wording.]

- -

Proposed resolution:

- -

Change from:

-
-
basic_filebuf<charT,traits>* open(
-	const char* s,
-	ios_base::openmode mode );
-
- -

-Effects: If is_open() != false, returns a null pointer. -Otherwise, initializes the filebuf as required. It then -opens a file, if possible, whose name is the NTBS s ("as if" -by calling std::fopen(s,modstr)).

-
- -

to:

- -
-
basic_filebuf<charT,traits>* open(
-	const char* s,
-	ios_base::openmode mode );
-
-basic_filebuf<charT,traits>* open(
-	const wchar_t* ws,
-	ios_base::openmode mode );
-
- -

-Effects: If is_open() != false, returns a null pointer. -Otherwise, initializes the filebuf as required. It then -opens a file, if possible, whose name is the NTBS s ("as if" -by calling std::fopen(s,modstr)). -For the second signature, the NTBS s is determined from the -WCBS ws in an implementation-defined manner. -

- -

-(NOTE: For a system that "naturally" represents a filename -as a WCBS, the NTBS s in the first signature may instead -be mapped to a WCBS; if so, it follows the same mapping -rules as the first argument to open.) -

-
- -

Rationale:

-

-Slightly controversial, but by a 7-1 straw poll the LWG agreed to move -this to Ready. The controversy was because the mapping between wide -names and files in a filesystem is implementation defined. The -counterargument, which most but not all LWG members accepted, is that -the mapping between narrow files names and files is also -implemenation defined.

- -

[Lillehammer: Moved back to "open" status, at Beman's urging. -(1) Why just basic_filebuf, instead of also basic_fstream (and -possibly other things too). (2) Why not also constructors that take -std::basic_string? (3) We might want to wait until we see Beman's -filesystem library; we might decide that it obviates this.]

- -
-

456. Traditional C header files are overspecified

Section: 17.4.1.2 [lib.headers]  Status: Open  Submitter: Bill Plauger  Date: 30 Jan 2004

- -

The C++ Standard effectively requires that the traditional C headers -(of the form <xxx.h>) be defined in terms of the newer C++ -headers (of the form <cxxx>). Clauses 17.4.1.2/4 and D.5 combine -to require that:

- -
    -
  • Including the header <cxxx> declares a C name in namespace std.
  • - -
  • Including the header <xxx.h> declares a C name in namespace std - (effectively by including <cxxx>), then imports it into the global - namespace with an individual using declaration.
  • -
- -

-The rules were left in this form despited repeated and heated objections -from several compiler vendors. The C headers are often beyond the direct -control of C++ implementors. In some organizations, it's all they can do -to get a few #ifdef __cplusplus tests added. Third-party library vendors -can perhaps wrap the C headers. But neither of these approaches supports -the drastic restructuring required by the C++ Standard. As a result, it is -still widespread practice to ignore this conformance requirement, nearly -seven years after the committee last debated this topic. Instead, what is -often implemented is: -

- -
    -
  • Including the header <xxx.h> declares a C name in the - global namespace.
  • - -
  • Including the header <cxxx> declares a C name in the - global namespace (effectively by including <xxx.h>), then - imports it into namespace std with an individual using declaration.
  • -
- -

-The practical benefit for implementors with the second approach is that -they can use existing C library headers, as they are pretty much obliged -to do. The practical cost for programmers facing a mix of implementations -is that they have to assume weaker rules:

- -
    -
  • If you want to assuredly declare a C name in the global - namespace, include <xxx.h>. You may or may not also get the - declaration in namespace std.
  • - -
  • If you want to assuredly declare a C name in namespace std, - include <cxxx.h>. You may or may not also get the declaration in - the global namespace.
  • -
- -

-There also exists the possibility of subtle differences due to -Koenig lookup, but there are so few non-builtin types defined in the C -headers that I've yet to see an example of any real problems in this -area. -

- -

-It is worth observing that the rate at which programmers fall afoul of -these differences has remained small, at least as measured by newsgroup -postings and our own bug reports. (By an overwhelming margin, the -commonest problem is still that programmers include <string> and can't -understand why the typename string isn't defined -- this a decade after -the committee invented namespace std, nominally for the benefit of all -programmers.) -

- -

-We should accept the fact that we made a serious mistake and rectify it, -however belatedly, by explicitly allowing either of the two schemes for -declaring C names in headers. -

- -

[Sydney: This issue has been debated many times, and will - certainly have to be discussed in full committee before any action - can be taken. However, the preliminary sentiment of the LWG was in - favor of the change. (6 yes, 0 no, 2 abstain) Robert Klarer - suggests that we might also want to undeprecate the - C-style .h headers.]

- -

Proposed resolution:

-
-

458. 24.1.5 contains unintented limitation for operator-

Section: 24.1.5 [lib.random.access.iterators]  Status: Open  Submitter: Daniel Frey  Date: 27 Feb 2004

-

-In 24.1.5 [lib.random.access.iterators], table 76 the operational -semantics for the expression "r -= n" are defined as "return r += -n". -This means, that the expression -n must be valid, which is not the case -for unsigned types. -

- -

[ -Sydney: Possibly not a real problem, since difference type is required -to be a signed integer type. However, the wording in the standard may -be less clear than we would like. -]

- -

Proposed resolution:

-

-To remove this limitation, I suggest to change the -operational semantics for this column to: -

- - { Distance m = n; - if (m >= 0) - while (m--) --r; - else - while (m++) ++r; - return r; } - - -
-

459. Requirement for widening in stage 2 is overspecification

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: Open  Submitter: Martin Sebor  Date: 16 Mar 2004

-

When parsing strings of wide-character digits, the standard - requires the library to widen narrow-character "atoms" and compare - the widened atoms against the characters that are being parsed. - Simply narrowing the wide characters would be far simpler, and - probably more efficient. The two choices are equivalent except in - convoluted test cases, and many implementations already ignore the - standard and use narrow instead of widen.

- -

-First, I disagree that using narrow() instead of widen() would -necessarily have unfortunate performance implications. A possible -implementation of narrow() that allows num_get to be implemented -in a much simpler and arguably comparably efficient way as calling -widen() allows, i.e. without making a virtual call to do_narrow every -time, is as follows: -

- -
  inline char ctype<wchar_t>::narrow (wchar_t wc, char dflt) const
-  {
-      const unsigned wi = unsigned (wc);
-
-      if (wi > UCHAR_MAX)
-          return typeid (*this) == typeid (ctype<wchar_t>) ?
-                 dflt : do_narrow (wc, dflt);
-
-      if (narrow_ [wi] < 0) {
-         const char nc = do_narrow (wc, dflt);
-         if (nc == dflt)
-             return dflt;
-         narrow_ [wi] = nc;
-      }
-
-      return char (narrow_ [wi]);
-  }
-
- -

-Second, I don't think the change proposed in the issue (i.e., to use -narrow() instead of widen() during Stage 2) would be at all -drastic. Existing implementations with the exception of libstdc++ -currently already use narrow() so the impact of the change on programs -would presumably be isolated to just a single implementation. Further, -since narrow() is not required to translate alternate wide digit -representations such as those mentioned in issue 303 to -their narrow equivalents (i.e., the portable source characters '0' -through '9'), the change does not necessarily imply that these -alternate digits would be treated as ordinary digits and accepted as -part of numbers during parsing. In fact, the requirement in 22.2.1.1.2 [lib.locale.ctype.virtuals], p13 forbids narrow() to translate an alternate -digit character, wc, to an ordinary digit in the basic source -character set unless the expression -(ctype<charT>::is(ctype_base::digit, wc) == true) holds. This in -turn is prohibited by the C standard (7.25.2.1.5, 7.25.2.1.5, and -5.2.1, respectively) for charT of either char or wchar_t. -

- -

[Sydney: To a large extent this is a nonproblem. As long as -you're only trafficking in char and wchar_t we're only dealing with a -stable character set, so you don't really need either 'widen' or -'narrow': can just use literals. Finally, it's not even clear whether -widen-vs-narrow is the right question; arguably we should be using -codecvt instead.]

- -

Proposed resolution:

-

Change stage 2 so that implementations are permitted to use either -technique to perform the comparison:

-
    -
  1. call widen on the atoms and compare (either by using - operator== or char_traits<charT>::eq) the input with - the widened atoms, or
  2. -
  3. call narrow on the input and compare the narrow input - with the atoms
  4. -
  5. do (1) or (2) only if charT is not char or wchar_t, - respectively; i.e., avoid calling widen or narrow - if it the source and destination types are the same
  6. -
-
-

462. Destroying objects with static storage duration

Section: 3.6.3 [basic.start.term], 18.3 [lib.support.start.term]  Status: Open  Submitter: Bill Plauger  Date: 23 Mar 2004

-

-3.6.3 Termination spells out in detail the interleaving of static -destructor calls and calls to functions registered with atexit. To -match this behavior requires intimate cooperation between the code -that calls destructors and the exit/atexit machinery. The former -is tied tightly to the compiler; the latter is a primitive mechanism -inherited from C that traditionally has nothing to do with static -construction and destruction. The benefits of intermixing destructor -calls with atexit handler calls is questionable at best, and very -difficult to get right, particularly when mixing third-party C++ -libraries with different third-party C++ compilers and C libraries -supplied by still other parties. -

- -

-I believe the right thing to do is defer all static destruction -until after all atexit handlers are called. This is a change in -behavior, but one that is likely visible only to perverse test -suites. At the very least, we should permit deferred destruction -even if we don't require it. -

-

Proposed resolution:

- -

[If this is to be changed, it should probably be changed by CWG. - At this point, however, the LWG is leaning toward NAD. Implementing - what the standard says is hard work, but it's not impossible and - most vendors went through that pain years ago. Changing this - behavior would be a user-visible change, and would break at least - one real application.]

- -

-

-
-

463. auto_ptr usability issues

Section: 20.4.5 [lib.auto.ptr]  Status: Open  Submitter: Rani Sharoni  Date: 7 Dec 2003

- -

-TC1 CWG DR #84 effectively made the template<class Y> operator auto_ptr<Y>() -member of auto_ptr (20.4.5.3/4) obsolete. -

- -

-The sole purpose of this obsolete conversion member is to enable copy -initialization base from r-value derived (or any convertible types like -cv-types) case: -

-
#include <memory>
-using std::auto_ptr;
-
-struct B {};
-struct D : B {};
-
-auto_ptr<D> source();
-int sink(auto_ptr<B>);
-int x1 = sink( source() ); // #1 EDG - no suitable copy constructor
-
- -

-The excellent analysis of conversion operations that was given in the final -auto_ptr proposal -(http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/1997/N1128.pdf) -explicitly specifies this case analysis (case 4). DR #84 makes the analysis -wrong and actually comes to forbid the loophole that was exploited by the -auto_ptr designers. -

- -

-I didn't encounter any compliant compiler (e.g. EDG, GCC, BCC and VC) that -ever allowed this case. This is probably because it requires 3 user defined -conversions and in fact current compilers conform to DR #84. -

- -

-I was surprised to discover that the obsolete conversion member actually has -negative impact of the copy initialization base from l-value derived -case:

-
auto_ptr<D> dp;
-int x2 = sink(dp); // #2 EDG - more than one user-defined conversion applies
-
- -

-I'm sure that the original intention was allowing this initialization using -the template<class Y> auto_ptr(auto_ptr<Y>& a) constructor (20.4.5.1/4) but -since in this copy initialization it's merely user defined conversion (UDC) -and the obsolete conversion member is UDC with the same rank (for the early -overloading stage) there is an ambiguity between them. -

- -

-Removing the obsolete member will have impact on code that explicitly -invokes it: -

-
int y = sink(source().operator auto_ptr<B>());
-
- -

-IMHO no one ever wrote such awkward code and the reasonable workaround for -#1 is: -

-
int y = sink( auto_ptr<B>(source()) );
-
- -

-I was even more surprised to find out that after removing the obsolete -conversion member the initialization was still ill-formed: -int x3 = sink(dp); // #3 EDG - no suitable copy constructor -

- -

-This copy initialization semantically requires copy constructor which means -that both template conversion constructor and the auto_ptr_ref conversion -member (20.4.5.3/3) are required which is what was explicitly forbidden in -DR #84. This is a bit amusing case in which removing ambiguity results with -no candidates. -

- -

-I also found exception safety issue with auto_ptr related to auto_ptr_ref: -

-
int f(auto_ptr<B>, std::string);
-auto_ptr<B> source2();
-
-// string constructor throws while auto_ptr_ref
-// "holds" the pointer
-int x4 = f(source2(), "xyz"); // #4
-
- -

-The theoretic execution sequence that will cause a leak: -

-
    -
  1. call auto_ptr<B>::operator auto_ptr_ref<B>()
  2. -
  3. call string::string(char const*) and throw
  4. -
- -

-According to 20.4.5.3/3 and 20.4.5/2 the auto_ptr_ref conversion member -returns auto_ptr_ref<Y> that holds *this and this is another defect since -the type of *this is auto_ptr<X> where X might be different from Y. Several -library vendors (e.g. SGI) implement auto_ptr_ref<Y> with Y* as member which -is much more reasonable. Other vendor implemented auto_ptr_ref as -defectively required and it results with awkward and catastrophic code: -int oops = sink(auto_ptr<B>(source())); // warning recursive on all control -paths -

- -

-Dave Abrahams noticed that there is no specification saying that -auto_ptr_ref copy constructor can't throw. -

- -

-My proposal comes to solve all the above issues and significantly simplify -auto_ptr implementation. One of the fundamental requirements from auto_ptr -is that it can be constructed in an intuitive manner (i.e. like ordinary -pointers) but with strict ownership semantics which yield that source -auto_ptr in initialization must be non-const. My idea is to add additional -constructor template with sole propose to generate ill-formed, diagnostic -required, instance for const auto_ptr arguments during instantiation of -declaration. This special constructor will not be instantiated for other -types which is achievable using 14.8.2/2 (SFINAE). Having this constructor -in hand makes the constructor template<class Y> auto_ptr(auto_ptr<Y> const&) -legitimate since the actual argument can't be const yet non const r-value -are acceptable. -

- -

-This implementation technique makes the "private auxiliary class" -auto_ptr_ref obsolete and I found out that modern C++ compilers (e.g. EDG, -GCC and VC) consume the new implementation as expected and allow all -intuitive initialization and assignment cases while rejecting illegal cases -that involve const auto_ptr arguments. -

- -

The proposed auto_ptr interface:

- -
namespace std {
-    template<class X> class auto_ptr {
-    public:
-        typedef X element_type;
-
-        // 20.4.5.1 construct/copy/destroy:
-        explicit auto_ptr(X* p=0) throw();
-        auto_ptr(auto_ptr&) throw();
-        template<class Y> auto_ptr(auto_ptr<Y> const&) throw();
-        auto_ptr& operator=(auto_ptr&) throw();
-        template<class Y> auto_ptr& operator=(auto_ptr<Y>) throw();
-        ~auto_ptr() throw();
-
-        // 20.4.5.2 members:
-        X& operator*() const throw();
-        X* operator->() const throw();
-        X* get() const throw();
-        X* release() throw();
-        void reset(X* p=0) throw();
-
-    private:
-        template<class U>
-        auto_ptr(U& rhs, typename
-unspecified_error_on_const_auto_ptr<U>::type = 0);
-    };
-}
-
- -

-One compliant technique to implement the unspecified_error_on_const_auto_ptr -helper class is using additional private auto_ptr member class template like -the following: -

-
template<typename T> struct unspecified_error_on_const_auto_ptr;
-
-template<typename T>
-struct unspecified_error_on_const_auto_ptr<auto_ptr<T> const>
-{ typedef typename auto_ptr<T>::const_auto_ptr_is_not_allowed type; };
-
- -

-There are other techniques to implement this helper class that might work -better for different compliers (i.e. better diagnostics) and therefore I -suggest defining its semantic behavior without mandating any specific -implementation. IMO, and I didn't found any compiler that thinks otherwise, -14.7.1/5 doesn't theoretically defeat the suggested technique but I suggest -verifying this with core language experts. -

- -

Further changes in standard text:

-

Remove section 20.4.5.3

- -

Change 20.4.5/2 to read something like: -Initializing auto_ptr<X> from const auto_ptr<Y> will result with unspecified -ill-formed declaration that will require unspecified diagnostic.

- -

Change 20.4.5.1/4,5,6 to read:

- -
template<class Y> auto_ptr(auto_ptr<Y> const& a) throw();
-

4 Requires: Y* can be implicitly converted to X*.

-

5 Effects: Calls const_cast<auto_ptr<Y>&>(a).release().

-

6 Postconditions: *this holds the pointer returned from a.release().

- -

Change 20.4.5.1/10

-
template<class Y> auto_ptr& operator=(auto_ptr<Y> a) throw();
-
-

-10 Requires: Y* can be implicitly converted to X*. The expression delete -get() is well formed. -

- -

LWG TC DR #127 is obsolete.

- -

-Notice that the copy constructor and copy assignment operator should remain -as before and accept non-const auto_ptr& since they have effect on the form -of the implicitly declared copy constructor and copy assignment operator of -class that contains auto_ptr as member per 12.8/5,10: -

-
struct X {
-    // implicit X(X&)
-    // implicit X& operator=(X&)
-    auto_ptr<D> aptr_;
-};
-
- -

-In most cases this indicates about sloppy programming but preserves the -current auto_ptr behavior. -

- -

-Dave Abrahams encouraged me to suggest fallback implementation in case that -my suggestion that involves removing of auto_ptr_ref will not be accepted. -In this case removing the obsolete conversion member to auto_ptr<Y> and -20.4.5.3/4,5 is still required in order to eliminate ambiguity in legal -cases. The two constructors that I suggested will co exist with the current -members but will make auto_ptr_ref obsolete in initialization contexts. -auto_ptr_ref will be effective in assignment contexts as suggested in DR -#127 and I can't see any serious exception safety issues in those cases -(although it's possible to synthesize such). auto_ptr_ref<X> semantics will -have to be revised to say that it strictly holds pointer of type X and not -reference to an auto_ptr for the favor of cases in which auto_ptr_ref<Y> is -constructed from auto_ptr<X> in which X is different from Y (i.e. assignment -from r-value derived to base). -

- -

Proposed resolution:

-

[Redmond: punt for the moment. We haven't decided yet whether we - want to fix auto_ptr for C++-0x, or remove it and replace it with - move_ptr and unique_ptr.]

-
-

466. basic_string ctor should prevent null pointer error

Section: 21.3.1 [lib.string.cons]  Status: Open  Submitter: Daniel Frey  Date: 10 Jun 2004

-

-Today, my colleagues and me wasted a lot of time. After some time, I -found the problem. It could be reduced to the following short example: -

- -
  #include <string>
-  int main() { std::string( 0 ); }
-
- -

The problem is that the tested compilers (GCC 2.95.2, GCC 3.3.1 and -Comeau online) compile the above without errors or warnings! The -programs (at least for the GCC) resulted in a SEGV.

- -

I know that the standard explicitly states that the ctor of string -requires a char* which is not zero. STLs could easily detect the above -case with a private ctor for basic_string which takes a single 'int' -argument. This would catch the above code at compile time and would not -ambiguate any other legal ctors.

- -

Proposed resolution:

-

[Redmond: No great enthusiasm for doing this. If we do, - however, we want to do it for all places that take charT* - pointers, not just the single-argument constructor. The other - question is whether we want to catch this at compile time (in which - case we catch the error of a literal 0, but not an expression whose - value is a null pointer), at run time, or both.]

- -
-

470. accessing containers from their elements' special functions

Section: 23 [lib.containers]  Status: Open  Submitter: Martin Sebor  Date: 28 Jun 2004

- -

-The standard doesn't prohibit the destructors (or any other special -functions) of containers' elements invoked from a member function -of the container from "recursively" calling the same (or any other) -member function on the same container object, potentially while the -container is in an intermediate state, or even changing the state -of the container object while it is being modified. This may result -in some surprising (i.e., undefined) behavior. -

- -

Read email thread starting with c++std-lib-13637 for more.

- -

Proposed resolution:

- -

Add to Container Requirements the following new paragraph:

- -
    Unless otherwise specified, the behavior of a program that
-    invokes a container member function f from a member function
-    g of the container's value_type on a container object c that
-    called g from its mutating member function h, is undefined.
-    I.e., if v is an element of c, directly or indirectly calling
-    c.h() from v.g() called from c.f(), is undefined.
-
- -

[Redmond: This is a real issue, but it's probably a clause 17 - issue, not clause 23. We get the same issue, for example, if we - try to destroy a stream from one of the stream's callback functions.]

- - -
-

471. result of what() implementation-defined

Section: 18.6.1 [lib.exception]  Status: Open  Submitter: Martin Sebor  Date: 28 Jun 2004

- -

[lib.exception] specifies the following:

-
    exception (const exception&) throw();
-    exception& operator= (const exception&) throw();
-
-    -4- Effects: Copies an exception object.
-    -5- Notes: The effects of calling what() after assignment
-        are implementation-defined.
-
- -

-First, does the Note only apply to the assignment operator? If so, -what are the effects of calling what() on a copy of an object? Is -the returned pointer supposed to point to an identical copy of -the NTBS returned by what() called on the original object or not? -

- -

-Second, is this Note intended to extend to all the derived classes -in section 19? I.e., does the standard provide any guarantee for -the effects of what() called on a copy of any of the derived class -described in section 19? -

- -

-Finally, if the answer to the first question is no, I believe it -constitutes a defect since throwing an exception object typically -implies invoking the copy ctor on the object. If the answer is yes, -then I believe the standard ought to be clarified to spell out -exactly what the effects are on the copy (i.e., after the copy -ctor was called). -

- -

[Redmond: Yes, this is fuzzy. The issue of derived classes is - fuzzy too.]

- -

Proposed resolution:

-
-

473. underspecified ctype calls

Section: 22.2.1.1 [lib.locale.ctype]  Status: Open  Submitter: Martin Sebor  Date: 1 Jul 2004

-

-Most ctype member functions come in two forms: one that operates -on a single character at a time and another form that operates -on a range of characters. Both forms are typically described by -a single Effects and/or Returns clause. -

-

-The Returns clause of each of the single-character non-virtual forms -suggests that the function calls the corresponding single character -virtual function, and that the array form calls the corresponding -virtual array form. Neither of the two forms of each virtual member -function is required to be implemented in terms of the other. -

-

-There are three problems: -

-

-1. One is that while the standard does suggest that each non-virtual -member function calls the corresponding form of the virtual function, -it doesn't actually explicitly require it. -

-

-Implementations that cache results from some of the virtual member -functions for some or all values of their arguments might want to -call the array form from the non-array form the first time to fill -the cache and avoid any or most subsequent virtual calls. Programs -that rely on each form of the virtual function being called from -the corresponding non-virtual function will see unexpected behavior -when using such implementations. -

-

-2. The second problem is that either form of each of the virtual -functions can be overridden by a user-defined function in a derived -class to return a value that is different from the one produced by -the virtual function of the alternate form that has not been -overriden. -

-

-Thus, it might be possible for, say, ctype::widen(c) to return one -value, while for ctype::widen(&c, &c + 1, &wc) to set -wc to another value. This is almost certainly not intended. Both -forms of every function should be required to return the same result -for the same character, otherwise the same program using an -implementation that calls one form of the functions will behave -differently than when using another implementation that calls the -other form of the function "under the hood." -

-

-3. The last problem is that the standard text fails to specify whether -one form of any of the virtual functions is permitted to be implemented -in terms of the other form or not, and if so, whether it is required -or permitted to call the overridden virtual function or not. -

-

-Thus, a program that overrides one of the virtual functions so that -it calls the other form which then calls the base member might end -up in an infinite loop if the called form of the base implementation -of the function in turn calls the other form. -

-

Proposed resolution:

- -

-Lillehammer: Part of this isn't a real problem. We already talk about -caching. 22.1.1/6 But part is a real problem. ctype virtuals may call -each other, so users don't know which ones to override to avoid avoid -infinite loops.

- -

This is a problem for all facet virtuals, not just ctype virtuals, -so we probably want a blanket statement in clause 22 for all -facets. The LWG is leaning toward a blanket prohibition, that a -facet's virtuals may never call each other. We might want to do that -in clause 27 too, for that matter. A review is necessary. Bill will -provide wording.

-
-

475. May the function object passed to for_each modify the elements of the iterated sequence?

Section: 25.1.1 [lib.alg.foreach]  Status: Ready  Submitter: Stephan T. Lavavej, Jaakko Jarvi  Date: 9 Jul 2004

-

-It is not clear whether the function object passed to for_each is allowed to -modify the elements of the sequence being iterated over. -

- -

-for_each is classified without explanation in [lib.alg.nonmodifying], "25.1 -Non-modifying sequence operations". 'Non-modifying sequence operation' is -never defined. -

- -

-25(5) says: "If an algorithm's Effects section says that a value pointed to -by any iterator passed as an argument is modified, then that algorithm has -an additional type requirement: The type of that argument shall satisfy the -requirements of a mutable iterator (24.1)." -

- -

for_each's Effects section does not mention whether arguments can be -modified:

- -
- "Effects: Applies f to the result of dereferencing every iterator in the - range [first, last), starting from first and proceeding to last - 1." -
- -

-Every other algorithm in [lib.alg.nonmodifying] is "really" non-modifying in -the sense that neither the algorithms themselves nor the function objects -passed to the algorithms may modify the sequences or elements in any way. -This DR affects only for_each. -

- -

-We suspect that for_each's classification in "non-modifying sequence -operations" means that the algorithm itself does not inherently modify the -sequence or the elements in the sequence, but that the function object -passed to it may modify the elements it operates on. -

- -

-The original STL document by Stepanov and Lee explicitly prohibited the -function object from modifying its argument. -The "obvious" implementation of for_each found in several standard library -implementations, however, does not impose this restriction. -As a result, we suspect that the use of for_each with function objects that modify -their arguments is wide-spread. -If the restriction was reinstated, all such code would become non-conforming. -Further, none of the other algorithms in the Standard -could serve the purpose of for_each (transform does not guarantee the order in -which its function object is called). -

- -

-We suggest that the standard be clarified to explicitly allow the function object -passed to for_each modify its argument.

- -

Proposed resolution:

-

Add a nonnormative note to the Effects in 25.1.1 [lib.alg.foreach]: If -the type of 'first' satisfies the requirements of a mutable iterator, -'f' may apply nonconstant functions through the dereferenced iterators -passed to it. -

- -

Rationale:

-

The LWG believes that nothing in the standard prohibits function - objects that modify the sequence elements. The problem is that - for_each is in a secion entitled "nonmutating algorithms", and the - title may be confusing. A nonnormative note should clarify that.

-
-

478. Should forward iterator requirements table have a line for r->m?

Section: 24.1.3 [lib.forward.iterators]  Status: Ready  Submitter: Dave Abrahams  Date: 11 Jul 2004

-

-The Forward Iterator requirements table contains the following: -

-
 expression  return type         operational  precondition
-                                  semantics
-  ==========  ==================  ===========  ==========================
-  a->m        U& if X is mutable, (*a).m       pre: (*a).m is well-defined.
-              otherwise const U&
-
-  r->m        U&                  (*r).m       pre: (*r).m is well-defined.
-
- -

The second line may be unnecessary. Paragraph 11 of - [lib.iterator.requirements] says: -

- -
- In the following sections, a and b denote values of type const X, n - denotes a value of the difference type Distance, u, tmp, and m - denote identifiers, r denotes a value of X&, t denotes a value of - value type T, o denotes a value of some type that is writable to - the output iterator. -
- -

-Because operators can be overloaded on an iterator's const-ness, the -current requirements allow iterators to make many of the operations -specified using the identifiers a and b invalid for non-const -iterators.

- -

Related issue: 477

-

Proposed resolution:

- -

Remove the "r->m" line from the Forward Iterator requirements -table. Change

-
- "const X" -
- -

to

- -
- "X or const X" -
- -

in paragraph 11 of [lib.iterator.requirements].

- - -

Rationale:

-

-This is a defect because it constrains an lvalue to returning a modifiable lvalue. -

-
-

479. Container requirements and placement new

Section: 23.1 [lib.container.requirements]  Status: Open  Submitter: Herb Sutter  Date: 1 Aug 2004

-

Nothing in the standard appears to make this program ill-formed:

- -
  struct C {
-    void* operator new( size_t s ) { return ::operator new( s ); }
-    // NOTE: this hides in-place and nothrow new
-  };
-
-  int main() {
-    vector<C> v;
-    v.push_back( C() );
-  }
-
- -

Is that intentional? We should clarify whether or not we intended - to require containers to support types that define their own special - versions of operator new.

- -

[ -Lillehammer: A container will definitely never use this overridden -operator new, but whether it will fail to compile is unclear from the -standard. Are containers supposed to use qualified or unqualified -placement new? 20.4.1.1 is somewhat relevant, but the standard -doesn't make it completely clear whether containers have to use -Allocator::construct(). If containers don't use it, the details of how -containers use placement new are unspecified. That is the real bug, -but it needs to be fixed as part of the allocator overhaul. Weak -support that the eventual solution should make this code well formed. -]

- -

Proposed resolution:

-
-

482. Swapping pairs

Section: 20.2.2 [lib.pairs], 25.2.2 [lib.alg.swap]  Status: Open  Submitter: Andrew Koenig  Date: 14 Sep 2004

-

(Based on recent comp.std.c++ discussion)

- -

Pair (and tuple) should specialize std::swap to work in terms of -std::swap on their components. For example, there's no obvious reason -why swapping two objects of type pair<vector<int>, -list<double> > should not take O(1).

-

Proposed resolution:

- - -

[Lillehammer: We agree it should be swappable. Howard will - provide wording.]

- -
-

484. Convertible to T

Section: 24.1.1 [lib.input.iterators]  Status: Open  Submitter: Chris  Date: 16 Sep 2004

-

From comp.std.c++:

- -

-I note that given an input iterator a for type T, -then *a only has to be "convertable to T", not actually of type T. -

- -

Firstly, I can't seem to find an exact definition of "convertable to T". -While I assume it is the obvious definition (an implicit conversion), I -can't find an exact definition. Is there one?

- -

Slightly more worryingly, there doesn't seem to be any restriction on -the this type, other than it is "convertable to T". Consider two input -iterators a and b. I would personally assume that most people would -expect *a==*b would perform T(*a)==T(*b), however it doesn't seem that -the standard requires that, and that whatever type *a is (call it U) -could have == defined on it with totally different symantics and still -be a valid inputer iterator.

- -

Is this a correct reading? When using input iterators should I write -T(*a) all over the place to be sure that the object i'm using is the -class I expect?

- -

This is especially a nuisance for operations that are defined to be - "convertible to bool". (This is probably allowed so that - implementations could return say an int and avoid an unnessary - conversion. However all implementations I have seen simply return a - bool anyway. Typical implemtations of STL algorithms just write - things like while(a!=b && *a!=0). But strictly - speaking, there are lots of types that are convertible to T but - that also overload the appropriate operators so this doesn't behave - as expected.

- -

If we want to make code like this legal (which most people seem to - expect), then we'll need to tighten up what we mean by "convertible - to T".

- -

Proposed resolution:

-

[Lillehammer: The first part is NAD, since "convertible" is - well-defined in core. The second part is basically about pathological - overloads. It's a minor problem but a real one. So leave open for - now, hope we solve it as part of iterator redesign.]

-
-

485. output iterator insufficently constrained

Section: 24.1.2 [lib.output.iterators]  Status: Open  Submitter: Chris  Date: 13 Oct 2004

-

-The note on 24.1.2 Output iterators insufficently limits what can be -performed on output iterators. While it requires that each iterator is -progressed through only once and that each iterator is written to only -once, it does not require the following things:

- -

Note: Here it is assumed that x is an output iterator of type X which -has not yet been assigned to.

- -

a) That each value of the output iterator is written to: -The standard allows: -++x; ++x; ++x; -

- -

-b) That assignments to the output iterator are made in order -X a(x); ++a; *a=1; *x=2; is allowed -

- -

-c) Chains of output iterators cannot be constructed: -X a(x); ++a; X b(a); ++b; X c(b); ++c; is allowed, and under the current -wording (I believe) x,a,b,c could be written to in any order. -

- -

I do not believe this was the intension of the standard?

-

Proposed resolution:

-

[Lillehammer: Real issue. There are lots of constraints we - intended but didn't specify. Should be solved as part of iterator - redesign.]

-
-

488. rotate throws away useful information

Section: 25.2.10 [lib.alg.rotate]  Status: Open  Submitter: Howard Hinnant  Date: 22 Nov 2004

-

-rotate takes 3 iterators: first, middle and last which point into a -sequence, and rearranges the sequence such that the subrange [middle, -last) is now at the beginning of the sequence and the subrange [first, -middle) follows. The return type is void. -

- -

-In many use cases of rotate, the client needs to know where the -subrange [first, middle) starts after the rotate is performed. This -might look like: -

-
  rotate(first, middle, last);
-  Iterator i = advance(first, distance(middle, last));
-
- -

-Unless the iterators are random access, the computation to find the -start of the subrange [first, middle) has linear complexity. However, -it is not difficult for rotate to return this information with -negligible additional computation expense. So the client could code: -

-
  Iterator i = rotate(first, middle, last);
-
- -

-and the resulting program becomes significantly more efficient. -

- -

-While the backwards compatibility hit with this change is not zero, it -is very small (similar to that of lwg 130), and there is -a significant benefit to the change. -

- -

Proposed resolution:

-

In 25p2, change:

-
  template<class ForwardIterator>
-    void rotate(ForwardIterator first, ForwardIterator middle,
-                ForwardIterator last);
-
- -

to:

- -
  template<class ForwardIterator>
-    ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
-                           ForwardIterator last);
-
- -

In 25.2.10, change:

- -
  template<class ForwardIterator>
-    void rotate(ForwardIterator first, ForwardIterator middle,
-                ForwardIterator last);
-
- -

to:

- -
  template<class ForwardIterator>
-    ForwardIterator rotate(ForwardIterator first, ForwardIterator middle,
-                           ForwardIterator last);
-
- -

In 25.2.10 insert a new paragraph after p1:

- -
-

Returns: first + (last - middle).

-
- -

[ -The LWG agrees with this idea, but has one quibble: we want to make -sure not to give the impression that the function "advance" is -actually called, just that the nth iterator is returned. (Calling -advance is observable behavior, since users can specialize it for -their own iterators.) Howard will provide wording. -]

- -

[Howard provided wording for mid-meeting-mailing Jun. 2005.]

- -
-

492. Invalid iterator arithmetic expressions

Section: 23 [lib.containers], 24 [lib.iterators], 25 [lib.algorithms]  Status: Open  Submitter: Thomas Mang  Date: 12 Dec 2004

-

Various clauses other than clause 25 make use of iterator arithmetic not -supported by the iterator category in question. -Algorithms in clause 25 are exceptional because of 25 [lib.algorithms], -paragraph 9, but this paragraph does not provide semantics to the -expression "iterator - n", where n denotes a value of a distance type -between iterators.

- -

1) Examples of current wording:

- -

Current wording outside clause 25:

- -

-23.2.2.4 [lib.list.ops], paragraphs 19-21: "first + 1", "(i - 1)", -"(last - first)" -23.3.1.1 [lib.map.cons], paragraph 4: "last - first" -23.3.2.1 [lib.multimap.cons], paragraph 4: "last - first" -23.3.3.1 [lib.set.cons], paragraph 4: "last - first" -23.3.4.1 [lib.multiset.cons], paragraph 4: "last - first" -24.4.1 [lib.reverse.iterators], paragraph 1: "(i - 1)" -

- -

-[Important note: The list is not complete, just an illustration. The -same issue might well apply to other paragraphs not listed here.]

- -

None of these expressions is valid for the corresponding iterator -category.

- -

Current wording in clause 25:

- -

-25.1.1 [lib.alg.foreach], paragraph 1: "last - 1" -25.1.3 [lib.alg.find.end], paragraph 2: "[first1, last1 - -(last2-first2))" -25.2.8 [lib.alg.unique], paragraph 1: "(i - 1)" -25.2.8 [lib.alg.unique], paragraph 5: "(i - 1)" -

- -

-However, current wording of 25 [lib.algorithms], paragraph 9 covers -neither of these four cases:

- -

Current wording of 25 [lib.algorithms], paragraph 9:

- -

-"In the description of the algorithms operator + and - are used for some -of the iterator categories for which they do not have to be defined. In -these cases the semantics of a+n is the same as that of

-
{X tmp = a;
-advance(tmp, n);
-return tmp;
-}
-
-

and that of b-a is the same as of return distance(a, b)"

- -

-This paragrpah does not take the expression "iterator - n" into account, -where n denotes a value of a distance type between two iterators [Note: -According to current wording, the expression "iterator - n" would be -resolved as equivalent to "return distance(n, iterator)"]. Even if the -expression "iterator - n" were to be reinterpreted as equivalent to -"iterator + -n" [Note: This would imply that "a" and "b" were -interpreted implicitly as values of iterator types, and "n" as value of -a distance type], then 24.3.4/2 interfers because it says: "Requires: n -may be negative only for random access and bidirectional iterators.", -and none of the paragraphs quoted above requires the iterators on which -the algorithms operate to be of random access or bidirectional category. -

- -

2) Description of intended behavior:

- -

-For the rest of this Defect Report, it is assumed that the expression -"iterator1 + n" and "iterator1 - iterator2" has the semantics as -described in current 25 [lib.algorithms], paragraph 9, but applying to -all clauses. The expression "iterator1 - n" is equivalent to an -result-iterator for which the expression "result-iterator + n" yields an -iterator denoting the same position as iterator1 does. The terms -"iterator1", "iterator2" and "result-iterator" shall denote the value of -an iterator type, and the term "n" shall denote a value of a distance -type between two iterators.

- -

-All implementations known to the author of this Defect Report comply -with these assumptions. -No impact on current code is expected.

- -

3) Proposed fixes:

- - -

Change 25 [lib.algorithms], paragraph 9 to:

- -

-"In the description of the algorithms operator + and - are used for some -of the iterator categories for which they do not have to be defined. In -this paragraph, a and b denote values of an iterator type, and n denotes -a value of a distance type between two iterators. In these cases the -semantics of a+n is the same as that of

-
{X tmp = a;
-advance(tmp, n);
-return tmp;
-}
-
-

,the semantics of a-n denotes the value of an iterator i for which the -following condition holds: -advance(i, n) == a, -and that of b-a is the same as of -return distance(a, b)". -

- -

Comments to the new wording:

- -

-a) The wording " In this paragraph, a and b denote values of an iterator -type, and n denotes a value of a distance type between two iterators." -was added so the expressions "b-a" and "a-n" are distinguished regarding -the types of the values on which they operate. -b) The wording ",the semantics of a-n denotes the value of an iterator i -for which the following condition holds: advance(i, n) == a" was added -to cover the expression 'iterator - n'. The wording "advance(i, n) == a" -was used to avoid a dependency on the semantics of a+n, as the wording -"i + n == a" would have implied. However, such a dependency might well -be deserved. -c) DR 225 is not considered in the new wording. -

- -

-Proposed fixes regarding invalid iterator arithmetic expressions outside -clause 25:

- -

-Either -a) Move modified 25 [lib.algorithms], paragraph 9 (as proposed above) -before any current invalid iterator arithmetic expression. In that case, -the first sentence of 25 [lib.algorithms], paragraph 9, need also to be -modified and could read: "For the rest of this International Standard, -...." / "In the description of the following clauses including this -...." / "In the description of the text below ..." etc. - anyways -substituting the wording "algorithms", which is a straight reference to -clause 25. -In that case, 25 [lib.algorithms] paragraph 9 will certainly become -obsolete. -Alternatively, -b) Add an appropiate paragraph similar to resolved 25 [lib.algorithms], -paragraph 9, to the beginning of each clause containing invalid iterator -arithmetic expressions. -Alternatively, -c) Fix each paragraph (both current wording and possible resolutions of -DRs) containing invalid iterator arithmetic expressions separately. -

- -

5) References to other DRs:

- -

-See DR 225. -See DR 237. The resolution could then also read "Linear in last - -first". -

-

Proposed resolution:

- -

[Lillehammer: Minor issue, but real. We have a blanket statement -about this in 25/11. But (a) it should be in 17, not 25; and (b) it's -not quite broad enough, because there are some arithmetic expressions -it doesn't cover. Bill will provide wording.]

- -
-

495. Clause 22 template parameter requirements

Section: 22 [lib.localization]  Status: Ready  Submitter: Beman Dawes  Date: 10 Jan 2005

-

It appears that there are no requirements specified for many of the -template parameters in clause 22. It looks like this issue has never -come up, except perhaps for Facet.

- -

Clause 22 isn't even listed in 17.3.2.1 [lib.type.descriptions], -either, which is the wording that allows requirements on template -parameters to be identified by name.

- -

So one issue is that 17.3.2.1 [lib.type.descriptions] Should be -changed to cover clause 22. A better change, which will cover us in -the future, would be to say that it applies to all the library -clauses. Then if a template gets added to any library clause we are -covered.

- -

charT, InputIterator, and other names with requirements defined -elsewhere are fine, assuming the 17.3.2.1 [lib.type.descriptions] fix. -But there are a few template arguments names which I don't think have -requirements given elsewhere:

- -
    -
  • internT and externT. The fix is to add wording saying that internT -and externT must meet the same requirements as template arguments -named charT.
  • - -
  • stateT. I'm not sure about this one. There already is some wording, -but it seems a bit vague.
  • - -
  • Intl. [lib.locale.moneypunct.byname] The fix for this one is to -rename "Intl" to "International". The name is important because other -text identifies the requirements for the name International but not -for Intl.
  • -
-

Proposed resolution:

-

Change 17.3.2.1 [lib.type.descriptions], paragraph 1, from:

-
-The Requirements subclauses may describe names that are used to -specify constraints on template arguments.153) These names are used in -clauses 20, 23, 25, and 26 to describe the types that may be supplied -as arguments by a C++ program when instantiating template components -from the library. -
-

to:

-
-The Requirements subclauses may describe names that are used to -specify constraints on template arguments.153) These names are used in -library clauses to describe the types that may be supplied as -arguments by a C++ program when instantiating template components from -the library. -
- -

In the front matter of class 22, locales, add:

-
-Template parameter types internT and externT shall meet the -requirements of charT (described in 21 [lib.strings]). -
-

Rationale:

-

- Again, a blanket clause isn't blanket enough. Also, we've got a - couple of names that we don't have blanket requirement statements - for. The only issue is what to do about stateT. This wording is - thin, but probably adequate.

-
-

497. meaning of numeric_limits::traps for floating point types

Section: 18.2.1.2 [lib.numeric.limits.members]  Status: Ready  Submitter: Martin Sebor  Date: 2 Mar 2005

- -

18.2.1.2, p59 says this much about the traps member of numeric_limits:

- -
-

static const bool traps;
--59- true if trapping is implemented for the type.204) -
-Footnote 204: Required by LIA-1. -

-
- -

It's not clear what is meant by "is implemented" here.

- -

-In the context of floating point numbers it seems reasonable to expect -to be able to use traps to determine whether a program can "safely" use -infinity(), quiet_NaN(), etc., in arithmetic expressions, that is -without causing a trap (i.e., on UNIX without having to worry about -getting a signal). When traps is true, I would expect any of the -operations in section 7 of IEEE 754 to cause a trap (and my program -to get a SIGFPE). So, for example, on Alpha, I would expect traps -to be true by default (unless I compiled my program with the -ieee -option), false by default on most other popular architectures, -including IA64, MIPS, PA-RISC, PPC, SPARC, and x86 which require -traps to be explicitly enabled by the program. -

- -

-Another possible interpretation of p59 is that traps should be true -on any implementation that supports traps regardless of whether they -are enabled by default or not. I don't think such an interpretation -makes the traps member very useful, even though that is how traps is -implemented on several platforms. It is also the only way to implement -traps on platforms that allow programs to enable and disable trapping -at runtime. -

-

Proposed resolution:

-

Change p59 to read:

-
True if, at program startup, there exists a value of the type that - would cause an arithmetic operation using that value to trap.
-

Rationale:

-

- Real issue, since trapping can be turned on and off. Unclear what a - static query can say about a dynamic issue. The real advice we should - give users is to use cfenv for these sorts of queries. But this new - proposed resolution is at least consistent and slightly better than - nothing.

-
-

498. Requirements for partition() and stable_partition() too strong

Section: 25.2.12 [lib.alg.partitions]  Status: Open  Submitter: Sean Parent, Joe Gottman  Date: 4 May 2005

-

-Problem: -The iterator requirements for partition() and stable_partition() [25.2.12] -are listed as BidirectionalIterator, however, there are efficient algorithms -for these functions that only require ForwardIterator that have been known -since before the standard existed. The SGI implementation includes these (see -http://www.sgi.com/tech/stl/partition.html -and -http://www.sgi.com/tech/stl/stable_partition.html). -

-

Proposed resolution:

-

-Change 25.2.12 from

-
template<class BidirectionalIterator, class Predicate> 
-BidirectionalIterator partition(BidirectionalIterato r first, 
-                                BidirectionalIterator last, 
-                                Predicate pred); 
-
-

to

-
template<class ForwardIterator, class Predicate> 
-ForwardIterator partition(ForwardIterator first, 
-                          ForwardIterator last, 
-                          Predicate pred); 
-
-

Change the complexity from

- -

-At most (last - first)/2 swaps are done. Exactly (last - first) -applications of the predicate are done. -

- -

to

- -

-If ForwardIterator is a bidirectional_iterator, at most (last - first)/2 -swaps are done; otherwise at most (last - first) swaps are done. Exactly -(last - first) applications of the predicate are done. -

- -

Rationale:

-Partition is a "foundation" algorithm useful in many contexts (like sorting -as just one example) - my motivation for extending it to include forward -iterators is slist - without this extension you can't partition an slist -(without writing your own partition). Holes like this in the standard -library weaken the argument for generic programming (ideally I'd be able -to provide a library that would refine std::partition() to other concepts -without fear of conflicting with other libraries doing the same - but -that is a digression). I consider the fact that partition isn't defined -to work for ForwardIterator a minor embarrassment. - -

[Mont Tremblant: Moved to Open, request motivation and use cases -by next meeting. Sean provided further rationale by post-meeting -mailing.]

- -
-

499. Std. doesn't seem to require stable_sort() to be stable!

Section: 25.3.1.2 [lib.stable.sort]  Status: New  Submitter: Prateek Karandikar  Date: 12 Apr 2005

-
-

-17.3.1.1 Summary

- -

-1 The Summary provides a synopsis of the category, and introduces the -first-level subclauses. Each subclause also provides a summary, listing -the headers specified in the subclause and the library entities -provided in each header. -

-

-2 Paragraphs labelled "Note(s):" or "Example(s):" are informative, -other paragraphs are normative. -

-
- -

So this means that a "Notes" paragraph wouldn't be normative.

- -
-

-25.3.1.2 stable_sort -

-
template<class RandomAccessIterator> 
-void stable_sort(RandomAccessIterat or first, RandomAccessIterator last); 
-
-template<class RandomAccessIterator, class Compare> 
-void stable_sort(RandomAccessIterat or first, RandomAccessIterator last, Compare comp);
-
-

-1 Effects: Sorts the elements in the range [first, last). -

-

-2 Complexity: It does at most N(log N)^2 (where N == last - first) -comparisons; if enough extra memory is available, it is N log N. -

-

-3 Notes: Stable: the relative order of the equivalent elements is -preserved. -

-
- -

-The Notes para is informative, and nowhere else is stability mentioned above. -

- -

-Also, I just searched for the word "stable" in my copy of the Standard. -and the phrase "Notes: Stable: the relative order of the elements..." -is repeated several times in the Standard library clauses for -describing various functions. How is it that stability is talked about -in the informative paragraph? Or am I missing something obvious? -

-

Proposed resolution:

-

-

-
-

501. Proposal: strengthen guarantees of lib.comparisons

Section: 20.3.3 [lib.comparisons]  Status: New  Submitter: Me <anti_spam_email2003@yahoo.com>  Date: 7 Jun 2005

-
-"For templates greater, less, greater_equal, and less_equal, -the specializations for any pointer type yield a total order, even if -the built-in operators <, >, <=, >= do not." -
- -

-The standard should do much better than guarantee that these provide a -total order, it should guarantee that it can be used to test if memory -overlaps, i.e. write a portable memmove. You can imagine a platform -where the built-in operators use a uint32_t comparison (this tests for -overlap on this platform) but the less<T*> functor is allowed to be -defined to use a int32_t comparison. On this platform, if you use -std::less with the intent of making a portable memmove, comparison on -an array that straddles the 0x7FFFFFFF/0x8000000 boundary can give -incorrect results. -

-

Proposed resolution:

-

-Add a footnote to 20.3.3/8 saying: -

- -
-Given a p1 and p2 such that p1 points to N objects of type T and p2 -points to M objects of type T. If [p1,p1+N) does not overlap [p2,p2+M), -less returns the same value when comparing all pointers in [p1,p1+N) to -all pointers in [p2,p2+M). Otherwise, there is a value Q and a value R -such that less returns the same value when comparing all pointers in -[p1,p1+Q) to all pointers in [p2,p2+R) and an opposite value when -comparing all pointers in [p1+Q,p1+N) to all pointers in [p2+R,p2+M). -For the sake of completeness, the null pointer value (4.10) for T is -considered to be an array of 1 object that doesn't overlap with any -non-null pointer to T. less_equal, greater, greater_equal, equal_to, -and not_equal_to give the expected results based on the total ordering -semantics of less. For T of void, treat it as having similar semantics -as T of char i.e. less<cv T*>(a, b) gives the same results as less<cv -void*>(a, b) which gives the same results as less<cv char*>((cv -char*)(cv void*)a, (cv char*)(cv void*)b). -
- -

-I'm also thinking there should be a footnote to 20.3.3/1 saying that if -A and B are similar types (4.4/4), comp<A>(a,b) returns the same value -as comp<B>(a,b) (where comp is less, less_equal, etc.). But this might -be problematic if there is some really funky operator overloading going -on that does different things based on cv (that should be undefined -behavior if somebody does that though). This at least should be -guaranteed for all POD types (especially pointers) that use the -built-in comparison operators. -

- -
-

502. Proposition: Clarification of the interaction between a facet and an iterator

Section: 22.1.1.1.1 [lib.locale.category]  Status: New  Submitter: Christopher Conrade Zseleghovski  Date: 7 Jun 2005

-

-Motivation: -

- -

-This requirement seems obvious to me, it is the essence of code modularity. -I have complained to Mr. Plauger that the Dinkumware library does not -observe this principle but he objected that this behaviour is not covered in -the standard. -

-

Proposed resolution:

-

-Append the following point to 22.1.1.1.1: -

- -

-6. The implementation of a facet of Table 52 parametrized with an -InputIterator/OutputIterator should use that iterator only as character -source/sink respectively. -For a *_get facet, it means that the value received depends only on the -sequence of input characters and not on how they are accessed. -For a *_put facet, it means that the sequence of characters output depends -only on the value to be formatted and not of how the characters are stored. -

-
-

503. more on locales

Section: 22.2 [lib.locale.categories]  Status: New  Submitter: P.J. Plauger  Date: 20 Jun 2005

-

-a) In 22.2.1.1 para. 2 we refer to "the instantiations required in Table -51" to refer to the facet *objects* associated with a locale. And we -almost certainly mean just those associated with the default or "C" -locale. Otherwise, you can't switch to a locale that enforces a different -mapping between narrow and wide characters, or that defines additional -uppercase characters. -

- -

-b) 22.2.1.5 para. 3 (codecvt) has the same issues. -

- -

-c) 22.2.1.5.2 (do_unshift) is even worse. It *forbids* the generation of -a homing sequence for the basic character set, which might very well need -one. -

- -

-d) 22.2.1.5.2 (do_length) likewise dictates that the default mapping -between wide and narrow characters be taken as one-for-one. -

- -

-e) 22.2.2 para. 2 (num_get/put) is both muddled and vacuous, as far as -I can tell. The muddle is, as before, calling Table 51 a list of -instantiations. But the constraint it applies seems to me to cover -*all* defined uses of num_get/put, so why bother to say so? -

- -

-f) 22.2.3.1.2 para. 1(do_decimal_point) says "The required instantiations -return '.' or L'.'.) Presumably this means "as appropriate for the -character type. But given the vague definition of "required" earlier, -this overrules *any* change of decimal point for non "C" locales. -Surely we don't want to do that. -

- -

-g) 22.2.3.1.2 para. 2 (do_thousands_sep) says "The required instantiations -return ',' or L','.) As above, this probably means "as appropriate for the -character type. But this overrules the "C" locale, which requires *no* -character ('\0') for the thousands separator. Even if we agree that we -don't mean to block changes in decimal point or thousands separator, -we should also eliminate this clear incompatibility with C. -

- -

-h) 22.2.3.1.2 para. 2 (do_grouping) says "The required instantiations -return the empty string, indicating no grouping." Same considerations -as for do_decimal_point. -

- -

-i) 22.2.4.1 para. 1 (collate) refers to "instantiations required in Table -51". Same bad jargon. -

- -

-j) 22.2.4.1.2 para. 1 (do_compare) refers to "instantiations required -in Table 51". Same bad jargon. -

- -

-k) 22.2.5 para. 1 (time_get/put) uses the same muddled and vacuous -as num_get/put. -

- -

-l) 22.2.6 para. 2 (money_get/put) uses the same muddled and vacuous -as num_get/put. -

- -

-m) 22.2.6.3.2 (do_pos/neg_format) says "The instantiations required -in Table 51 ... return an object of type pattern initialized to -{symbol, sign, none, value}." This once again *overrides* the "C" -locale, as well as any other locale." -

- -

-3) We constrain the use_facet calls that can be made by num_get/put, -so why don't we do the same for money_get/put? Or for any of the -other facets, for that matter? -

- -

-4) As an almost aside, we spell out when a facet needs to use the ctype -facet, but several also need to use a codecvt facet and we don't say so. -

-

Proposed resolution:

-

-

-
-

504. Integer types in pseudo-random number engine requirements

Section: TR1 5.1.1 [tr.rand.req]  Status: Open  Submitter: Walter Brown  Date: 3 Jul 2005

-

-In [tr.rand.req], Paragraph 2 states that "... s is a value of integral type, -g is an ... object returning values of unsigned integral type ..." -

-

Proposed resolution:

-

-In 5.1.1 [tr.rand.req], Paragraph 2 replace -

- -
-... s is a value of integral type, g is an lvalue of a type other than X that -defines a zero-argument function object returning values of unsigned integral type -unsigned long int, -... -
- -

-In 5.1.1 [tr.rand.seq], Table 16, replace in the line for X(s) -

- -
-creates an engine with the initial internal state -determined by static_cast<unsigned long>(s) -
- -

[ -Mont Tremblant: Both s and g should be unsigned long. -This should refer to the constructor signatures. Jens provided wording post Mont Tremblant. -]

- -

Rationale:

-

-Jens: Just requiring X(unsigned long) still makes it possible -for an evil library writer to also supply a X(int) that does something -unexpected. The wording above requires that X(s) always performs -as if X(unsigned long) would have been called. I believe that is -sufficient and implements our intentions from Mont Tremblant. I -see no additional use in actually requiring a X(unsigned long) -signature. u.seed(s) is covered by its reference to X(s), same -arguments. -

-
-

505. Result_type in random distribution requirements

Section: TR1 5.1.1 [tr.rand.req]  Status: Ready  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Table 17: Random distribution requirements -

-

-Row 1 requires that each random distribution provide a nested type "input_type"; -this type denotes the type of the values that the distribution consumes. -

-

-Inspection of all distributions in [tr.rand.dist] reveals that each distribution -provides a second typedef ("result_type") that denotes the type of the values the -distribution produces when called. -

-

Proposed resolution:

-

-It seems to me that this is also a requirement -for all distributions and should therefore be indicated as such via a new second -row to this table 17: -

- - - - - - - -
X::result_typeT---compile-time
-
-

506. Requirements of Distribution parameter for variate_generator

Section: TR1 5.1.3 [tr.rand.var]  Status: Open  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Paragraph 3 requires that template argument U (which corresponds to template -parameter Engine) satisfy all uniform random number generator requirements. -However, there is no analogous requirement regarding the template argument -that corresponds to template parameter Distribution. We believe there should -be, and that it should require that this template argument satisfy all random -distribution requirements. -

-

Proposed resolution:

-

-Consequence 1: Remove the precondition clauses [tr.rand.var]/16 and /18. -

-

-Consequence 2: Add max() and min() functions to those distributions that -do not already have them. -

- -

[ -Mont Tremblant: Jens reccommends NAD, min/max not needed everywhere. -Marc supports having min and max to satisfy generic programming interface. -]

- -
-

507. Missing requirement for variate_generator::operator()

Section: TR1 5.1.3 [tr.rand.var]  Status: Ready  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Paragraph 11 of [tr.rand.var] equires that the member template -

-
template<class T> result_type operator() (T value);
-
-

-return -

-
distribution()(e, value)
-
-

-However, not all distributions have an operator() with a corresponding signature. -

-

Proposed resolution:

-

-We therefore recommend that we insert the following precondition before paragraph 11: -

-
-Precondition: distribution().operator()(e,value) is well-formed. -
-
-

508. Bad parameters for ranlux64_base_01

Section: TR1 5.1.5 [tr.rand.predef]  Status: Ready  Submitter: Walter Brown  Date: 3 Jul 2005

-

-The fifth of these engines with predefined parameters, ranlux64_base_01, -appears to have an unintentional error for which there is a simple correction. -The two pre-defined subtract_with_carry_01 engines are given as: -

-
typedef subtract_with_carry_01<float,  24, 10, 24> ranlux_base_01;
-typedef subtract_with_carry_01<double, 48, 10, 24> ranlux64_base_01;
-
-

-We demonstrate below that ranlux64_base_01 fails to meet the intent of the -random number generation proposal, but that the simple correction to -

-
typedef subtract_with_carry_01<double, 48,  5, 12> ranlux64_base_01;
-
-

-does meet the intent of defining well-known good parameterizations. -

-

-The ranlux64_base_01 engine as presented fails to meet the intent for -predefined engines, stated in proposal N1398 (section E): -

-

-In order to make good random numbers available to a large number of library -users, this proposal not only defines generic random-number engines, but also -provides a number of predefined well-known good parameterizations for those. -

-

-The predefined ranlux_base_01 engine has been proven [1,2,3] to have a very -long period and so meets this criterion. This property makes it suitable for -use in the excellent discard_block engines defined subsequently. The proof -of long period relies on the fact (proven in [1]) that 2**(w*r) - 2**(w*s) -+ 1 is prime (w, r, and s are template parameters to subtract_with_carry_01, -as defined in [tr.rand.eng.sub1]). -

-

-The ranlux64_base_01 engine as presented in [tr.rand.predef] uses w=48, r=24, s=10. -For these numbers, the combination 2**(w*r)-2**(w*s)+1 is non-prime (though -explicit factorization would be a challenge). In consequence, while it is -certainly possible for some seeding states that this engine would have a very -long period, it is not at all Òwell-knownÓ that this is the case. The intent -in the N1398 proposal involved the base of the ranlux64 engine, which finds heavy -use in the physics community. This is isomorphic to the predefined ranlux_base_01, -but exploits the ability of double variables to hold (at least) 48 bits of mantissa, -to deliver 48 random bits at a time rather than 24. -

-

Proposed resolution:

-

-To achieve this intended behavior, the correct template parameteriztion would be: -

-
typedef subtract_with_carry_01<double, 48, 5, 12> ranlux64_base_01;
-
-

-The sequence of mantissa bits delivered by this is isomorphic (treating each -double as having the bits of two floats) to that delivered by ranlux_base_01. -

-

-References: -

-
    -
  1. F. James, Comput. Phys. Commun. 60(1990) 329
  2. -
  3. G. Marsaglia and A. Zaman, Ann. Appl. Prob 1(1991) 462
  4. -
  5. M. Luscher, Comput. Phys. Commun. 79(1994) 100-110
  6. -
- -
-

509. Uniform_int template parameters

Section: TR1 5.1.7.1 [tr.rand.dist.iunif]  Status: Open  Submitter: Walter Brown  Date: 3 Jul 2005

-

-In [tr.rand.dist.iunif] the uniform_int distribution currently has a single -template parameter, IntType, used as the input_type and as the result_type -of the distribution. We believe there is no reason to conflate these types -in this way. -

-

Proposed resolution:

-

-We recommend that there be a second template parameter to -reflect the distributionÕs input_type, and that the existing first template -parameter continue to reflect (solely) the result_type: -

-
template< class IntType = int, UIntType = unsigned int >
-class uniform_int
-{
-public:
-  // types
-  typedef  UIntType  input_type;
-  typedef  IntType   result_type;
-
-
-

510. Input_type for bernoulli_distribution

Section: TR1 5.1.7.2 [tr.rand.dist.bern]  Status: Open  Submitter: Walter Brown  Date: 3 Jul 2005

-

-In [tr.rand.dist.bern] the distribution currently requires; -

-
typedef  int  input_type;
-
-

Proposed resolution:

-

-We believe this is an unfortunate choice, and recommend instead: -

-
typedef  unsigned int  input_type;
-
-
-

511. Input_type for binomial_distribution

Section: TR1 5.1.7.5 [tr.rand.dist.bin]  Status: Open  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Unlike all other distributions in TR1, this binomial_distribution has an -implementation-defined input_type. We believe this is an unfortunate choice, -because it hinders users from writing portable code. It also hinders the -writing of compliance tests. We recommend instead: -

-
typedef  RealType  input_type;
-
-

-While this choice is somewhat arbitrary (as it was for some of the other -distributions), we make this particular choice because (unlike all other -distributions) otherwise this template would not publish its RealType -argument and so users could not write generic code that accessed this -second template parameter. In this respect, the choice is consistent with -the other distributions in TR1. -

-

-We have two reasons for recommending that a real type be specified instead. -One reason is based specifically on characteristics of binomial distribution -implementations, while the other is based on mathematical characteristics of -probability distribution functions in general. -

-

-Implementations of binomial distributions commonly use Stirling approximations -for values in certain ranges. It is far more natural to use real values to -represent these approximations than it would be to use integral values to do -so. In other ranges, implementations reply on the Bernoulli distribution to -obtain values. While TR1Õs bernoulli_distribution::input_type is specified as -int, we believe this would be better specified as double. -

-

-This brings us to our main point: The notion of a random distribution rests -on the notion of a cumulative distribution function, which in turn mathematically -depends on a continuous dependent variable. Indeed, such a distribution function -would be meaningless if it depended on discrete values such as integersÑand this -remains true even if the distribution function were to take discrete steps. -

-

-Although this note is specifically about binomial_distribution::input_type, -we intend to recommend that all of the random distributionsÕ input_types be -specified as a real type (either a RealType template parameter, or double, -as appropriate). -

-

-Of the nine distributions in TR1, four already have this characteristic -(uniform_real, exponential_distribution, normal_distribution, and -gamma_distribution). We have already argued the case for the binomial the -remaining four distributions. -

-

-In the case of uniform_int, we believe that the calculations to produce an -integer result in a specified range from an integer in a different specified -range is best done using real arithmetic. This is because it involves a -product, one of whose terms is the ratio of the extents of the two ranges. -Without real arithmetic, the results become less uniform: some numbers become -more (or less) probable that they should be. This is, of course, undesireable -behavior in a uniform distribution. -

-

-Finally, we believe that in the case of the bernoulli_distribution (briefly -mentioned earlier), as well as the cases of the geometric_distribution and the -poisson_distribution, it would be far more natural to have a real input_type. -This is because the most natural computation involves the random number -delivered and the distributionÕs parameter p (in the case of bernoulli_distribution, -for example, the computation is a comparison against p), and p is already specified -in each case as having some real type. -

-

Proposed resolution:

-
typedef  RealType  input_type;
-
-
-

512. Seeding subtract_with_carry_01 from a single unsigned long

Section: TR1 5.1.4.4 [tr.rand.eng.sub1]  Status: New  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Paragraph 8 specifies the algorithm by which a subtract_with_carry_01 engine -is to be seeded given a single unsigned long. This algorithm is seriously -flawed in the case where the engine parameter w (also known as word_size) -exceeds 31 [bits]. The key part of the paragraph reads: -

-
-sets x(-r) ... x(-1) to (lcg(1)*2**(-w)) mod 1 -
-

-and so forth. -

-

-Since the specified linear congruential engine, lcg, delivers numbers with -a maximum of 2147483563 (just a shade under 31 bits), then when w is, for -example, 48, each of the x(i) will be less than 2**-17. The consequence -is that roughly the first 400 numbers delivered will be conspicuously -close to either zero or one. -

-

-Unfortunately, this is not an innocuous flaw: One of the predefined engines -in [tr.rand.predef], namely ranlux64_base_01, has w = 48 and would exhibit -this poor behavior, while the original N1378 proposal states that these -pre-defined engines are intended to be of "known good properties." -

-

Proposed resolution:

-

-In 5.1.4.4 [tr.rand.eng.sub1], replace the "effects" clause for -void seed(unsigned long value = 19780503) by -

- -
-Effects: If value == 0, sets value to 19780503. In any -case, with a linear congruential generator lcg(i) having parameters -mlcg = 2147483563, alcg = 40014, -clcg = 0, and lcg(0) = value, -sets carry(-1) and x(-r) … x(-1) -as if executing - -

-linear_congruential<unsigned long, 40014, 0, 2147483563> lcg(value);
-seed(lcg);
-
- -to (lcg(1) · 2-w) mod 1 -… (lcg(r) · 2-w) mod 1, -respectively. If x(-1) == 0, sets carry(-1) = 2-w, -else sets carry(-1) = 0. -
- -

[ -Jens provided revised wording post Mont Tremblant. -]

- -

Rationale:

-

-Jens: I'm using an explicit type here, because fixing the -prose would probably not qualify for the (with issue 504 even -stricter) requirements we have for seed(Gen&). -

-
-

513. Size of state for subtract_with_carry_01

Section: TR1 5.1.4.4 [tr.rand.eng.sub1]  Status: Open  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Paragraph 3 begins: -

-
-The size of the state is r. -
-

-However, this is not quite consistent with the remainder of the paragraph -which specifies a total of nr+1 items in the textual representation of -the state. We recommend the sentence be corrected to match: -

-
-The size of the state is nr+1. -
-

-To give meaning to the coefficient n, it may be also desirable to move -nÕs definition from later in the paragraph. Either of the following -seem reasonable formulations: -

-
-With n=..., the size of the state is nr+1. -
-
-The size of the state is nr+1, where n=... . -
-

-

-

Proposed resolution:

-

[ -Jens: I plead for "NAD" on the grounds that "size of state" is only -used as an argument for big-O complexity notation, thus -constant factors and additions don't count. -]

-
-

514. Size of state for subtract_with_carry

Section: TR1 5.1.4.3 [tr.rand.eng.sub]  Status: Open  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Paragraph 2 begins: -

-
-The size of the state is r. -
-

-However, the next sentence specifies a total of r+1 items in the textual -representation of the state, r specific xÕs as well as a specific carry. -This makes a total of r+1 items that constitute the size of the state, -rather than r. -

-

Proposed resolution:

-

-We recommend the sentence be corrected to match: -

-
- The size of the state is r+1. -
- -

[ -Jens: I plead for "NAD" on the grounds that "size of state" is only -used as an argument for big-O complexity notation, thus -constant factors and additions don't count. -]

- -
-

515. Random number engine traits

Section: TR1 5.1.2 [tr.rand.synopsis]  Status: New  Submitter: Walter Brown  Date: 3 Jul 2005

-

-To accompany the concept of a pseudo-random number engine as defined in Table 17, -we propose and recommend an adjunct template, engine_traits, to be declared in -[tr.rand.synopsis] as: -

-
template< class PSRE >
-class engine_traits;
-
-

-This templateÕs primary purpose would be as an aid to generic programming involving -pseudo-random number engines. Given only the facilities described in tr1, it would -be very difficult to produce any algorithms involving the notion of a generic engine. -The intent of this proposal is to provide, via engine_traits<>, sufficient -descriptive information to allow an algorithm to employ a pseudo-random number engine -without regard to its exact type, i.e., as a template parameter. -

-

-For example, today it is not possible to write an efficient generic function that -requires any specific number of random bits. More specifically, consider a -cryptographic application that internally needs 256 bits of randomness per call: -

-
template< class Eng, class InIter, class OutIter >
-void crypto( Eng& e, InIter in, OutIter out );
-
-

-Without knowning the number of bits of randomness produced per call to a provided -engine, the algorithm has no means of determining how many times to call the engine. -

-

-In a new section [tr.rand.eng.traits], we proposed to define the engine_traits -template as: -

-
template< class PSRE >
-class engine_traits
-{
-  static  std::size_t  bits_of_randomness = 0u;
-  static  std::string  name()  { return "unknown_engine"; }
-  // TODO: other traits here
-};
-
-

-Further, each engine described in [tr.rand.engine] would be accompanied by a -complete specialization of this new engine_traits template. -

-

Proposed resolution:

-

- -

-
-

516. Seeding subtract_with_carry_01 using a generator

Section: TR1 5.1.4.4 [tr.rand.eng.sub1]  Status: New  Submitter: Walter Brown  Date: 3 Jul 2005

-

-Paragraph 6 says: -

-
-... obtained by successive invocations of g, ... -
-

-We recommend instead: -

-
-... obtained by taking successive invocations of g mod 2**32, ... -
-

-as the context seems to require only 32-bit quantities be used here. -

-

Proposed resolution:

-

- -

-
-

517. Should include name in external representation

Section: TR1 5.1.1 [tr.rand.req]  Status: New  Submitter: Walter Brown  Date: 3 Jul 2005

-

-The last two rows of Table 16 deal with the i/o requirements of an engine, -specifying that the textual representation of an engineÕs state, -appropriately formatted, constitute the engineÕs external representation. -

-

-This seems adequate when an engineÕs type is known. However, it seems -inadequate in the context of generic code, where it becomes useful and -perhaps even necessary to determine an engineÕs type via input. -

-

-

-

Proposed resolution:

-

-We therefore recommend that, in each of these two rows of Table 16, the -text "textual representation" be expanded so as to read "engine name -followed by the textual representation." -

-
-

518. Are insert and erase stable for unordered_multiset and unordered_multimap?

Section: TR1 6.3 [tr.hash]  Status: Review  Submitter: Matt Austern  Date: 3 Jul 2005

-

-Issue 371 deals with stability of multiset/multimap under insert and erase -(i.e. do they preserve the relative order in ranges of equal elements). -The same issue applies to unordered_multiset and unordered_multimap. -

-

Proposed resolution:

-

-

-
-

519. Data() undocumented

Section: TR1 6.2.2 [tr.array.array]  Status: Ready  Submitter: Pete Becker  Date: 3 Jul 2005

-

-array<>::data() is present in the class synopsis, but not documented. -

-

Proposed resolution:

-

-Add a new section, after 6.2.2.3: -

-
T*       data()
-const T* data() const;
-
-

-Returns: elems. -

-

-Change 6.2.2.4/2 to: -

-
-In the case where N == 0, begin() == end(). The return value -of data() is unspecified. -
-
-

520. Result_of and pointers to data members

Section: TR1 3.6 [tr.func.bind]  Status: New  Submitter: Pete Becker  Date: 3 Jul 2005

-

-In the original proposal for binders, the return type of bind() when -called with a pointer to member data as it's callable object was -defined to be mem_fn(ptr); when Peter Dimov and I unified the -descriptions of the TR1 function objects we hoisted the descriptions -of return types into the INVOKE pseudo-function and into result_of. -Unfortunately, we left pointer to member data out of result_of, so -bind doesn't have any specified behavior when called with a pointer -to member data. -

-

Proposed resolution:

-

[ -Pete and Peter will provide wording. -]

-
-

521. Garbled requirements for argument_type in reference_wrapper

Section: TR1 2.1.2 [tr.util.refwrp.refwrp]  Status: New  Submitter: Pete Becker  Date: 3 Jul 2005

-

-2.1.2/3, second bullet item currently says that reference_wrapper<T> is -derived from unary_function<T, R> if T is: -

-
-a pointer to member function type with cv-qualifier cv and no arguments; -the type T1 is cv T* and R is the return type of the pointer to member function; -
-

-The type of T1 can't be cv T*, 'cause that's a pointer to a pointer to member -function. It should be a pointer to the class that T is a pointer to member of. -Like this: -

-
-a pointer to a member function R T0::f() cv (where cv represents the member -function's cv-qualifiers); the type T1 is cv T0* -
-

-Similarly, bullet item 2 in 2.1.2/4 should be: -

-
-a pointer to a member function R T0::f(T2) cv (where cv represents the member -function's cv-qualifiers); the type T1 is cv T0* -
-

Proposed resolution:

-
-

522. Tuple doesn't define swap

Section: TR1 6.1 [tr.tuple]  Status: New  Submitter: Andy Koenig  Date: 3 Jul 2005

-

-Tuple doesn't define swap(). It should. -

-

Proposed resolution:

-
-

523. regex case-insensitive character ranges are unimplementable as specified

Section: TR1 7 [tr.re]  Status: New  Submitter: Eric Niebler  Date: 1 Jul 2005

-

-A problem with TR1 regex is currently being discussed on the Boost -developers list. It involves the handling of case-insensitive matching -of character ranges such as [Z-a]. The proper behavior (according to the -ECMAScript standard) is unimplementable given the current specification -of the TR1 regex_traits<> class template. John Maddock, the author of -the TR1 regex proposal, agrees there is a problem. The full discussion -can be found at http://lists.boost.org/boost/2005/06/28850.php (first -message copied below). We don't have any recommendations as yet. -

-

--- Begin original message -- -

-

-The situation of interest is described in the ECMAScript specification -(ECMA-262), section 15.10.2.15: -

-

-"Even if the pattern ignores case, the case of the two ends of a range -is significant in determining which characters belong to the range. -Thus, for example, the pattern /[E-F]/i matches only the letters E, F, -e, and f, while the pattern /[E-f]/i matches all upper and lower-case -ASCII letters as well as the symbols [, \, ], ^, _, and `." -

-

-A more interesting case is what should happen when doing a -case-insentitive match on a range such as [Z-a]. It should match z, Z, -a, A and the symbols [, \, ], ^, _, and `. This is not what happens with -Boost.Regex (it throws an exception from the regex constructor). -

-

-The tough pill to swallow is that, given the specification in TR1, I -don't think there is any effective way to handle this situation. -According to the spec, case-insensitivity is handled with -regex_traits<>::translate_nocase(CharT) -- two characters are equivalent -if they compare equal after both are sent through the translate_nocase -function. But I don't see any way of using this translation function to -make character ranges case-insensitive. Consider the difficulty of -detecting whether "z" is in the range [Z-a]. Applying the transformation -to "z" has no effect (it is essentially std::tolower). And we're not -allowed to apply the transformation to the ends of the range, because as -ECMA-262 says, "the case of the two ends of a range is significant." -

-

-So AFAICT, TR1 regex is just broken, as is Boost.Regex. One possible fix -is to redefine translate_nocase to return a string_type containing all -the characters that should compare equal to the specified character. But -this function is hard to implement for Unicode, and it doesn't play nice -with the existing ctype facet. What a mess! -

-

--- End original message -- -

- -

[ -John Maddock adds: -]

- -

-One small correction, I have since found that ICU's regex package does -implement this correctly, using a similar mechanism to the current -TR1.Regex. -

-

-Given an expression [c1-c2] that is compiled as case insensitive it: -

-

-Enumerates every character in the range c1 to c2 and converts it to it's -case folded equivalent. That case folded character is then used a key to a -table of equivalence classes, and each member of the class is added to the -list of possible matches supported by the character-class. This second step -isn't possible with our current traits class design, but isn't necessary if -the input text is also converted to a case-folded equivalent on the fly. -

-

-ICU applies similar brute force mechanisms to character classes such as -[[:lower:]] and [[:word:]], however these are at least cached, so the impact -is less noticeable in this case. -

-

-Quick and dirty performance comparisons show that expressions such as -"[X-\\x{fff0}]+" are indeed very slow to compile with ICU (about 200 times -slower than a "normal" expression). For an application that uses a lot of -regexes this could have a noticeable performance impact. ICU also has an -advantage in that it knows the range of valid characters codes: code points -outside that range are assumed not to require enumeration, as they can not -be part of any equivalence class. I presume that if we want the TR1.Regex -to work with arbitrarily large character sets enumeration really does become -impractical. -

-

-Finally note that Unicode has: -

-

-Three cases (upper, lower and title). -One to many, and many to one case transformations. -Character that have context sensitive case translations - for example an -uppercase sigma has two different lowercase forms - the form chosen depends -on context(is it end of a word or not), a caseless match for an upper case -sigma should match either of the lower case forms, which is why case folding -is often approximated by tolower(toupper(c)). -

-

-Probably we need some way to enumerate character equivalence classes, -including digraphs (either as a result or an input), and some way to tell -whether the next character pair is a valid digraph in the current locale. -

-

-Hoping this doesn't make this even more complex that it was already, -

- -

Proposed resolution:

-
-

524. regex named character classes and case-insensitivity don't mix

Section: TR1 7 [tr.re]  Status: New  Submitter: Eric Niebler  Date: 1 Jul 2005

-

-This defect is also being discussed on the Boost developers list. The -full discussion can be found here: -http://lists.boost.org/boost/2005/07/29546.php -

-

--- Begin original message -- -

-

-Also, I may have found another issue, closely related to the one under -discussion. It regards case-insensitive matching of named character -classes. The regex_traits<> provides two functions for working with -named char classes: lookup_classname and isctype. To match a char class -such as [[:alpha:]], you pass "alpha" to lookup_classname and get a -bitmask. Later, you pass a char and the bitmask to isctype and get a -bool yes/no answer. -

-

-But how does case-insensitivity work in this scenario? Suppose we're -doing a case-insensitive match on [[:lower:]]. It should behave as if it -were [[:lower:][:upper:]], right? But there doesn't seem to be enough -smarts in the regex_traits interface to do this. -

-

-Imagine I write a traits class which recognizes [[:fubar:]], and the -"fubar" char class happens to be case-sensitive. How is the regex engine -to know that? And how should it do a case-insensitive match of a -character against the [[:fubar:]] char class? John, can you confirm this -is a legitimate problem? -

-

-I see two options: -

-

-1) Add a bool icase parameter to lookup_classname. Then, -lookup_classname( "upper", true ) will know to return lower|upper -instead of just upper. -

-

-2) Add a isctype_nocase function -

-

-I prefer (1) because the extra computation happens at the time the -pattern is compiled rather than when it is executed. -

-

--- End original message -- -

- -

-For what it's worth, John has also expressed his preference for option -(1) above. -

-

Proposed resolution:

-
-

525. type traits definitions not clear

Section: TR1 4.5 [tr.meta.unary]  Status: New  Submitter: Robert Klarer  Date: 11 Jul 2005

-

-It is not completely clear how the primary type traits deal with -cv-qualified types. And several of the secondary type traits -seem to be lacking a definition. -

-

Proposed resolution:

-
-

526. Is it undefined if a function in the standard changes in parameters?

Section: 23.1.1 [lib.sequence.reqmts]  Status: New  Submitter: Chris Jefferson  Date: 14 Sep 2005

-

-Problem: There are a number of places in the C++ standard library where -it is possible to write what appear to be sensible ways of calling -functions, but which can cause problems in some (or all) -implementations, as they cause the values given to the function to be -changed in a way not specified in standard (and therefore not coded to -correctly work). These fall into two similar categories. -

- -

-1) Parameters taken by const reference can be changed during execution -of the function -

- -

-Examples: -

- -

-Given std::vector<int> v: -

-

-v.insert(v.begin(), v[2]); -

-

-v[2] can be changed by moving elements of vector -

- - -

-Given std::list<int> l: -

-

-l.remove(*l.begin()); -

-

-Will delete the first element, and then continue trying to access it. -This is particularily vicious, as it will appear to work in almost all -cases. -

- -

-2) A range is given which changes during the execution of the function: -Similarly, -

- -

-v.insert(v.begin(), v.begin()+4, v.begin()+6); -

- -

-This kind of problem has been partly covered in some cases. For example -std::copy(first, last, result) states that result cannot be in the range -[first, last). However, does this cover the case where result is a -reverse_iterator built from some iterator in the range [first, last)? -Also, std::copy would still break if result was reverse_iterator(last + -1), yet this is not forbidden by the standard -

- -

-Solution: -

- -

-One option would be to try to more carefully limit the requirements of -each function. There are many functions which would have to be checked. -However as has been shown in the std::copy case, this may be difficult. -A simpler, more global option would be to somewhere insert text similar to: -

- -

-If the execution of any function would change either any values passed -by reference or any value in any range passed to a function in a way not -defined in the definition of that function, the result is undefined. -

- -

-Such code would have to at least cover chapters 23 and 25 (the sections -I read through carefully). I can see no harm on applying it to much of -the rest of the standard. -

- -

-Some existing parts of the standard could be improved to fit with this, -for example the requires for 25.2.1 (Copy) could be adjusted to: -

- -

-Requires: For each non-negative integer n < (last - first), assigning to -*(result + n) must not alter any value in the range [first + n, last). -

- -

-However, this may add excessive complication. -

- -

-One other benefit of clearly introducing this text is that it would -allow a number of small optimisations, such as caching values passed -by const reference. -

- -

Proposed resolution:

-

-

-
-

527. tr1::bind has lost its Throws clause

Section: TR1 3.6.3 [tr.func.bind.bind]  Status: New  Submitter: Peter Dimov  Date: 01 Oct 2005

-

-The original bind proposal gives the guarantee that tr1::bind(f, t1, -..., tN) does not throw when the copy constructors of f, t1, ..., tN -don't. -

- -

-This guarantee is not present in the final version of TR1. -

- -

-I'm pretty certain that we never removed it on purpose. Editorial omission? :-) -

-

Proposed resolution:

-

-

-
-

528. TR1: issue 6.19 vs 6.3.4.3/2 (and 6.3.4.5/2)

Section: TR1 6.3.4 [tr.unord.unord]  Status: New  Submitter: Paolo Carlini  Date: 12 Oct 2005

-

-while implementing the resolution of issue 6.19 I'm noticing the -following: according to 6.3.4.3/2 (and 6.3.4.5/2), for unordered_set and -unordered_multiset: -

- -
- "The iterator and const_iterator types are both const types. It is -unspecified whether they are the same type" -
- -

-Now, according to the resolution of 6.19, we have overloads of insert -with hint and erase (single and range) both for iterator and -const_iterator, which, AFAICS, can be meaningful at the same time *only* -if iterator and const_iterator *are* in fact different types. -

-

-Then, iterator and const_iterator are *required* to be different types? -Or that is an unintended consequence? Maybe the overloads for plain -iterators should be added only to unordered_map and unordered_multimap? -Or, of course, I'm missing something? -

- -

Proposed resolution:

-

-Add to 6.3.4.3p2 (and 6.3.4.5p2): -

-

-2 ... The iterator and const_iterator types are both const -constant iterator types. -It is unspecified whether they are the same type. If they are the -same type, those signatures that become otherwise indistinguishable -collapse into a single signature. -

- -

----- End of document -----

- \ No newline at end of file diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-defects.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-defects.html deleted file mode 100644 index 380c85e70..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/lwg-defects.html +++ /dev/null @@ -1,13890 +0,0 @@ - -C++ Standard Library Defect Report List - - - - - - - - - - - - - - - - - - - -
Doc. no.N1909=05-0169
Date:2005-10-23
Project:Programming Language C++
Reply to:Howard Hinnant <howard.hinnant@gmail.com>
-

C++ Standard Library Defect Report List (Revision R39)

-

Reference ISO/IEC IS 14882:1998(E)

-

Also see:

- -

This document contains only library issues which have been closed - by the Library Working Group (LWG) after being found to be defects - in the standard. That is, issues which have a status of DR, TC, or RR. See the - Library Closed Issues List for issues closed as non-defects. See the - Library Active Issues List for active issues and more information. The - introductory material in that document also applies to this - document.

-

Revision History

-
    -
  • R39: -2005-10-14 post-Mont Tremblant mailing. -Added new issues 526-528. -Moved issues 280, 461, 464, 465, 467, 468, 474, 496 from Ready to WP as per the vote from Mont Tremblant. -Moved issues 247, 294, 342, 362, 369, 371, 376, 384, 475, 478, 495, 497 from Review to Ready. -Moved issues 498, 504, 506, 509, 510, 511, 512, 513, 514 from New to Open. -Moved issues 505, 507, 508, 519 from New to Ready. -Moved issue 500 from New to NAD. -Moved issue 518 from New to Review. -
  • -
  • R38: -2005-07-03 pre-Mont Tremblant mailing. -Merged open TR1 issues in 504-522. -Added new issues 523-523 -
  • -
  • R37: -2005-06 mid-term mailing. -Added new issues 498-503. -
  • -
  • R36: -2005-04 post-Lillehammer mailing. All issues in "ready" status except -for 454 were moved to "DR" status, and all issues -previously in "DR" status were moved to "WP". -
  • -
  • R35: -2005-03 pre-Lillehammer mailing. -
  • -
  • R34: -2005-01 mid-term mailing. Added new issues 488-494. -
  • -
  • R33: -2004-11 post-Redmond mailing. Reflects actions taken in Redmond. -
  • -
  • R32: -2004-09 pre-Redmond mailing: reflects new proposed resolutions and -new issues received after the 2004-07 mailing. Added -new issues 479-481. -
  • -
  • R31: -2004-07 mid-term mailing: reflects new proposed resolutions and -new issues received after the post-Sydney mailing. Added -new issues 463-478. -
  • -
  • R30: -Post-Sydney mailing: reflects decisions made at the Sydney meeting. -Voted all "Ready" issues from R29 into the working paper. -Added new issues 460-462. -
  • -
  • R29: -Pre-Sydney mailing. Added new issues 441-457. -
  • -
  • R28: -Post-Kona mailing: reflects decisions made at the Kona meeting. -Added new issues 432-440. -
  • -
  • R27: -Pre-Kona mailing. Added new issues 404-431. -
  • -
  • R26: -Post-Oxford mailing: reflects decisions made at the Oxford meeting. -All issues in Ready status were voted into DR status. All issues in -DR status were voted into WP status. -
  • -
  • R25: -Pre-Oxford mailing. Added new issues 390-402. -
  • -
  • R24: -Post-Santa Cruz mailing: reflects decisions made at the Santa Cruz -meeting. All Ready issues from R23 with the exception of 253, which has been given a new proposed resolution, were -moved to DR status. Added new issues 383-389. (Issues 387-389 were discussed -at the meeting.) Made progress on issues 225, 226, 229: 225 and 229 have been moved to Ready status, and the only remaining -concerns with 226 involve wording. -
  • -
  • R23: -Pre-Santa Cruz mailing. Added new issues 367-382. -Moved issues in the TC to TC status. -
  • -
  • R22: -Post-Curaçao mailing. Added new issues 362-366. -
  • -
  • R21: -Pre-Curaçao mailing. Added new issues 351-361. -
  • -
  • R20: -Post-Redmond mailing; reflects actions taken in Redmond. Added -new issues 336-350, of which issues -347-350 were added since Redmond, hence -not discussed at the meeting. - -All Ready issues were moved to DR status, with the exception of issues -284, 241, and 267. - -Noteworthy issues discussed at Redmond include -120 202, 226, 233, -270, 253, 254, 323. -
  • -
  • R19: -Pre-Redmond mailing. Added new issues -323-335. -
  • -
  • R18: -Post-Copenhagen mailing; reflects actions taken in Copenhagen. -Added new issues 312-317, and discussed -new issues 271-314. - -Changed status of issues -103 118 136 153 -165 171 183 184 -185 186 214 221 -234 237 243 248 -251 252 256 260 -261 262 263 265 -268 -to DR. - -Changed status of issues -49 109 117 182 -228 230 232 235 -238 241 242 250 -259 264 266 267 -271 272 273 275 -281 284 285 286 -288 292 295 297 -298 301 303 306 -307 308 312 -to Ready. - -Closed issues -111 277 279 287 -289 293 302 313 -314 -as NAD. - -
  • -
  • R17: -Pre-Copenhagen mailing. Converted issues list to XML. Added proposed -resolutions for issues 49, 76, 91, 235, 250, 267. -Added new issues 278-311. -
  • -
  • R16: -post-Toronto mailing; reflects actions taken in Toronto. Added new -issues 265-277. Changed status of issues -3, 8, 9, 19, -26, 31, 61, -63, 86, 108, -112, 114, 115, -122, 127, 129, -134, 137, 142, -144, 146, 147, -159, 164, 170, -181, 199, 208, -209, 210, 211, -212, 217, 220, -222, 223, 224, -227 to "DR". Reopened issue 23. Reopened -issue 187. Changed issues 2 and -4 to NAD. Fixed a typo in issue 17. Fixed -issue 70: signature should be changed both places it -appears. Fixed issue 160: previous version didn't fix -the bug in enough places. -
  • -
  • R15: -pre-Toronto mailing. Added issues -233-264. Some small HTML formatting -changes so that we pass Weblint tests. -
  • -
  • R14: -post-Tokyo II mailing; reflects committee actions taken in -Tokyo. Added issues 228 to 232. (00-0019R1/N1242) -
  • -
  • R13: -pre-Tokyo II updated: Added issues 212 to 227. -
  • -
  • R12: -pre-Tokyo II mailing: Added issues 199 to -211. Added "and paragraph 5" to the proposed resolution -of issue 29. Add further rationale to issue -178. -
  • -
  • R11: -post-Kona mailing: Updated to reflect LWG and full committee actions -in Kona (99-0048/N1224). Note changed resolution of issues -4 and 38. Added issues 196 -to 198. Closed issues list split into "defects" and -"closed" documents. Changed the proposed resolution of issue -4 to NAD, and changed the wording of proposed resolution -of issue 38. -
  • -
  • R10: -pre-Kona updated. Added proposed resolutions 83, -86, 91, 92, -109. Added issues 190 to -195. (99-0033/D1209, 14 Oct 99) -
  • -
  • R9: -pre-Kona mailing. Added issues 140 to -189. Issues list split into separate "active" and -"closed" documents. (99-0030/N1206, 25 Aug 99) -
  • -
  • R8: -post-Dublin mailing. Updated to reflect LWG and full committee actions -in Dublin. (99-0016/N1193, 21 Apr 99) -
  • -
  • R7: -pre-Dublin updated: Added issues 130, 131, -132, 133, 134, -135, 136, 137, -138, 139 (31 Mar 99) -
  • -
  • R6: -pre-Dublin mailing. Added issues 127, 128, -and 129. (99-0007/N1194, 22 Feb 99) -
  • -
  • R5: -update issues 103, 112; added issues -114 to 126. Format revisions to prepare -for making list public. (30 Dec 98) -
  • -
  • R4: -post-Santa Cruz II updated: Issues 110, -111, 112, 113 added, several -issues corrected. (22 Oct 98) -
  • -
  • R3: -post-Santa Cruz II: Issues 94 to 109 -added, many issues updated to reflect LWG consensus (12 Oct 98) -
  • -
  • R2: -pre-Santa Cruz II: Issues 73 to 93 added, -issue 17 updated. (29 Sep 98) -
  • -
  • R1: -Correction to issue 55 resolution, 60 code -format, 64 title. (17 Sep 98) -
  • -
-

Defect Reports

-
-

1. C library linkage editing oversight

Section: 17.4.2.2 [lib.using.linkage]  Status: TC  Submitter: Beman Dawes  Date: 16 Nov 1997

-

The change specified in the proposed resolution below did not make -it into the Standard. This change was accepted in principle at the -London meeting, and the exact wording below was accepted at the -Morristown meeting.

-

Proposed resolution:

-

Change 17.4.2.2 [lib.using.linkage] paragraph 2 -from:

- -
-

It is unspecified whether a name from the Standard C library - declared with external linkage has either extern "C" or - extern "C++" linkage.

-
- -

to:

- -
-

Whether a name from the Standard C library declared with external - linkage has extern "C" or extern "C++" linkage - is implementation defined. It is recommended that an implementation - use extern "C++" linkage for this purpose.

-
-
-

3. Atexit registration during atexit() call is not described

Section: 18.3 [lib.support.start.term]  Status: TC  Submitter: Steve Clamage  Date: 12 Dec 1997

-

We appear not to have covered all the possibilities of - exit processing with respect to -atexit registration.
-
-Example 1: (C and C++)

- -
    #include <stdlib.h>
-    void f1() { }
-    void f2() { atexit(f1); }
-    
-    int main()
-    {
-        atexit(f2); // the only use of f2
-        return 0; // for C compatibility
-    }
- -

At program exit, f2 gets called due to its registration in -main. Running f2 causes f1 to be newly registered during the exit -processing. Is this a valid program? If so, what are its -semantics?

- -

-Interestingly, neither the C standard, nor the C++ draft standard nor -the forthcoming C9X Committee Draft says directly whether you can -register a function with atexit during exit processing.

- -

-All 3 standards say that functions are run in reverse order of their -registration. Since f1 is registered last, it ought to be run first, -but by the time it is registered, it is too late to be first.

- -

If the program is valid, the standards are self-contradictory about -its semantics.

- -

Example 2: (C++ only)

- -
    
-    void F() { static T t; } // type T has a destructor
-
-    int main()
-    {
-        atexit(F); // the only use of F
-    }
-
- -

Function F registered with atexit has a local static variable t, -and F is called for the first time during exit processing. A local -static object is initialized the first time control flow passes -through its definition, and all static objects are destroyed during -exit processing. Is the code valid? If so, what are its semantics?

- -

-Section 18.3 "Start and termination" says that if a function -F is registered with atexit before a static object t is initialized, F -will not be called until after t's destructor completes.

- -

-In example 2, function F is registered with atexit before its local -static object O could possibly be initialized. On that basis, it must -not be called by exit processing until after O's destructor -completes. But the destructor cannot be run until after F is called, -since otherwise the object could not be constructed in the first -place.

- -

If the program is valid, the standard is self-contradictory about -its semantics.

- -

I plan to submit Example 1 as a public comment on the C9X CD, with -a recommendation that the results be undefined. (Alternative: make it -unspecified. I don't think it is worthwhile to specify the case where -f1 itself registers additional functions, each of which registers -still more functions.)

- -

I think we should resolve the situation in the whatever way the C -committee decides.

- -

For Example 2, I recommend we declare the results undefined.

- -

[See reflector message lib-6500 for further discussion.]

- -

Proposed resolution:

-

Change section 18.3/8 from:

-
- First, objects with static storage duration are destroyed and - functions registered by calling atexit are called. Objects with - static storage duration are destroyed in the reverse order of the - completion of their constructor. (Automatic objects are not - destroyed as a result of calling exit().) Functions registered with - atexit are called in the reverse order of their registration. A - function registered with atexit before an object obj1 of static - storage duration is initialized will not be called until obj1's - destruction has completed. A function registered with atexit after - an object obj2 of static storage duration is initialized will be - called before obj2's destruction starts. -
-

to:

-
- First, objects with static storage duration are destroyed and - functions registered by calling atexit are called. Non-local objects - with static storage duration are destroyed in the reverse order of - the completion of their constructor. (Automatic objects are not - destroyed as a result of calling exit().) Functions registered with - atexit are called in the reverse order of their registration, except - that a function is called after any previously registered functions - that had already been called at the time it was registered. A - function registered with atexit before a non-local object obj1 of - static storage duration is initialized will not be called until - obj1's destruction has completed. A function registered with atexit - after a non-local object obj2 of static storage duration is - initialized will be called before obj2's destruction starts. A local - static object obj3 is destroyed at the same time it would be if a - function calling the obj3 destructor were registered with atexit at - the completion of the obj3 constructor. -
-

Rationale:

-

See 99-0039/N1215, October 22, 1999, by Stephen D. Clamage for the analysis -supporting to the proposed resolution.

-
-

5. String::compare specification questionable

Section: 21.3.6.8 [lib.string::compare]  Status: TC  Submitter: Jack Reeves  Date: 11 Dec 1997

-

At the very end of the basic_string class definition is the signature: int -compare(size_type pos1, size_type n1, const charT* s, size_type n2 = npos) const; In the -following text this is defined as: returns -basic_string<charT,traits,Allocator>(*this,pos1,n1).compare( -basic_string<charT,traits,Allocator>(s,n2);

- -

Since the constructor basic_string(const charT* s, size_type n, const Allocator& a -= Allocator()) clearly requires that s != NULL and n < npos and further states that it -throws length_error if n == npos, it appears the compare() signature above should always -throw length error if invoked like so: str.compare(1, str.size()-1, s); where 's' is some -null terminated character array.

- -

This appears to be a typo since the obvious intent is to allow either the call above or -something like: str.compare(1, str.size()-1, s, strlen(s)-1);

- -

This would imply that what was really intended was two signatures int compare(size_type -pos1, size_type n1, const charT* s) const int compare(size_type pos1, size_type n1, const -charT* s, size_type n2) const; each defined in terms of the corresponding constructor.

-

Proposed resolution:

-

Replace the compare signature in 21.3 [lib.basic.string] -(at the very end of the basic_string synopsis) which reads:

- -
-

int compare(size_type pos1, size_type n1,
-             const charT* s, - size_type n2 = npos) const;

-
- -

with:

- -
-

int compare(size_type pos1, size_type n1,
-             const charT* s) const;
- int compare(size_type pos1, size_type n1,
-             const charT* s, - size_type n2) const;

-
- -

Replace the portion of 21.3.6.8 [lib.string::compare] -paragraphs 5 and 6 which read:

- -
-

int compare(size_type pos, size_type n1,
-             charT * s, size_type n2 - = npos) const;
-
Returns:
- basic_string<charT,traits,Allocator>(*this, pos, n1).compare(
-              - basic_string<charT,traits,Allocator>( s, n2))

-
- -

with:

- -
-

int compare(size_type pos, size_type n1,
-             const charT * s) const;
-
Returns:
- basic_string<charT,traits,Allocator>(*this, pos, n1).compare(
-              - basic_string<charT,traits,Allocator>( s ))
-
- int compare(size_type pos, size_type n1,
-             const charT * s, - size_type n2) const;
-
Returns:
- basic_string<charT,traits,Allocator>(*this, pos, n1).compare(
-              - basic_string<charT,traits,Allocator>( s, n2))

-
- -

Editors please note that in addition to splitting the signature, the third argument -becomes const, matching the existing synopsis.

-

Rationale:

-

While the LWG dislikes adding signatures, this is a clear defect in -the Standard which must be fixed.  The same problem was also -identified in issues 7 (item 5) and 87.

-
-

7. String clause minor problems

Section: 21 [lib.strings]  Status: TC  Submitter: Matt Austern  Date: 15 Dec 1997

-

(1) In 21.3.5.4 [lib.string::insert], the description of template -<class InputIterator> insert(iterator, InputIterator, -InputIterator) makes no sense. It refers to a member function that -doesn't exist. It also talks about the return value of a void -function.

- -

(2) Several versions of basic_string::replace don't appear in the -class synopsis.

- -

(3) basic_string::push_back appears in the synopsis, but is never -described elsewhere. In the synopsis its argument is const charT, -which doesn't makes much sense; it should probably be charT, or -possible const charT&.

- -

(4) basic_string::pop_back is missing.

- -

(5) int compare(size_type pos, size_type n1, charT* s, size_type n2 -= npos) make no sense. First, it's const charT* in the synopsis and -charT* in the description. Second, given what it says in RETURNS, -leaving out the final argument will always result in an exception -getting thrown. This is paragraphs 5 and 6 of -21.3.6.8 [lib.string::compare]

- -

(6) In table 37, in section 21.1.1 [lib.char.traits.require], -there's a note for X::move(s, p, n). It says "Copies correctly -even where p is in [s, s+n)". This is correct as far as it goes, -but it doesn't go far enough; it should also guarantee that the copy -is correct even where s in in [p, p+n). These are two orthogonal -guarantees, and neither one follows from the other. Both guarantees -are necessary if X::move is supposed to have the same sort of -semantics as memmove (which was clearly the intent), and both -guarantees are necessary if X::move is actually supposed to be -useful.

-

Proposed resolution:

-

ITEM 1: In 21.3.5.4 [lib.string::insert], change paragraph 16 to
-
-    EFFECTS: Equivalent to insert(p - begin(), basic_string(first, last)).
-
-ITEM 2:  Not a defect; the Standard is clear.. There are ten versions of replace() in -the synopsis, and ten versions in 21.3.5.6 [lib.string::replace].
-
-ITEM 3: Change the declaration of push_back in the string synopsis (21.3, -[lib.basic.string]) from:

- -

     void push_back(const charT)
-
-to
-
-     void push_back(charT)
-
-Add the following text immediately after 21.3.5.2 [lib.string::append], paragraph 10.
-
-    void basic_string::push_back(charT c);
-    EFFECTS: Equivalent to append(static_cast<size_type>(1), c);
-
-ITEM 4: Not a defect. The omission appears to have been deliberate.
-
-ITEM 5: Duplicate; see issue 5 (and 87).
-
-ITEM 6: In table 37, Replace:
-
-    "Copies correctly even where p is in [s, s+n)."
-
-with:
-
-     "Copies correctly even where the ranges [p, p+n) and [s, -s+n) overlap."

-
-

8. Locale::global lacks guarantee

Section: 22.1.1.5 [lib.locale.statics]  Status: TC  Submitter: Matt Austern  Date: 24 Dec 1997

-

It appears there's an important guarantee missing from clause -22. We're told that invoking locale::global(L) sets the C locale if L -has a name. However, we're not told whether or not invoking -setlocale(s) sets the global C++ locale.

- -

The intent, I think, is that it should not, but I can't find any -such words anywhere.

-

Proposed resolution:

-

Add a sentence at the end of 22.1.1.5 [lib.locale.statics], -paragraph 2: 

- -
-

No library function other than locale::global() shall affect - the value returned by locale().

- -
-
-

9. Operator new(0) calls should not yield the same pointer

Section: 18.4.1 [lib.new.delete]  Status: TC  Submitter: Steve Clamage  Date: 4 Jan 1998

-

Scott Meyers, in a comp.std.c++ posting: I just noticed that -section 3.7.3.1 of CD2 seems to allow for the possibility that all -calls to operator new(0) yield the same pointer, an implementation -technique specifically prohibited by ARM 5.3.3.Was this prohibition -really lifted? Does the FDIS agree with CD2 in the regard? [Issues -list maintainer's note: the IS is the same.]

-

Proposed resolution:

-

Change the last paragraph of 3.7.3 from:

-
-

Any allocation and/or deallocation functions defined in a C++ program shall - conform to the semantics specified in 3.7.3.1 and 3.7.3.2.

-
-

to:

-
-

Any allocation and/or deallocation functions defined in a C++ program, - including the default versions in the library, shall conform to the semantics - specified in 3.7.3.1 and 3.7.3.2.

-
-

Change 3.7.3.1/2, next-to-last sentence, from :

-
-

If the size of the space requested is zero, the value returned shall not be - a null pointer value (4.10).

-
-

to:

-
-

Even if the size of the space requested is zero, the request can fail. If - the request succeeds, the value returned shall be a non-null pointer value - (4.10) p0 different from any previously returned value p1, unless that value - p1 was since passed to an operator delete.

-
-

5.3.4/7 currently reads:

-
-

When the value of the expression in a direct-new-declarator is zero, the - allocation function is called to allocate an array with no elements. The - pointer returned by the new-expression is non-null. [Note: If the library - allocation function is called, the pointer returned is distinct from the - pointer to any other object.]

-
-

Retain the first sentence, and delete the remainder.

-

18.4.1 currently has no text. Add the following:

-
-

Except where otherwise specified, the provisions of 3.7.3 apply to the - library versions of operator new and operator delete.

-
-

To 18.4.1.3, add the following text:

-
-

The provisions of 3.7.3 do not apply to these reserved placement forms of - operator new and operator delete.

-
-

Rationale:

-

See 99-0040/N1216, October 22, 1999, by Stephen D. Clamage for the analysis -supporting to the proposed resolution.

-
-

11. Bitset minor problems

Section: 23.3.5 [lib.template.bitset]  Status: TC  Submitter: Matt Austern  Date: 22 Jan 1998

-

(1) bitset<>::operator[] is mentioned in the class synopsis (23.3.5), but it is -not documented in 23.3.5.2.

- -

(2) The class synopsis only gives a single signature for bitset<>::operator[], -reference operator[](size_t pos). This doesn't make much sense. It ought to be overloaded -on const. reference operator[](size_t pos); bool operator[](size_t pos) const.

- -

(3) Bitset's stream input function (23.3.5.3) ought to skip all whitespace before -trying to extract 0s and 1s. The standard doesn't explicitly say that, though. This should -go in the Effects clause.

-

Proposed resolution:

-

ITEMS 1 AND 2:
-
-In the bitset synopsis (23.3.5 [lib.template.bitset]), -replace the member function
-
-    reference operator[](size_t pos);
-

-with the two member functions
-
-    bool operator[](size_t pos) const;
-    reference operator[](size_t pos);
-

-Add the following text at the end of 23.3.5.2 [lib.bitset.members], -immediately after paragraph 45:

- -
-

bool operator[](size_t pos) const;
- Requires: pos is valid
- Throws: nothing
- Returns: test(pos)
-
- bitset<N>::reference operator[](size_t pos);
- Requires: pos is valid
- Throws: nothing
- Returns: An object of type bitset<N>::reference such that (*this)[pos] - == this->test(pos), and such that (*this)[pos] = val is equivalent to this->set(pos, - val);

-
-

Rationale:

-

The LWG believes Item 3 is not a defect. "Formatted -input" implies the desired semantics. See 27.6.1.2 [lib.istream.formatted]. -

-
-

13. Eos refuses to die

Section: 27.6.1.2.3 [lib.istream::extractors]  Status: TC  Submitter: William M. Miller  Date: 3 Mar 1998

-

In 27.6.1.2.3, there is a reference to "eos", which is -the only one in the whole draft (at least using Acrobat search), so -it's undefined.

-

Proposed resolution:

-

In 27.6.1.2.3 [lib.istream::extractors], replace "eos" with -"charT()"

-
-

14. Locale::combine should be const

Section: 22.1.1.3 [lib.locale.members]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

locale::combine is the only member function of locale (other than constructors and -destructor) that is not const. There is no reason for it not to be const, and good reasons -why it should have been const. Furthermore, leaving it non-const conflicts with 22.1.1 -paragraph 6: "An instance of a locale is immutable."

- -

History: this member function originally was a constructor. it happened that the -interface it specified had no corresponding language syntax, so it was changed to a member -function. As constructors are never const, there was no "const" in the interface -which was transformed into member "combine". It should have been added at that -time, but the omission was not noticed.

-

Proposed resolution:

-

In 22.1.1 [lib.locale] and also in 22.1.1.3 [lib.locale.members], add -"const" to the declaration of member combine:

-
-
template <class Facet> locale combine(const locale& other) const; 
-
-
-

15. Locale::name requirement inconsistent

Section: 22.1.1.3 [lib.locale.members]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

locale::name() is described as returning a string that can be passed to a locale -constructor, but there is no matching constructor.

-

Proposed resolution:

-

In 22.1.1.3 [lib.locale.members], paragraph 5, replace -"locale(name())" with -"locale(name().c_str())". -

-
-

16. Bad ctype_byname<char> decl

Section: 22.2.1.4 [lib.locale.ctype.byname.special]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The new virtual members ctype_byname<char>::do_widen and do_narrow did not get -edited in properly. Instead, the member do_widen appears four times, with wrong argument -lists.

-

Proposed resolution:

-

The correct declarations for the overloaded members -do_narrow and do_widen should be copied -from 22.2.1.3 [lib.facet.ctype.special].

-
-

17. Bad bool parsing

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

This section describes the process of parsing a text boolean value from the input -stream. It does not say it recognizes either of the sequences "true" or -"false" and returns the corresponding bool value; instead, it says it recognizes -only one of those sequences, and chooses which according to the received value of a -reference argument intended for returning the result, and reports an error if the other -sequence is found. (!) Furthermore, it claims to get the names from the ctype<> -facet rather than the numpunct<> facet, and it examines the "boolalpha" -flag wrongly; it doesn't define the value "loc"; and finally, it computes -wrongly whether to use numeric or "alpha" parsing.
-
-I believe the correct algorithm is "as if":

- -
  // in, err, val, and str are arguments.
-  err = 0;
-  const numpunct<charT>& np = use_facet<numpunct<charT> >(str.getloc());
-  const string_type t = np.truename(), f = np.falsename();
-  bool tm = true, fm = true;
-  size_t pos = 0;
-  while (tm && pos < t.size() || fm && pos < f.size()) {
-    if (in == end) { err = str.eofbit; }
-    bool matched = false;
-    if (tm && pos < t.size()) {
-      if (!err && t[pos] == *in) matched = true;
-      else tm = false;
-    }
-    if (fm && pos < f.size()) {
-      if (!err && f[pos] == *in) matched = true;
-      else fm = false;
-    }
-    if (matched) { ++in; ++pos; }
-    if (pos > t.size()) tm = false;
-    if (pos > f.size()) fm = false;
-  }
-  if (tm == fm || pos == 0) { err |= str.failbit; }
-  else                      { val = tm; }
-  return in;
- -

Notice this works reasonably when the candidate strings are both empty, or equal, or -when one is a substring of the other. The proposed text below captures the logic of the -code above.

-

Proposed resolution:

-

In 22.2.2.1.2 [lib.facet.num.get.virtuals], in the first line of paragraph 14, -change "&&" to "&".

- -

Then, replace paragraphs 15 and 16 as follows:

- -
- -

Otherwise target sequences are determined "as if" by - calling the members falsename() and - truename() of the facet obtained by - use_facet<numpunct<charT> >(str.getloc()). - Successive characters in the range [in,end) (see - [lib.sequence.reqmts]) are obtained and matched against - corresponding positions in the target sequences only as necessary to - identify a unique match. The input iterator in is - compared to end only when necessary to obtain a - character. If and only if a target sequence is uniquely matched, - val is set to the corresponding value.

- -
- -
-

The in iterator is always left pointing one position beyond the last character - successfully matched. If val is set, then err is set to str.goodbit; or to - str.eofbit if, when seeking another character to match, it is found that - (in==end). If val is not set, then err is set to str.failbit; or to - (str.failbit|str.eofbit)if - the reason for the failure was that (in==end). [Example: for targets - true:"a" and false:"abb", the input sequence "a" yields - val==true and err==str.eofbit; the input sequence "abc" yields - err=str.failbit, with in ending at the 'c' element. For targets - true:"1" - and false:"0", the input sequence "1" yields val==true - and err=str.goodbit. For empty targets (""), any input sequence yields - err==str.failbit. --end example]

-
-
-

18. Get(...bool&) omitted

Section: 22.2.2.1.1 [lib.facet.num.get.members]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In the list of num_get<> non-virtual members on page 22-23, the member -that parses bool values was omitted from the list of definitions of non-virtual -members, though it is listed in the class definition and the corresponding -virtual is listed everywhere appropriate.

-

Proposed resolution:

-

Add at the beginning of 22.2.2.1.1 [lib.facet.num.get.members] -another get member for bool&, copied from the entry in -22.2.2.1 [lib.locale.num.get].

-
-

19. "Noconv" definition too vague

Section: 22.2.1.5.2 [lib.locale.codecvt.virtuals]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

-In the definitions of codecvt<>::do_out and do_in, they are -specified to return noconv if "no conversion is -needed". This definition is too vague, and does not say -normatively what is done with the buffers. -

-

Proposed resolution:

-

-Change the entry for noconv in the table under paragraph 4 in section -22.2.1.5.2 [lib.locale.codecvt.virtuals] to read: -

-
-

noconv: internT and externT are the same type, - and input sequence is identical to converted sequence.

-
-

Change the Note in paragraph 2 to normative text as follows:

-
-

If returns noconv, internT and externT are the - same type and the converted sequence is identical to the input sequence [from,from_next). - to_next is set equal to to, the value of state is - unchanged, and there are no changes to the values in [to, to_limit).

-
-
-

20. Thousands_sep returns wrong type

Section: 22.2.3.1.2 [lib.facet.numpunct.virtuals]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The synopsis for numpunct<>::do_thousands_sep, and the -definition of numpunct<>::thousands_sep which calls it, specify -that it returns a value of type char_type. Here it is erroneously -described as returning a "string_type".

-

Proposed resolution:

-

In 22.2.3.1.2 [lib.facet.numpunct.virtuals], above paragraph 2, change -"string_type" to "char_type".

-
-

21. Codecvt_byname<> instantiations

Section: 22.1.1.1.1 [lib.locale.category]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In the second table in the section, captioned "Required -instantiations", the instantiations for codecvt_byname<> -have been omitted. These are necessary to allow users to construct a -locale by name from facets.

-

Proposed resolution:

-

Add in 22.1.1.1.1 [lib.locale.category] to the table captioned -"Required instantiations", in the category "ctype" -the lines

- -
-
codecvt_byname<char,char,mbstate_t>,
-codecvt_byname<wchar_t,char,mbstate_t> 
-
-
-

22. Member open vs. flags

Section: 27.8.1.7 [lib.ifstream.members]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The description of basic_istream<>::open leaves unanswered questions about how it -responds to or changes flags in the error status for the stream. A strict reading -indicates that it ignores the bits and does not change them, which confuses users who do -not expect eofbit and failbit to remain set after a successful open. There are three -reasonable resolutions: 1) status quo 2) fail if fail(), ignore eofbit 3) clear failbit -and eofbit on call to open().

-

Proposed resolution:

-

In 27.8.1.7 [lib.ifstream.members] paragraph 3, and in 27.8.1.10 [lib.ofstream.members] paragraph 3, under open() effects, add a footnote: -

- -
-

A successful open does not change the error state.

-
-

Rationale:

-

This may seem surprising to some users, but it's just an instance -of a general rule: error flags are never cleared by the -implementation. The only way error flags are are ever cleared is if -the user explicitly clears them by hand.

- -

The LWG believed that preserving this general rule was -important enough so that an exception shouldn't be made just for this -one case. The resolution of this issue clarifies what the LWG -believes to have been the original intent.

- -
-

24. "do_convert" doesn't exist

Section: 22.2.1.5.2 [lib.locale.codecvt.virtuals]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The description of codecvt<>::do_out and do_in mentions a -symbol "do_convert" which is not defined in the -standard. This is a leftover from an edit, and should be "do_in -and do_out".

-

Proposed resolution:

-

In 22.2.1.5 [lib.locale.codecvt], paragraph 3, change -"do_convert" to "do_in or do_out". Also, in 22.2.1.5.2 [lib.locale.codecvt.virtuals], change "do_convert()" to "do_in -or do_out".

-
-

25. String operator<< uses width() value wrong

Section: 21.3.7.9 [lib.string.io]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In the description of operator<< applied to strings, the standard says that uses -the smaller of os.width() and str.size(), to pad "as described in stage 3" -elsewhere; but this is inconsistent, as this allows no possibility of space for padding.

-

Proposed resolution:

-

Change 21.3.7.9 [lib.string.io] paragraph 4 from:
-
-    "... where n is the smaller of os.width() and str.size(); -..."
-
-to:
-
-    "... where n is the larger of os.width() and str.size(); -..."

-
-

26. Bad sentry example

Section: 27.6.1.1.2 [lib.istream::sentry]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In paragraph 6, the code in the example:

- -
  template <class charT, class traits = char_traits<charT> >
-  basic_istream<charT,traits>::sentry(
-           basic_istream<charT,traits>& is, bool noskipws = false) {
-      ...
-      int_type c;
-      typedef ctype<charT> ctype_type;
-      const ctype_type& ctype = use_facet<ctype_type>(is.getloc());
-      while ((c = is.rdbuf()->snextc()) != traits::eof()) {
-        if (ctype.is(ctype.space,c)==0) {
-          is.rdbuf()->sputbackc (c);
-          break;
-        }
-      }
-      ...
-   }
- -

fails to demonstrate correct use of the facilities described. In -particular, it fails to use traits operators, and specifies incorrect -semantics. (E.g. it specifies skipping over the first character in the -sequence without examining it.)

-

Proposed resolution:

-

Remove the example above from 27.6.1.1.2 [lib.istream::sentry] -paragraph 6.

-

Rationale:

-

The originally proposed replacement code for the example was not -correct. The LWG tried in Kona and again in Tokyo to correct it -without success. In Tokyo, an implementor reported that actual working -code ran over one page in length and was quite complicated. The LWG -decided that it would be counter-productive to include such a lengthy -example, which might well still contain errors.

-
-

27. String::erase(range) yields wrong iterator

Section: 21.3.5.5 [lib.string::erase]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The string::erase(iterator first, iterator last) is specified to return an element one -place beyond the next element after the last one erased. E.g. for the string -"abcde", erasing the range ['b'..'d') would yield an iterator for element 'e', -while 'd' has not been erased.

-

Proposed resolution:

-

In 21.3.5.5 [lib.string::erase], paragraph 10, change:

- -
-

Returns: an iterator which points to the element immediately following _last_ prior to - the element being erased.

-
- -

to read

- -
-

Returns: an iterator which points to the element pointed to by _last_ prior to the - other elements being erased.

-
-
-

28. Ctype<char>is ambiguous

Section: 22.2.1.3.2 [lib.facet.ctype.char.members]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The description of the vector form of ctype<char>::is can be interpreted to mean -something very different from what was intended. Paragraph 4 says

- -
-

Effects: The second form, for all *p in the range [low, high), assigns vec[p-low] to - table()[(unsigned char)*p].

-
- -

This is intended to copy the value indexed from table()[] into the place identified in -vec[].

-

Proposed resolution:

-

Change 22.2.1.3.2 [lib.facet.ctype.char.members], paragraph 4, to read

- -
-

Effects: The second form, for all *p in the range [low, high), assigns into vec[p-low] - the value table()[(unsigned char)*p].

-
-
-

29. Ios_base::init doesn't exist

Section: 27.3.1 [lib.narrow.stream.objects]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

Sections 27.3.1 [lib.narrow.stream.objects] and 27.3.2 [lib.wide.stream.objects] mention -a function ios_base::init, which is not defined. Probably they mean -basic_ios<>::init, defined in 27.4.4.1 [lib.basic.ios.cons], -paragraph 3.

-

Proposed resolution:

-

[R12: modified to include paragraph 5.]

- -

In 27.3.1 [lib.narrow.stream.objects] paragraph 2 and 5, change

- -
-

ios_base::init

-
- -

to

- -
-

basic_ios<char>::init

-
- -

Also, make a similar change in 27.3.2 [lib.wide.stream.objects] except it -should read

- -
-

basic_ios<wchar_t>::init

-
-
-

30. Wrong header for LC_*

Section: 22.1.1.1.1 [lib.locale.category]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

Paragraph 2 implies that the C macros LC_CTYPE etc. are defined in <cctype>, -where they are in fact defined elsewhere to appear in <clocale>.

-

Proposed resolution:

-

In 22.1.1.1.1 [lib.locale.category], paragraph 2, change -"<cctype>" to read "<clocale>".

-
-

31. Immutable locale values

Section: 22.1.1 [lib.locale]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

Paragraph 6, says "An instance of locale is -immutable; once a facet reference is obtained from it, -...". This has caused some confusion, because locale variables -are manifestly assignable.

-

Proposed resolution:

-

In 22.1.1 [lib.locale] replace paragraph 6

- -
-

An instance of locale is immutable; once a facet - reference is obtained from it, that reference remains usable as long - as the locale value itself exists.

-
- -

with

- -
-

Once a facet reference is obtained from a locale object by - calling use_facet<>, that reference remains usable, and the - results from member functions of it may be cached and re-used, as - long as some locale object refers to that facet.

-
-
-

32. Pbackfail description inconsistent

Section: 27.5.2.4.4 [lib.streambuf.virt.pback]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The description of the required state before calling virtual member -basic_streambuf<>::pbackfail requirements is inconsistent with the conditions -described in 27.5.2.2.4 [lib.streambuf.pub.pback] where member sputbackc calls it. -Specifically, the latter says it calls pbackfail if:

- -

    traits::eq(c,gptr()[-1]) is false

- -

where pbackfail claims to require:

- -

    traits::eq(*gptr(),traits::to_char_type(c)) returns false

- -

It appears that the pbackfail description is wrong.

-

Proposed resolution:

-

In 27.5.2.4.4 [lib.streambuf.virt.pback], paragraph 1, change:

- -
-

"traits::eq(*gptr(),traits::to_char_type( c))"

-
- -

to

- -
-

"traits::eq(traits::to_char_type(c),gptr()[-1])" -

-
-

Rationale:

-

Note deliberate reordering of arguments for clarity in addition to the correction of -the argument value.

-
-

33. Codecvt<> mentions from_type

Section: 22.2.1.5.2 [lib.locale.codecvt.virtuals]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In the table defining the results from do_out and do_in, the specification for the -result error says

- -
-

encountered a from_type character it could not convert

-
- -

but from_type is not defined. This clearly is intended to be an externT for do_in, or -an internT for do_out.

-

Proposed resolution:

-

In 22.2.1.5.2 [lib.locale.codecvt.virtuals] paragraph 4, replace the definition -in the table for the case of _error_ with

- -
-

encountered a character in [from,from_end) that it could not convert.

-
-
-

34. True/falsename() not in ctype<>

Section: 22.2.2.2.2 [lib.facet.num.put.virtuals]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In paragraph 19, Effects:, members truename() and falsename are used from facet -ctype<charT>, but it has no such members. Note that this is also a problem in -22.2.2.1.2, addressed in (4).

-

Proposed resolution:

-

In 22.2.2.2.2 [lib.facet.num.put.virtuals], paragraph 19, in the Effects: -clause for member put(...., bool), replace the initialization of the -string_type value s as follows:

- -
-
const numpunct& np = use_facet<numpunct<charT> >(loc);
-string_type s = val ? np.truename() : np.falsename(); 
-
-
-

35. No manipulator unitbuf in synopsis

Section: 27.4 [lib.iostreams.base]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In 27.4.5.1 [lib.fmtflags.manip], we have a definition for a manipulator -named "unitbuf". Unlike other manipulators, it's not listed -in synopsis. Similarly for "nounitbuf".

-

Proposed resolution:

-

Add to the synopsis for <ios> in 27.4 [lib.iostreams.base], after -the entry for "nouppercase", the prototypes:

- -
-
ios_base& unitbuf(ios_base& str);
-ios_base& nounitbuf(ios_base& str); 
-
-
-

36. Iword & pword storage lifetime omitted

Section: 27.4.2.5 [lib.ios.base.storage]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In the definitions for ios_base::iword and pword, the lifetime of the storage is -specified badly, so that an implementation which only keeps the last value stored appears -to conform. In particular, it says:

- -

The reference returned may become invalid after another call to the object's iword -member with a different index ...

- -

This is not idle speculation; at least one implementation was done this way.

-

Proposed resolution:

-

Add in 27.4.2.5 [lib.ios.base.storage], in both paragraph 2 and also in -paragraph 4, replace the sentence:

- -
-

The reference returned may become invalid after another call to the object's iword - [pword] member with a different index, after a call to its copyfmt member, or when the - object is destroyed.

-
- -

with:

- -
-

The reference returned is invalid after any other operations on the object. However, - the value of the storage referred to is retained, so that until the next call to copyfmt, - calling iword [pword] with the same index yields another reference to the same value.

-
- -

substituting "iword" or "pword" as appropriate.

-
-

37. Leftover "global" reference

Section: 22.1.1 [lib.locale]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

In the overview of locale semantics, paragraph 4, is the sentence

- -
-

If Facet is not present in a locale (or, failing that, in the global locale), it throws - the standard exception bad_cast.

-
- -

This is not supported by the definition of use_facet<>, and represents semantics -from an old draft.

-

Proposed resolution:

-

In 22.1.1 [lib.locale], paragraph 4, delete the parenthesized -expression

- -
-

(or, failing that, in the global locale)

-
-
-

38. Facet definition incomplete

Section: 22.1.2 [lib.locale.global.templates]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

It has been noticed by Esa Pulkkinen that the definition of -"facet" is incomplete. In particular, a class derived from -another facet, but which does not define a member id, cannot -safely serve as the argument F to use_facet<F>(loc), -because there is no guarantee that a reference to the facet instance -stored in loc is safely convertible to F.

-

Proposed resolution:

-

In the definition of std::use_facet<>(), replace the text in paragraph 1 which -reads:

- -
-

Get a reference to a facet of a locale.

-
- -

with:

- -
-

Requires: Facet is a facet class whose definition - contains the public static member id as defined in 22.1.1.1.2 [lib.locale.facet].

-
- -

[ -Kona: strike as overspecification the text "(not inherits)" -from the original resolution, which read "... whose definition -contains (not inherits) the public static member -id..." -]

- -
-

39. istreambuf_iterator<>::operator++(int) definition garbled

Section: 24.5.3.4 [lib.istreambuf.iterator::op++]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

Following the definition of istreambuf_iterator<>::operator++(int) in paragraph -3, the standard contains three lines of garbage text left over from a previous edit.

- -
-
istreambuf_iterator<charT,traits> tmp = *this;
-sbuf_->sbumpc();
-return(tmp); 
-
-

Proposed resolution:

-

In 24.5.3.4 [lib.istreambuf.iterator::op++], delete the three lines of code at the -end of paragraph 3.

-
-

40. Meaningless normative paragraph in examples

Section: 22.2.8 [lib.facets.examples]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

Paragraph 3 of the locale examples is a description of part of an -implementation technique that has lost its referent, and doesn't mean -anything.

-

Proposed resolution:

-

Delete 22.2.8 [lib.facets.examples] paragraph 3 which begins "This -initialization/identification system depends...", or (at the -editor's option) replace it with a place-holder to keep the paragraph -numbering the same.

-
-

41. Ios_base needs clear(), exceptions()

Section: 27.4.2 [lib.ios.base]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The description of ios_base::iword() and pword() in 27.4.2.4 [lib.ios.members.static], say that if they fail, they "set badbit, -which may throw an exception". However, ios_base offers no -interface to set or to test badbit; those interfaces are defined in -basic_ios<>.

-

Proposed resolution:

-

Change the description in 27.4.2.5 [lib.ios.base.storage] in -paragraph 2, and also in paragraph 4, as follows. Replace

- -
-

If the function fails it sets badbit, which may throw an exception.

-
- -

with

- -
-

If the function fails, and *this is a base sub-object of - a basic_ios<> object or sub-object, the effect is - equivalent to calling basic_ios<>::setstate(badbit) - on the derived object (which may throw failure).

-
- -

[Kona: LWG reviewed wording; setstate(failbit) changed to -setstate(badbit).]

- -
-

42. String ctors specify wrong default allocator

Section: 21.3 [lib.basic.string]  Status: TC  Submitter: Nathan Myers  Date: 6 Aug 1998

-

The basic_string<> copy constructor:

- -
basic_string(const basic_string& str, size_type pos = 0,
-             size_type n = npos, const Allocator& a = Allocator()); 
- -

specifies an Allocator argument default value that is -counter-intuitive. The natural choice for a the allocator to copy from -is str.get_allocator(). Though this cannot be expressed in -default-argument notation, overloading suffices.

- -

Alternatively, the other containers in Clause 23 (deque, list, -vector) do not have this form of constructor, so it is inconsistent, -and an evident source of confusion, for basic_string<> to have -it, so it might better be removed.

-

Proposed resolution:

-

In 21.3 [lib.basic.string], replace the declaration of the copy -constructor as follows:

- -
-
basic_string(const basic_string& str);
-basic_string(const basic_string& str, size_type pos, size_type n = npos,
-             const Allocator& a = Allocator());
-
- -

In 21.3.1 [lib.string.cons], replace the copy constructor declaration -as above. Add to paragraph 5, Effects:

- -
-

In the first form, the Allocator value used is copied from - str.get_allocator().

-
-

Rationale:

-

The LWG believes the constructor is actually broken, rather than -just an unfortunate design choice.

- -

The LWG considered two other possible resolutions:

- -

A. In 21.3 [lib.basic.string], replace the declaration of the copy -constructor as follows:

- -
-
basic_string(const basic_string& str, size_type pos = 0,
-             size_type n = npos);
-basic_string(const basic_string& str, size_type pos,
-             size_type n, const Allocator& a); 
-
- -

In 21.3.1 [lib.string.cons], replace the copy constructor declaration -as above. Add to paragraph 5, Effects:

- -
-

When no Allocator argument is provided, the string is constructed using the - value str.get_allocator().

-
- -

B. In 21.3 [lib.basic.string], and also in 21.3.1 [lib.string.cons], replace -the declaration of the copy constructor as follows:

- -
-
basic_string(const basic_string& str, size_type pos = 0,
-             size_type n = npos); 
-
- -

The proposed resolution reflects the original intent of the LWG. It -was also noted by Pete Becker that this fix "will cause -a small amount of existing code to now work correctly."

- -

[ -Kona: issue editing snafu fixed - the proposed resolution now correctly -reflects the LWG consensus. -]

-
-

44. Iostreams use operator== on int_type values

Section: 27 [lib.input.output]  Status: WP  Submitter: Nathan Myers  Date: 6 Aug 1998

-

Many of the specifications for iostreams specify that character -values or their int_type equivalents are compared using operators == -or !=, though in other places traits::eq() or traits::eq_int_type is -specified to be used throughout. This is an inconsistency; we should -change uses of == and != to use the traits members instead.

-

Proposed resolution:

- -

[Pre-Kona: Dietmar supplied wording]

- -

List of changes to clause 27:

-
    -
  1. - In lib.basic.ios.members paragraph 13 (postcondition clause for - 'fill(cT)') change - -
    - fillch == fill() -
    - - to - -
    - traits::eq(fillch, fill()) -
    - - -
  2. -
  3. - In lib.istream.unformatted paragraph 7 (effects clause for - 'get(cT,streamsize,cT)'), third bullet, change - -
    - c == delim for the next available input character c -
    - - to - -
    - traits::eq(c, delim) for the next available input character c -
    - -
  4. -
  5. - In lib.istream.unformatted paragraph 12 (effects clause for - 'get(basic_streambuf<cT,Tr>&,cT)'), third bullet, change - -
    - c == delim for the next available input character c -
    - - to - -
    - traits::eq(c, delim) for the next available input character c -
    - -
  6. -
  7. - In lib.istream.unformatted paragraph 17 (effects clause for - 'getline(cT,streamsize,cT)'), second bullet, change - -
    - c == delim for the next available input character c -
    - - to - -
    - traits::eq(c, delim) for the next available input character c -
    - -
  8. -
  9. - In lib.istream.unformatted paragraph 24 (effects clause for - 'ignore(int,int_type)'), second bullet, change - -
    - c == delim for the next available input character c -
    - - to - -
    - traits::eq_int_type(c, delim) for the next available input - character c -
    - -
  10. -
  11. - In lib.istream.unformatted paragraph 25 (notes clause for - 'ignore(int,int_type)'), second bullet, change - -
    - The last condition will never occur if delim == traits::eof() -
    - - to - -
    - The last condition will never occur if - traits::eq_int_type(delim, traits::eof()). -
    - -
  12. -
  13. - In lib.istream.sentry paragraph 6 (example implementation for the - sentry constructor) change - -
    - while ((c = is.rdbuf()->snextc()) != traits::eof()) { -
    - - to - -
    - while (!traits::eq_int_type(c = is.rdbuf()->snextc(), traits::eof())) { -
    - -
  14. -
- -

List of changes to Chapter 21:

- -
    -
  1. - In lib.string::find paragraph 1 (effects clause for find()), - second bullet, change - -
    - at(xpos+I) == str.at(I) for all elements ... -
    - - to - -
    - traits::eq(at(xpos+I), str.at(I)) for all elements ... -
    - -
  2. -
  3. - In lib.string::rfind paragraph 1 (effects clause for rfind()), - second bullet, change - -
    - at(xpos+I) == str.at(I) for all elements ... -
    - - to - -
    - traits::eq(at(xpos+I), str.at(I)) for all elements ... -
    - -
  4. -
  5. - In lib.string::find.first.of paragraph 1 (effects clause for - find_first_of()), second bullet, change - -
    - at(xpos+I) == str.at(I) for all elements ... -
    - - to - -
    - traits::eq(at(xpos+I), str.at(I)) for all elements ... -
    - -
  6. -
  7. - In lib.string::find.last.of paragraph 1 (effects clause for - find_last_of()), second bullet, change - -
    - at(xpos+I) == str.at(I) for all elements ... -
    - - to - -
    - traits::eq(at(xpos+I), str.at(I)) for all elements ... -
    - -
  8. -
  9. - In lib.string::find.first.not.of paragraph 1 (effects clause for - find_first_not_of()), second bullet, change - -
    - at(xpos+I) == str.at(I) for all elements ... -
    - - to - -
    - traits::eq(at(xpos+I), str.at(I)) for all elements ... -
    -
  10. - -
  11. - In lib.string::find.last.not.of paragraph 1 (effects clause for - find_last_not_of()), second bullet, change - -
    - at(xpos+I) == str.at(I) for all elements ... -
    - - to - -
    - traits::eq(at(xpos+I), str.at(I)) for all elements ... -
    -
  12. - -
  13. - In lib.string.ios paragraph 5 (effects clause for getline()), - second bullet, change - -
    - c == delim for the next available input character c -
    - - to - -
    - traits::eq(c, delim) for the next available input character c -
    -
  14. - -
- -

Notes:

-
    -
  • - Fixing this issue highlights another sloppyness in - lib.istream.unformatted paragraph 24: this clause mentions a "character" - which is then compared to an 'int_type' (see item 5. in the list - below). It is not clear whether this requires explicit words and - if so what these words are supposed to be. A similar issue exists, - BTW, for operator*() of istreambuf_iterator which returns the result - of sgetc() as a character type (see lib.istreambuf.iterator::op* - paragraph 1), and for operator++() of istreambuf_iterator which - passes the result of sbumpc() to a constructor taking a char_type - (see lib.istreambuf.iterator::operator++ paragraph 3). Similarily, the - assignment operator ostreambuf_iterator passes a char_type to a function - taking an int_type (see lib.ostreambuf.iter.ops paragraph 1). -
  • -
  • - It is inconsistent to use comparisons using the traits functions in - Chapter 27 while not using them in Chapter 21, especially as some - of the inconsistent uses actually involve streams (eg. getline() on - streams). To avoid leaving this issue open still longer due to this - inconsistency (it is open since 1998), a list of changes to Chapter - 21 is below. -
  • -
  • - In Chapter 24 there are several places with statements like "the end - of stream is reached (streambuf_type::sgetc() returns traits::eof())" - (lib.istreambuf.iterator paragraph 1, lib.ostreambuf.iter.ops - paragraph 5). It is unclear whether these should be clarified to use - traits::eq_int_type() for detecting traits::eof(). -
  • -
- -
-

46. Minor Annex D errors

Section: D.7 [depr.str.strstreams]  Status: TC  Submitter: Brendan Kehoe  Date:  1 Jun 1998

-

See lib-6522 and edit-814.

-

Proposed resolution:

-

Change D.7.1 [depr.strstreambuf] (since streambuf is a typedef of -basic_streambuf<char>) from:

- -
         virtual streambuf<char>* setbuf(char* s, streamsize n);
- -

to:

- -
         virtual streambuf* setbuf(char* s, streamsize n);
- -

In D.7.4 [depr.strstream] insert the semicolon now missing after -int_type:

- -
     namespace std {
-       class strstream
-         : public basic_iostream<char> {
-       public:
-         // Types
-         typedef char                                char_type;
-         typedef typename char_traits<char>::int_type int_type
-         typedef typename char_traits<char>::pos_type pos_type;
-
-

47. Imbue() and getloc() Returns clauses swapped

Section: 27.4.2.3 [lib.ios.base.locales]  Status: TC  Submitter: Matt Austern  Date: 21 Jun 1998

-

Section 27.4.2.3 specifies how imbue() and getloc() work. That -section has two RETURNS clauses, and they make no sense as -stated. They make perfect sense, though, if you swap them. Am I -correct in thinking that paragraphs 2 and 4 just got mixed up by -accident?

-

Proposed resolution:

-

In 27.4.2.3 [lib.ios.base.locales] swap paragraphs 2 and 4.

-
-

48. Use of non-existent exception constructor

Section: 27.4.2.1.1 [lib.ios::failure]  Status: TC  Submitter: Matt Austern  Date: 21 Jun 1998

-

27.4.2.1.1, paragraph 2, says that class failure initializes the -base class, exception, with exception(msg). Class exception (see -18.6.1) has no such constructor.

-

Proposed resolution:

-

Replace 27.4.2.1.1 [lib.ios::failure], paragraph 2, with

- -
-

EFFECTS: Constructs an object of class failure.

-
-
-

49. Underspecification of ios_base::sync_with_stdio

Section: 27.4.2.4 [lib.ios.members.static]  Status: WP  Submitter: Matt Austern  Date: 21 Jun 1998

-

Two problems

- -

(1) 27.4.2.4 doesn't say what ios_base::sync_with_stdio(f) -returns. Does it return f, or does it return the previous -synchronization state? My guess is the latter, but the standard -doesn't say so.

- -

(2) 27.4.2.4 doesn't say what it means for streams to be -synchronized with stdio. Again, of course, I can make some -guesses. (And I'm unhappy about the performance implications of those -guesses, but that's another matter.)

-

Proposed resolution:

-

Change the following sentence in 27.4.2.4 [lib.ios.members.static] -returns clause from:

- -
-

true if the standard iostream objects (27.3) are - synchronized and otherwise returns false.

-
- -

to:

- -
-

true if the previous state of the standard iostream - objects (27.3) was synchronized and otherwise returns - false.

-
- -

Add the following immediately after 27.4.2.4 [lib.ios.members.static], -paragraph 2:

- -
-

When a standard iostream object str is synchronized with a -standard stdio stream f, the effect of inserting a character c by

-
  fputc(f, c);
-
- -

is the same as the effect of

-
  str.rdbuf()->sputc(c);
-
- -

for any sequence of characters; the effect of extracting a -character c by

-
  c = fgetc(f);
-
- -

is the same as the effect of:

-
  c = str.rdbuf()->sbumpc(c);
-
- -

for any sequences of characters; and the effect of pushing -back a character c by

-
  ungetc(c, f);
-
- -

is the same as the effect of

-
  str.rdbuf()->sputbackc(c);
-
- -

for any sequence of characters. [Footnote: This implies -that operations on a standard iostream object can be mixed arbitrarily -with operations on the corresponding stdio stream. In practical -terms, synchronization usually means that a standard iostream object -and a standard stdio object share a buffer. --End Footnote]

-
- -

[pre-Copenhagen: PJP and Matt contributed the definition -of "synchronization"]

- -

[post-Copenhagen: proposed resolution was revised slightly: -text was added in the non-normative footnote to say that operations -on the two streams can be mixed arbitrarily.]

-
-

50. Copy constructor and assignment operator of ios_base

Section: 27.4.2 [lib.ios.base]  Status: TC  Submitter: Matt Austern  Date: 21 Jun 1998

-

As written, ios_base has a copy constructor and an assignment -operator. (Nothing in the standard says it doesn't have one, and all -classes have copy constructors and assignment operators unless you -take specific steps to avoid them.) However, nothing in 27.4.2 says -what the copy constructor and assignment operator do.

- -

My guess is that this was an oversight, that ios_base is, like -basic_ios, not supposed to have a copy constructor or an assignment -operator.

- -

-Jerry Schwarz comments: Yes, its an oversight, but in the opposite -sense to what you're suggesting. At one point there was a definite -intention that you could copy ios_base. It's an easy way to save the -entire state of a stream for future use. As you note, to carry out -that intention would have required a explicit description of the -semantics (e.g. what happens to the iarray and parray stuff). -

-

Proposed resolution:

-

In 27.4.2 [lib.ios.base], class ios_base, specify the copy -constructor and operator= members as being private.

-

Rationale:

-

The LWG believes the difficulty of specifying correct semantics -outweighs any benefit of allowing ios_base objects to be copyable.

-
-

51. Requirement to not invalidate iterators missing

Section: 23.1 [lib.container.requirements]  Status: TC  Submitter: David Vandevoorde  Date: 23 Jun 1998

-

The std::sort algorithm can in general only sort a given sequence -by moving around values. The list<>::sort() member on the other -hand could move around values or just update internal pointers. Either -method can leave iterators into the list<> dereferencable, but -they would point to different things.

- -

Does the FDIS mandate anywhere which method should be used for -list<>::sort()?

- -

Matt Austern comments:

- -

I think you've found an omission in the standard.

- -

The library working group discussed this point, and there was -supposed to be a general requirement saying that list, set, map, -multiset, and multimap may not invalidate iterators, or change the -values that iterators point to, except when an operation does it -explicitly. So, for example, insert() doesn't invalidate any iterators -and erase() and remove() only invalidate iterators pointing to the -elements that are being erased.

- -

I looked for that general requirement in the FDIS, and, while I -found a limited form of it for the sorted associative containers, I -didn't find it for list. It looks like it just got omitted.

- -

The intention, though, is that list<>::sort does not -invalidate any iterators and does not change the values that any -iterator points to. There would be no reason to have the member -function otherwise.

-

Proposed resolution:

-

Add a new paragraph at the end of 23.1:

- -
-

Unless otherwise specified (either explicitly or by defining a function in terms of - other functions), invoking a container member function or passing a container as an - argument to a library function shall not invalidate iterators to, or change the values of, - objects within that container.

-
-

Rationale:

-

This was US issue CD2-23-011; it was accepted in London but the -change was not made due to an editing oversight. The wording in the -proposed resolution below is somewhat updated from CD2-23-011, -particularly the addition of the phrase "or change the values -of"

-
-

52. Small I/O problems

Section: 27.4.3.2 [lib.fpos.operations]  Status: TC  Submitter: Matt Austern  Date: 23 Jun 1998

-

First, 27.4.4.1 [lib.basic.ios.cons], table 89. This is pretty obvious: -it should be titled "basic_ios<>() effects", not -"ios_base() effects".

- -

[The second item is a duplicate; see issue 6 for -resolution.]

- -

Second, 27.4.3.2 [lib.fpos.operations] table 88 . There are a couple -different things wrong with it, some of which I've already discussed -with Jerry, but the most obvious mechanical sort of error is that it -uses expressions like P(i) and p(i), without ever defining what sort -of thing "i" is. -

- -

(The other problem is that it requires support for streampos -arithmetic. This is impossible on some systems, i.e. ones where file -position is a complicated structure rather than just a number. Jerry -tells me that the intention was to require syntactic support for -streampos arithmetic, but that it wasn't actually supposed to do -anything meaningful except on platforms, like Unix, where genuine -arithmetic is possible.)

-

Proposed resolution:

-

Change 27.4.4.1 [lib.basic.ios.cons] table 89 title from -"ios_base() effects" to "basic_ios<>() -effects".

-
-

53. Basic_ios destructor unspecified

Section: 27.4.4.1 [lib.basic.ios.cons]  Status: TC  Submitter: Matt Austern  Date: 23 Jun 1998

-

There's nothing in 27.4.4 saying what basic_ios's destructor does. -The important question is whether basic_ios::~basic_ios() destroys -rdbuf().

-

Proposed resolution:

-

Add after 27.4.4.1 [lib.basic.ios.cons] paragraph 2:

- -
-

virtual ~basic_ios();

-

Notes: The destructor does not destroy rdbuf().

-
-

Rationale:

-

The LWG reviewed the additional question of whether or not -rdbuf(0) may set badbit. The answer is -clearly yes; it may be set via clear(). See 27.4.4.2 [lib.basic.ios.members], paragraph 6. This issue was reviewed at length -by the LWG, which removed from the original proposed resolution a -footnote which incorrectly said "rdbuf(0) does not set -badbit".

-
-

54. Basic_streambuf's destructor

Section: 27.5.2.1 [lib.streambuf.cons]  Status: TC  Submitter: Matt Austern  Date: 25 Jun 1998

-

The class synopsis for basic_streambuf shows a (virtual) -destructor, but the standard doesn't say what that destructor does. My -assumption is that it does nothing, but the standard should say so -explicitly.

-

Proposed resolution:

-

Add after 27.5.2.1 [lib.streambuf.cons] paragraph 2:

- -
-

virtual  ~basic_streambuf();

-

Effects: None.

-
-
-

55. Invalid stream position is undefined

Section: 27 [lib.input.output]  Status: TC  Submitter: Matt Austern  Date: 26 Jun 1998

-

Several member functions in clause 27 are defined in certain -circumstances to return an "invalid stream position", a term -that is defined nowhere in the standard. Two places (27.5.2.4.2, -paragraph 4, and 27.8.1.4, paragraph 15) contain a cross-reference to -a definition in _lib.iostreams.definitions_, a nonexistent -section.

- -

I suspect that the invalid stream position is just supposed to be -pos_type(-1). Probably best to say explicitly in (for example) -27.5.2.4.2 that the return value is pos_type(-1), rather than to use -the term "invalid stream position", define that term -somewhere, and then put in a cross-reference.

- -

The phrase "invalid stream position" appears ten times in -the C++ Standard. In seven places it refers to a return value, and it -should be changed. In three places it refers to an argument, and it -should not be changed. Here are the three places where "invalid -stream position" should not be changed:

- -
-

27.7.1.3 [lib.stringbuf.virtuals], paragraph 14
- 27.8.1.4 [lib.filebuf.virtuals], paragraph 14
- D.7.1.3 [depr.strstreambuf.virtuals], paragraph 17 -

-
-

Proposed resolution:

-

In 27.5.2.4.2 [lib.streambuf.virt.buffer], paragraph 4, change "Returns an -object of class pos_type that stores an invalid stream position -(_lib.iostreams.definitions_)" to "Returns -pos_type(off_type(-1))". -

- -

In 27.5.2.4.2 [lib.streambuf.virt.buffer], paragraph 6, change "Returns -an object of class pos_type that stores an invalid stream -position" to "Returns pos_type(off_type(-1))".

- -

In 27.7.1.3 [lib.stringbuf.virtuals], paragraph 13, change "the object -stores an invalid stream position" to "the return value is -pos_type(off_type(-1))".

- -

In 27.8.1.4 [lib.filebuf.virtuals], paragraph 13, change "returns an -invalid stream position (27.4.3)" to "returns -pos_type(off_type(-1))"

- -

In 27.8.1.4 [lib.filebuf.virtuals], paragraph 15, change "Otherwise -returns an invalid stream position (_lib.iostreams.definitions_)" -to "Otherwise returns pos_type(off_type(-1))" -

- -

In D.7.1.3 [depr.strstreambuf.virtuals], paragraph 15, change "the object -stores an invalid stream position" to "the return value is -pos_type(off_type(-1))"

- -

In D.7.1.3 [depr.strstreambuf.virtuals], paragraph 18, change "the object -stores an invalid stream position" to "the return value is -pos_type(off_type(-1))"

-
-

56. Showmanyc's return type

Section: 27.5.2 [lib.streambuf]  Status: TC  Submitter: Matt Austern  Date: 29 Jun 1998

-

The class summary for basic_streambuf<>, in 27.5.2, says that -showmanyc has return type int. However, 27.5.2.4.3 says that its -return type is streamsize.

-

Proposed resolution:

-

Change showmanyc's return type in the -27.5.2 [lib.streambuf] class summary to streamsize.

-
-

57. Mistake in char_traits

Section: 21.1.3.2 [lib.char.traits.specializations.wchar.t]  Status: TC  Submitter: Matt Austern  Date: 1 Jul 1998

-

21.1.3.2, paragraph 3, says "The types streampos and -wstreampos may be different if the implementation supports no shift -encoding in narrow-oriented iostreams but supports one or more shift -encodings in wide-oriented streams".

- -

That's wrong: the two are the same type. The <iosfwd> summary -in 27.2 says that streampos and wstreampos are, respectively, synonyms -for fpos<char_traits<char>::state_type> and -fpos<char_traits<wchar_t>::state_type>, and, flipping back -to clause 21, we see in 21.1.3.1 and 21.1.3.2 that -char_traits<char>::state_type and -char_traits<wchar_t>::state_type must both be mbstate_t.

-

Proposed resolution:

-

Remove the sentence in 21.1.3.2 [lib.char.traits.specializations.wchar.t] paragraph 3 which -begins "The types streampos and wstreampos may be -different..." .

-
-

59. Ambiguity in specification of gbump

Section: 27.5.2.3.1 [lib.streambuf.get.area]  Status: TC  Submitter: Matt Austern  Date: 28 Jul 1998

-

27.5.2.3.1 says that basic_streambuf::gbump() "Advances the -next pointer for the input sequence by n."

- -

The straightforward interpretation is that it is just gptr() += -n. An alternative interpretation, though, is that it behaves as if it -calls sbumpc n times. (The issue, of course, is whether it might ever -call underflow.) There is a similar ambiguity in the case of -pbump.

- -

(The "classic" AT&T implementation used the -former interpretation.)

-

Proposed resolution:

-

Change 27.5.2.3.1 [lib.streambuf.get.area] paragraph 4 gbump effects from:

- -
-

Effects: Advances the next pointer for the input sequence by n.

-
- -

to:

- -
-

Effects: Adds n to the next pointer for the input sequence.

-
- -

Make the same change to 27.5.2.3.2 [lib.streambuf.put.area] paragraph 4 pbump -effects.

-
-

60. What is a formatted input function?

Section: 27.6.1.2.1 [lib.istream.formatted.reqmts]  Status: TC  Submitter: Matt Austern  Date: 3 Aug 1998

-

Paragraph 1 of 27.6.1.2.1 contains general requirements for all -formatted input functions. Some of the functions defined in section -27.6.1.2 explicitly say that those requirements apply ("Behaves -like a formatted input member (as described in 27.6.1.2.1)"), but -others don't. The question: is 27.6.1.2.1 supposed to apply to -everything in 27.6.1.2, or only to those member functions that -explicitly say "behaves like a formatted input member"? Or -to put it differently: are we to assume that everything that appears -in a section called "Formatted input functions" really is a -formatted input function? I assume that 27.6.1.2.1 is intended to -apply to the arithmetic extractors (27.6.1.2.2), but I assume that it -is not intended to apply to extractors like

- -
    basic_istream& operator>>(basic_istream& (*pf)(basic_istream&));
- -

and

- -
    basic_istream& operator>>(basic_streammbuf*);
- -

There is a similar ambiguity for unformatted input, formatted output, and unformatted -output.

- -

Comments from Judy Ward: It seems like the problem is that the -basic_istream and basic_ostream operator <<()'s that are used -for the manipulators and streambuf* are in the wrong section and -should have their own separate section or be modified to make it clear -that the "Common requirements" listed in section 27.6.1.2.1 -(for basic_istream) and section 27.6.2.5.1 (for basic_ostream) do not -apply to them.

- -

Additional comments from Dietmar Kühl: It appears to be somewhat -nonsensical to consider the functions defined in 27.6.1.2.3 [lib.istream::extractors] paragraphs 1 to 5 to be "Formatted input -function" but since these functions are defined in a section -labeled "Formatted input functions" it is unclear to me -whether these operators are considered formatted input functions which -have to conform to the "common requirements" from 27.6.1.2.1 [lib.istream.formatted.reqmts]: If this is the case, all manipulators, not -just ws, would skip whitespace unless noskipws is -set (... but setting noskipws using the manipulator syntax -would also skip whitespace :-)

It is not clear which functions -are to be considered unformatted input functions. As written, it seems -that all functions in 27.6.1.3 [lib.istream.unformatted] are unformatted input -functions. However, it does not really make much sense to construct a -sentry object for gcount(), sync(), ... Also it is -unclear what happens to the gcount() if -eg. gcount(), putback(), unget(), or -sync() is called: These functions don't extract characters, -some of them even "unextract" a character. Should this still -be reflected in gcount()? Of course, it could be read as if -after a call to gcount() gcount() return 0 -(the last unformatted input function, gcount(), didn't -extract any character) and after a call to putback() -gcount() returns -1 (the last unformatted input -function putback() did "extract" back into the -stream). Correspondingly for unget(). Is this what is -intended? If so, this should be clarified. Otherwise, a corresponding -clarification should be used.

-

Proposed resolution:

-

-In 27.6.1.2.2 [lib.istream.formatted.arithmetic], paragraph 1. -Change the beginning of the second sentence from "The conversion -occurs" to "These extractors behave as formatted input functions (as -described in 27.6.1.2.1). After a sentry object is constructed, -the conversion occurs" -

- -

-In 27.6.1.2.3, [lib.istream::extractors], before paragraph 1. -Add an effects clause. "Effects: None. This extractor does -not behave as a formatted input function (as described in -27.6.1.2.1). -

- -

-In 27.6.1.2.3, [lib.istream::extractors], paragraph 2. Change the -effects clause to "Effects: Calls pf(*this). This extractor does not -behave as a formatted input function (as described in 27.6.1.2.1). -

- -

-In 27.6.1.2.3, [lib.istream::extractors], paragraph 4. Change the -effects clause to "Effects: Calls pf(*this). This extractor does not -behave as a formatted input function (as described in 27.6.1.2.1). -

- -

-In 27.6.1.2.3, [lib.istream::extractors], paragraph 12. Change the -first two sentences from "If sb is null, calls setstate(failbit), -which may throw ios_base::failure (27.4.4.3). Extracts characters -from *this..." to "Behaves as a formatted input function (as described -in 27.6.1.2.1). If sb is null, calls setstate(failbit), which may -throw ios_base::failure (27.4.4.3). After a sentry object is -constructed, extracts characters from *this...". -

- -

-In 27.6.1.3, [lib.istream.unformatted], before paragraph 2. Add an -effects clause. "Effects: none. This member function does not behave -as an unformatted input function (as described in 27.6.1.3, paragraph 1)." -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 3. Change the -beginning of the first sentence of the effects clause from "Extracts a -character" to "Behaves as an unformatted input function (as described -in 27.6.1.3, paragraph 1). After constructing a sentry object, extracts a -character" -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 5. Change the -beginning of the first sentence of the effects clause from "Extracts a -character" to "Behaves as an unformatted input function (as described -in 27.6.1.3, paragraph 1). After constructing a sentry object, extracts a -character" -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 5. Change the -beginning of the first sentence of the effects clause from "Extracts -characters" to "Behaves as an unformatted input function (as described -in 27.6.1.3, paragraph 1). After constructing a sentry object, extracts -characters" -

- -

-[No change needed in paragraph 10, because it refers to paragraph 7.] -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 12. Change the -beginning of the first sentence of the effects clause from "Extracts -characters" to "Behaves as an unformatted input function (as described -in 27.6.1.3, paragraph 1). After constructing a sentry object, extracts -characters" -

- -

-[No change needed in paragraph 15.] -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 17. Change the -beginning of the first sentence of the effects clause from "Extracts -characters" to "Behaves as an unformatted input function (as described -in 27.6.1.3, paragraph 1). After constructing a sentry object, extracts -characters" -

- -

-[No change needed in paragraph 23.] -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 24. Change the -beginning of the first sentence of the effects clause from "Extracts -characters" to "Behaves as an unformatted input function (as described -in 27.6.1.3, paragraph 1). After constructing a sentry object, extracts -characters" -

- -

-In 27.6.1.3, [lib.istream.unformatted], before paragraph 27. Add an -Effects clause: "Effects: Behaves as an unformatted input function (as -described in 27.6.1.3, paragraph 1). After constructing a sentry -object, reads but does not extract the current input character." -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 28. Change the -first sentence of the Effects clause from "If !good() calls" to -Behaves as an unformatted input function (as described in 27.6.1.3, -paragraph 1). After constructing a sentry object, if !good() calls" -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 30. Change the -first sentence of the Effects clause from "If !good() calls" to -"Behaves as an unformatted input function (as described in 27.6.1.3, -paragraph 1). After constructing a sentry object, if !good() calls" -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 32. Change the -first sentence of the Effects clause from "If !good() calls..." to -"Behaves as an unformatted input function (as described in 27.6.1.3, -paragraph 1). After constructing a sentry object, if !good() -calls..." Add a new sentence to the end of the Effects clause: -"[Note: this function extracts no characters, so the value returned -by the next call to gcount() is 0.]" -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 34. Change the -first sentence of the Effects clause from "If !good() calls" to -"Behaves as an unformatted input function (as described in 27.6.1.3, -paragraph 1). After constructing a sentry object, if !good() calls". -Add a new sentence to the end of the Effects clause: "[Note: this -function extracts no characters, so the value returned by the next -call to gcount() is 0.]" -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 36. Change the -first sentence of the Effects clause from "If !rdbuf() is" to "Behaves -as an unformatted input function (as described in 27.6.1.3, paragraph -1), except that it does not count the number of characters extracted -and does not affect the value returned by subsequent calls to -gcount(). After constructing a sentry object, if rdbuf() is" -

- -

-In 27.6.1.3, [lib.istream.unformatted], before paragraph 37. Add an -Effects clause: "Effects: Behaves as an unformatted input function (as -described in 27.6.1.3, paragraph 1), except that it does not count the -number of characters extracted and does not affect the value returned -by subsequent calls to gcount()." Change the first sentence of -paragraph 37 from "if fail()" to "after constructing a sentry object, -if fail()". -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 38. Change the -first sentence of the Effects clause from "If fail()" to "Behaves -as an unformatted input function (as described in 27.6.1.3, paragraph -1), except that it does not count the number of characters extracted -and does not affect the value returned by subsequent calls to -gcount(). After constructing a sentry object, if fail() -

- -

-In 27.6.1.3, [lib.istream.unformatted], paragraph 40. Change the -first sentence of the Effects clause from "If fail()" to "Behaves -as an unformatted input function (as described in 27.6.1.3, paragraph -1), except that it does not count the number of characters extracted -and does not affect the value returned by subsequent calls to -gcount(). After constructing a sentry object, if fail() -

- -

-In 27.6.2.5.2 [lib.ostream.inserters.arithmetic], paragraph 1. Change -the beginning of the third sentence from "The formatting conversion" -to "These extractors behave as formatted output functions (as -described in 27.6.2.5.1). After the sentry object is constructed, the -conversion occurs". -

- -

-In 27.6.2.5.3 [lib.ostream.inserters], before paragraph 1. Add an -effects clause: "Effects: None. Does not behave as a formatted output -function (as described in 27.6.2.5.1).". -

- -

-In 27.6.2.5.3 [lib.ostream.inserters], paragraph 2. Change the -effects clause to "Effects: calls pf(*this). This extractor does not -behave as a formatted output function (as described in 27.6.2.5.1).". -

- -

-In 27.6.2.5.3 [lib.ostream.inserters], paragraph 4. Change the -effects clause to "Effects: calls pf(*this). This extractor does not -behave as a formatted output function (as described in 27.6.2.5.1).". -

- -

-In 27.6.2.5.3 [lib.ostream.inserters], paragraph 6. Change the first -sentence from "If sb" to "Behaves as a formatted output function (as -described in 27.6.2.5.1). After the sentry object is constructed, if -sb". -

- -

-In 27.6.2.6 [lib.ostream.unformatted], paragraph 2. Change the first -sentence from "Inserts the character" to "Behaves as an unformatted -output function (as described in 27.6.2.6, paragraph 1). After -constructing a sentry object, inserts the character". -

- -

-In 27.6.2.6 [lib.ostream.unformatted], paragraph 5. Change the first -sentence from "Obtains characters" to "Behaves as an unformatted -output function (as described in 27.6.2.6, paragraph 1). After -constructing a sentry object, obtains characters". -

- -

-In 27.6.2.6 [lib.ostream.unformatted], paragraph 7. Add a new -sentence at the end of the paragraph: "Does not behave as an -unformatted output function (as described in 27.6.2.6, paragraph 1)." -

-

Rationale:

-

See J16/99-0043==WG21/N1219, Proposed Resolution to Library Issue 60, -by Judy Ward and Matt Austern. This proposed resolution is section -VI of that paper.

-
-

61. Ambiguity in iostreams exception policy

Section: 27.6.1.3 [lib.istream.unformatted]  Status: TC  Submitter: Matt Austern  Date: 6 Aug 1998

-

The introduction to the section on unformatted input (27.6.1.3) -says that every unformatted input function catches all exceptions that -were thrown during input, sets badbit, and then conditionally rethrows -the exception. That seems clear enough. Several of the specific -functions, however, such as get() and read(), are documented in some -circumstances as setting eofbit and/or failbit. (The standard notes, -correctly, that setting eofbit or failbit can sometimes result in an -exception being thrown.) The question: if one of these functions -throws an exception triggered by setting failbit, is this an exception -"thrown during input" and hence covered by 27.6.1.3, or does -27.6.1.3 only refer to a limited class of exceptions? Just to make -this concrete, suppose you have the following snippet.

- -
  
-  char buffer[N];
-  istream is;
-  ...
-  is.exceptions(istream::failbit); // Throw on failbit but not on badbit.
-  is.read(buffer, N);
- -

Now suppose we reach EOF before we've read N characters. What -iostate bits can we expect to be set, and what exception (if any) will -be thrown?

-

Proposed resolution:

-

-In 27.6.1.3, paragraph 1, after the sentence that begins -"If an exception is thrown...", add the following -parenthetical comment: "(Exceptions thrown from -basic_ios<>::clear() are not caught or rethrown.)" -

-

Rationale:

-

The LWG looked to two alternative wordings, and choose the proposed -resolution as better standardese.

-
-

62. Sync's return value

Section: 27.6.1.3 [lib.istream.unformatted]  Status: TC  Submitter: Matt Austern  Date: 6 Aug 1998

-

The Effects clause for sync() (27.6.1.3, paragraph 36) says that it -"calls rdbuf()->pubsync() and, if that function returns -1 -... returns traits::eof()."

- -

That looks suspicious, because traits::eof() is of type -traits::int_type while the return type of sync() is int.

-

Proposed resolution:

-

In 27.6.1.3 [lib.istream.unformatted], paragraph 36, change "returns -traits::eof()" to "returns -1". -

-
-

63. Exception-handling policy for unformatted output

Section: 27.6.2.6 [lib.ostream.unformatted]  Status: TC  Submitter: Matt Austern  Date: 11 Aug 1998

-

Clause 27 details an exception-handling policy for formatted input, -unformatted input, and formatted output. It says nothing for -unformatted output (27.6.2.6). 27.6.2.6 should either include the same -kind of exception-handling policy as in the other three places, or -else it should have a footnote saying that the omission is -deliberate.

-

Proposed resolution:

-

-In 27.6.2.6, paragraph 1, replace the last sentence ("In any -case, the unformatted output function ends by destroying the sentry -object, then returning the value specified for the formatted output -function.") with the following text: -

-
-If an exception is thrown during output, then ios::badbit is -turned on [Footnote: without causing an ios::failure to be -thrown.] in *this's error state. If (exceptions() & -badbit) != 0 then the exception is rethrown. In any case, the -unformatted output function ends by destroying the sentry object, -then, if no exception was thrown, returning the value specified for -the formatted output function. -
-

Rationale:

-

-This exception-handling policy is consistent with that of formatted -input, unformatted input, and formatted output. -

-
-

64. Exception handling in basic_istream::operator>>(basic_streambuf*) -

Section: 27.6.1.2.3 [lib.istream::extractors]  Status: TC  Submitter: Matt Austern  Date: 11 Aug 1998

-

27.6.1.2.3, paragraph 13, is ambiguous. It can be interpreted two -different ways, depending on whether the second sentence is read as an -elaboration of the first.

-

Proposed resolution:

-

Replace 27.6.1.2.3 [lib.istream::extractors], paragraph 13, which begins -"If the function inserts no characters ..." with:

- -
-

If the function inserts no characters, it calls - setstate(failbit), which may throw - ios_base::failure (27.4.4.3). If it inserted no characters - because it caught an exception thrown while extracting characters - from sb and failbit is on in exceptions() - (27.4.4.3), then the caught exception is rethrown.

-
-
-

66. Strstreambuf::setbuf

Section: D.7.1.3 [depr.strstreambuf.virtuals]  Status: TC  Submitter: Matt Austern  Date: 18 Aug 1998

-

D.7.1.3, paragraph 19, says that strstreambuf::setbuf -"Performs an operation that is defined separately for each class -derived from strstreambuf". This is obviously an incorrect -cut-and-paste from basic_streambuf. There are no classes derived from -strstreambuf.

-

Proposed resolution:

-

D.7.1.3 [depr.strstreambuf.virtuals], paragraph 19, replace the setbuf effects -clause which currently says "Performs an operation that is -defined separately for each class derived from strstreambuf" -with:

- -
-

Effects: implementation defined, except that - setbuf(0,0) has no effect.

-
-
-

68. Extractors for char* should store null at end

Section: 27.6.1.2.3 [lib.istream::extractors]  Status: TC  Submitter: Angelika Langer  Date: 14 Jul 1998

-

Extractors for char* (27.6.1.2.3) do not store a null character -after the extracted character sequence whereas the unformatted -functions like get() do. Why is this?

- -

Comment from Jerry Schwarz: There is apparently an editing -glitch. You'll notice that the last item of the list of what stops -extraction doesn't make any sense. It was supposed to be the line that -said a null is stored.

-

Proposed resolution:

-

27.6.1.2.3 [lib.istream::extractors], paragraph 7, change the last list -item from:

- -
- A null byte (charT()) in the next position, which may be - the first position if no characters were extracted. -
- -

to become a new paragraph which reads:

- -
- Operator>> then stores a null byte (charT()) in the - next position, which may be the first position if no characters were - extracted. -
-
-

69. Must elements of a vector be contiguous?

Section: 23.2.4 [lib.vector]  Status: TC  Submitter: Andrew Koenig  Date: 29 Jul 1998

-

The issue is this: Must the elements of a vector be in contiguous memory?

- -

(Please note that this is entirely separate from the question of -whether a vector iterator is required to be a pointer; the answer to -that question is clearly "no," as it would rule out -debugging implementations)

-

Proposed resolution:

-

Add the following text to the end of 23.2.4 [lib.vector], -paragraph 1.

- -
-

The elements of a vector are stored contiguously, meaning that if - v is a vector<T, Allocator> where T is some type - other than bool, then it obeys the identity &v[n] - == &v[0] + n for all 0 <= n < v.size().

-
-

Rationale:

-

The LWG feels that as a practical matter the answer is clearly -"yes". There was considerable discussion as to the best way -to express the concept of "contiguous", which is not -directly defined in the standard. Discussion included:

- -
    -
  • An operational definition similar to the above proposed resolution is - already used for valarray (26.3.2.3 [lib.valarray.access]).
  • -
  • There is no need to explicitly consider a user-defined operator& - because elements must be copyconstructible (23.1 [lib.container.requirements] para 3) - and copyconstructible (20.1.3 [lib.copyconstructible]) specifies - requirements for operator&.
  • -
  • There is no issue of one-past-the-end because of language rules.
  • -
-
-

70. Uncaught_exception() missing throw() specification

Section: 18.6 [lib.support.exception], 18.6.4 [lib.uncaught]  Status: TC  Submitter: Steve Clamage  Date: Unknown

-

In article 3E04@pratique.fr, Valentin Bonnard writes:

- -

uncaught_exception() doesn't have a throw specification.

- -

It is intentional ? Does it means that one should be prepared to -handle exceptions thrown from uncaught_exception() ?

- -

uncaught_exception() is called in exception handling contexts where -exception safety is very important.

-

Proposed resolution:

-

In 15.5.3 [except.uncaught], paragraph 1, 18.6 [lib.support.exception], and 18.6.4 [lib.uncaught], add "throw()" to uncaught_exception().

-
-

71. Do_get_monthname synopsis missing argument

Section: 22.2.5.1 [lib.locale.time.get]  Status: TC  Submitter: Nathan Myers  Date: 13 Aug 1998

-

The locale facet member time_get<>::do_get_monthname -is described in 22.2.5.1.2 [lib.locale.time.get.virtuals] with five arguments, -consistent with do_get_weekday and with its specified use by member -get_monthname. However, in the synopsis, it is specified instead with -four arguments. The missing argument is the "end" iterator -value.

-

Proposed resolution:

-

In 22.2.5.1 [lib.locale.time.get], add an "end" argument to -the declaration of member do_monthname as follows:

- -
  virtual iter_type do_get_monthname(iter_type s, iter_type end, ios_base&,
-                                     ios_base::iostate& err, tm* t) const;
-
-

74. Garbled text for codecvt::do_max_length -

Section: 22.2.1.5.2 [lib.locale.codecvt.virtuals]  Status: TC  Submitter: Matt Austern  Date: 8 Sep 1998

-

The text of codecvt::do_max_length's "Returns" -clause (22.2.1.5.2, paragraph 11) is garbled. It has unbalanced -parentheses and a spurious n.

-

Proposed resolution:

-

Replace 22.2.1.5.2 [lib.locale.codecvt.virtuals] paragraph 11 with the -following:

- -
- Returns: The maximum value that - do_length(state, from, from_end, 1) can return for any - valid range [from, from_end) and stateT value - state. The specialization codecvt<char, char, - mbstate_t>::do_max_length() returns 1. -
-
-

75. Contradiction in codecvt::length's argument types

Section: 22.2.1.5 [lib.locale.codecvt]  Status: TC  Submitter:  Matt -Austern  Date:  18 Sep 1998

-

The class synopses for classes codecvt<> (22.2.1.5) -and codecvt_byname<> (22.2.1.6) say that the first -parameter of the member functions length and -do_length is of type const stateT&. The member -function descriptions, however (22.2.1.5.1, paragraph 6; 22.2.1.5.2, -paragraph 9) say that the type is stateT&. Either the -synopsis or the summary must be changed.

- -

If (as I believe) the member function descriptions are correct, -then we must also add text saying how do_length changes its -stateT argument.

-

Proposed resolution:

-

In 22.2.1.5 [lib.locale.codecvt], and also in 22.2.1.6 [lib.locale.codecvt.byname], -change the stateT argument type on both member -length() and member do_length() from

- -
-

const stateT&

-
- -

to

- -
-

stateT&

-
- -

In 22.2.1.5.2 [lib.locale.codecvt.virtuals], add to the definition for member -do_length a paragraph:

- -
-

Effects: The effect on the state argument is ``as if'' - it called do_in(state, from, from_end, from, to, to+max, - to) for to pointing to a buffer of at least - max elements.

-
-
-

76. Can a codecvt facet always convert one internal character at a time?

Section: 22.2.1.5 [lib.locale.codecvt]  Status: WP  Submitter: Matt Austern  Date: 25 Sep 1998

-

This issue concerns the requirements on classes derived from -codecvt, including user-defined classes. What are the -restrictions on the conversion from external characters -(e.g. char) to internal characters (e.g. wchar_t)? -Or, alternatively, what assumptions about codecvt facets can -the I/O library make?

- -

The question is whether it's possible to convert from internal -characters to external characters one internal character at a time, -and whether, given a valid sequence of external characters, it's -possible to pick off internal characters one at a time. Or, to put it -differently: given a sequence of external characters and the -corresponding sequence of internal characters, does a position in the -internal sequence correspond to some position in the external -sequence?

- -

To make this concrete, suppose that [first, last) is a -sequence of M external characters and that [ifirst, -ilast) is the corresponding sequence of N internal -characters, where N > 1. That is, my_encoding.in(), -applied to [first, last), yields [ifirst, -ilast). Now the question: does there necessarily exist a -subsequence of external characters, [first, last_1), such -that the corresponding sequence of internal characters is the single -character *ifirst? -

- -

(What a "no" answer would mean is that -my_encoding translates sequences only as blocks. There's a -sequence of M external characters that maps to a sequence of -N internal characters, but that external sequence has no -subsequence that maps to N-1 internal characters.)

- -

Some of the wording in the standard, such as the description of -codecvt::do_max_length (22.2.1.5.2 [lib.locale.codecvt.virtuals], -paragraph 11) and basic_filebuf::underflow (27.8.1.4 [lib.filebuf.virtuals], paragraph 3) suggests that it must always be -possible to pick off internal characters one at a time from a sequence -of external characters. However, this is never explicitly stated one -way or the other.

- -

This issue seems (and is) quite technical, but it is important if -we expect users to provide their own encoding facets. This is an area -where the standard library calls user-supplied code, so a well-defined -set of requirements for the user-supplied code is crucial. Users must -be aware of the assumptions that the library makes. This issue affects -positioning operations on basic_filebuf, unbuffered input, -and several of codecvt's member functions.

-

Proposed resolution:

-

Add the following text as a new paragraph, following 22.2.1.5.2 [lib.locale.codecvt.virtuals] paragraph 2:

- -
-

A codecvt facet that is used by basic_filebuf -(27.8 [lib.file.streams]) must have the property that if

-
    do_out(state, from, from_end, from_next, to, to_lim, to_next)
-
-would return ok, where from != from_end, then -
    do_out(state, from, from + 1, from_next, to, to_end, to_next)
-
-must also return ok, and that if -
    do_in(state, from, from_end, from_next, to, to_lim, to_next)
-
-would return ok, where to != to_lim, then -
    do_in(state, from, from_end, from_next, to, to + 1, to_next)
-
-

must also return ok. [Footnote: Informally, this -means that basic_filebuf assumes that the mapping from -internal to external characters is 1 to N: a codecvt that is -used by basic_filebuf must be able to translate characters -one internal character at a time. --End Footnote]

-
- -

[Redmond: Minor change in proposed resolution. Original -proposed resolution talked about "success", with a parenthetical -comment that success meant returning ok. New wording -removes all talk about "success", and just talks about the -return value.]

- -

Rationale:

- -

The proposed resoluion says that conversions can be performed one - internal character at a time. This rules out some encodings that - would otherwise be legal. The alternative answer would mean there - would be some internal positions that do not correspond to any - external file position.

-

- An example of an encoding that this rules out is one where the - internT and externT are of the same type, and - where the internal sequence c1 c2 corresponds to the - external sequence c2 c1. -

-

It was generally agreed that basic_filebuf relies - on this property: it was designed under the assumption that - the external-to-internal mapping is N-to-1, and it is not clear - that basic_filebuf is implementable without that - restriction. -

-

- The proposed resolution is expressed as a restriction on - codecvt when used by basic_filebuf, rather - than a blanket restriction on all codecvt facets, - because basic_filebuf is the only other part of the - library that uses codecvt. If a user wants to define - a codecvt facet that implements a more general N-to-M - mapping, there is no reason to prohibit it, so long as the user - does not expect basic_filebuf to be able to use it. -

-
-

78. Typo: event_call_back

Section: 27.4.2 [lib.ios.base]  Status: TC  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

typo: event_call_back should be event_callback  

-

Proposed resolution:

-

In the 27.4.2 [lib.ios.base] synopsis change -"event_call_back" to "event_callback".

-
-

79. Inconsistent declaration of polar()

Section: 26.2.1 [lib.complex.synopsis], 26.2.7 [lib.complex.value.ops]  Status: TC  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

In 26.2.1 [lib.complex.synopsis] polar is declared as follows:

-
   template<class T> complex<T> polar(const T&, const T&); 
- -

In 26.2.7 [lib.complex.value.ops] it is declared as follows:

-
   template<class T> complex<T> polar(const T& rho, const T& theta = 0); 
- -

Thus whether the second parameter is optional is not clear.

-

Proposed resolution:

-

In 26.2.1 [lib.complex.synopsis] change:

-
   template<class T> complex<T> polar(const T&, const T&);
- -

to:

-
   template<class T> complex<T> polar(const T& rho, const T& theta = 0); 
-
-

80. Global Operators of complex declared twice

Section: 26.2.1 [lib.complex.synopsis], 26.2.2 [lib.complex]  Status: TC  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

Both 26.2.1 and 26.2.2 contain declarations of global operators for -class complex. This redundancy should be removed.

-

Proposed resolution:

-

Reduce redundancy according to the general style of the standard.

-
-

83. String::npos vs. string::max_size()

Section: 21.3 [lib.basic.string]  Status: TC  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

Many string member functions throw if size is getting or exceeding -npos. However, I wonder why they don't throw if size is getting or -exceeding max_size() instead of npos. May be npos is known at compile -time, while max_size() is known at runtime. However, what happens if -size exceeds max_size() but not npos, then? It seems the standard -lacks some clarifications here.

-

Proposed resolution:

-

After 21.3 [lib.basic.string] paragraph 4 ("The functions -described in this clause...") add a new paragraph:

- -
-

For any string operation, if as a result of the operation, size() would exceed - max_size() then - the operation throws length_error.

-
-

Rationale:

-

The LWG believes length_error is the correct exception to throw.

-
-

86. String constructors don't describe exceptions

Section: 21.3.1 [lib.string.cons]  Status: TC  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

The constructor from a range:

- -
template<class InputIterator> 
-         basic_string(InputIterator begin, InputIterator end, 
-                      const Allocator& a = Allocator());
- -

lacks a throws clause. However, I would expect that it throws -according to the other constructors if the numbers of characters in -the range equals npos (or exceeds max_size(), see above).

-

Proposed resolution:

-

In 21.3.1 [lib.string.cons], Strike throws paragraphs for -constructors which say "Throws: length_error if n == -npos."

-

Rationale:

-

Throws clauses for length_error if n == npos are no longer needed -because they are subsumed by the general wording added by the -resolution for issue 83.

-
-

90. Incorrect description of operator >> for strings

Section: 21.3.7.9 [lib.string.io]  Status: TC  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

The effect of operator >> for strings contain the following item:

- -

    isspace(c,getloc()) is true for the next available input -character c.

- -

Here getloc() has to be replaced by is.getloc().

-

Proposed resolution:

-

In 21.3.7.9 [lib.string.io] paragraph 1 Effects clause replace:

- -
-

isspace(c,getloc()) is true for the next available input character c.

-
- -

with:

- -
-

isspace(c,is.getloc()) is true for the next available input character c.

-
-
-

91. Description of operator>> and getline() for string<> might cause endless loop

Section: 21.3.7.9 [lib.string.io]  Status: WP  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

Operator >> and getline() for strings read until eof() -in the input stream is true. However, this might never happen, if the -stream can't read anymore without reaching EOF. So shouldn't it be -changed into that it reads until !good() ?

-

Proposed resolution:

-

In 21.3.7.9 [lib.string.io], paragraph 1, replace:

-
-Effects: Begins by constructing a sentry object k as if k were -constructed by typename basic_istream<charT,traits>::sentry k( is). If -bool( k) is true, it calls str.erase() and then extracts characters -from is and appends them to str as if by calling str.append(1, c). If -is.width() is greater than zero, the maximum number n of characters -appended is is.width(); otherwise n is str.max_size(). Characters are -extracted and appended until any of the following occurs: -
-

with:

-
-Effects: Behaves as a formatted input function (27.6.1.2.1 [lib.istream.formatted.reqmts]). After constructing a sentry object, if the -sentry converts to true, calls str.erase() and then extracts -characters from is and appends them to str as if by calling -str.append(1,c). If is.width() is greater than zero, the maximum -number n of characters appended is is.width(); otherwise n is -str.max_size(). Characters are extracted and appended until any of the -following occurs: -
- -

In 21.3.7.9 [lib.string.io], paragraph 6, replace

-
-Effects: Begins by constructing a sentry object k as if by typename -basic_istream<charT,traits>::sentry k( is, true). If bool( k) is true, -it calls str.erase() and then extracts characters from is and appends -them to str as if by calling str.append(1, c) until any of the -following occurs: -
-

with:

-
-Effects: Behaves as an unformatted input function (27.6.1.3 [lib.istream.unformatted]), except that it does not affect the value returned -by subsequent calls to basic_istream<>::gcount(). After -constructing a sentry object, if the sentry converts to true, calls -str.erase() and then extracts characters from is and appends them to -str as if by calling str.append(1,c) until any of the following -occurs: -
- -

[Redmond: Made changes in proposed resolution. operator>> -should be a formatted input function, not an unformatted input function. -getline should not be required to set gcount, since -there is no mechanism for gcount to be set except by one of -basic_istream's member functions.]

- -

[Curaçao: Nico agrees with proposed resolution.]

- -

Rationale:

-

The real issue here is whether or not these string input functions -get their characters from a streambuf, rather than by calling an -istream's member functions, a streambuf signals failure either by -returning eof or by throwing an exception; there are no other -possibilities. The proposed resolution makes it clear that these two -functions do get characters from a streambuf.

-
-

92. Incomplete Algorithm Requirements

Section: 25 [lib.algorithms]  Status: WP  Submitter: Nico Josuttis  Date: 29 Sep 1998

-

The standard does not state, how often a function object is copied, -called, or the order of calls inside an algorithm. This may lead to -surprising/buggy behavior. Consider the following example:

- -
class Nth {    // function object that returns true for the nth element 
-  private: 
-    int nth;     // element to return true for 
-    int count;   // element counter 
-  public: 
-    Nth (int n) : nth(n), count(0) { 
-    } 
-    bool operator() (int) { 
-        return ++count == nth; 
-    } 
-}; 
-.... 
-// remove third element 
-    list<int>::iterator pos; 
-    pos = remove_if(coll.begin(),coll.end(),  // range 
-                    Nth(3)),                  // remove criterion 
-    coll.erase(pos,coll.end()); 
- -

This call, in fact removes the 3rd AND the 6th element. This -happens because the usual implementation of the algorithm copies the -function object internally:

- -
template <class ForwIter, class Predicate> 
-ForwIter std::remove_if(ForwIter beg, ForwIter end, Predicate op) 
-{ 
-    beg = find_if(beg, end, op); 
-    if (beg == end) { 
-        return beg; 
-    } 
-    else { 
-        ForwIter next = beg; 
-        return remove_copy_if(++next, end, beg, op); 
-    } 
-} 
- -

The algorithm uses find_if() to find the first element that should -be removed. However, it then uses a copy of the passed function object -to process the resulting elements (if any). Here, Nth is used again -and removes also the sixth element. This behavior compromises the -advantage of function objects being able to have a state. Without any -cost it could be avoided (just implement it directly instead of -calling find_if()).

-

Proposed resolution:

- -

Add a new paragraph following 25 [lib.algorithms] paragraph 8:

-
-[Note: Unless otherwise specified, algorithms that take function -objects as arguments are permitted to copy those function objects -freely. Programmers for whom object identity is important should -consider using a wrapper class that points to a noncopied -implementation object, or some equivalent solution.] -
- -

[Dublin: Pete Becker felt that this may not be a defect, -but rather something that programmers need to be educated about. -There was discussion of adding wording to the effect that the number -and order of calls to function objects, including predicates, not -affect the behavior of the function object.]

- -

[Pre-Kona: Nico comments: It seems the problem is that we don't -have a clear statement of "predicate" in the -standard. People including me seemed to think "a function -returning a Boolean value and being able to be called by an STL -algorithm or be used as sorting criterion or ... is a -predicate". But a predicate has more requirements: It should -never change its behavior due to a call or being copied. IMHO we have -to state this in the standard. If you like, see section 8.1.4 of my -library book for a detailed discussion.]

- -

[Kona: Nico will provide wording to the effect that "unless -otherwise specified, the number of copies of and calls to function -objects by algorithms is unspecified".  Consider placing in -25 [lib.algorithms] after paragraph 9.]

- -

[Santa Cruz: The standard doesn't currently guarantee that - functions object won't be copied, and what isn't forbidden is - allowed. It is believed (especially since implementations that were - written in concert with the standard do make copies of function - objects) that this was intentional. Thus, no normative change is - needed. What we should put in is a non-normative note suggesting to - programmers that if they want to guarantee the lack of copying they - should use something like the ref wrapper.]

- -

[Oxford: Matt provided wording.]

- - -
-

98. Input iterator requirements are badly written

Section: 24.1.1 [lib.input.iterators]  Status: WP  Submitter: AFNOR  Date: 7 Oct 1998

-

Table 72 in 24.1.1 [lib.input.iterators] specifies semantics for -*r++ of:

- -

   { T tmp = *r; ++r; return tmp; }

- -

There are two problems with this. First, the return type is -specified to be "T", as opposed to something like "convertible to T". -This is too specific: we want to allow *r++ to return an lvalue.

- -

Second, writing the semantics in terms of code misleadingly -suggests that the effects *r++ should precisely replicate the behavior -of this code, including side effects. (Does this mean that *r++ -should invoke the copy constructor exactly as many times as the sample -code above would?) See issue 334 for a similar -problem.

- -

Proposed resolution:

-In Table 72 in 24.1.1 [lib.input.iterators], change the return type -for *r++ from T to "convertible to T". -

Rationale:

-

This issue has two parts: the return type, and the number of times - the copy constructor is invoked.

- -

The LWG believes the the first part is a real issue. It's - inappropriate for the return type to be specified so much more - precisely for *r++ than it is for *r. In particular, if r is of - (say) type int*, then *r++ isn't int, - but int&.

- -

The LWG does not believe that the number of times the copy - constructor is invoked is a real issue. This can vary in any case, - because of language rules on copy constructor elision. That's too - much to read into these semantics clauses.

- -

Additionally, as Dave Abrahams pointed out (c++std-lib-13703): since - we're told (24.1/3) that forward iterators satisfy all the requirements - of input iterators, we can't impose any requirements in the Input - Iterator requirements table that forward iterators don't satisfy.

-
-

103. set::iterator is required to be modifiable, but this allows modification of keys

Section: 23.1.2 [lib.associative.reqmts]  Status: WP  Submitter: AFNOR  Date: 7 Oct 1998

-

Set::iterator is described as implementation-defined with a -reference to the container requirement; the container requirement says -that const_iterator is an iterator pointing to const T and iterator an -iterator pointing to T.

- -

23.1.2 paragraph 2 implies that the keys should not be modified to -break the ordering of elements. But that is not clearly -specified. Especially considering that the current standard requires -that iterator for associative containers be different from -const_iterator. Set, for example, has the following:

- -

typedef implementation defined iterator;
-       // See _lib.container.requirements_

- -

23.1 [lib.container.requirements] actually requires that iterator type pointing -to T (table 65). Disallowing user modification of keys by changing the -standard to require an iterator for associative container to be the -same as const_iterator would be overkill since that will unnecessarily -significantly restrict the usage of associative container. A class to -be used as elements of set, for example, can no longer be modified -easily without either redesigning the class (using mutable on fields -that have nothing to do with ordering), or using const_cast, which -defeats requiring iterator to be const_iterator. The proposed solution -goes in line with trusting user knows what he is doing.

- -

Other Options Evaluated:

- -

Option A.   In 23.1.2 [lib.associative.reqmts], paragraph 2, after -first sentence, and before "In addition,...", add one line: -

- -
-

Modification of keys shall not change their strict weak ordering.

-
- -

Option B. Add three new sentences to 23.1.2 [lib.associative.reqmts]:

- -
-

At the end of paragraph 5: "Keys in an associative container - are immutable." At the end of paragraph 6: "For - associative containers where the value type is the same as the key - type, both iterator and const_iterator are - constant iterators. It is unspecified whether or not - iterator and const_iterator are the same - type."

-
- -

Option C. To 23.1.2 [lib.associative.reqmts], paragraph 3, which -currently reads:

- -
-

The phrase ``equivalence of keys'' means the equivalence relation imposed by the - comparison and not the operator== on keys. That is, two keys k1 and k2 in the same - container are considered to be equivalent if for the comparison object comp, comp(k1, k2) - == false && comp(k2, k1) == false.

-
- -

  add the following:

- -
-

For any two keys k1 and k2 in the same container, comp(k1, k2) shall return the same - value whenever it is evaluated. [Note: If k2 is removed from the container and later - reinserted, comp(k1, k2) must still return a consistent value but this value may be - different than it was the first time k1 and k2 were in the same container. This is - intended to allow usage like a string key that contains a filename, where comp compares - file contents; if k2 is removed, the file is changed, and the same k2 (filename) is - reinserted, comp(k1, k2) must again return a consistent value but this value may be - different than it was the previous time k2 was in the container.]

-
-

Proposed resolution:

-

Add the following to 23.1.2 [lib.associative.reqmts] at -the indicated location:

- -
-

At the end of paragraph 3: "For any two keys k1 and k2 in the same container, - calling comp(k1, k2) shall always return the same - value."

-

At the end of paragraph 5: "Keys in an associative container are immutable."

-

At the end of paragraph 6: "For associative containers where the value type is the - same as the key type, both iterator and const_iterator are constant - iterators. It is unspecified whether or not iterator and const_iterator - are the same type."

-
-

Rationale:

-

Several arguments were advanced for and against allowing set elements to be -mutable as long as the ordering was not effected. The argument which swayed the -LWG was one of safety; if elements were mutable, there would be no compile-time -way to detect of a simple user oversight which caused ordering to be -modified. There was a report that this had actually happened in practice, -and had been painful to diagnose. If users need to modify elements, -it is possible to use mutable members or const_cast.

- -

Simply requiring that keys be immutable is not sufficient, because the comparison -object may indirectly (via pointers) operate on values outside of the keys.

- -

-The types iterator and const_iterator are permitted -to be different types to allow for potential future work in which some -member functions might be overloaded between the two types. No such -member functions exist now, and the LWG believes that user functionality -will not be impaired by permitting the two types to be the same. A -function that operates on both iterator types can be defined for -const_iterator alone, and can rely on the automatic -conversion from iterator to const_iterator. -

- -

[Tokyo: The LWG crafted the proposed resolution and rationale.]

-
-

106. Numeric library private members are implementation defined

Section: 26.3.5 [lib.template.slice.array]  Status: TC  Submitter: AFNOR  Date: 7 Oct 1998

-

This is the only place in the whole standard where the implementation has to document -something private.

-

Proposed resolution:

-

-Remove the comment which says "// remainder implementation defined" from: -

- - -
-

108. Lifetime of exception::what() return unspecified

Section: 18.6.1 [lib.exception]  Status: TC  Submitter: AFNOR  Date: 7 Oct 1998

-

In 18.6.1, paragraphs 8-9, the lifetime of the return value of -exception::what() is left unspecified. This issue has implications -with exception safety of exception handling: some exceptions should -not throw bad_alloc.

-

Proposed resolution:

-

Add to 18.6.1 [lib.exception] paragraph 9 (exception::what notes -clause) the sentence:

- -
-

The return value remains valid until the exception object from which it is obtained is - destroyed or a non-const member function of the exception object is called.

-
-

Rationale:

-

If an exception object has non-const members, they may be used -to set internal state that should affect the contents of the string -returned by what(). -

-
-

109. Missing binders for non-const sequence elements

Section: 20.3.6 [lib.binders]  Status: WP  Submitter: Bjarne Stroustrup  Date: 7 Oct 1998

- -

There are no versions of binders that apply to non-const elements -of a sequence. This makes examples like for_each() using bind2nd() on -page 521 of "The C++ Programming Language (3rd)" -non-conforming. Suitable versions of the binders need to be added.

- -

Further discussion from Nico:

- -

What is probably meant here is shown in the following example:

- -
class Elem { 
-  public: 
-    void print (int i) const { } 
-    void modify (int i) { } 
-}; 
-
int main() 
-{ 
-    vector<Elem> coll(2); 
-    for_each (coll.begin(), coll.end(), bind2nd(mem_fun_ref(&Elem::print),42));    // OK 
-    for_each (coll.begin(), coll.end(), bind2nd(mem_fun_ref(&Elem::modify),42));   // ERROR 
-}
- -

The error results from the fact that bind2nd() passes its first -argument (the argument of the sequence) as constant reference. See the -following typical implementation:

- -
-
template <class 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& o, 
-            const typename Operation::second_argument_type& v) 
-      : op(o), value(v) {} 
-
 typename Operation::result_type 
-  operator()(const typename Operation::first_argument_type& x) const { 
-    return op(x, value); 
-  } 
-};
-
- -

The solution is to overload operator () of bind2nd for non-constant arguments:

- -
-
template <class 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& o, 
-            const typename Operation::second_argument_type& v) 
-      : op(o), value(v) {} 
-
 typename Operation::result_type 
-  operator()(const typename Operation::first_argument_type& x) const { 
-    return op(x, value); 
-  } 
-  typename Operation::result_type 
-  operator()(typename Operation::first_argument_type& x) const { 
-    return op(x, value); 
-  } 
-};
-
-

Proposed resolution:

- -

Howard believes there is a flaw in this resolution. -See c++std-lib-9127. We may need to reopen this issue.

- -

In 20.3.6.1 [lib.binder.1st] in the declaration of binder1st after:

-
-

typename Operation::result_type
-  operator()(const typename Operation::second_argument_type& x) const;

-
-

insert:

-
-

typename Operation::result_type
-  operator()(typename Operation::second_argument_type& x) const;

-
-

In 20.3.6.3 [lib.binder.2nd] in the declaration of binder2nd after:

-
-

typename Operation::result_type
-  operator()(const typename Operation::first_argument_type& x) const;

-
-

insert:

-
-

typename Operation::result_type
-  operator()(typename Operation::first_argument_type& x) const;

-
- -

[Kona: The LWG discussed this at some length.It was agreed that -this is a mistake in the design, but there was no consensus on whether -it was a defect in the Standard. Straw vote: NAD - 5. Accept -proposed resolution - 3. Leave open - 6.]

- -

[Copenhagen: It was generally agreed that this was a defect. -Strap poll: NAD - 0. Accept proposed resolution - 10. -Leave open - 1.]

- -
-

110. istreambuf_iterator::equal not const

Section: 24.5.3 [lib.istreambuf.iterator], 24.5.3.5 [lib.istreambuf.iterator::equal]  Status: TC  Submitter: Nathan Myers  Date: 15 Oct 1998

-

Member istreambuf_iterator<>::equal is not declared -"const", yet 24.5.3.6 [lib.istreambuf.iterator::op==] says that operator==, -which is const, calls it. This is contradictory.

-

Proposed resolution:

-

In 24.5.3 [lib.istreambuf.iterator] and also in 24.5.3.5 [lib.istreambuf.iterator::equal], -replace:

- -
-
bool equal(istreambuf_iterator& b);
-
- -

with:

- -
-
bool equal(const istreambuf_iterator& b) const;
-
-
-

112. Minor typo in ostreambuf_iterator constructor

Section: 24.5.4.1 [lib.ostreambuf.iter.cons]  Status: TC  Submitter: Matt Austern  Date: 20 Oct 1998

-

The requires clause for ostreambuf_iterator's -constructor from an ostream_type (24.5.4.1, paragraph 1) -reads "s is not null". However, s is a -reference, and references can't be null.

-

Proposed resolution:

-

In 24.5.4.1 [lib.ostreambuf.iter.cons]:

- -

Move the current paragraph 1, which reads "Requires: s is not -null.", from the first constructor to the second constructor.

- -

Insert a new paragraph 1 Requires clause for the first constructor -reading:

- -
-

Requires: s.rdbuf() is not null.

-
-
-

114. Placement forms example in error twice

Section: 18.4.1.3 [lib.new.delete.placement]  Status: TC  Submitter: Steve Clamage  Date: 28 Oct 1998

-

Section 18.4.1.3 contains the following example:

- -
[Example: This can be useful for constructing an object at a known address:
-        char place[sizeof(Something)];
-        Something* p = new (place) Something();
- -end example]
- -

First code line: "place" need not have any special alignment, and the -following constructor could fail due to misaligned data.

- -

Second code line: Aren't the parens on Something() incorrect?  [Dublin: the LWG -believes the () are correct.]

- -

Examples are not normative, but nevertheless should not show code that is invalid or -likely to fail.

-

Proposed resolution:

-

Replace the first line of code in the example in -18.4.1.3 [lib.new.delete.placement] with: -

- -
-
void* place = operator new(sizeof(Something));
-
-
-

115. Typo in strstream constructors

Section: D.7.4.1 [depr.strstream.cons]  Status: TC  Submitter: Steve Clamage  Date: 2 Nov 1998

-

D.7.4.1 strstream constructors paragraph 2 says:

- -
-

Effects: Constructs an object of class strstream, initializing the base class with - iostream(& sb) and initializing sb with one of the two constructors:

-

- If mode&app==0, then s shall designate the first element of an array of n - elements. The constructor is strstreambuf(s, n, s).

-

- If mode&app==0, then s shall designate the first element of an array of n - elements that contains an NTBS whose first element is designated by s. The constructor is - strstreambuf(s, n, s+std::strlen(s)).

-
- -

Notice the second condition is the same as the first. I think the second condition -should be "If mode&app==app", or "mode&app!=0", meaning that -the append bit is set.

-

Proposed resolution:

-

In D.7.3.1 [depr.ostrstream.cons] paragraph 2 and D.7.4.1 [depr.strstream.cons] -paragraph 2, change the first condition to (mode&app)==0 -and the second condition to (mode&app)!=0.

-
-

117. basic_ostream uses nonexistent num_put member functions

Section: 27.6.2.5.2 [lib.ostream.inserters.arithmetic]  Status: WP  Submitter: Matt Austern  Date: 20 Nov 1998

-

The effects clause for numeric inserters says that -insertion of a value x, whose type is either bool, -short, unsigned short, int, unsigned -int, long, unsigned long, float, -double, long double, or const void*, is -delegated to num_put, and that insertion is performed as if -through the following code fragment:

- -
bool failed = use_facet<
-   num_put<charT,ostreambuf_iterator<charT,traits> > 
-   >(getloc()).put(*this, *this, fill(), val). failed();
- -

This doesn't work, because num_put<>::put is only -overloaded for the types bool, long, unsigned -long, double, long double, and const -void*. That is, the code fragment in the standard is incorrect -(it is diagnosed as ambiguous at compile time) for the types -short, unsigned short, int, unsigned -int, and float.

- -

We must either add new member functions to num_put, or -else change the description in ostream so that it only calls -functions that are actually there. I prefer the latter.

-

Proposed resolution:

-

Replace 27.6.2.5.2, paragraph 1 with the following:

- -
-

-The classes num_get<> and num_put<> handle locale­dependent numeric -formatting and parsing. These inserter functions use the imbued -locale value to perform numeric formatting. When val is of type bool, -long, unsigned long, double, long double, or const void*, the -formatting conversion occurs as if it performed the following code -fragment: -

- -
bool failed = use_facet<
-   num_put<charT,ostreambuf_iterator<charT,traits> >
-   >(getloc()).put(*this, *this, fill(), val). failed();
-
- -

-When val is of type short the formatting conversion occurs as if it -performed the following code fragment: -

- -
ios_base::fmtflags baseflags = ios_base::flags() & ios_base::basefield;
-bool failed = use_facet<
-   num_put<charT,ostreambuf_iterator<charT,traits> >
-   >(getloc()).put(*this, *this, fill(),
-      baseflags == ios_base::oct || baseflags == ios_base::hex
-         ? static_cast<long>(static_cast<unsigned short>(val))
-         : static_cast<long>(val)). failed();
-
- -

-When val is of type int the formatting conversion occurs as if it performed -the following code fragment: -

- -
ios_base::fmtflags baseflags = ios_base::flags() & ios_base::basefield;
-bool failed = use_facet<
-   num_put<charT,ostreambuf_iterator<charT,traits> >
-   >(getloc()).put(*this, *this, fill(),
-      baseflags == ios_base::oct || baseflags == ios_base::hex
-         ? static_cast<long>(static_cast<unsigned int>(val))
-         : static_cast<long>(val)). failed();
-
- -

-When val is of type unsigned short or unsigned int the formatting conversion -occurs as if it performed the following code fragment: -

- -
bool failed = use_facet<
-   num_put<charT,ostreambuf_iterator<charT,traits> >
-   >(getloc()).put(*this, *this, fill(), static_cast<unsigned long>(val)).
-failed();
-
- -

-When val is of type float the formatting conversion occurs as if it -performed the following code fragment: -

- -
bool failed = use_facet<
-   num_put<charT,ostreambuf_iterator<charT,traits> >
-   >(getloc()).put(*this, *this, fill(), static_cast<double>(val)).
-failed();
-
- -
- -

[post-Toronto: This differs from the previous proposed -resolution; PJP provided the new wording. The differences are in -signed short and int output.]

-

Rationale:

-

The original proposed resolution was to cast int and short to long, -unsigned int and unsigned short to unsigned long, and float to double, -thus ensuring that we don't try to use nonexistent num_put<> -member functions. The current proposed resolution is more -complicated, but gives more expected results for hex and octal output -of signed short and signed int. (On a system with 16-bit short, for -example, printing short(-1) in hex format should yield 0xffff.)

-
-

118. basic_istream uses nonexistent num_get member functions

Section: 27.6.1.2.2 [lib.istream.formatted.arithmetic]  Status: WP  Submitter: Matt Austern  Date: 20 Nov 1998

-

Formatted input is defined for the types short, unsigned short, int, -unsigned int, long, unsigned long, float, double, -long double, bool, and void*. According to section 27.6.1.2.2, -formatted input of a value x is done as if by the following code fragment:

- -
typedef num_get< charT,istreambuf_iterator<charT,traits> > numget; 
-iostate err = 0; 
-use_facet< numget >(loc).get(*this, 0, *this, err, val); 
-setstate(err);
- -

According to section 22.2.2.1.1 [lib.facet.num.get.members], however, -num_get<>::get() is only overloaded for the types -bool, long, unsigned short, unsigned -int, unsigned long, unsigned long, -float, double, long double, and -void*. Comparing the lists from the two sections, we find -that 27.6.1.2.2 is using a nonexistent function for types -short and int.

-

Proposed resolution:

-

In 27.6.1.2.2 [lib.istream.formatted.arithmetic] Arithmetic Extractors, remove the -two lines (1st and 3rd) which read:

-
-
operator>>(short& val);
-...
-operator>>(int& val);
-
- -

And add the following at the end of that section (27.6.1.2.2) :

- -
-
operator>>(short& val);
-

The conversion occurs as if performed by the following code fragment (using - the same notation as for the preceding code fragment):

-
  typedef num_get< charT,istreambuf_iterator<charT,traits> > numget;
-  iostate err = 0;
-  long lval;
-  use_facet< numget >(loc).get(*this, 0, *this, err, lval);
-        if (err == 0
-                && (lval < numeric_limits<short>::min() || numeric_limits<short>::max() < lval))
-                err = ios_base::failbit;
-  setstate(err);
-
operator>>(int& val);
-

The conversion occurs as if performed by the following code fragment (using - the same notation as for the preceding code fragment):

-
  typedef num_get< charT,istreambuf_iterator<charT,traits> > numget;
-  iostate err = 0;
-  long lval;
-  use_facet< numget >(loc).get(*this, 0, *this, err, lval);
-        if (err == 0
-                && (lval < numeric_limits<int>::min() || numeric_limits<int>::max() < lval))
-                err = ios_base::failbit;
-  setstate(err);
-
- -

[Post-Tokyo: PJP provided the above wording.]

-
-

119. Should virtual functions be allowed to strengthen the exception specification?

Section: 17.4.4.8 [lib.res.on.exception.handling]  Status: TC  Submitter: Judy Ward  Date: 15 Dec 1998

-

Section 17.4.4.8 [lib.res.on.exception.handling] states:

- -

"An implementation may strengthen the exception-specification -for a function by removing listed exceptions."

- -

The problem is that if an implementation is allowed to do this for -virtual functions, then a library user cannot write a class that -portably derives from that class.

- -

For example, this would not compile if ios_base::failure::~failure -had an empty exception specification:

- -
#include <ios>
-#include <string>
-
-class D : public std::ios_base::failure {
-public:
-        D(const std::string&);
-        ~D(); // error - exception specification must be compatible with 
-              // overridden virtual function ios_base::failure::~failure()
-};
-

Proposed resolution:

-

Change Section 17.4.4.8 [lib.res.on.exception.handling] from:

- -

     "may strengthen the -exception-specification for a function"

- -

to:

- -

     "may strengthen the -exception-specification for a non-virtual function".

-
-

120. Can an implementor add specializations?

Section: 17.4.3.1 [lib.reserved.names]  Status: WP  Submitter: Judy Ward  Date: 15 Dec 1998

- -

The original issue asked whether a library implementor could -specialize standard library templates for built-in types. (This was -an issue because users are permitted to explicitly instantiate -standard library templates.)

- -

Specializations are no longer a problem, because of the resolution -to core issue 259. Under the proposed resolution, it will be legal -for a translation unit to contain both a specialization and an -explicit instantiation of the same template, provided that the -specialization comes first. In such a case, the explicit -instantiation will be ignored. Further discussion of library issue -120 assumes that the core 259 resolution will be adopted.

- -

However, as noted in lib-7047, one piece of this issue still -remains: what happens if a standard library implementor explicitly -instantiates a standard library templates? It's illegal for a program -to contain two different explicit instantiations of the same template -for the same type in two different translation units (ODR violation), -and the core working group doesn't believe it is practical to relax -that restriction.

- -

The issue, then, is: are users allowed to explicitly instantiate -standard library templates for non-user defined types? The status quo -answer is 'yes'. Changing it to 'no' would give library implementors -more freedom.

- -

This is an issue because, for performance reasons, library -implementors often need to explicitly instantiate standard library -templates. (for example, std::basic_string<char>) Does giving -users freedom to explicitly instantiate standard library templates for -non-user defined types make it impossible or painfully difficult for -library implementors to do this?

- -

John Spicer suggests, in lib-8957, that library implementors have a -mechanism they can use for explicit instantiations that doesn't -prevent users from performing their own explicit instantiations: put -each explicit instantiation in its own object file. (Different -solutions might be necessary for Unix DSOs or MS-Windows DLLs.) On -some platforms, library implementors might not need to do anything -special: the "undefined behavior" that results from having two -different explicit instantiations might be harmless.

- -

Proposed resolution:

-

Append to 17.4.3.1 [lib.reserved.names] paragraph 1:

-
- A program may explicitly instantiate any templates in the standard - library only if the declaration depends on the name of a user-defined - type of external linkage and the instantiation meets the standard library - requirements for the original template. -
- -

[Kona: changed the wording from "a user-defined name" to "the name of - a user-defined type"]

- -

Rationale:

-

The LWG considered another possible resolution:

-
-

In light of the resolution to core issue 259, no normative changes - in the library clauses are necessary. Add the following non-normative - note to the end of 17.4.3.1 [lib.reserved.names] paragraph 1:

-
- [Note: A program may explicitly instantiate standard library - templates, even when an explicit instantiation does not depend on - a user-defined name. --end note] -
-
- -

The LWG rejected this because it was believed that it would make - it unnecessarily difficult for library implementors to write - high-quality implementations. A program may not include an - explicit instantiation of the same template, for the same template - arguments, in two different translation units. If users are - allowed to provide explicit instantiations of Standard Library - templates for built-in types, then library implementors aren't, - at least not without nonportable tricks.

- -

The most serious problem is a class template that has writeable - static member variables. Unfortunately, such class templates are - important and, in existing Standard Library implementations, are - often explicitly specialized by library implementors: locale facets, - which have a writeable static member variable id. If a - user's explicit instantiation collided with the implementations - explicit instantiation, iostream initialization could cause locales - to be constructed in an inconsistent state.

- -

One proposed implementation technique was for Standard Library - implementors to provide explicit instantiations in separate object - files, so that they would not be picked up by the linker when the - user also provides an explicit instantiation. However, this - technique only applies for Standard Library implementations that - are packaged as static archives. Most Standard Library - implementations nowadays are packaged as dynamic libraries, so this - technique would not apply.

- -

The Committee is now considering standardization of dynamic - linking. If there are such changes in the future, it may be - appropriate to revisit this issue later.

-
-

122. streambuf/wstreambuf description should not say they are specializations

Section: 27.5.2 [lib.streambuf]  Status: TC  Submitter: Judy Ward  Date: 15 Dec 1998

-

Section 27.5.2 describes the streambuf classes this way:

- -
- -

The class streambuf is a specialization of the template class basic_streambuf -specialized for the type char.

- -

The class wstreambuf is a specialization of the template class basic_streambuf -specialized for the type wchar_t.

- -
- -

This implies that these classes must be template specializations, not typedefs.

- -

It doesn't seem this was intended, since Section 27.5 has them declared as typedefs.

-

Proposed resolution:

-

Remove 27.5.2 [lib.streambuf] paragraphs 2 and 3 (the above two -sentences).

-

Rationale:

-

The streambuf synopsis already has a declaration for the -typedefs and that is sufficient.

-
-

123. Should valarray helper arrays fill functions be const?

Section: 26.3.5.4 [lib.slice.arr.fill], 26.3.7.4 [lib.gslice.array.fill], 26.3.8.4 [lib.mask.array.fill], 26.3.9.4 [lib.indirect.array.fill]  Status: WP  Submitter: Judy Ward  Date: 15 Dec 1998

-

One of the operator= in the valarray helper arrays is const and one -is not. For example, look at slice_array. This operator= in Section -26.3.5.2 [lib.slice.arr.assign] is const:

- -

    void operator=(const valarray<T>&) const;

- -

but this one in Section 26.3.5.4 [lib.slice.arr.fill] is not:

- -

    void operator=(const T&);

- -

The description of the semantics for these two functions is similar.

-

Proposed resolution:

- -

26.3.5 [lib.template.slice.array] Template class slice_array

-
- -

In the class template definition for slice_array, replace the member - function declaration

-
      void operator=(const T&);
-    
-

with

-
      void operator=(const T&) const;
-    
-
- -

26.3.5.4 [lib.slice.arr.fill] slice_array fill function

-
- -

Change the function declaration

-
      void operator=(const T&);
-    
-

to

-
      void operator=(const T&) const;
-    
-
- -

26.3.7 [lib.template.gslice.array] Template class gslice_array

-
- -

In the class template definition for gslice_array, replace the member - function declaration

-
      void operator=(const T&);
-    
-

with

-
      void operator=(const T&) const;
-    
-
- -

26.3.7.4 [lib.gslice.array.fill] gslice_array fill function

-
- -

Change the function declaration

-
      void operator=(const T&);
-    
-

to

-
      void operator=(const T&) const;
-    
-
- -

26.3.8 [lib.template.mask.array] Template class mask_array

-
- -

In the class template definition for mask_array, replace the member - function declaration

-
      void operator=(const T&);
-    
-

with

-
      void operator=(const T&) const;
-    
-
- -

26.3.8.4 [lib.mask.array.fill] mask_array fill function

-
- -

Change the function declaration

-
      void operator=(const T&);
-    
-

to

-
      void operator=(const T&) const;
-    
-
- -

26.3.9 [lib.template.indirect.array] Template class indirect_array

-
- -

In the class template definition for indirect_array, replace the member - function declaration

-
      void operator=(const T&);
-    
-

with

-
      void operator=(const T&) const;
-    
-
- -

26.3.9.4 [lib.indirect.array.fill] indirect_array fill function

-
- -

Change the function declaration

-
      void operator=(const T&);
-    
-

to

-
      void operator=(const T&) const;
-    
-
- - -

[Redmond: Robert provided wording.]

- -

Rationale:

-

There's no good reason for one version of operator= being const and -another one not. Because of issue 253, this now -matters: these functions are now callable in more circumstances. In -many existing implementations, both versions are already const.

-
-

124. ctype_byname<charT>::do_scan_is & do_scan_not return type should be const charT*

Section: 22.2.1.2 [lib.locale.ctype.byname]  Status: TC  Submitter: Judy Ward  Date: 15 Dec 1998

-

In Section 22.2.1.2 [lib.locale.ctype.byname] -ctype_byname<charT>::do_scan_is() and do_scan_not() are declared -to return a const char* not a const charT*.

-

Proposed resolution:

-

Change Section 22.2.1.2 [lib.locale.ctype.byname] do_scan_is() and -do_scan_not() to return a const -charT*.

-
-

125. valarray<T>::operator!() return type is inconsistent

Section: 26.3.2 [lib.template.valarray]  Status: TC  Submitter: Judy Ward  Date: 15 Dec 1998

-

In Section 26.3.2 [lib.template.valarray] valarray<T>::operator!() is -declared to return a valarray<T>, but in Section 26.3.2.5 [lib.valarray.unary] it is declared to return a valarray<bool>. The -latter appears to be correct.

-

Proposed resolution:

-

Change in Section 26.3.2 [lib.template.valarray] the declaration of -operator!() so that the return type is -valarray<bool>.

-
-

126. typos in Effects clause of ctype::do_narrow()

Section: 22.2.1.1.2 [lib.locale.ctype.virtuals]  Status: TC  Submitter: Judy Ward  Date: 15 Dec 1998

-

Typos in 22.2.1.1.2 need to be fixed.

-

Proposed resolution:

-

In Section 22.2.1.1.2 [lib.locale.ctype.virtuals] change:

- -
   do_widen(do_narrow(c),0) == c
- -

to:

- -
   do_widen(do_narrow(c,0)) == c
- -

and change:

- -
   (is(M,c) || !ctc.is(M, do_narrow(c),dfault) )
- -

to:

- -
   (is(M,c) || !ctc.is(M, do_narrow(c,dfault)) )
-
-

127. auto_ptr<> conversion issues

Section: 20.4.5 [lib.auto.ptr]  Status: TC  Submitter: Greg Colvin  Date: 17 Feb 1999

-

There are two problems with the current auto_ptr wording -in the standard:

- -

First, the auto_ptr_ref definition cannot be nested -because auto_ptr<Derived>::auto_ptr_ref is unrelated to -auto_ptr<Base>::auto_ptr_ref. Also submitted by -Nathan Myers, with the same proposed resolution.

- -

Second, there is no auto_ptr assignment operator taking an -auto_ptr_ref argument.

- -

I have discussed these problems with my proposal coauthor, Bill -Gibbons, and with some compiler and library implementors, and we -believe that these problems are not desired or desirable implications -of the standard.

- -

25 Aug 1999: The proposed resolution now reflects changes suggested -by Dave Abrahams, with Greg Colvin's concurrence; 1) changed -"assignment operator" to "public assignment -operator", 2) changed effects to specify use of release(), 3) -made the conversion to auto_ptr_ref const.

- -

2 Feb 2000: Lisa Lippincott comments: [The resolution of] this issue -states that the conversion from auto_ptr to auto_ptr_ref should -be const. This is not acceptable, because it would allow -initialization and assignment from _any_ const auto_ptr! It also -introduces an implementation difficulty in writing this conversion -function -- namely, somewhere along the line, a const_cast will be -necessary to remove that const so that release() may be called. This -may result in undefined behavior [7.1.5.1/4]. The conversion -operator does not have to be const, because a non-const implicit -object parameter may be bound to an rvalue [13.3.3.1.4/3] -[13.3.1/5].

- -

Tokyo: The LWG removed the following from the proposed resolution:

- -

In 20.4.5 [lib.auto.ptr], paragraph 2, and 20.4.5.3 [lib.auto.ptr.conv], - paragraph 2, make the conversion to auto_ptr_ref const:

-
-
template<class Y> operator auto_ptr_ref<Y>() const throw();
-
-

Proposed resolution:

-

In 20.4.5 [lib.auto.ptr], paragraph 2, move -the auto_ptr_ref definition to namespace scope.

- -

In 20.4.5 [lib.auto.ptr], paragraph 2, add -a public assignment operator to the auto_ptr definition:

- -
-
auto_ptr& operator=(auto_ptr_ref<X> r) throw();
-
- -

Also add the assignment operator to 20.4.5.3 [lib.auto.ptr.conv]:

- -
-
auto_ptr& operator=(auto_ptr_ref<X> r) throw()
- - Effects: Calls reset(p.release()) for the auto_ptr - p that r holds a reference to.
- Returns: *this. - -
-
-

129. Need error indication from seekp() and seekg()

Section: 27.6.1.3 [lib.istream.unformatted], 27.6.2.4 [lib.ostream.seeks]  Status: TC  Submitter: Angelika Langer  Date: 22 Feb 1999

-

Currently, the standard does not specify how seekg() and seekp() -indicate failure. They are not required to set failbit, and they can't -return an error indication because they must return *this, i.e. the -stream. Hence, it is undefined what happens if they fail. And they -can fail, for instance, when a file stream is disconnected from the -underlying file (is_open()==false) or when a wide character file -stream must perform a state-dependent code conversion, etc.

- -

The stream functions seekg() and seekp() should set failbit in the -stream state in case of failure.

-

Proposed resolution:

-

Add to the Effects: clause of  seekg() in -27.6.1.3 [lib.istream.unformatted] and to the Effects: clause of seekp() in -27.6.2.4 [lib.ostream.seeks]:

- -
-

In case of failure, the function calls setstate(failbit) (which may throw ios_base::failure). -

-
-

Rationale:

-

Setting failbit is the usual error reporting mechanism for streams

-
-

130. Return type of container::erase(iterator) differs for associative containers

Section: 23.1.2 [lib.associative.reqmts], 23.1.1 [lib.sequence.reqmts]  Status: DR  Submitter: Andrew Koenig  Date: 2 Mar 1999

-

Table 67 (23.1.1) says that container::erase(iterator) returns an -iterator. Table 69 (23.1.2) says that in addition to this requirement, -associative containers also say that container::erase(iterator) -returns void. That's not an addition; it's a change to the -requirements, which has the effect of making associative containers -fail to meet the requirements for containers.

-

Proposed resolution:

- -

-In 23.1.2 [lib.associative.reqmts], in Table 69 Associative container -requirements, change the return type of a.erase(q) from -void to iterator. Change the -assertion/not/pre/post-condition from "erases the element pointed to -by q" to "erases the element pointed to by q. -Returns an iterator pointing to the element immediately following q -prior to the element being erased. If no such element exists, a.end() -is returned." -

- -

-In 23.1.2 [lib.associative.reqmts], in Table 69 Associative container -requirements, change the return type of a.erase(q1, q2) -from void to iterator. Change the -assertion/not/pre/post-condition from "erases the elements in the -range [q1, q2)" to "erases the elements in the range [q1, -q2). Returns q2." -

- -

-In 23.3.1 [lib.map], in the map class synopsis; and -in 23.3.2 [lib.multimap], in the multimap class synopsis; and -in 23.3.3 [lib.set], in the set class synopsis; and -in 23.3.4 [lib.multiset], in the multiset class synopsis: -change the signature of the first erase overload to -

-
   iterator erase(iterator position);
-
-

and change the signature of the third erase overload to

-
  iterator erase(iterator first, iterator last); 
-
- - -

[Pre-Kona: reopened at the request of Howard Hinnant]

- -

[Post-Kona: the LWG agrees the return type should be -iterator, not void. (Alex Stepanov agrees too.) -Matt provided wording.]

- -

[ - Sydney: the proposed wording went in the right direction, but it - wasn't good enough. We want to return an iterator from the range form - of erase as well as the single-iterator form. Also, the wording is - slightly different from the wording we have for sequences; there's no - good reason for having a difference. Matt provided new wording, - which we will review at the next meeting. -]

- -
-

132. list::resize description uses random access iterators

Section: 23.2.2.2 [lib.list.capacity]  Status: TC  Submitter: Howard Hinnant  Date: 6 Mar 1999

-

The description reads:

- -

-1- Effects:

- -
         if (sz > size())
-           insert(end(), sz-size(), c);
-         else if (sz < size())
-           erase(begin()+sz, end());
-         else
-           ;                           //  do nothing
- -

Obviously list::resize should not be specified in terms of random access iterators.

-

Proposed resolution:

-

Change 23.2.2.2 paragraph 1 to:

- -

Effects:

- -
         if (sz > size())
-           insert(end(), sz-size(), c);
-         else if (sz < size())
-         {
-           iterator i = begin();
-           advance(i, sz);
-           erase(i, end());
-         }
- -

[Dublin: The LWG asked Howard to discuss exception safety offline -with David Abrahams. They had a discussion and believe there is -no issue of exception safety with the proposed resolution.]

-
-

133. map missing get_allocator()

Section: 23.3.1 [lib.map]  Status: TC  Submitter: Howard Hinnant  Date: 6 Mar 1999

-

The title says it all.

-

Proposed resolution:

-

Insert in 23.3.1 [lib.map], paragraph 2, -after operator= in the map declaration:

- -
    allocator_type get_allocator() const;
-
-

134. vector constructors over specified

Section: 23.2.4.1 [lib.vector.cons]  Status: TC  Submitter: Howard Hinnant  Date: 6 Mar 1999

-

The complexity description says: "It does at most 2N calls to the copy constructor -of T and logN reallocations if they are just input iterators ...".

- -

This appears to be overly restrictive, dictating the precise memory/performance -tradeoff for the implementor.

-

Proposed resolution:

-

Change 23.2.4.1 [lib.vector.cons], paragraph 1 to:

- -

-1- Complexity: The constructor template <class -InputIterator> vector(InputIterator first, InputIterator last) -makes only N calls to the copy constructor of T (where N is the -distance between first and last) and no reallocations if iterators -first and last are of forward, bidirectional, or random access -categories. It makes order N calls to the copy constructor of T and -order logN reallocations if they are just input iterators. -

-

Rationale:

-

"at most 2N calls" is correct only if the growth factor -is greater than or equal to 2. -

-
-

136. seekp, seekg setting wrong streams?

Section: 27.6.1.3 [lib.istream.unformatted]  Status: WP  Submitter: Howard Hinnant  Date: 6 Mar 1999

-

I may be misunderstanding the intent, but should not seekg set only -the input stream and seekp set only the output stream? The description -seems to say that each should set both input and output streams. If -that's really the intent, I withdraw this proposal.

-

Proposed resolution:

-

In section 27.6.1.3 change:

- -
basic_istream<charT,traits>& seekg(pos_type pos);
-Effects: If fail() != true, executes rdbuf()->pubseekpos(pos). 
- -

To:

- -
basic_istream<charT,traits>& seekg(pos_type pos);
-Effects: If fail() != true, executes rdbuf()->pubseekpos(pos, ios_base::in). 
- -

In section 27.6.1.3 change:

- -
basic_istream<charT,traits>& seekg(off_type& off, ios_base::seekdir dir);
-Effects: If fail() != true, executes rdbuf()->pubseekoff(off, dir). 
- -

To:

- -
basic_istream<charT,traits>& seekg(off_type& off, ios_base::seekdir dir);
-Effects: If fail() != true, executes rdbuf()->pubseekoff(off, dir, ios_base::in). 
- -

In section 27.6.2.4, paragraph 2 change:

- -
-2- Effects: If fail() != true, executes rdbuf()->pubseekpos(pos). 
- -

To:

- -
-2- Effects: If fail() != true, executes rdbuf()->pubseekpos(pos, ios_base::out). 
- -

In section 27.6.2.4, paragraph 4 change:

- -
-4- Effects: If fail() != true, executes rdbuf()->pubseekoff(off, dir). 
- -

To:

- -
-4- Effects: If fail() != true, executes rdbuf()->pubseekoff(off, dir, ios_base::out). 
- -

[Dublin: Dietmar Kühl thinks this is probably correct, but would -like the opinion of more iostream experts before taking action.]

- -

[Tokyo: Reviewed by the LWG. PJP noted that although his docs are -incorrect, his implementation already implements the Proposed -Resolution.]

- -

[Post-Tokyo: Matt Austern comments:
-Is it a problem with basic_istream and basic_ostream, or is it a problem -with basic_stringbuf? -We could resolve the issue either by changing basic_istream and -basic_ostream, or by changing basic_stringbuf. I prefer the latter -change (or maybe both changes): I don't see any reason for the standard to -require that std::stringbuf s(std::string("foo"), std::ios_base::in); -s.pubseekoff(0, std::ios_base::beg); must fail.
-This requirement is a bit weird. There's no similar requirement -for basic_streambuf<>::seekpos, or for basic_filebuf<>::seekoff or -basic_filebuf<>::seekpos.]

-
-

137. Do use_facet and has_facet look in the global locale?

Section: 22.1.1 [lib.locale]  Status: TC  Submitter: Angelika Langer  Date: 17 Mar 1999

-

Section 22.1.1 [lib.locale] says:

- -

-4- In the call to use_facet<Facet>(loc), the type argument -chooses a facet, making available all members of the named type. If -Facet is not present in a locale (or, failing that, in the global -locale), it throws the standard exception bad_cast. A C++ program can -check if a locale implements a particular facet with the template -function has_facet<Facet>().

- -

This contradicts the specification given in section -22.1.2 [lib.locale.global.templates]: -

-template <class  Facet> const  Facet& use_facet(const -locale&  loc);
-
--1- Get a reference to a facet of a locale.
--2- Returns: a reference to the corresponding facet of loc, if present.
--3- Throws: bad_cast if has_facet<Facet>(loc) is false.
--4- Notes: The reference returned remains valid at least as long as any copy of loc exists -

-

Proposed resolution:

-

Remove the phrase "(or, failing that, in the global locale)" -from section 22.1.1.

-

Rationale:

-

Needed for consistency with the way locales are handled elsewhere -in the standard.

-
-

139. Optional sequence operation table description unclear

Section: 23.1.1 [lib.sequence.reqmts]  Status: TC  Submitter: Andrew Koenig  Date: 30 Mar 1999

-

The sentence introducing the Optional sequence operation table -(23.1.1 paragraph 12) has two problems:

- -

A. It says ``The operations in table 68 are provided only for the containers for which -they take constant time.''
-
-That could be interpreted in two ways, one of them being ``Even though table 68 shows -particular operations as being provided, implementations are free to omit them if they -cannot implement them in constant time.''
-
-B. That paragraph says nothing about amortized constant time, and it should. 

-

Proposed resolution:

-

Replace the wording in 23.1.1 paragraph 12  which begins ``The operations in table 68 are provided only..." -with:

- -
-

Table 68 lists sequence operations that are provided for some types of sequential - containers but not others. An implementation shall provide these operations for all - container types shown in the ``container'' column, and shall implement them so as to take - amortized constant time.

-
-
-

141. basic_string::find_last_of, find_last_not_of say pos instead of xpos

Section: 21.3.6.4 [lib.string::find.last.of], 21.3.6.6 [lib.string::find.last.not.of]  Status: TC  Submitter: Arch Robison  Date: 28 Apr 1999

-

Sections 21.3.6.4 paragraph 1 and 21.3.6.6 paragraph 1 surely have misprints where they -say:
-
-— xpos <= pos and pos < size();

- -

Surely the document meant to say ``xpos < size()'' in both places.

- -

[Judy Ward also sent in this issue for 21.3.6.4 with the same -proposed resolution.]

-

Proposed resolution:

-

Change Sections 21.3.6.4 paragraph 1 and 21.3.6.6 paragraph 1, the line which says:
-
-— xpos <= pos and pos < size();
-
-
to:
-
-
xpos <= pos and xpos < size();

-
-

142. lexicographical_compare complexity wrong

Section: 25.3.8 [lib.alg.lex.comparison]  Status: TC  Submitter: Howard Hinnant  Date: 20 Jun 1999

-

The lexicographical_compare complexity is specified as:
-
-     "At most min((last1 - first1), (last2 - first2)) -applications of the corresponding comparison."
-
-The best I can do is twice that expensive.

- -

Nicolai Josuttis comments in lib-6862: You mean, to check for -equality you have to check both < and >? Yes, IMO you are -right! (and Matt states this complexity in his book)

- -

Proposed resolution:

-

Change 25.3.8 [lib.alg.lex.comparison] complexity to:

-
- At most 2*min((last1 - first1), (last2 - first2)) - applications of the corresponding comparison. -
- -

Change the example at the end of paragraph 3 to read:

-
- [Example:
-
-     for ( ; first1 != last1 && first2 != last2 ; - ++first1, ++first2) {
-       if (*first1 < *first2) return true;
-       if (*first2 < *first1) return false;
-     }
-     return first1 == last1 && first2 != last2;
-    
- --end example] -
-
-

144. Deque constructor complexity wrong

Section: 23.2.1.1 [lib.deque.cons]  Status: TC  Submitter: Herb Sutter  Date: 9 May 1999

-

In 23.2.1.1 paragraph 6, the deque ctor that takes an iterator range appears -to have complexity requirements which are incorrect, and which contradict the -complexity requirements for insert(). I suspect that the text in question, -below, was taken from vector:

-
-

Complexity: If the iterators first and last are forward iterators, - bidirectional iterators, or random access iterators the constructor makes only - N calls to the copy constructor, and performs no reallocations, where N is - last - first.

-
-

The word "reallocations" does not really apply to deque. Further, -all of the following appears to be spurious:

-
-

It makes at most 2N calls to the copy constructor of T and log N - reallocations if they are input iterators.1)

-

1) The complexity is greater in the case of input iterators because each - element must be added individually: it is impossible to determine the distance - between first abd last before doing the copying.

-
-

This makes perfect sense for vector, but not for deque. Why should deque gain -an efficiency advantage from knowing in advance the number of elements to -insert?

-

Proposed resolution:

-

In 23.2.1.1 paragraph 6, replace the Complexity description, including the -footnote, with the following text (which also corrects the "abd" -typo):

-
-

Complexity: Makes last - first calls to the copy constructor of T.

-
-
-

146. complex<T> Inserter and Extractor need sentries

Section: 26.2.6 [lib.complex.ops]  Status: TC  Submitter: Angelika Langer  Date: 12 May 1999

-

The extractor for complex numbers is specified as: 

- -
- -

template<class T, class charT, class traits> 
- basic_istream<charT, traits>& 
- operator>>(basic_istream<charT, traits>& is, complex<T>& x);

-Effects: Extracts a complex number x of the form: u, (u), or (u,v), -where u is the real part and v is the imaginary part -(lib.istream.formatted). 
-Requires: The input values be convertible to T. If bad input is -encountered, calls is.setstate(ios::failbit) (which may throw -ios::failure (lib.iostate.flags). 
-Returns: is .

- -
-

Is it intended that the extractor for complex numbers does not skip -whitespace, unlike all other extractors in the standard library do? -Shouldn't a sentry be used? 
-
-The inserter for complex numbers is specified as:

- -
- -

template<class T, class charT, class traits> 
- basic_ostream<charT, traits>& 
- operator<<(basic_ostream<charT, traits>& o, const complex<T>& x);
-
-Effects: inserts the complex number x onto the stream o as if it were implemented as follows:
-
- template<class T, class charT, class traits> 
- basic_ostream<charT, traits>& 
- operator<<(basic_ostream<charT, traits>& o, const complex<T>& x) 
- { 
- basic_ostringstream<charT, traits> s; 
- s.flags(o.flags()); 
- s.imbue(o.getloc()); 
- s.precision(o.precision()); 
- s << '(' << x.real() << "," << x.imag() << ')'; 
- return o << s.str(); 
- }

- -
- -

Is it intended that the inserter for complex numbers ignores the -field width and does not do any padding? If, with the suggested -implementation above, the field width were set in the stream then the -opening parentheses would be adjusted, but the rest not, because the -field width is reset to zero after each insertion.

- -

I think that both operations should use sentries, for sake of -consistency with the other inserters and extractors in the -library. Regarding the issue of padding in the inserter, I don't know -what the intent was. 

-

Proposed resolution:

-

After 26.2.6 [lib.complex.ops] paragraph 14 (operator>>), add a -Notes clause:

- -
- -

Notes: This extraction is performed as a series of simpler -extractions. Therefore, the skipping of whitespace is specified to be the -same for each of the simpler extractions.

- -
-

Rationale:

-

For extractors, the note is added to make it clear that skipping whitespace -follows an "all-or-none" rule.

- -

For inserters, the LWG believes there is no defect; the standard is correct -as written.

-
-

147. Library Intro refers to global functions that aren't global

Section: 17.4.4.3 [lib.global.functions]  Status: TC  Submitter: Lois Goldthwaite  Date: 4 Jun 1999

-

The library had many global functions until 17.4.1.1 [lib.contents] -paragraph 2 was added:

- -
- -

All library entities except macros, operator new and operator -delete are defined within the namespace std or namespaces nested -within namespace std.

- -
- -

It appears "global function" was never updated in the following:

- -
- -

17.4.4.3 - Global functions [lib.global.functions]
-
--1- It is unspecified whether any global functions in the C++ Standard -Library are defined as inline (dcl.fct.spec).
-
--2- A call to a global function signature described in Clauses -lib.language.support through lib.input.output behaves the same as if -the implementation declares no additional global function -signatures.*
-
- [Footnote: A valid C++ program always calls the expected library - global function. An implementation may also define additional - global functions that would otherwise not be called by a valid C++ - program. --- end footnote]
-
--3- A global function cannot be declared by the implementation as -taking additional default arguments. 
-
-17.4.4.4 - Member functions [lib.member.functions]
-
--2- An implementation can declare additional non-virtual member -function signatures within a class:

- -
- -

-- by adding arguments with default values to a member function -signature; The same latitude does not extend to the implementation of -virtual or global functions, however.

- -
-
-

Proposed resolution:

-

Change "global" to "global or non-member" in:

-
-

17.4.4.3 [lib.global.functions] section title,
- 17.4.4.3 [lib.global.functions] para 1,
- 17.4.4.3 [lib.global.functions] para 2 in 2 places plus 2 - places in the footnote,
- 17.4.4.3 [lib.global.functions] para 3,
- 17.4.4.4 [lib.member.functions] para 2

-
-

Rationale:

-

-Because operator new and delete are global, the proposed resolution -was changed from "non-member" to "global or non-member. -

-
-

148. Functions in the example facet BoolNames should be const

Section: 22.2.8 [lib.facets.examples]  Status: TC  Submitter: Jeremy Siek  Date: 3 Jun 1999

-

In 22.2.8 [lib.facets.examples] paragraph 13, the do_truename() and -do_falsename() functions in the example facet BoolNames should be -const. The functions they are overriding in -numpunct_byname<char> are const.

-

Proposed resolution:

-

In 22.2.8 [lib.facets.examples] paragraph 13, insert "const" in -two places:

-
-

string do_truename() const { return "Oui Oui!"; }
- string do_falsename() const { return "Mais Non!"; }

-
-
-

150. Find_first_of says integer instead of iterator

Section: 25.1.4 [lib.alg.find.first.of]  Status: TC  Submitter: Matt McClure  Date: 30 Jun 1999

-

Proposed resolution:

-

Change 25.1.4 [lib.alg.find.first.of] paragraph 2 from:

- -
-

Returns: The first iterator i in the range [first1, last1) such -that for some integer j in the range [first2, last2) ...

-
- -

to:

- -
-

Returns: The first iterator i in the range [first1, last1) such -that for some iterator j in the range [first2, last2) ...

-
-
-

151. Can't currently clear() empty container

Section: 23.1.1 [lib.sequence.reqmts]  Status: TC  Submitter: Ed Brey  Date: 21 Jun 1999

-

For both sequences and associative containers, a.clear() has the -semantics of erase(a.begin(),a.end()), which is undefined for an empty -container since erase(q1,q2) requires that q1 be dereferenceable -(23.1.1,3 and 23.1.2,7). When the container is empty, a.begin() is -not dereferenceable.
-
-The requirement that q1 be unconditionally dereferenceable causes many -operations to be intuitively undefined, of which clearing an empty -container is probably the most dire.
-
-Since q1 and q2 are only referenced in the range [q1, q2), and [q1, -q2) is required to be a valid range, stating that q1 and q2 must be -iterators or certain kinds of iterators is unnecessary. -

-

Proposed resolution:

-

In 23.1.1, paragraph 3, change:

-
-

p and q2 denote valid iterators to a, q and q1 denote valid dereferenceable iterators to a, [q1, q2) denotes a valid range

-
-

to:

-
-

p denotes a valid iterator to a, q denotes a valid dereferenceable iterator to a, [q1, q2) denotes a valid range - in a

-
-

In 23.1.2, paragraph 7, change:

-
-

p and q2 are valid iterators to a, q and q1 are valid dereferenceable - iterators to a, [q1, q2) is a valid range

-
-

to

-
-

p is a valid iterator to a, q is a valid dereferenceable iterator to a, [q1, q2) is a valid range - into a

-
-
-

152. Typo in scan_is() semantics

Section: 22.2.1.1.2 [lib.locale.ctype.virtuals]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The semantics of scan_is() (paragraphs 4 and 6) is not exactly described -because there is no function is() which only takes a character as -argument. Also, in the effects clause (paragraph 3), the semantic is also kept -vague.

-

Proposed resolution:

-

In 22.2.1.1.2 [lib.locale.ctype.virtuals] paragraphs 4 and 6, change the returns -clause from:

-
-

"... such that is(*p) -would..."

-
-

to:  "... such that is(m, *p) - would...."

-
-

153. Typo in narrow() semantics

Section: 22.2.1.3.2 [lib.facet.ctype.char.members]  Status: WP  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The description of the array version of narrow() (in -paragraph 11) is flawed: There is no member do_narrow() which -takes only three arguments because in addition to the range a default -character is needed.

- -

Additionally, for both widen and narrow we have -two signatures followed by a Returns clause that only addresses -one of them.

- -

Proposed resolution:

-

Change the returns clause in 22.2.1.3.2 [lib.facet.ctype.char.members] -paragraph 10 from:

-

    Returns: do_widen(low, high, to).

- -

to:

-

    Returns: do_widen(c) or do_widen(low, high, to), -respectively.

- -

Change 22.2.1.3.2 [lib.facet.ctype.char.members] paragraph 10 and 11 from:

-
        char        narrow(char c, char /*dfault*/) const;
-        const char* narrow(const char* low, const char* high,
-                           char /*dfault*/, char* to) const;
-
        Returns: do_narrow(low, high, to).
-

to:

-
        char        narrow(char c, char dfault) const;
-        const char* narrow(const char* low, const char* high,
-                           char dfault, char* to) const;
-
        Returns: do_narrow(c, dfault) or
-                 do_narrow(low, high, dfault, to), respectively.
- -

[Kona: 1) the problem occurs in additional places, 2) a user -defined version could be different.]

- -

[Post-Tokyo: Dietmar provided the above wording at the request of -the LWG. He could find no other places the problem occurred. He -asks for clarification of the Kona "a user defined -version..." comment above. Perhaps it was a circuitous way of -saying "dfault" needed to be uncommented?]

- -

[Post-Toronto: the issues list maintainer has merged in the -proposed resolution from issue 207, which addresses the -same paragraphs.]

-
-

154. Missing double specifier for do_get() -

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The table in paragraph 7 for the length modifier does not list the length -modifier l to be applied if the type is double. Thus, the -standard asks the implementation to do undefined things when using scanf() -(the missing length modifier for scanf() when scanning doubles -is actually a problem I found quite often in production code, too).

-

Proposed resolution:

-

In 22.2.2.1.2 [lib.facet.num.get.virtuals], paragraph 7, add a row in the Length -Modifier table to say that for double a length modifier -l is to be used.

-

Rationale:

-

The standard makes an embarrassing beginner's mistake.

-
-

155. Typo in naming the class defining the class Init -

Section: 27.3 [lib.iostream.objects]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

There are conflicting statements about where the class -Init is defined. According to 27.3 [lib.iostream.objects] paragraph 2 -it is defined as basic_ios::Init, according to 27.4.2 [lib.ios.base] it is defined as ios_base::Init.

-

Proposed resolution:

-

Change 27.3 [lib.iostream.objects] paragraph 2 from -"basic_ios::Init" to -"ios_base::Init".

-

Rationale:

-

Although not strictly wrong, the standard was misleading enough to warrant -the change.

-
-

156. Typo in imbue() description

Section: 27.4.2.3 [lib.ios.base.locales]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

There is a small discrepancy between the declarations of -imbue(): in 27.4.2 [lib.ios.base] the argument is passed as -locale const& (correct), in 27.4.2.3 [lib.ios.base.locales] it -is passed as locale const (wrong).

-

Proposed resolution:

-

In 27.4.2.3 [lib.ios.base.locales] change the imbue argument -from "locale const" to "locale -const&".

-
-

158. Underspecified semantics for setbuf() -

Section: 27.5.2.4.2 [lib.streambuf.virt.buffer]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The default behavior of setbuf() is described only for the -situation that gptr() != 0 && gptr() != egptr(): -namely to do nothing. What has to be done in other situations  -is not described although there is actually only one reasonable -approach, namely to do nothing, too.

- -

Since changing the buffer would almost certainly mess up most -buffer management of derived classes unless these classes do it -themselves, the default behavior of setbuf() should always be -to do nothing.

-

Proposed resolution:

-

Change 27.5.2.4.2 [lib.streambuf.virt.buffer], paragraph 3, Default behavior, -to: "Default behavior: Does nothing. Returns this."

-
-

159. Strange use of underflow() -

Section: 27.5.2.4.3 [lib.streambuf.virt.get]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The description of the meaning of the result of -showmanyc() seems to be rather strange: It uses calls to -underflow(). Using underflow() is strange because -this function only reads the current character but does not extract -it, uflow() would extract the current character. This should -be fixed to use sbumpc() instead.

-

Proposed resolution:

-

Change 27.5.2.4.3 [lib.streambuf.virt.get] paragraph 1, -showmanyc()returns clause, by replacing the word -"supplied" with the words "extracted from the -stream".

-
-

160. Typo: Use of non-existing function exception() -

Section: 27.6.1.1 [lib.istream]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The paragraph 4 refers to the function exception() which -is not defined. Probably, the referred function is -basic_ios<>::exceptions().

-

Proposed resolution:

-

In 27.6.1.1 [lib.istream], 27.6.1.3 [lib.istream.unformatted], paragraph 1, -27.6.2.1 [lib.ostream], paragraph 3, and 27.6.2.5.1 [lib.ostream.formatted.reqmts], -paragraph 1, change "exception()" to -"exceptions()".

- -

[Note to Editor: "exceptions" with an "s" -is the correct spelling.]

-
-

161. Typo: istream_iterator vs. istreambuf_iterator -

Section: 27.6.1.2.2 [lib.istream.formatted.arithmetic]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The note in the second paragraph pretends that the first argument -is an object of type istream_iterator. This is wrong: It is -an object of type istreambuf_iterator.

-

Proposed resolution:

-

Change 27.6.1.2.2 [lib.istream.formatted.arithmetic] from:

-
-

The first argument provides an object of the istream_iterator class...

-
-

to

-
-

The first argument provides an object of the istreambuf_iterator class...

-
-
-

164. do_put() has apparently unused fill argument

Section: 22.2.5.3.2 [lib.locale.time.put.virtuals]  Status: TC  Submitter: Angelika Langer  Date: 23 Jul 1999

-

In 22.2.5.3.2 [lib.locale.time.put.virtuals] the do_put() function is specified -as taking a fill character as an argument, but the description of the -function does not say whether the character is used at all and, if so, -in which way. The same holds for any format control parameters that -are accessible through the ios_base& argument, such as the -adjustment or the field width. Is strftime() supposed to use the fill -character in any way? In any case, the specification of -time_put.do_put() looks inconsistent to me.

Is the -signature of do_put() wrong, or is the effects clause incomplete?

-

Proposed resolution:

-

Add the following note after 22.2.5.3.2 [lib.locale.time.put.virtuals] -paragraph 2:

-
-

[Note: the fill argument may be used in the implementation-defined formats, or by derivations. A space character is a reasonable default - for this argument. --end Note]

-
-

Rationale:

-

The LWG felt that while the normative text was correct, -users need some guidance on what to pass for the fill -argument since the standard doesn't say how it's used.

-
-

165. xsputn(), pubsync() never called by basic_ostream members?

Section: 27.6.2.1 [lib.ostream]  Status: WP  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

Paragraph 2 explicitly states that none of the basic_ostream -functions falling into one of the groups "formatted output functions" -and "unformatted output functions" calls any stream buffer function -which might call a virtual function other than overflow(). Basically -this is fine but this implies that sputn() (this function would call -the virtual function xsputn()) is never called by any of the standard -output functions. Is this really intended? At minimum it would be convenient to -call xsputn() for strings... Also, the statement that overflow() -is the only virtual member of basic_streambuf called is in conflict -with the definition of flush() which calls rdbuf()->pubsync() -and thereby the virtual function sync() (flush() is listed -under "unformatted output functions").

-

In addition, I guess that the sentence starting with "They may use other -public members of basic_ostream ..." probably was intended to -start with "They may use other public members of basic_streamuf..." -although the problem with the virtual members exists in both cases.

-

I see two obvious resolutions:

-
    -
  1. state in a footnote that this means that xsputn() will never be - called by any ostream member and that this is intended.
  2. -
  3. relax the restriction and allow calling overflow() and xsputn(). - Of course, the problem with flush() has to be resolved in some way.
  4. -
-

Proposed resolution:

-

Change the last sentence of 27.6.2.1 (lib.ostream) paragraph 2 from:

-
-

They may use other public members of basic_ostream except that they do not - invoke any virtual members of rdbuf() except overflow().

-
-

to:

-
-

They may use other public members of basic_ostream except that they shall - not invoke any virtual members of rdbuf() except overflow(), xsputn(), and - sync().

-
- -

[Kona: the LWG believes this is a problem. Wish to ask Jerry or -PJP why the standard is written this way.]

- -

[Post-Tokyo: Dietmar supplied wording at the request of the -LWG. He comments: The rules can be made a little bit more specific if -necessary be explicitly spelling out what virtuals are allowed to be -called from what functions and eg to state specifically that flush() -is allowed to call sync() while other functions are not.]

-
-

167. Improper use of traits_type::length() -

Section: 27.6.2.5.4 [lib.ostream.inserters.character]  Status: WP  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

Paragraph 4 states that the length is determined using -traits::length(s). Unfortunately, this function is not -defined for example if the character type is wchar_t and the -type of s is char const*. Similar problems exist if -the character type is char and the type of s is -either signed char const* or unsigned char -const*.

-

Proposed resolution:

-

Change 27.6.2.5.4 [lib.ostream.inserters.character] paragraph 4 from:

-
-

Effects: Behaves like an formatted inserter (as described in - lib.ostream.formatted.reqmts) of out. After a sentry object is - constructed it inserts characters. The number of characters starting - at s to be inserted is traits::length(s). Padding is determined as - described in lib.facet.num.put.virtuals. The traits::length(s) - characters starting at s are widened using out.widen - (lib.basic.ios.members). The widened characters and any required - padding are inserted into out. Calls width(0).

-
-

to:

-
-

Effects: Behaves like a formatted inserter (as described in - lib.ostream.formatted.reqmts) of out. After a sentry object is - constructed it inserts n characters starting at s, - where n is the number that would be computed as if by:

-
    -
  • traits::length(s) for the overload where the first argument is of - type basic_ostream<charT, traits>& and the second is - of type const charT*, and also for the overload where the first - argument is of type basic_ostream<char, traits>& and - the second is of type const char*.
  • -
  • std::char_traits<char>::length(s) - for the overload where the first argument is of type - basic_ostream<charT, traits>& and the second is of type - const char*.
  • -
  • traits::length(reinterpret_cast<const char*>(s)) - for the other two overloads.
  • -
-

Padding is determined as described in - lib.facet.num.put.virtuals. The n characters starting at - s are widened using out.widen (lib.basic.ios.members). The - widened characters and any required padding are inserted into - out. Calls width(0).

-
- -

[Santa Cruz: Matt supplied new wording]

- -

[Kona: changed "where n is" to " where n is the - number that would be computed as if by"]

- -

Rationale:

-

We have five separate cases. In two of them we can use the -user-supplied traits class without any fuss. In the other three we -try to use something as close to that user-supplied class as possible. -In two cases we've got a traits class that's appropriate for -char and what we've got is a const signed char* or a const -unsigned char*; that's close enough so we can just use a reinterpret -cast, and continue to use the user-supplied traits class. Finally, -there's one case where we just have to give up: where we've got a -traits class for some arbitrary charT type, and we somehow have to -deal with a const char*. There's nothing better to do but fall back -to char_traits<char>

-
-

168. Typo: formatted vs. unformatted

Section: 27.6.2.6 [lib.ostream.unformatted]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The first paragraph begins with a descriptions what has to be done -in formatted output functions. Probably this is a typo and the -paragraph really want to describe unformatted output functions...

-

Proposed resolution:

-

In 27.6.2.6 [lib.ostream.unformatted] paragraph 1, the first and last -sentences, change the word "formatted" to -"unformatted":

-
-

"Each unformatted output function begins ..."
- "... value specified for the unformatted output - function."

-
-
-

169. Bad efficiency of overflow() mandated

Section: 27.7.1.3 [lib.stringbuf.virtuals]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

Paragraph 8, Notes, of this section seems to mandate an extremely -inefficient way of buffer handling for basic_stringbuf, -especially in view of the restriction that basic_ostream -member functions are not allowed to use xsputn() (see 27.6.2.1 [lib.ostream]): For each character to be inserted, a new buffer -is to be created.

-

Of course, the resolution below requires some handling of -simultaneous input and output since it is no longer possible to update -egptr() whenever epptr() is changed. A possible -solution is to handle this in underflow().

-

Proposed resolution:

-

In 27.7.1.3 [lib.stringbuf.virtuals] paragraph 8, Notes, insert the words -"at least" as in the following:

-
-

To make a write position available, the function reallocates (or initially - allocates) an array object with a sufficient number of elements to hold the - current array object (if any), plus at least one additional write - position.

-
-
-

170. Inconsistent definition of traits_type -

Section: 27.7.4 [lib.stringstream]  Status: TC  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

The classes basic_stringstream (27.7.4 [lib.stringstream]), -basic_istringstream (27.7.2 [lib.istringstream]), and -basic_ostringstream (27.7.3 [lib.ostringstream]) are inconsistent -in their definition of the type traits_type: For -istringstream, this type is defined, for the other two it is -not. This should be consistent.

-

Proposed resolution:

-

Proposed resolution:

To the declarations of -basic_ostringstream (27.7.3 [lib.ostringstream]) and -basic_stringstream (27.7.4 [lib.stringstream]) add:

-
-
typedef traits traits_type;
-
-
-

171. Strange seekpos() semantics due to joint position

Section: 27.8.1.4 [lib.filebuf.virtuals]  Status: WP  Submitter: Dietmar Kühl  Date: 20 Jul 1999

-

Overridden virtual functions, seekpos()

In 27.8.1.1 [lib.filebuf] paragraph 3, it is stated that a joint input and -output position is maintained by basic_filebuf. Still, the -description of seekpos() seems to talk about different file -positions. In particular, it is unclear (at least to me) what is -supposed to happen to the output buffer (if there is one) if only the -input position is changed. The standard seems to mandate that the -output buffer is kept and processed as if there was no positioning of -the output position (by changing the input position). Of course, this -can be exactly what you want if the flag ios_base::ate is -set. However, I think, the standard should say something like -this:

-
    -
  • If (which & mode) == 0 neither read nor write position is - changed and the call fails. Otherwise, the joint read and write position is - altered to correspond to sp.
  • -
  • If there is an output buffer, the output sequences is updated and any - unshift sequence is written before the position is altered.
  • -
  • If there is an input buffer, the input sequence is updated after the - position is altered.
  • -
-

Plus the appropriate error handling, that is...

-

Proposed resolution:

-

Change the unnumbered paragraph in 27.8.1.4 (lib.filebuf.virtuals) before -paragraph 14 from:

-
-

pos_type seekpos(pos_type sp, ios_base::openmode = ios_base::in | - ios_base::out);

-

Alters the file position, if possible, to correspond to the position stored - in sp (as described below).

-

- if (which&ios_base::in)!=0, set the file position to sp, then update - the input sequence

-

- if (which&ios_base::out)!=0, then update the output sequence, write - any unshift sequence, and set the file position to sp.

-
-

to:

-
-

pos_type seekpos(pos_type sp, ios_base::openmode = ios_base::in | - ios_base::out);

-

Alters the file position, if possible, to correspond to the position stored - in sp (as described below). Altering the file position performs as follows:

-

1. if (om & ios_base::out)!=0, then update the output sequence and - write any unshift sequence;

-

2. set the file position to sp;

-

3. if (om & ios_base::in)!=0, then update the input sequence;

-

where om is the open mode passed to the last call to open(). The operation - fails if is_open() returns false.

-
- -

[Kona: Dietmar is working on a proposed resolution.]

-

[Post-Tokyo: Dietmar supplied the above wording.]

-
-

172. Inconsistent types for basic_istream::ignore() -

Section: 27.6.1.3 [lib.istream.unformatted]  Status: TC  Submitter: Greg Comeau, Dietmar Kühl  Date: 23 Jul 1999

-

In 27.6.1.1 [lib.istream] the function -ignore() gets an object of type streamsize as first -argument. However, in 27.6.1.3 [lib.istream.unformatted] -paragraph 23 the first argument is of type int.

- -

As far as I can see this is not really a contradiction because -everything is consistent if streamsize is typedef to be -int. However, this is almost certainly not what was -intended. The same thing happened to basic_filebuf::setbuf(), -as described in issue 173.

- -

Darin Adler also -submitted this issue, commenting: Either 27.6.1.1 should be modified -to show a first parameter of type int, or 27.6.1.3 should be modified -to show a first parameter of type streamsize and use -numeric_limits<streamsize>::max.

-

Proposed resolution:

-

In 27.6.1.3 [lib.istream.unformatted] paragraph 23 and 24, change both uses -of int in the description of ignore() to -streamsize.

-
-

173. Inconsistent types for basic_filebuf::setbuf() -

Section: 27.8.1.4 [lib.filebuf.virtuals]  Status: TC  Submitter: Greg Comeau, Dietmar Kühl  Date: 23 Jul 1999

- -

-In 27.8.1.1 [lib.filebuf] the function setbuf() gets an -object of type streamsize as second argument. However, in -27.8.1.4 [lib.filebuf.virtuals] paragraph 9 the second argument is of type -int. -

- -

-As far as I can see this is not really a contradiction because -everything is consistent if streamsize is typedef to be -int. However, this is almost certainly not what was -intended. The same thing happened to basic_istream::ignore(), -as described in issue 172. -

- -

Proposed resolution:

-

In 27.8.1.4 [lib.filebuf.virtuals] paragraph 9, change all uses of -int in the description of setbuf() to -streamsize.

-
-

174. Typo: OFF_T vs. POS_T -

Section: D.6 [depr.ios.members]  Status: TC  Submitter: Dietmar Kühl  Date: 23 Jul 1999

-

According to paragraph 1 of this section, streampos is the -type OFF_T, the same type as streamoff. However, in -paragraph 6 the streampos gets the type POS_T

-

Proposed resolution:

-

Change D.6 [depr.ios.members] paragraph 1 from "typedef -OFF_T streampos;" to "typedef POS_T -streampos;"

-
-

175. Ambiguity for basic_streambuf::pubseekpos() and a few other functions.

Section: D.6 [depr.ios.members]  Status: TC  Submitter: Dietmar Kühl  Date: 23 Jul 1999

-

According to paragraph 8 of this section, the methods -basic_streambuf::pubseekpos(), -basic_ifstream::open(), and basic_ofstream::open -"may" be overloaded by a version of this function taking the -type ios_base::open_mode as last argument argument instead of -ios_base::openmode (ios_base::open_mode is defined -in this section to be an alias for one of the integral types). The -clause specifies, that the last argument has a default argument in -three cases. However, this generates an ambiguity with the overloaded -version because now the arguments are absolutely identical if the last -argument is not specified.

-

Proposed resolution:

-

In D.6 [depr.ios.members] paragraph 8, remove the default arguments for -basic_streambuf::pubseekpos(), -basic_ifstream::open(), and -basic_ofstream::open().

-
-

176. exceptions() in ios_base...?

Section: D.6 [depr.ios.members]  Status: TC  Submitter: Dietmar Kühl  Date: 23 Jul 1999

-

The "overload" for the function exceptions() in -paragraph 8 gives the impression that there is another function of -this function defined in class ios_base. However, this is not -the case. Thus, it is hard to tell how the semantics (paragraph 9) can -be implemented: "Call the corresponding member function specified -in clause 27 [lib.input.output]."

-

Proposed resolution:

-

In D.6 [depr.ios.members] paragraph 8, move the declaration of the -function exceptions()into class basic_ios.

-
-

179. Comparison of const_iterators to iterators doesn't work

Section: 23.1 [lib.container.requirements]  Status: WP  Submitter: Judy Ward  Date: 2 Jul 1998

-

Currently the following will not compile on two well-known standard -library implementations:

- -
-
#include <set>
-using namespace std;
-
-void f(const set<int> &s)
-{
-  set<int>::iterator i;
-  if (i==s.end()); // s.end() returns a const_iterator
-}
-
- -

-The reason this doesn't compile is because operator== was implemented -as a member function of the nested classes set:iterator and -set::const_iterator, and there is no conversion from const_iterator to -iterator. Surprisingly, (s.end() == i) does work, though, because of -the conversion from iterator to const_iterator. -

- -

-I don't see a requirement anywhere in the standard that this must -work. Should there be one? If so, I think the requirement would need -to be added to the tables in section 24.1.1. I'm not sure about the -wording. If this requirement existed in the standard, I would think -that implementors would have to make the comparison operators -non-member functions.

- -

This issues was also raised on comp.std.c++ by Darin -Adler.  The example given was:

- -
-
bool check_equal(std::deque<int>::iterator i,
-std::deque<int>::const_iterator ci)
-{
-return i == ci;
-}
-
- -

Comment from John Potter:

-
-

- In case nobody has noticed, accepting it will break reverse_iterator. -

- -

- The fix is to make the comparison operators templated on two types. -

- -
    template <class Iterator1, class Iterator2>
-    bool operator== (reverse_iterator<Iterator1> const& x,
-                     reverse_iterator<Iterator2> const& y);
-    
- -

- Obviously: return x.base() == y.base(); -

- -

- Currently, no reverse_iterator to const_reverse_iterator compares are - valid. -

- -

- BTW, I think the issue is in support of bad code. Compares should be - between two iterators of the same type. All std::algorithms require - the begin and end iterators to be of the same type. -

-
-

Proposed resolution:

-

Insert this paragraph after 23.1 [lib.container.requirements] paragraph 7:

-
-

In the expressions

-
    i == j
-    i != j
-    i < j
-    i <= j
-    i >= j
-    i > j
-    i - j
-  
-

Where i and j denote objects of a container's iterator type, - either or both may be replaced by an object of the container's - const_iterator type referring to the same element with no - change in semantics.

-
- -

[post-Toronto: Judy supplied a proposed resolution saying that -iterator and const_iterator could be freely mixed in -iterator comparison and difference operations.]

- -

[Redmond: Dave and Howard supplied a new proposed resolution which -explicitly listed expressions; there was concern that the previous -proposed resolution was too informal.]

-

Rationale:

-

-The LWG believes it is clear that the above wording applies only to -the nested types X::iterator and X::const_iterator, -where X is a container. There is no requirement that -X::reverse_iterator and X::const_reverse_iterator -can be mixed. If mixing them is considered important, that's a -separate issue. (Issue 280.) -

-
-

181. make_pair() unintended behavior

Section: 20.2.2 [lib.pairs]  Status: TC  Submitter: Andrew Koenig  Date: 3 Aug 1999

-

The claim has surfaced in Usenet that expressions such as
-
-       make_pair("abc", 3)
-
-are illegal, notwithstanding their use in examples, because template instantiation tries to bind the first template -parameter to const char (&)[4], which type is uncopyable.
-
-I doubt anyone intended that behavior... -

-

Proposed resolution:

-

In 20.2 [lib.utility], paragraph 1 change the following -declaration of make_pair():

-
-
template <class T1, class T2> pair<T1,T2> make_pair(const T1&, const T2&);
-
-

to:

-
-
template <class T1, class T2> pair<T1,T2> make_pair(T1, T2);
-
-

In 20.2.2 [lib.pairs] paragraph 7 and the line before, change:

-
-
template <class T1, class T2>
-pair<T1, T2> make_pair(const T1& x, const T2& y);
-
-

to:

-
-
template <class T1, class T2>
-pair<T1, T2> make_pair(T1 x, T2 y);
-
-

and add the following footnote to the effects clause:

-
-

According to 12.8 [class.copy], an implementation is permitted - to not perform a copy of an argument, thus avoiding unnecessary - copies.

-
-

Rationale:

-

Two potential fixes were suggested by Matt Austern and Dietmar -Kühl, respectively, 1) overloading with array arguments, and 2) use of -a reference_traits class with a specialization for arrays. Andy -Koenig suggested changing to pass by value. In discussion, it appeared -that this was a much smaller change to the standard that the other two -suggestions, and any efficiency concerns were more than offset by the -advantages of the solution. Two implementors reported that the -proposed resolution passed their test suites.

-
-

182. Ambiguous references to size_t

Section: 17 [lib.library]  Status: WP  Submitter: Al Stevens  Date: 15 Aug 1999

-

Many references to size_t throughout the document -omit the std:: namespace qualification.

For -example, 17.4.3.4 [lib.replacement.functions] paragraph 2:

-
-
— operator new(size_t)
-— operator new(size_t, const std::nothrow_t&)
-— operator new[](size_t)
-— operator new[](size_t, const std::nothrow_t&)
-
-

Proposed resolution:

-

In 17.4.3.4 [lib.replacement.functions] paragraph 2: replace:

-
-

- operator new(size_t)
- - operator new(size_t, const std::nothrow_t&)
- - operator new[](size_t)
- - operator new[](size_t, const std::nothrow_t&)

-
-

by:

-
-
- operator new(std::size_t)
-- operator new(std::size_t, const std::nothrow_t&)
-- operator new[](std::size_t)
-- operator new[](std::size_t, const std::nothrow_t&)
-
-

In [lib.allocator.requirements] 20.1.5, paragraph 4: replace:

-
-

The typedef members pointer, const_pointer, size_type, and difference_type - are required to be T*, T const*, size_t, and ptrdiff_t, respectively.

-
-

 by:

-
-

The typedef members pointer, const_pointer, size_type, and difference_type - are required to be T*, T const*, std::size_t, and std::ptrdiff_t, - respectively.

-
-

In [lib.allocator.members] 20.4.1.1, paragraphs 3 and 6: replace:

-
-

3 Notes: Uses ::operator new(size_t) (18.4.1).

-

6 Note: the storage is obtained by calling ::operator new(size_t), but it - is unspecified when or how often this function is called. The use of hint is - unspecified, but intended as an aid to locality if an implementation so - desires.

-
-

by:

-
-

3 Notes: Uses ::operator new(std::size_t) (18.4.1).

-

6 Note: the storage is obtained by calling ::operator new(std::size_t), but - it is unspecified when or how often this function is called. The use of hint - is unspecified, but intended as an aid to locality if an implementation so - desires.

-
-

In [lib.char.traits.require] 21.1.1, paragraph 1: replace:

-
-

In Table 37, X denotes a Traits class defining types and functions for the - character container type CharT; c and d denote values of type CharT; p and q - denote values of type const CharT*; s denotes a value of type CharT*; n, i and - j denote values of type size_t; e and f denote values of type X::int_type; pos - denotes a value of type X::pos_type; and state denotes a value of type X::state_type.

-
-

by:

-
-

In Table 37, X denotes a Traits class defining types and functions for the - character container type CharT; c and d denote values of type CharT; p and q - denote values of type const CharT*; s denotes a value of type CharT*; n, i and - j denote values of type std::size_t; e and f denote values of type X::int_type; - pos denotes a value of type X::pos_type; and state denotes a value of type X::state_type.

-
-

In [lib.char.traits.require] 21.1.1, table 37: replace the return type of -X::length(p): "size_t" by "std::size_t".

-

In [lib.std.iterator.tags] 24.3.3, paragraph 2: replace:
-    typedef ptrdiff_t difference_type;
- by:
-    typedef std::ptrdiff_t difference_type;

-

In [lib.locale.ctype] 22.2.1.1 put namespace std { ...} around the -declaration of template <class charT> class ctype.
-
- In [lib.iterator.traits] 24.3.1, paragraph 2 put namespace std { ...} around the declaration of:
-
-    template<class Iterator> struct iterator_traits
-    template<class T> struct iterator_traits<T*>
-    template<class T> struct iterator_traits<const T*>

-

Rationale:

-

The LWG believes correcting names like size_t and -ptrdiff_t to std::size_t and std::ptrdiff_t -to be essentially editorial. There there can't be another size_t or -ptrdiff_t meant anyway because, according to 17.4.3.1.4 [lib.extern.types],

- -
-For each type T from the Standard C library, the types ::T and std::T -are reserved to the implementation and, when defined, ::T shall be -identical to std::T. -
- -

The issue is treated as a Defect Report to make explicit the Project -Editor's authority to make this change.

- -

[Post-Tokyo: Nico Josuttis provided the above wording at the -request of the LWG.]

- -

[Toronto: This is tangentially related to issue 229, but only tangentially: the intent of this issue is to -address use of the name size_t in contexts outside of -namespace std, such as in the description of ::operator new. -The proposed changes should be reviewed to make sure they are -correct.]

- -

[pre-Copenhagen: Nico has reviewed the changes and believes -them to be correct.]

- -
-

183. I/O stream manipulators don't work for wide character streams

Section: 27.6.3 [lib.std.manip]  Status: WP  Submitter: Andy Sawyer  Date: 7 Jul 1999

-

27.6.3 [lib.std.manip] paragraph 3 says (clause numbering added for -exposition):

-
-

Returns: An object s of unspecified type such that if [1] out is an (instance -of) basic_ostream then the expression out<<s behaves as if f(s) were -called, and if [2] in is an (instance of) basic_istream then the expression -in>>s behaves as if f(s) were called. Where f can be defined as: ios_base& -f(ios_base& str, ios_base::fmtflags mask) { // reset specified flags -str.setf(ios_base::fmtflags(0), mask); return str; } [3] The expression -out<<s has type ostream& and value out. [4] The expression in>>s -has type istream& and value in.

-
-

Given the definitions [1] and [2] for out and in, surely [3] should read: -"The expression out << s has type basic_ostream& ..." and -[4] should read: "The expression in >> s has type basic_istream& -..."

-

If the wording in the standard is correct, I can see no way of implementing -any of the manipulators so that they will work with wide character streams.

-

e.g. wcout << setbase( 16 );

-

Must have value 'wcout' (which makes sense) and type 'ostream&' (which -doesn't).

-

The same "cut'n'paste" type also seems to occur in Paras 4,5,7 and -8. In addition, Para 6 [setfill] has a similar error, but relates only to -ostreams.

-

I'd be happier if there was a better way of saying this, to make it clear -that the value of the expression is "the same specialization of -basic_ostream as out"&

-

Proposed resolution:

-

Replace section 27.6.3 [lib.std.manip] except paragraph 1 with the -following:

-
-

2- The type designated smanip in each of the following function -descriptions is implementation-specified and may be different for each -function.
-
-smanip resetiosflags(ios_base::fmtflags mask);
-
--3- Returns: An object s of unspecified type such that if out is an -instance of basic_ostream<charT,traits> then the expression -out<<s behaves -as if f(s, mask) were called, or if in is an instance of -basic_istream<charT,traits> then the expression in>>s -behaves as if -f(s, mask) were called. The function f can be defined as:*
-
-[Footnote: The expression cin >> resetiosflags(ios_base::skipws) -clears ios_base::skipws in the format flags stored in the -basic_istream<charT,traits> object cin (the same as cin >> -noskipws), and the expression cout << -resetiosflags(ios_base::showbase) clears -ios_base::showbase in the format flags stored in the -basic_ostream<charT,traits> object cout (the same as cout -<< -noshowbase). --- end footnote]
-
-     ios_base& f(ios_base& str, ios_base::fmtflags mask)
-   {
-   // reset specified flags
-   str.setf(ios_base::fmtflags(0), mask);
-   return str;
-   }
-

-The expression out<<s has type basic_ostream<charT,traits>& and value out. -The expression in>>s has type basic_istream<charT,traits>& and value in.
-
smanip setiosflags(ios_base::fmtflags mask);
-
--4- Returns: An object s of unspecified type such that if out is an -instance of basic_ostream<charT,traits> then the expression -out<<s behaves -as if f(s, mask) were called, or if in is an instance of -basic_istream<charT,traits> then the expression in>>s -behaves as if f(s, -mask) were called. The function f can be defined as:
-
-     ios_base& f(ios_base& str, ios_base::fmtflags mask)
-   {
-   // set specified flags
-   str.setf(mask);
-   return str;
-   }
-

-The expression out<<s has type basic_ostream<charT,traits>& and value out. -The expression in>>s has type basic_istream<charT,traits>& and value in.
-
-smanip setbase(int base);
-
--5- Returns: An object s of unspecified type such that if out is an -instance of basic_ostream<charT,traits> then the expression -out<<s behaves -as if f(s, base) were called, or if in is an instance of -basic_istream<charT,traits> then the expression in>>s -behaves as if f(s, -base) were called. The function f can be defined as:
-
-     ios_base& f(ios_base& str, int base)
-   {
-   // set basefield
-   str.setf(base == 8 ? ios_base::oct :
-   base == 10 ? ios_base::dec :
-   base == 16 ? ios_base::hex :
-   ios_base::fmtflags(0), ios_base::basefield);
-   return str;
-   }
-

-The expression out<<s has type basic_ostream<charT,traits>& and value out. -The expression in>>s has type basic_istream<charT,traits>& and value in.
-
-smanip setfill(char_type c);
-

--6- Returns: An object s of unspecified type such that if out is (or is -derived from) basic_ostream<charT,traits> and c has type charT -then the -expression out<<s behaves as if f(s, c) were called. The function -f can be -defined as:
-
-      template<class charT, class traits>
-   basic_ios<charT,traits>& f(basic_ios<charT,traits>& str, charT c)
-   {
-   // set fill character
-   str.fill(c);
-   return str;
-   }
-

-The expression out<<s has type basic_ostream<charT,traits>& and value out.
-
-smanip setprecision(int n);
-
--7- Returns: An object s of unspecified type such that if out is an -instance of basic_ostream<charT,traits> then the expression -out<<s behaves -as if f(s, n) were called, or if in is an instance of -basic_istream<charT,traits> then the expression in>>s -behaves as if f(s, n) -were called. The function f can be defined as:
-
-      ios_base& f(ios_base& str, int n)
-   {
-   // set precision
-   str.precision(n);
-   return str;
-   }
-

-The expression out<<s has type basic_ostream<charT,traits>& and value out. -The expression in>>s has type basic_istream<charT,traits>& and value in
-.
-smanip setw(int n);
-

--8- Returns: An object s of unspecified type such that if out is an -instance of basic_ostream<charT,traits> then the expression -out<<s behaves -as if f(s, n) were called, or if in is an instance of -basic_istream<charT,traits> then the expression in>>s -behaves as if f(s, n) -were called. The function f can be defined as:
-
-      ios_base& f(ios_base& str, int n)
-   {
-   // set width
-   str.width(n);
-   return str;
-   }
-

-The expression out<<s has type -basic_ostream<charT,traits>& and value out. The expression -in>>s has type basic_istream<charT,traits>& and value -in. -

-
- -

[Kona: Andy Sawyer and Beman Dawes will work to improve the wording of -the proposed resolution.]

- -

[Tokyo - The LWG noted that issue 216 involves -the same paragraphs.]

- -

[Post-Tokyo: The issues list maintainer combined the proposed -resolution of this issue with the proposed resolution for issue 216 as they both involved the same paragraphs, and were so -intertwined that dealing with them separately appear fraught with -error. The full text was supplied by Bill Plauger; it was cross -checked against changes supplied by Andy Sawyer. It should be further -checked by the LWG.]

-
-

184. numeric_limits<bool> wording problems

Section: 18.2.1.5 [lib.numeric.special]  Status: WP  Submitter: Gabriel Dos Reis  Date: 21 Jul 1999

-

bools are defined by the standard to be of integer types, as per -3.9.1 [basic.fundamental] paragraph 7. However "integer types" -seems to have a special meaning for the author of 18.2. The net effect -is an unclear and confusing specification for -numeric_limits<bool> as evidenced below.

- -

18.2.1.2/7 says numeric_limits<>::digits is, for built-in integer -types, the number of non-sign bits in the representation.

- -

4.5/4 states that a bool promotes to int ; whereas 4.12/1 says any non zero -arithmetical value converts to true.

- -

I don't think it makes sense at all to require -numeric_limits<bool>::digits and numeric_limits<bool>::digits10 to -be meaningful.

- -

The standard defines what constitutes a signed (resp. unsigned) integer -types. It doesn't categorize bool as being signed or unsigned. And the set of -values of bool type has only two elements.

- -

I don't think it makes sense to require numeric_limits<bool>::is_signed -to be meaningful.

- -

18.2.1.2/18 for numeric_limits<integer_type>::radix  says:

-
-

For integer types, specifies the base of the representation.186)

-
- -

This disposition is at best misleading and confusing for the standard -requires a "pure binary numeration system" for integer types as per -3.9.1/7

- -

The footnote 186) says: "Distinguishes types with base other than 2 (e.g -BCD)."  This also erroneous as the standard never defines any integer -types with base representation other than 2.

- -

Furthermore, numeric_limits<bool>::is_modulo and -numeric_limits<bool>::is_signed have similar problems.

-

Proposed resolution:

-

Append to the end of 18.2.1.5 [lib.numeric.special]:

-
-

The specialization for bool shall be provided as follows:

-
    namespace std {
-       template<> class numeric_limits<bool> {
-       public:
-         static const bool is_specialized = true;
-         static bool min() throw() { return false; }
-         static bool max() throw() { return true; }
-
-         static const int  digits = 1;
-         static const int  digits10 = 0;
-         static const bool is_signed = false;
-         static const bool is_integer = true;
-         static const bool is_exact = true;
-         static const int  radix = 2;
-         static bool epsilon() throw() { return 0; }
-         static bool round_error() throw() { return 0; }
-
-         static const int  min_exponent = 0;
-         static const int  min_exponent10 = 0;
-         static const int  max_exponent = 0;
-         static const int  max_exponent10 = 0;
-
-         static const bool has_infinity = false;
-         static const bool has_quiet_NaN = false;
-         static const bool has_signaling_NaN = false;
-         static const float_denorm_style has_denorm = denorm_absent;
-         static const bool has_denorm_loss = false;
-         static bool infinity() throw() { return 0; }
-         static bool quiet_NaN() throw() { return 0; }
-         static bool signaling_NaN() throw() { return 0; }
-         static bool denorm_min() throw() { return 0; }
-
-         static const bool is_iec559 = false;
-         static const bool is_bounded = true;
-         static const bool is_modulo = false;
-
-         static const bool traps = false;
-         static const bool tinyness_before = false;
-         static const float_round_style round_style = round_toward_zero;
-       };
-     }
-
- -

[Tokyo:  The LWG desires wording that specifies exact values -rather than more general wording in the original proposed -resolution.]

- -

[Post-Tokyo:  At the request of the LWG in Tokyo, Nico -Josuttis provided the above wording.]

-
-

185. Questionable use of term "inline"

Section: 20.3 [lib.function.objects]  Status: WP  Submitter: UK Panel  Date: 26 Jul 1999

-

Paragraph 4 of 20.3 [lib.function.objects] says:

-
-

 [Example: To negate every element of a: transform(a.begin(), a.end(), - a.begin(), negate<double>()); The corresponding functions will inline - the addition and the negation. end example]

-
-

(Note: The "addition" referred to in the above is in para 3) we can -find no other wording, except this (non-normative) example which suggests that -any "inlining" will take place in this case.

-

Indeed both:

-
-

17.4.4.3 Global Functions [lib.global.functions] 1 It is - unspecified whether any global functions in the C++ Standard Library - are defined as inline (7.1.2).

-
-

and

-
-

17.4.4.4 Member Functions [lib.member.functions] 1 It is - unspecified whether any member functions in the C++ Standard Library - are defined as inline (7.1.2).

-
-

take care to state that this may indeed NOT be the case.

-

Thus the example "mandates" behavior that is explicitly -not required elsewhere.

-

Proposed resolution:

-

In 20.3 [lib.function.objects] paragraph 1, remove the sentence:

-
-

They are important for the effective use of the library.

-
-

Remove 20.3 [lib.function.objects] paragraph 2, which reads:

-
-

Using function objects together with function templates - increases the expressive power of the library as well as making the - resulting code much more efficient.

-
-

In 20.3 [lib.function.objects] paragraph 4, remove the sentence:

-
-

The corresponding functions will inline the addition and the - negation.

-
- -

[Kona: The LWG agreed there was a defect.]

-

[Tokyo: The LWG crafted the proposed resolution.]

-
-

186. bitset::set() second parameter should be bool

Section: 23.3.5.2 [lib.bitset.members]  Status: WP  Submitter: Darin Adler  Date: 13 Aug 1999

-

In section 23.3.5.2 [lib.bitset.members], paragraph 13 defines the -bitset::set operation to take a second parameter of type int. The -function tests whether this value is non-zero to determine whether to -set the bit to true or false. The type of this second parameter should -be bool. For one thing, the intent is to specify a Boolean value. For -another, the result type from test() is bool. In addition, it's -possible to slice an integer that's larger than an int. This can't -happen with bool, since conversion to bool has the semantic of -translating 0 to false and any non-zero value to true.

-

Proposed resolution:

-

In 23.3.5 [lib.template.bitset] Para 1 Replace:

-
-
bitset<N>& set(size_t pos, int val = true ); 
-
-

With:

-
-
bitset<N>& set(size_t pos, bool val = true );
-
-

In 23.3.5.2 [lib.bitset.members] Para 12(.5) Replace:

-
-
bitset<N>& set(size_t pos, int val = 1 );
-
-

With:

-
-
bitset<N>& set(size_t pos, bool val = true );
-
- -

[Kona: The LWG agrees with the description.  Andy Sawyer will work -on better P/R wording.]

-

[Post-Tokyo: Andy provided the above wording.]

-

Rationale:

-

bool is a better choice. It is believed that binary -compatibility is not an issue, because this member function is -usually implemented as inline, and because it is already -the case that users cannot rely on the type of a pointer to a -nonvirtual member of a standard library class.

-
-

187. iter_swap underspecified

Section: 25.2.2 [lib.alg.swap]  Status: WP  Submitter: Andrew Koenig  Date: 14 Aug 1999

-

The description of iter_swap in 25.2.2 paragraph 7,says that it -``exchanges the values'' of the objects to which two iterators -refer.

What it doesn't say is whether it does so using swap -or using the assignment operator and copy constructor.

This -question is an important one to answer, because swap is specialized to -work efficiently for standard containers.
For example:

-
-
vector<int> v1, v2;
-iter_swap(&v1, &v2);
-
-

Is this call to iter_swap equivalent to calling swap(v1, v2)?  -Or is it equivalent to

-
-
{
-vector<int> temp = v1;
-v1 = v2;
-v2 = temp;
-}
-
-

The first alternative is O(1); the second is O(n).

-

A LWG member, Dave Abrahams, comments:

-
-

Not an objection necessarily, but I want to point out the cost of -that requirement:

-
-

iter_swap(list<T>::iterator, list<T>::iterator)

-
-

can currently be specialized to be more efficient than -iter_swap(T*,T*) for many T (by using splicing). Your proposal would -make that optimization illegal. 

-
- -

[Kona: The LWG notes the original need for iter_swap was proxy iterators -which are no longer permitted.]

-

Proposed resolution:

-

Change the effect clause of iter_swap in 25.2.2 paragraph 7 from:

-
-

Exchanges the values pointed to by the two iterators a and b.

-
-

to

-
-

swap(*a, *b).

-
- -

Rationale:

-

It's useful to say just what iter_swap does. There may be - some iterators for which we want to specialize iter_swap, - but the fully general version should have a general specification.

- -

Note that in the specific case of list<T>::iterator, -iter_swap should not be specialized as suggested above. That would do -much more than exchanging the two iterators' values: it would change -predecessor/successor relationships, possibly moving the iterator from -one list to another. That would surely be inappropriate.

-
-

189. setprecision() not specified correctly

Section: 27.4.2.2 [lib.fmtflags.state]  Status: TC  Submitter: Andrew Koenig  Date: 25 Aug 1999

-

27.4.2.2 paragraph 9 claims that setprecision() sets the precision, -and includes a parenthetical note saying that it is the number of -digits after the decimal point.
-
-This claim is not strictly correct. For example, in the default -floating-point output format, setprecision sets the number of -significant digits printed, not the number of digits after the decimal -point.
-
-I would like the committee to look at the definition carefully and -correct the statement in 27.4.2.2

-

Proposed resolution:

-

Remove from 27.4.2.2 [lib.fmtflags.state], paragraph 9, the text -"(number of digits after the decimal point)".

-
-

193. Heap operations description incorrect

Section: 25.3.6 [lib.alg.heap.operations]  Status: TC  Submitter: Markus Mauhart  Date: 24 Sep 1999

-

25.3.6 [lib.alg.heap.operations] states two key properties of a heap [a,b), the first of them -is
-
-    `"(1) *a is the largest element"
-
-I think this is incorrect and should be changed to the wording in the proposed -resolution.

-

Actually there are two independent changes:

-
-

A-"part of largest equivalence class" instead of "largest", cause 25.3 - [lib.alg.sorting] asserts "strict weak ordering" for all its sub clauses.

-

B-Take -'an oldest' from that equivalence class, otherwise the heap functions -could not be used for a priority queue as explained in 23.2.3.2.2 -[lib.priqueue.members] (where I assume that a "priority queue" respects -priority AND time).

-
-

Proposed resolution:

-

Change 25.3.6 [lib.alg.heap.operations] property (1) from:

-
-

(1) *a is the largest element

-
-

to:

-
-

(1) There is no element greater than *a

-
-
-

195. Should basic_istream::sentry's constructor ever set eofbit?

Section: 27.6.1.1.2 [lib.istream::sentry]  Status: TC  Submitter: Matt Austern  Date: 13 Oct 1999

-

Suppose that is.flags() & ios_base::skipws is nonzero. -What should basic_istream<>::sentry's constructor do if it -reaches eof while skipping whitespace? 27.6.1.1.2/5 suggests it -should set failbit. Should it set eofbit as well? The standard -doesn't seem to answer that question.

- -

On the one hand, nothing in 27.6.1.1.2 [lib.istream::sentry] says that -basic_istream<>::sentry should ever set eofbit. On the -other hand, 27.6.1.1 [lib.istream] paragraph 4 says that if -extraction from a streambuf "returns -traits::eof(), then the input function, except as explicitly -noted otherwise, completes its actions and does -setstate(eofbit)". So the question comes down to -whether basic_istream<>::sentry's constructor is an -input function.

- -

Comments from Jerry Schwarz:

-
-

It was always my intention that eofbit should be set any time that a -virtual returned something to indicate eof, no matter what reason -iostream code had for calling the virtual.

-

-The motivation for this is that I did not want to require streambufs -to behave consistently if their virtuals are called after they have -signaled eof.

-

-The classic case is a streambuf reading from a UNIX file. EOF isn't -really a state for UNIX file descriptors. The convention is that a -read on UNIX returns 0 bytes to indicate "EOF", but the file -descriptor isn't shut down in any way and future reads do not -necessarily also return 0 bytes. In particular, you can read from -tty's on UNIX even after they have signaled "EOF". (It -isn't always understood that a ^D on UNIX is not an EOF indicator, but -an EOL indicator. By typing a "line" consisting solely of -^D you cause a read to return 0 bytes, and by convention this is -interpreted as end of file.)

-
-

Proposed resolution:

-

Add a sentence to the end of 27.6.1.1.2 paragraph 2:

-
-

If is.rdbuf()->sbumpc() or is.rdbuf()->sgetc() -returns traits::eof(), the function calls -setstate(failbit | eofbit) (which may throw -ios_base::failure). -

-
-
-

198. Validity of pointers and references unspecified after iterator destruction

Section: 24.1 [lib.iterator.requirements]  Status: WP  Submitter: Beman Dawes  Date: 3 Nov 1999

-

-Is a pointer or reference obtained from an iterator still valid after -destruction of the iterator? -

-

-Is a pointer or reference obtained from an iterator still valid after the value -of the iterator changes? -

-
-
#include <iostream>
-#include <vector>
-#include <iterator>
-
-int main()
-{
-    typedef std::vector<int> vec_t;
-    vec_t v;
-    v.push_back( 1 );
-
-    // Is a pointer or reference obtained from an iterator still
-    // valid after destruction of the iterator?
-    int * p = &*v.begin();
-    std::cout << *p << '\n';  // OK?
-
-    // Is a pointer or reference obtained from an iterator still
-    // valid after the value of the iterator changes?
-    vec_t::iterator iter( v.begin() );
-    p = &*iter++;
-    std::cout << *p << '\n';  // OK?
-
-    return 0;
-}
-
-
- -

The standard doesn't appear to directly address these -questions. The standard needs to be clarified. At least two real-world -cases have been reported where library implementors wasted -considerable effort because of the lack of clarity in the -standard. The question is important because requiring pointers and -references to remain valid has the effect for practical purposes of -prohibiting iterators from pointing to cached rather than actual -elements of containers.

- -

The standard itself assumes that pointers and references obtained -from an iterator are still valid after iterator destruction or -change. The definition of reverse_iterator::operator*(), 24.4.1.3.3 [lib.reverse.iter.op.star], which returns a reference, defines -effects:

- -
-
Iterator tmp = current;
-return *--tmp;
-
-

The definition of reverse_iterator::operator->(), 24.4.1.3.4 [lib.reverse.iter.opref], which returns a pointer, defines effects:

-
-
return &(operator*());
-
- -

Because the standard itself assumes pointers and references remain -valid after iterator destruction or change, the standard should say so -explicitly. This will also reduce the chance of user code breaking -unexpectedly when porting to a different standard library -implementation.

-

Proposed resolution:

-

Add a new paragraph to 24.1 [lib.iterator.requirements]:

-
-Destruction of an iterator may invalidate pointers and references -previously obtained from that iterator. -
- -

Replace paragraph 1 of 24.4.1.3.3 [lib.reverse.iter.op.star] with:

- -
-

Effects:

-
  this->tmp = current;
-  --this->tmp;
-  return *this->tmp;
-
- -

-[Note: This operation must use an auxiliary member variable, -rather than a temporary variable, to avoid returning a reference that -persists beyond the lifetime of its associated iterator. (See -24.1 [lib.iterator.requirements].) The name of this member variable is shown for -exposition only. --end note] -

-
- -

[Post-Tokyo: The issue has been reformulated purely -in terms of iterators.]

- -

[Pre-Toronto: Steve Cleary pointed out the no-invalidation -assumption by reverse_iterator. The issue and proposed resolution was -reformulated yet again to reflect this reality.]

- -

[Copenhagen: Steve Cleary pointed out that reverse_iterator -assumes its underlying iterator has persistent pointers and -references. Andy Koenig pointed out that it is possible to rewrite -reverse_iterator so that it no longer makes such an assupmption. -However, this issue is related to issue 299. If we -decide it is intentional that p[n] may return by value -instead of reference when p is a Random Access Iterator, -other changes in reverse_iterator will be necessary.]

-

Rationale:

-

This issue has been discussed extensively. Note that it is -not an issue about the behavior of predefined iterators. It is -asking whether or not user-defined iterators are permitted to have -transient pointers and references. Several people presented examples -of useful user-defined iterators that have such a property; examples -include a B-tree iterator, and an "iota iterator" that doesn't point -to memory. Library implementors already seem to be able to cope with -such iterators: they take pains to avoid forming references to memory -that gets iterated past. The only place where this is a problem is -reverse_iterator, so this issue changes -reverse_iterator to make it work.

- -

This resolution does not weaken any guarantees provided by -predefined iterators like list<int>::iterator. -Clause 23 should be reviewed to make sure that guarantees for -predefined iterators are as strong as users expect.

- -
-

199. What does allocate(0) return?

Section: 20.1.5 [lib.allocator.requirements]  Status: TC  Submitter: Matt Austern  Date: 19 Nov 1999

-

-Suppose that A is a class that conforms to the -Allocator requirements of Table 32, and a is an -object of class A What should be the return -value of a.allocate(0)? Three reasonable -possibilities: forbid the argument 0, return -a null pointer, or require that the return value be a -unique non-null pointer. -

-

Proposed resolution:

-

-Add a note to the allocate row of Table 32: -"[Note: If n == 0, the return value is unspecified. --end note]"

-

Rationale:

-

A key to understanding this issue is that the ultimate use of -allocate() is to construct an iterator, and that iterator for zero -length sequences must be the container's past-the-end -representation. Since this already implies special case code, it -would be over-specification to mandate the return value. -

-
-

200. Forward iterator requirements don't allow constant iterators

Section: 24.1.3 [lib.forward.iterators]  Status: WP  Submitter: Matt Austern  Date: 19 Nov 1999

-

-In table 74, the return type of the expression *a is given -as T&, where T is the iterator's value type. -For constant iterators, however, this is wrong. ("Value type" -is never defined very precisely, but it is clear that the value type -of, say, std::list<int>::const_iterator is supposed to be -int, not const int.) -

-

Proposed resolution:

-

-In table 74, in the *a and *r++ rows, change the -return type from "T&" to "T& -if X is mutable, otherwise const T&". -In the a->m row, change the return type from -"U&" to "U& if X is mutable, -otherwise const U&". -

- -

[Tokyo: The LWG believes this is the tip of a larger iceberg; -there are multiple const problems with the STL portion of the library -and that these should be addressed as a single package.  Note -that issue 180 has already been declared NAD Future for -that very reason.]

- -

[Redmond: the LWG thinks this is separable from other constness -issues. This issue is just cleanup; it clarifies language that was -written before we had iterator_traits. Proposed resolution was -modified: the original version only discussed *a. It was pointed out -that we also need to worry about *r++ and a->m.]

- -
-

202. unique() effects unclear when predicate not an equivalence relation

Section: 25.2.8 [lib.alg.unique]  Status: WP  Submitter: Andrew Koenig  Date: 13 Jan 2000

-

-What should unique() do if you give it a predicate that is not an -equivalence relation? There are at least two plausible answers: -

- -
- -

- 1. You can't, because 25.2.8 says that it it "eliminates all but - the first element from every consecutive group of equal - elements..." and it wouldn't make sense to interpret "equal" as - meaning anything but an equivalence relation. [It also doesn't - make sense to interpret "equal" as meaning ==, because then there - would never be any sense in giving a predicate as an argument at - all.] -

- -

- 2. The word "equal" should be interpreted to mean whatever the - predicate says, even if it is not an equivalence relation - (and in particular, even if it is not transitive). -

- -
- -

-The example that raised this question is from Usenet: -

- -
- -
int f[] = { 1, 3, 7, 1, 2 };
-int* z = unique(f, f+5, greater<int>());
- -
- -

-If one blindly applies the definition using the predicate -greater<int>, and ignore the word "equal", you get: -

- -
- -

- Eliminates all but the first element from every consecutive group - of elements referred to by the iterator i in the range [first, last) - for which *i > *(i - 1). -

- -
- -

-The first surprise is the order of the comparison. If we wanted to -allow for the predicate not being an equivalence relation, then we -should surely compare elements the other way: pred(*(i - 1), *i). If -we do that, then the description would seem to say: "Break the -sequence into subsequences whose elements are in strictly increasing -order, and keep only the first element of each subsequence". So the -result would be 1, 1, 2. If we take the description at its word, it -would seem to call for strictly DEcreasing order, in which case the -result should be 1, 3, 7, 2.
-
-In fact, the SGI implementation of unique() does neither: It yields 1, -3, 7. -

-

Proposed resolution:

-

Change 25.2.8 [lib.alg.unique] paragraph 1 to:

-
-For a nonempty range, eliminates all but the first element from every -consecutive group of equivalent elements referred to by the iterator -i in the range [first+1, last) for which the following -conditions hold: *(i-1) == *i or pred(*(i-1), *i) != -false. -
- -

-Also insert a new paragraph, paragraph 2a, that reads: "Requires: The -comparison function must be an equivalence relation." -

- -

[Redmond: discussed arguments for and against requiring the -comparison function to be an equivalence relation. Straw poll: -14-2-5. First number is to require that it be an equivalence -relation, second number is to explicitly not require that it be an -equivalence relation, third number is people who believe they need -more time to consider the issue. A separate issue: Andy Sawyer -pointed out that "i-1" is incorrect, since "i" can refer to the first -iterator in the range. Matt provided wording to address this -problem.]

- -

[Curaçao: The LWG changed "... the range (first, -last)..." to "... the range [first+1, last)..." for -clarity. They considered this change close enough to editorial to not -require another round of review.]

- -

Rationale:

-

The LWG also considered an alternative resolution: change -25.2.8 [lib.alg.unique] paragraph 1 to:

- -
-For a nonempty range, eliminates all but the first element from every -consecutive group of elements referred to by the iterator -i in the range (first, last) for which the following -conditions hold: *(i-1) == *i or pred(*(i-1), *i) != -false. -
- -

-Also insert a new paragraph, paragraph 1a, that reads: "Notes: The -comparison function need not be an equivalence relation." -

- - -

Informally: the proposed resolution imposes an explicit requirement -that the comparison function be an equivalence relation. The -alternative resolution does not, and it gives enough information so -that the behavior of unique() for a non-equivalence relation is -specified. Both resolutions are consistent with the behavior of -existing implementations.

-
-

208. Unnecessary restriction on past-the-end iterators

Section: 24.1 [lib.iterator.requirements]  Status: TC  Submitter: Stephen Cleary  Date: 02 Feb 2000

-

In 24.1 paragraph 5, it is stated ". . . Dereferenceable and -past-the-end values are always non-singular."

-

This places an unnecessary restriction on past-the-end iterators for -containers with forward iterators (for example, a singly-linked list). If the -past-the-end value on such a container was a well-known singular value, it would -still satisfy all forward iterator requirements.

-

Removing this restriction would allow, for example, a singly-linked list -without a "footer" node.

-

This would have an impact on existing code that expects past-the-end -iterators obtained from different (generic) containers being not equal.

-

Proposed resolution:

-

Change 24.1 [lib.iterator.requirements] paragraph 5, the last sentence, from:

-
-

Dereferenceable and past-the-end values are always non-singular.

-
-

to:

-
-

Dereferenceable values are always non-singular. 

-
-

Rationale:

-

For some kinds of containers, including singly linked lists and -zero-length vectors, null pointers are perfectly reasonable past-the-end -iterators. Null pointers are singular. -

-
-

209. basic_string declarations inconsistent

Section: 21.3 [lib.basic.string]  Status: TC  Submitter: Igor Stauder  Date: 11 Feb 2000

-

In Section 21.3 [lib.basic.string] the basic_string member function -declarations use a consistent style except for the following functions:

-
-
void push_back(const charT);
-basic_string& assign(const basic_string&);
-void swap(basic_string<charT,traits,Allocator>&);
-
-

- push_back, assign, swap: missing argument name 
-- push_back: use of const with charT (i.e. POD type passed by value -not by reference - should be charT or const charT& )
-- swap: redundant use of template parameters in argument -basic_string<charT,traits,Allocator>&

-

Proposed resolution:

-

In Section 21.3 [lib.basic.string] change the basic_string member -function declarations push_back, assign, and swap to:

-
-
void push_back(charT c); 
-
-basic_string& assign(const basic_string& str);
-void swap(basic_string& str);
-
-

Rationale:

-

Although the standard is in general not consistent in declaration -style, the basic_string declarations are consistent other than the -above. The LWG felt that this was sufficient reason to merit the -change. -

-
-

210. distance first and last confused

Section: 25 [lib.algorithms]  Status: TC  Submitter: Lisa Lippincott  Date: 15 Feb 2000

-

In paragraph 9 of section 25 [lib.algorithms], it is written:

-
-

In the description of the algorithms operators + and - are used - for some of the iterator categories for which they do not have to - be defined. In these cases the semantics of [...] a-b is the same - as of
-
-      return distance(a, b);

-
-

Proposed resolution:

-

On the last line of paragraph 9 of section 25 [lib.algorithms] change -"a-b" to "b-a".

-

Rationale:

-

There are two ways to fix the defect; change the description to b-a -or change the return to distance(b,a). The LWG preferred the -former for consistency.

-
-

211. operator>>(istream&, string&) doesn't set failbit

Section: 21.3.7.9 [lib.string.io]  Status: TC  Submitter: Scott Snyder  Date: 4 Feb 2000

-

The description of the stream extraction operator for std::string (section -21.3.7.9 [lib.string.io]) does not contain a requirement that failbit be set in -the case that the operator fails to extract any characters from the input -stream.

-

This implies that the typical construction

-
-
std::istream is;
-std::string str;
-...
-while (is >> str) ... ;
-
-

(which tests failbit) is not required to terminate at EOF.

-

Furthermore, this is inconsistent with other extraction operators, -which do include this requirement. (See sections 27.6.1.2 [lib.istream.formatted] and 27.6.1.3 [lib.istream.unformatted]), where this -requirement is present, either explicitly or implicitly, for the -extraction operators. It is also present explicitly in the description -of getline (istream&, string&, charT) in section 21.3.7.9 [lib.string.io] paragraph 8.)

-

Proposed resolution:

-

Insert new paragraph after paragraph 2 in section 21.3.7.9 [lib.string.io]:

-
- -

If the function extracts no characters, it calls -is.setstate(ios::failbit) which may throw ios_base::failure -(27.4.4.3).

-
-
-

212. Empty range behavior unclear for several algorithms

Section: 25.3.7 [lib.alg.min.max]  Status: TC  Submitter: Nico Josuttis  Date: 26 Feb 2000

-

The standard doesn't specify what min_element() and max_element() shall -return if the range is empty (first equals last). The usual implementations -return last. This problem seems also apply to partition(), stable_partition(), -next_permutation(), and prev_permutation().

-

Proposed resolution:

-

In 25.3.7 [lib.alg.min.max] - Minimum and maximum, paragraphs 7 and -9, append: Returns last if first==last.

-

Rationale:

-

The LWG looked in some detail at all of the above mentioned -algorithms, but believes that except for min_element() and -max_element() it is already clear that last is returned if first == -last.

-
-

214. set::find() missing const overload

Section: 23.3.3 [lib.set], 23.3.4 [lib.multiset]  Status: WP  Submitter: Judy Ward  Date: 28 Feb 2000

-

The specification for the associative container requirements in -Table 69 state that the find member function should "return -iterator; const_iterator for constant a". The map and multimap -container descriptions have two overloaded versions of find, but set -and multiset do not, all they have is:

-
-
iterator find(const key_type & x) const;
-
-

Proposed resolution:

-

Change the prototypes for find(), lower_bound(), upper_bound(), and -equal_range() in section 23.3.3 [lib.set] and section 23.3.4 [lib.multiset] to each have two overloads:

-
-
iterator find(const key_type & x);
-const_iterator find(const key_type & x) const;
-
iterator lower_bound(const key_type & x);
-const_iterator lower_bound(const key_type & x) const;
-
iterator upper_bound(const key_type & x);
-const_iterator upper_bound(const key_type & x) const;
-
pair<iterator, iterator> equal_range(const key_type & x);
-pair<const_iterator, const_iterator> equal_range(const key_type & x) const;
-
- -

[Tokyo: At the request of the LWG, Judy Ward provided wording -extending the proposed resolution to lower_bound, upper_bound, and -equal_range.]

-
-

217. Facets example (Classifying Japanese characters) contains errors

Section: 22.2.8 [lib.facets.examples]  Status: TC  Submitter: Martin Sebor  Date: 29 Feb 2000

-

The example in 22.2.8, paragraph 11 contains the following errors:

-

1) The member function `My::JCtype::is_kanji()' is non-const; the function -must be const in order for it to be callable on a const object (a reference to -which which is what std::use_facet<>() returns).

-

2) In file filt.C, the definition of `JCtype::id' must be qualified with the -name of the namespace `My'.

-

3) In the definition of `loc' and subsequently in the call to use_facet<>() -in main(), the name of the facet is misspelled: it should read `My::JCtype' -rather than `My::JCType'.

-

Proposed resolution:

-

Replace the "Classifying Japanese characters" example in 22.2.8, -paragraph 11 with the following:

-
#include <locale>
-
namespace My {
-    using namespace std;
-    class JCtype : public locale::facet {
-    public:
-        static locale::id id;     //  required for use as a new locale facet
-        bool is_kanji (wchar_t c) const;
-        JCtype() {}
-    protected:
-        ~JCtype() {}
-    };
-}
-
//  file:  filt.C
-#include <iostream>
-#include <locale>
-#include "jctype"                 //  above
-std::locale::id My::JCtype::id;   //  the static  JCtype  member
-declared above.
-
int main()
-{
-    using namespace std;
-    typedef ctype<wchar_t> wctype;
-    locale loc(locale(""),              //  the user's preferred locale...
-               new My::JCtype);         //  and a new feature ...
-    wchar_t c = use_facet<wctype>(loc).widen('!');
-    if (!use_facet<My::JCtype>(loc).is_kanji(c))
-        cout << "no it isn't!" << endl;
-    return 0;
-}
-
-

220. ~ios_base() usage valid?

Section: 27.4.2.7 [lib.ios.base.cons]  Status: TC  Submitter: Jonathan Schilling, Howard Hinnant  Date: 13 Mar 2000

-

The pre-conditions for the ios_base destructor are described in 27.4.2.7 -paragraph 2:

-
-

Effects: Destroys an object of class ios_base. Calls each registered - callback pair (fn,index) (27.4.2.6) as (*fn)(erase_event,*this,index) at such - time that any ios_base member function called from within fn has well defined - results.

-
-

But what is not clear is: If no callback functions were ever registered, does -it matter whether the ios_base members were ever initialized?

-

For instance, does this program have defined behavior:

-
-
#include <ios>
-
class D : public std::ios_base { };
-
int main() { D d; }
-
-

It seems that registration of a callback function would surely affect the -state of an ios_base. That is, when you register a callback function with an -ios_base, the ios_base must record that fact somehow.

-

But if after construction the ios_base is in an indeterminate state, and that -state is not made determinate before the destructor is called, then how would -the destructor know if any callbacks had indeed been registered? And if the -number of callbacks that had been registered is indeterminate, then is not the -behavior of the destructor undefined?

-

By comparison, the basic_ios class description in 27.4.4.1 paragraph 2 makes -it explicit that destruction before initialization results in undefined -behavior.

-

Proposed resolution:

-

Modify 27.4.2.7 paragraph 1 from

-
-

Effects: Each ios_base member has an indeterminate value after - construction.

-
-

to

-
-

Effects: Each ios_base member has an indeterminate -value after construction. These members must be initialized by calling -basic_ios::init. If an ios_base object is destroyed before these -initializations have taken place, the behavior is undefined.

-
-
-

221. num_get<>::do_get stage 2 processing broken

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: WP  Submitter: Matt Austern  Date: 14 Mar 2000

-

Stage 2 processing of numeric conversion is broken.

- -

Table 55 in 22.2.2.1.2 says that when basefield is 0 the integral -conversion specifier is %i. A %i specifier determines a number's base -by its prefix (0 for octal, 0x for hex), so the intention is clearly -that a 0x prefix is allowed. Paragraph 8 in the same section, -however, describes very precisely how characters are processed. (It -must be done "as if" by a specified code fragment.) That -description does not allow a 0x prefix to be recognized.

- -

Very roughly, stage 2 processing reads a char_type ct. It converts -ct to a char, not by using narrow but by looking it up in a -translation table that was created by widening the string literal -"0123456789abcdefABCDEF+-". The character "x" is -not found in that table, so it can't be recognized by stage 2 -processing.

-

Proposed resolution:

-

In 22.2.2.1.2 paragraph 8, replace the line:

-
-
static const char src[] = "0123456789abcdefABCDEF+-";
-
-

with the line:

-
-
static const char src[] = "0123456789abcdefxABCDEFX+-";
-
-

Rationale:

-

If we're using the technique of widening a string literal, the -string literal must contain every character we wish to recognize. -This technique has the consequence that alternate representations -of digits will not be recognized. This design decision was made -deliberately, with full knowledge of that limitation.

-
-

222. Are throw clauses necessary if a throw is already implied by the effects clause?

Section: 17.3.1.3 [lib.structure.specifications]  Status: TC  Submitter: Judy Ward  Date: 17 Mar 2000

-

Section 21.3.6.8 describes the basic_string::compare function this way:

-
-
21.3.6.8 - basic_string::compare [lib.string::compare]
-
-int compare(size_type pos1, size_type n1,
-                const basic_string<charT,traits,Allocator>&  str ,
-                size_type  pos2 , size_type  n2 ) const;
-
--4- Returns: 
-
-    basic_string<charT,traits,Allocator>(*this,pos1,n1).compare(
-                 basic_string<charT,traits,Allocator>(str,pos2,n2)) .
-
-

and the constructor that's implicitly called by the above is -defined to throw an out-of-range exception if pos > str.size(). See -section 21.3.1 [lib.string.cons] paragraph 4.

- -

On the other hand, the compare function descriptions themselves don't have -"Throws: " clauses and according to 17.3.1.3, paragraph 3, elements -that do not apply to a function are omitted.

-

So it seems there is an inconsistency in the standard -- are the -"Effects" clauses correct, or are the "Throws" clauses -missing?

-

Proposed resolution:

-

In 17.3.1.3 [lib.structure.specifications] paragraph 3, the footnote 148 attached to -the sentence "Descriptions of function semantics contain the -following elements (as appropriate):", insert the word -"further" so that the foot note reads:

-
-

To save space, items that do not apply to a function are - omitted. For example, if a function does not specify any further - preconditions, there will be no "Requires" paragraph.

-
-

Rationale:

-

The standard is somewhat inconsistent, but a failure to note a -throw condition in a throws clause does not grant permission not to -throw. The inconsistent wording is in a footnote, and thus -non-normative. The proposed resolution from the LWG clarifies the -footnote.

-
-

223. reverse algorithm should use iter_swap rather than swap

Section: 25.2.9 [lib.alg.reverse]  Status: TC  Submitter: Dave Abrahams  Date: 21 Mar 2000

-

Shouldn't the effects say "applies iter_swap to all pairs..."?

-

Proposed resolution:

-

In 25.2.9 [lib.alg.reverse], replace:

-
- Effects: For each non-negative integer i <= (last - first)/2, - applies swap to all pairs of iterators first + i, (last - i) - 1. -
-

with:

-
- Effects: For each non-negative integer i <= (last - first)/2, - applies iter_swap to all pairs of iterators first + i, (last - i) - 1. -
-
-

224. clear() complexity for associative containers refers to undefined N

Section: 23.1.2 [lib.associative.reqmts]  Status: TC  Submitter: Ed Brey  Date: 23 Mar 2000

-

In the associative container requirements table in 23.1.2 paragraph 7, -a.clear() has complexity "log(size()) + N". However, the meaning of N -is not defined.

-

Proposed resolution:

-

In the associative container requirements table in 23.1.2 paragraph -7, the complexity of a.clear(), change "log(size()) + N" to -"linear in size()".

-

Rationale:

-

It's the "log(size())", not the "N", that is in -error: there's no difference between O(N) and O(N + -log(N)). The text in the standard is probably an incorrect -cut-and-paste from the range version of erase.

-
-

225. std:: algorithms use of other unqualified algorithms

Section: 17.4.4.3 [lib.global.functions]  Status: WP  Submitter: Dave Abrahams  Date: 01 Apr 2000

-

Are algorithms in std:: allowed to use other algorithms without qualification, so functions in -user namespaces might be found through Koenig lookup?

-

For example, a popular standard library implementation includes this -implementation of std::unique:

-
-
namespace std {
-    template <class _ForwardIter>
-    _ForwardIter unique(_ForwardIter __first, _ForwardIter __last) {
-      __first = adjacent_find(__first, __last);
-      return unique_copy(__first, __last, __first);
-    }
-    }
-
-

Imagine two users on opposite sides of town, each using unique on his own -sequences bounded by my_iterators . User1 looks at his standard library -implementation and says, "I know how to implement a more efficient -unique_copy for my_iterators", and writes:

-
-
namespace user1 {
-    class my_iterator;
-    // faster version for my_iterator
-    my_iterator unique_copy(my_iterator, my_iterator, my_iterator);
-    }
-
-

user1::unique_copy() is selected by Koenig lookup, as he intended.

-

User2 has other needs, and writes:

-
-
namespace user2 {
-    class my_iterator;
-    // Returns true iff *c is a unique copy of *a and *b.
-    bool unique_copy(my_iterator a, my_iterator b, my_iterator c);
-    }
-
-

User2 is shocked to find later that his fully-qualified use of -std::unique(user2::my_iterator, user2::my_iterator, user2::my_iterator) fails to -compile (if he's lucky). Looking in the standard, he sees the following Effects -clause for unique():

-
-

Effects: Eliminates all but the first element from every consecutive group - of equal elements referred to by the iterator i in the range [first, last) for - which the following corresponding conditions hold: *i == *(i - 1) or pred(*i, - *(i - 1)) != false

-
-

The standard gives user2 absolutely no reason to think he can interfere with -std::unique by defining names in namespace user2. His standard library has been -built with the template export feature, so he is unable to inspect the -implementation. User1 eventually compiles his code with another compiler, and -his version of unique_copy silently stops being called. Eventually, he realizes -that he was depending on an implementation detail of his library and had no -right to expect his unique_copy() to be called portably.

-

On the face of it, and given above scenario, it may seem obvious that the -implementation of unique() shown is non-conforming because it uses unique_copy() -rather than ::std::unique_copy(). Most standard library implementations, -however, seem to disagree with this notion.

-

[Tokyo:  Steve Adamczyk from -the core working group indicates that "std::" is sufficient;  -leading "::" qualification is not required because any namespace -qualification is sufficient to suppress Koenig lookup.]

-

Proposed resolution:

-

Add a paragraph and a note at the end of -17.4.4.3 [lib.global.functions]:

-
- -

Unless otherwise specified, no global or non-member function in the -standard library shall use a function from another namespace which is -found through argument-dependent name lookup (3.4.2 [basic.lookup.koenig]).

- -

[Note: the phrase "unless otherwise specified" is intended to -allow Koenig lookup in cases like that of ostream_iterators:
- -
- Effects:

-
-

*out_stream << value;
- if(delim != 0) *out_stream << delim;
- return (*this);

-

--end note]

-
-
- -

[Tokyo: The LWG agrees that this is a defect in the standard, but -is as yet unsure if the proposed resolution is the best -solution. Furthermore, the LWG believes that the same problem of -unqualified library names applies to wording in the standard itself, -and has opened issue 229 accordingly. Any resolution of -issue 225 should be coordinated with the resolution of -issue 229.]

- -

[Toronto: The LWG is not sure if this is a defect in the -standard. Most LWG members believe that an implementation of -std::unique like the one quoted in this issue is already -illegal, since, under certain circumstances, its semantics are not -those specified in the standard. The standard's description of -unique does not say that overloading adjacent_find -should have any effect.]

- -

[Curaçao: An LWG-subgroup spent an afternoon working on issues -225, 226, and 229. Their conclusion was that the issues should be -separated into an LWG portion (Howard's paper, N1387=02-0045), and a -EWG portion (Dave will write a proposal). The LWG and EWG had -(separate) discussions of this plan the next day. The proposed -resolution for this issue is in accordance with Howard's paper.]

- -

Rationale:

-

It could be argued that this proposed isn't strictly necessary, - that the Standard doesn't grant implementors license to write a - standard function that behaves differently than specified in the - Standard just because of an unrelated user-defined name in some - other namespace. However, this is at worst a clarification. It is - surely right that algorithsm shouldn't pick up random names, that - user-defined names should have no effect unless otherwise specified. - Issue 226 deals with the question of when it is - appropriate for the standard to explicitly specify otherwise.

-
-

226. User supplied specializations or overloads of namespace std function templates

Section: 17.4.3.1 [lib.reserved.names]  Status: WP  Submitter: Dave Abrahams  Date: 01 Apr 2000

-

The issues are: 

-

1. How can a 3rd party library implementor (lib1) write a version of a standard -algorithm which is specialized to work with his own class template? 

-

2. How can another library implementor (lib2) write a generic algorithm which -will take advantage of the specialized algorithm in lib1?

-

This appears to be the only viable answer under current language rules:

-
-
namespace lib1
-{
-    // arbitrary-precision numbers using T as a basic unit
-    template <class T>
-    class big_num { //...
-    };
-    
-
    // defining this in namespace std is illegal (it would be an
-    // overload), so we hope users will rely on Koenig lookup
-    template <class T>
-    void swap(big_int<T>&, big_int<T>&);
-}
-
#include <algorithm>
-namespace lib2
-{
-    template <class T>
-    void generic_sort(T* start, T* end)
-    {
-            ...
-        // using-declaration required so we can work on built-in types
-        using std::swap;
-        // use Koenig lookup to find specialized algorithm if available
-        swap(*x, *y);
-    }
-}
-
-

This answer has some drawbacks. First of all, it makes writing lib2 difficult -and somewhat slippery. The implementor needs to remember to write the -using-declaration, or generic_sort will fail to compile when T is a built-in -type. The second drawback is that the use of this style in lib2 effectively -"reserves" names in any namespace which defines types which may -eventually be used with lib2. This may seem innocuous at first when applied to -names like swap, but consider more ambiguous names like unique_copy() instead. -It is easy to imagine the user wanting to define these names differently in his -own namespace. A definition with semantics incompatible with the standard -library could cause serious problems (see issue 225).

-

Why, you may ask, can't we just partially specialize std::swap()? It's -because the language doesn't allow for partial specialization of function -templates. If you write:

-
-
namespace std
-{
-    template <class T>
-    void swap(lib1::big_int<T>&, lib1::big_int<T>&);
-}
-
-

You have just overloaded std::swap, which is illegal under the current -language rules. On the other hand, the following full specialization is legal:

-
-
namespace std
-{
-    template <>
-    void swap(lib1::other_type&, lib1::other_type&);
-}
-
- -

This issue reflects concerns raised by the "Namespace issue -with specialized swap" thread on comp.lang.c++.moderated. A -similar set of concerns was earlier raised on the boost.org mailing -list and the ACCU-general mailing list. Also see library reflector -message c++std-lib-7354.

- -

-J. C. van Winkel points out (in c++std-lib-9565) another unexpected -fact: it's impossible to output a container of std::pair's using copy -and an ostream_iterator, as long as both pair-members are built-in or -std:: types. That's because a user-defined operator<< for (for -example) std::pair<const std::string, int> will not be found: -lookup for operator<< will be performed only in namespace std. -Opinions differed on whether or not this was a defect, and, if so, -whether the defect is that something is wrong with user-defined -functionality and std, or whether it's that the standard library does -not provide an operator<< for std::pair<>. -

- -

Proposed resolution:

- -

Adopt the wording proposed in Howard Hinnant's paper - N1523=03-0106, "Proposed Resolution To LWG issues 225, 226, 229".

- - -

[Tokyo: Summary, "There is no conforming way to extend -std::swap for user defined templates."  The LWG agrees that -there is a problem. Would like more information before -proceeding. This may be a core issue. Core issue 229 has been opened -to discuss the core aspects of this problem. It was also noted that -submissions regarding this issue have been received from several -sources, but too late to be integrated into the issues list. -]

- -

[Post-Tokyo: A paper with several proposed resolutions, -J16/00-0029==WG21/N1252, "Shades of namespace std functions -" by Alan Griffiths, is in the Post-Tokyo mailing. It -should be considered a part of this issue.]

- -

[Toronto: Dave Abrahams and Peter Dimov have proposed a -resolution that involves core changes: it would add partial -specialization of function template. The Core Working Group is -reluctant to add partial specialization of function templates. It is -viewed as a large change, CWG believes that proposal presented leaves -some syntactic issues unanswered; if the CWG does add partial -specialization of function templates, it wishes to develop its own -proposal. The LWG continues to believe that there is a serious -problem: there is no good way for users to force the library to use -user specializations of generic standard library functions, and in -certain cases (e.g. transcendental functions called by -valarray and complex) this is important. Koenig -lookup isn't adequate, since names within the library must be -qualified with std (see issue 225), specialization doesn't -work (we don't have partial specialization of function templates), and -users aren't permitted to add overloads within namespace std. -]

- -

[Copenhagen: Discussed at length, with no consensus. Relevant -papers in the pre-Copenhagen mailing: N1289, N1295, N1296. Discussion -focused on four options. (1) Relax restrictions on overloads within -namespace std. (2) Mandate that the standard library use unqualified -calls for swap and possibly other functions. (3) Introduce -helper class templates for swap and possibly other functions. -(4) Introduce partial specialization of function templates. Every -option had both support and opposition. Straw poll (first number is -support, second is strongly opposed): (1) 6, 4; (2) 6, 7; (3) 3, 8; -(4) 4, 4.]

- -

[Redmond: Discussed, again no consensus. Herb presented an -argument that a user who is defining a type T with an -associated swap should not be expected to put that -swap in namespace std, either by overloading or by partial -specialization. The argument is that swap is part of -T's interface, and thus should to in the same namespace as -T and only in that namespace. If we accept this argument, -the consequence is that standard library functions should use -unqualified call of swap. (And which other functions? Any?) -A small group (Nathan, Howard, Jeremy, Dave, Matt, Walter, Marc) will -try to put together a proposal before the next meeting.]

- -

[Curaçao: An LWG-subgroup spent an afternoon working on issues -225, 226, and 229. Their conclusion was that the issues should be -separated into an LWG portion (Howard's paper, N1387=02-0045), and a -EWG portion (Dave will write a proposal). The LWG and EWG had -(separate) discussions of this plan the next day. The proposed -resolution is the one proposed by Howard.]

- -

[Santa Cruz: the LWG agreed with the general direction of - Howard's paper, N1387. (Roughly: Koenig lookup is disabled unless - we say otherwise; this issue is about when we do say otherwise.) - However, there were concerns about wording. Howard will provide new - wording. Bill and Jeremy will review it.]

- -

[Kona: Howard proposed the new wording. The LWG accepted his - proposed resolution.]

- -

Rationale:

-

Informally: introduce a Swappable concept, and specify that the - value types of the iterators passed to certain standard algorithms - (such as iter_swap, swap_ranges, reverse, rotate, and sort) conform - to that concept. The Swappable concept will make it clear that - these algorithms use unqualified lookup for the calls - to swap. Also, in 26.3.3.3 [lib.valarray.transcend] paragraph 1, - state that the valarray transcendentals use unqualified lookup.

-
-

227. std::swap() should require CopyConstructible or DefaultConstructible arguments

Section: 25.2.2 [lib.alg.swap]  Status: TC  Submitter: Dave Abrahams  Date: 09 Apr 2000

-

25.2.2 reads:

-
-

template<class T> void swap(T& a, T& b);
-
- Requires: Type T is Assignable (_lib.container.requirements_).
- Effects: Exchanges values stored in two locations.

-
-

The only reasonable** generic implementation of swap requires construction of a - new temporary copy of one of its arguments:

-
-
template<class T> void swap(T& a, T& b);
-  {
-      T tmp(a);
-      a = b;
-      b = tmp;
-  }
-
-

But a type which is only Assignable cannot be swapped by this implementation.

-

**Yes, there's also an unreasonable implementation which would require T to be - DefaultConstructible instead of CopyConstructible. I don't think this is worthy - of consideration:

-
-
template<class T> void swap(T& a, T& b);
-{
-    T tmp;
-    tmp = a;
-    a = b;
-    b = tmp;
-}
-
-

Proposed resolution:

-

Change 25.2.2 paragraph 1 from:

-
-

Requires: Type T is Assignable (23.1).

-
-

to:

-
-

Requires: Type T is CopyConstructible (20.1.3) and Assignable (23.1)

-
-
-

228. Incorrect specification of "..._byname" facets

Section: 22.2 [lib.locale.categories]  Status: WP  Submitter: Dietmar Kühl  Date: 20 Apr 2000

-

The sections 22.2.1.2 [lib.locale.ctype.byname], 22.2.1.4 [lib.locale.ctype.byname.special], -22.2.1.6 [lib.locale.codecvt.byname], 22.2.3.2 [lib.locale.numpunct.byname], 22.2.4.2 [lib.locale.collate.byname], 22.2.5.4 [lib.locale.time.put.byname], 22.2.6.4 [lib.locale.moneypunct.byname], and 22.2.7.2 [lib.locale.messages.byname] overspecify the -definitions of the "..._byname" classes by listing a bunch -of virtual functions. At the same time, no semantics of these -functions are defined. Real implementations do not define these -functions because the functional part of the facets is actually -implemented in the corresponding base classes and the constructor of -the "..._byname" version just provides suitable date used by -these implementations. For example, the 'numpunct' methods just return -values from a struct. The base class uses a statically initialized -struct while the derived version reads the contents of this struct -from a table. However, no virtual function is defined in -'numpunct_byname'.

- -

For most classes this does not impose a problem but specifically -for 'ctype' it does: The specialization for 'ctype_byname<char>' -is required because otherwise the semantics would change due to the -virtual functions defined in the general version for 'ctype_byname': -In 'ctype<char>' the method 'do_is()' is not virtual but it is -made virtual in both 'ctype<cT>' and 'ctype_byname<cT>'. -Thus, a class derived from 'ctype_byname<char>' can tell whether -this class is specialized or not under the current specification: -Without the specialization, 'do_is()' is virtual while with -specialization it is not virtual.

-

Proposed resolution:

-

  Change section 22.2.1.2 (lib.locale.ctype.byname) to become:

-
     namespace std {
-       template <class charT>
-       class ctype_byname : public ctype<charT> {
-       public:
-         typedef ctype<charT>::mask mask;
-         explicit ctype_byname(const char*, size_t refs = 0);
-       protected:
-        ~ctype_byname();             //  virtual
-       };
-     }
-

  Change section 22.2.1.6 (lib.locale.codecvt.byname) to become:

-
    namespace std {
-      template <class internT, class externT, class stateT>
-      class codecvt_byname : public codecvt<internT, externT, stateT> {
-      public:
-       explicit codecvt_byname(const char*, size_t refs = 0);
-      protected:
-      ~codecvt_byname();             //  virtual
-       };
-     }
-
-

  Change section 22.2.3.2 (lib.locale.numpunct.byname) to become:

-
     namespace std {
-       template <class charT>
-       class numpunct_byname : public numpunct<charT> {
-     //  this class is specialized for  char  and  wchar_t.
-       public:
-         typedef charT                char_type;
-         typedef basic_string<charT>  string_type;
-         explicit numpunct_byname(const char*, size_t refs = 0);
-       protected:
-        ~numpunct_byname();          //  virtual
-       };
-     }
-

  Change section 22.2.4.2 (lib.locale.collate.byname) to become:

-
     namespace std {
-       template <class charT>
-       class collate_byname : public collate<charT> {
-       public:
-         typedef basic_string<charT> string_type;
-         explicit collate_byname(const char*, size_t refs = 0);
-       protected:
-        ~collate_byname();           //  virtual
-       };
-     }
-

  Change section 22.2.5.2 (lib.locale.time.get.byname) to become:

-
     namespace std {
-       template <class charT, class InputIterator = istreambuf_iterator<charT> >
-       class time_get_byname : public time_get<charT, InputIterator> {
-       public:
-         typedef time_base::dateorder dateorder;
-         typedef InputIterator        iter_type
-
         explicit time_get_byname(const char*, size_t refs = 0);
-       protected:
-        ~time_get_byname();          //  virtual
-       };
-     }
-

  Change section 22.2.5.4 (lib.locale.time.put.byname) to become:

-
     namespace std {
-       template <class charT, class OutputIterator = ostreambuf_iterator<charT> >
-       class time_put_byname : public time_put<charT, OutputIterator>
-       {
-       public:
-         typedef charT          char_type;
-         typedef OutputIterator iter_type;
-
         explicit time_put_byname(const char*, size_t refs = 0);
-       protected:
-        ~time_put_byname();          //  virtual
-       };
-     }"
-

  Change section 22.2.6.4 (lib.locale.moneypunct.byname) to become:

-
     namespace std {
-       template <class charT, bool Intl = false>
-       class moneypunct_byname : public moneypunct<charT, Intl> {
-       public:
-         typedef money_base::pattern pattern;
-         typedef basic_string<charT> string_type;
-
         explicit moneypunct_byname(const char*, size_t refs = 0);
-       protected:
-        ~moneypunct_byname();        //  virtual
-       };
-     }
-

  Change section 22.2.7.2 (lib.locale.messages.byname) to become:

-
     namespace std {
-       template <class charT>
-       class messages_byname : public messages<charT> {
-       public:
-         typedef messages_base::catalog catalog;
-         typedef basic_string<charT>    string_type;
-
         explicit messages_byname(const char*, size_t refs = 0);
-       protected:
-        ~messages_byname();          //  virtual
-       };
-     }
-

Remove section 22.2.1.4 [lib.locale.ctype.byname.special] completely (because in -this case only those members are defined to be virtual which are -defined to be virtual in 'ctype<cT>'.)

- -

[Post-Tokyo: Dietmar Kühl submitted this issue at the request of -the LWG to solve the underlying problems raised by issue 138.]

- -

[Copenhagen: proposed resolution was revised slightly, to remove -three last virtual functions from messages_byname.]

- -
-

229. Unqualified references of other library entities

Section: 17.4.1.1 [lib.contents]  Status: WP  Submitter: Steve Clamage  Date: 19 Apr 2000

-

Throughout the library chapters, the descriptions of library entities refer -to other library entities without necessarily qualifying the names.

- -

For example, section 25.2.2 "Swap" describes the effect of -swap_ranges in terms of the unqualified name "swap". This section -could reasonably be interpreted to mean that the library must be implemented so -as to do a lookup of the unqualified name "swap", allowing users to -override any ::std::swap function when Koenig lookup applies.

- -

Although it would have been best to use explicit qualification with -"::std::" throughout, too many lines in the standard would have to be -adjusted to make that change in a Technical Corrigendum.

- -

Issue 182, which addresses qualification of -size_t, is a special case of this. -

-

Proposed resolution:

-

To section 17.4.1.1 "Library contents" Add the following paragraph:

-
-

Whenever a name x defined in the standard library is mentioned, the name x - is assumed to be fully qualified as ::std::x, unless explicitly described - otherwise. For example, if the Effects section for library function F is - described as calling library function G, the function ::std::G is meant.

-
- -

[Post-Tokyo: Steve Clamage submitted this issue at the request of -the LWG to solve a problem in the standard itself similar to the -problem within implementations of library identified by issue 225. Any resolution of issue 225 should be -coordinated with the resolution of this issue.]

- -

[post-Toronto: Howard is undecided about whether it is -appropriate for all standard library function names referred to in -other standard library functions to be explicitly qualified by -std: it is common advice that users should define global -functions that operate on their class in the same namespace as the -class, and this requires argument-dependent lookup if those functions -are intended to be called by library code. Several LWG members are -concerned that valarray appears to require argument-dependent lookup, -but that the wording may not be clear enough to fall under -"unless explicitly described otherwise".]

- -

[Curaçao: An LWG-subgroup spent an afternoon working on issues -225, 226, and 229. Their conclusion was that the issues should be -separated into an LWG portion (Howard's paper, N1387=02-0045), and a -EWG portion (Dave will write a proposal). The LWG and EWG had -(separate) discussions of this plan the next day. This paper resolves -issues 225 and 226. In light of that resolution, the proposed -resolution for the current issue makes sense.]

- -
-

230. Assignable specified without also specifying CopyConstructible

Section: 17 [lib.library]  Status: WP  Submitter: Beman Dawes  Date: 26 Apr 2000

-

Issue 227 identified an instance (std::swap) where -Assignable was specified without also specifying -CopyConstructible. The LWG asked that the standard be searched to -determine if the same defect existed elsewhere.

- -

There are a number of places (see proposed resolution below) where -Assignable is specified without also specifying -CopyConstructible. There are also several cases where both are -specified. For example, 26.4.1 [lib.accumulate].

-

Proposed resolution:

-

In 23.1 [lib.container.requirements] table 65 for value_type: -change "T is Assignable" to "T is CopyConstructible and -Assignable" -

- -

In 23.1.2 [lib.associative.reqmts] table 69 X::key_type; change -"Key is Assignable" to "Key is -CopyConstructible and Assignable"
-

- -

In 24.1.2 [lib.output.iterators] paragraph 1, change: -

-
-

A class or a built-in type X satisfies the requirements of an -output iterator if X is an Assignable type (23.1) and also the -following expressions are valid, as shown in Table 73: -

-
-

to: -

-
-

A class or a built-in type X satisfies the requirements of an -output iterator if X is a CopyConstructible (20.1.3) and Assignable -type (23.1) and also the following expressions are valid, as shown in -Table 73: -

-
- -

[Post-Tokyo: Beman Dawes submitted this issue at the request of -the LWG. He asks that the 25.2.4 [lib.alg.replace] and 25.2.5 [lib.alg.fill] changes be studied carefully, as it is not clear that -CopyConstructible is really a requirement and may be -overspecification.]

- -

[Portions of the resolution for issue 230 have been superceded by -the resolution of issue 276.]

- -

Rationale:

-

The original proposed resolution also included changes to input -iterator, fill, and replace. The LWG believes that those changes are -not necessary. The LWG considered some blanket statement, where an -Assignable type was also required to be Copy Constructible, but -decided against this because fill and replace really don't require the -Copy Constructible property.

-
-

231. Precision in iostream?

Section: 22.2.2.2.2 [lib.facet.num.put.virtuals]  Status: WP  Submitter: James Kanze, Stephen Clamage  Date:  25 Apr 2000

-

What is the following program supposed to output?

-
#include <iostream>
-
-    int
-    main()
-    {
-        std::cout.setf( std::ios::scientific , std::ios::floatfield ) ;
-        std::cout.precision( 0 ) ;
-        std::cout << 1.00 << '\n' ;
-        return 0 ;
-    }
-

From my C experience, I would expect "1e+00"; this is what -printf("%.0e" , 1.00 ); does. G++ outputs -"1.000000e+00".

- -

The only indication I can find in the standard is 22.2.2.2.2/11, -where it says "For conversion from a floating-point type, if -(flags & fixed) != 0 or if str.precision() > 0, then -str.precision() is specified in the conversion specification." -This is an obvious error, however, fixed is not a mask for a field, -but a value that a multi-bit field may take -- the results of and'ing -fmtflags with ios::fixed are not defined, at least not if -ios::scientific has been set. G++'s behavior corresponds to what might -happen if you do use (flags & fixed) != 0 with a typical -implementation (floatfield == 3 << something, fixed == 1 -<< something, and scientific == 2 << something).

- -

Presumably, the intent is either (flags & floatfield) != 0, or -(flags & floatfield) == fixed; the first gives something more or -less like the effect of precision in a printf floating point -conversion. Only more or less, of course. In order to implement printf -formatting correctly, you must know whether the precision was -explicitly set or not. Say by initializing it to -1, instead of 6, and -stating that for floating point conversions, if precision < -1, 6 -will be used, for fixed point, if precision < -1, 1 will be used, -etc. Plus, of course, if precision == 0 and flags & floatfield == -0, 1 should be = used. But it probably isn't necessary to emulate all -of the anomalies of printf:-).

-

Proposed resolution:

-

-Replace 22.2.2.2.2 [lib.facet.num.put.virtuals], paragraph 11, with the following -sentence: -

-
-For conversion from a floating-point type, -str.precision() is specified in the conversion -specification. -
-

Rationale:

-

The floatfield determines whether numbers are formatted as if -with %f, %e, or %g. If the fixed bit is set, it's %f, -if scientific it's %e, and if both bits are set, or -neither, it's %g.

-

Turning to the C standard, a precision of 0 is meaningful -for %f and %e. For %g, precision 0 is taken to be the same as -precision 1.

-

The proposed resolution has the effect that if neither -fixed nor scientific is set we'll be -specifying a precision of 0, which will be internally -turned into 1. There's no need to call it out as a special -case.

-

The output of the above program will be "1e+00".

- -

[Post-Curaçao: Howard provided improved wording covering the case -where precision is 0 and mode is %g.]

- -
-

232. "depends" poorly defined in 17.4.3.1

Section: 17.4.3.1 [lib.reserved.names]  Status: WP  Submitter: Peter Dimov  Date: 18 Apr 2000

-

17.4.3.1/1 uses the term "depends" to limit the set of allowed -specializations of standard templates to those that "depend on a -user-defined name of external linkage."

-

This term, however, is not adequately defined, making it possible to -construct a specialization that is, I believe, technically legal according to -17.4.3.1/1, but that specializes a standard template for a built-in type such as -'int'.

-

The following code demonstrates the problem:

-
-
#include <algorithm>
-
template<class T> struct X
-{
- typedef T type;
-};
-
namespace std
-{
- template<> void swap(::X<int>::type& i, ::X<int>::type& j);
-}
-
-

Proposed resolution:

-

Change "user-defined name" to "user-defined -type".

-

Rationale:

-

This terminology is used in section 2.5.2 and 4.1.1 of The C++ -Programming Language. It disallows the example in the issue, -since the underlying type itself is not user-defined. The only -possible problem I can see is for non-type templates, but there's no -possible way for a user to come up with a specialization for bitset, -for example, that might not have already been specialized by the -implementor?

- -

[Toronto: this may be related to issue 120.]

- -

[post-Toronto: Judy provided the above proposed resolution and -rationale.]

-
-

234. Typos in allocator definition

Section: 20.4.1.1 [lib.allocator.members]  Status: WP  Submitter: Dietmar Kühl  Date: 24 Apr 2000

-

In paragraphs 12 and 13 the effects of construct() and -destruct() are described as returns but the functions actually -return void.

-

Proposed resolution:

-

Substitute "Returns" by "Effect".

-
-

235. No specification of default ctor for reverse_iterator

Section: 24.4.1.1 [lib.reverse.iterator]  Status: WP  Submitter: Dietmar Kühl  Date: 24 Apr 2000

-

The declaration of reverse_iterator lists a default -constructor. However, no specification is given what this constructor -should do.

-

Proposed resolution:

-

In section 24.4.1.3.1 [lib.reverse.iter.cons] add the following - paragraph:

-
-

reverse_iterator()

- -

Default initializes current. Iterator operations - applied to the resulting iterator have defined behavior if and - only if the corresponding operations are defined on a default - constructed iterator of type Iterator.

-
-

[pre-Copenhagen: Dietmar provide wording for proposed - resolution.]

-
-

237. Undefined expression in complexity specification

Section: 23.2.2.1 [lib.list.cons]  Status: WP  Submitter: Dietmar Kühl  Date: 24 Apr 2000

-

The complexity specification in paragraph 6 says that the complexity -is linear in first - last. Even if operator-() is -defined on iterators this term is in general undefined because it -would have to be last - first.

-

Proposed resolution:

-

Change paragraph 6 from

-
Linear in first - last.
-

to become

-
Linear in distance(first, last).
-
-

238. Contradictory results of stringbuf initialization.

Section: 27.7.1.1 [lib.stringbuf.cons]  Status: WP  Submitter: Dietmar Kühl  Date: 11 May 2000

-

In 27.7.1.1 paragraph 4 the results of calling the constructor of -'basic_stringbuf' are said to be str() == str. This is fine -that far but consider this code:

- -
  std::basic_stringbuf<char> sbuf("hello, world", std::ios_base::openmode(0));
-  std::cout << "'" << sbuf.str() << "'\n";
-
- -

Paragraph 3 of 27.7.1.1 basically says that in this case neither -the output sequence nor the input sequence is initialized and -paragraph 2 of 27.7.1.2 basically says that str() either -returns the input or the output sequence. None of them is initialized, -ie. both are empty, in which case the return from str() is -defined to be basic_string<cT>().

- -

However, probably only test cases in some testsuites will detect this -"problem"...

-

Proposed resolution:

-

Remove 27.7.1.1 paragraph 4.

-

Rationale:

-

We could fix 27.7.1.1 paragraph 4, but there would be no point. If -we fixed it, it would say just the same thing as text that's already -in the standard.

-
-

239. Complexity of unique() and/or unique_copy incorrect

Section: 25.2.8 [lib.alg.unique]  Status: WP  Submitter: Angelika Langer  Date: May 15 2000

-

The complexity of unique and unique_copy are inconsistent with each -other and inconsistent with the implementations.  The standard -specifies:

- -

for unique():

- -
-3- Complexity: If the range (last - first) is not empty, exactly -(last - first) - 1 applications of the corresponding predicate, otherwise -no applications of the predicate.
- -

for unique_copy():

- -
-7- Complexity: Exactly last - first applications of the corresponding -predicate.
- -

-The implementations do it the other way round: unique() applies the -predicate last-first times and unique_copy() applies it last-first-1 -times.

- -

As both algorithms use the predicate for pair-wise comparison of -sequence elements I don't see a justification for unique_copy() -applying the predicate last-first times, especially since it is not -specified to which pair in the sequence the predicate is applied -twice.

-

Proposed resolution:

-

Change both complexity sections in 25.2.8 [lib.alg.unique] to:

- -
Complexity: For nonempty ranges, exactly last - first - 1 -applications of the corresponding predicate.
- -
-

240. Complexity of adjacent_find() is meaningless

Section: 25.1.5 [lib.alg.adjacent.find]  Status: WP  Submitter: Angelika Langer  Date: May 15 2000

-

The complexity section of adjacent_find is defective:

- -
-
template <class ForwardIterator>
-ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last
-                              BinaryPredicate pred);
-
- -

-1- Returns: The first iterator i such that both i and i + 1 are in -the range [first, last) for which the following corresponding -conditions hold: *i == *(i + 1), pred(*i, *(i + 1)) != false. Returns -last if no such iterator is found.

- -

-2- Complexity: Exactly find(first, last, value) - first applications -of the corresponding predicate. -

-
- -

In the Complexity section, it is not defined what "value" -is supposed to mean. My best guess is that "value" means an -object for which one of the conditions pred(*i,value) or -pred(value,*i) is true, where i is the iterator defined in the Returns -section. However, the value type of the input sequence need not be -equality-comparable and for this reason the term find(first, last, -value) - first is meaningless.

- -

A term such as find_if(first, last, bind2nd(pred,*i)) - first or -find_if(first, last, bind1st(pred,*i)) - first might come closer to -the intended specification. Binders can only be applied to function -objects that have the function call operator declared const, which is -not required of predicates because they can have non-const data -members. For this reason, a specification using a binder could only be -an "as-if" specification.

-

Proposed resolution:

-

Change the complexity section in 25.1.5 [lib.alg.adjacent.find] to:

-
-For a nonempty range, exactly min((i - first) + 1, -(last - first) - 1) applications of the -corresponding predicate, where i is adjacent_find's -return value. -
- -

[Copenhagen: the original resolution specified an upper -bound. The LWG preferred an exact count.]

- -
-

241. Does unique_copy() require CopyConstructible and Assignable?

Section: 25.2.8 [lib.alg.unique]  Status: WP  Submitter: Angelika Langer  Date: May 15 2000

- -

Some popular implementations of unique_copy() create temporary -copies of values in the input sequence, at least if the input iterator -is a pointer. Such an implementation is built on the assumption that -the value type is CopyConstructible and Assignable.

- -

It is common practice in the standard that algorithms explicitly -specify any additional requirements that they impose on any of the -types used by the algorithm. An example of an algorithm that creates -temporary copies and correctly specifies the additional requirements -is accumulate(), 26.4.1 [lib.accumulate].

- -

Since the specifications of unique() and unique_copy() do not -require CopyConstructible and Assignable of the InputIterator's value -type the above mentioned implementations are not standard-compliant. I -cannot judge whether this is a defect in the standard or a defect in -the implementations.

-

Proposed resolution:

-

In 25.2.8 change:

- -
--4- Requires: The ranges [first, last) and [result, result+(last-first)) -shall not overlap. -
- -

to:

- -
-

-4- Requires: The ranges [first, last) and [result, - result+(last-first)) shall not overlap. The expression *result = - *first must be valid. If neither InputIterator nor OutputIterator - meets the requirements of forward iterator then the value type of - InputIterator must be copy constructible. Otherwise copy - constructible is not required.

-
- -

[Redmond: the original proposed resolution didn't impose an -explicit requirement that the iterator's value type must be copy -constructible, on the grounds that an input iterator's value type must -always be copy constructible. Not everyone in the LWG thought that -this requirement was clear from table 72. It has been suggested that -it might be possible to implement unique_copy without -requiring assignability, although current implementations do impose -that requirement. Howard provided new wording.]

- -

[ -Curaçao: The LWG changed the PR editorially to specify -"neither...nor...meet..." as clearer than -"both...and...do not meet...". Change believed to be so -minor as not to require re-review. -]

- -
-

242. Side effects of function objects

Section: 25.2.3 [lib.alg.transform], 26.4 [lib.numeric.ops]  Status: WP  Submitter: Angelika Langer  Date: May 15 2000

-

The algorithms transform(), accumulate(), inner_product(), -partial_sum(), and adjacent_difference() require that the function -object supplied to them shall not have any side effects.

- -

The standard defines a side effect in 1.9 [intro.execution] as:

-
-7- Accessing an object designated by a volatile lvalue (basic.lval), -modifying an object, calling a library I/O function, or calling a function -that does any of those operations are all side effects, which are changes -in the state of the execution environment.
- -

As a consequence, the function call operator of a function object supplied -to any of the algorithms listed above cannot modify data members, cannot -invoke any function that has a side effect, and cannot even create and -modify temporary objects.  It is difficult to imagine a function object -that is still useful under these severe limitations. For instance, any -non-trivial transformator supplied to transform() might involve creation -and modification of temporaries, which is prohibited according to the current -wording of the standard.

- -

On the other hand, popular implementations of these algorithms exhibit -uniform and predictable behavior when invoked with a side-effect-producing -function objects. It looks like the strong requirement is not needed for -efficient implementation of these algorithms.

- -

The requirement of  side-effect-free function objects could be -replaced by a more relaxed basic requirement (which would hold for all -function objects supplied to any algorithm in the standard library):

-
A function objects supplied to an algorithm shall not invalidate -any iterator or sequence that is used by the algorithm. Invalidation of -the sequence includes destruction of the sorting order if the algorithm -relies on the sorting order (see section 25.3 - Sorting and related operations -[lib.alg.sorting]).
- -

I can't judge whether it is intended that the function objects supplied -to transform(), accumulate(), inner_product(), partial_sum(), or adjacent_difference() -shall not modify sequence elements through dereferenced iterators.

- -

It is debatable whether this issue is a defect or a change request. -Since the consequences for user-supplied function objects are drastic and -limit the usefulness of the algorithms significantly I would consider it -a defect.

-

Proposed resolution:

- -

Things to notice about these changes:

- -
    -
  1. The fully-closed ("[]" as opposed to half-closed "[)" ranges - are intentional. we want to prevent side-effects from - invalidating the end iterators. -
  2. - -
  3. That has the unintentional side-effect of prohibiting - modification of the end element as a side-effect. This could - conceivably be significant in some cases. -
  4. - -
  5. The wording also prevents side-effects from modifying elements - of the output sequence. I can't imagine why anyone would want - to do this, but it is arguably a restriction that implementors - don't need to place on users. -
  6. - -
  7. Lifting the restrictions imposed in #2 and #3 above is possible - and simple, but would require more verbiage. -
  8. -
- -

Change 25.2.3/2 from:

- -
- -2- Requires: op and binary_op shall not have any side effects. -
- -

to:

- -
- -2- Requires: in the ranges [first1, last1], [first2, first2 + - (last1 - first1)] and [result, result + (last1- first1)], op and - binary_op shall neither modify elements nor invalidate iterators or - subranges. - [Footnote: The use of fully closed ranges is intentional --end footnote] -
- - -

Change 25.2.3/2 from:

- -
- -2- Requires: op and binary_op shall not have any side effects. -
- -

to:

- -
- -2- Requires: op and binary_op shall not invalidate iterators or - subranges, or modify elements in the ranges [first1, last1], - [first2, first2 + (last1 - first1)], and [result, result + (last1 - - first1)]. - [Footnote: The use of fully closed ranges is intentional --end footnote] -
- - -

Change 26.4.1/2 from:

- -
- -2- Requires: T must meet the requirements of CopyConstructible - (lib.copyconstructible) and Assignable (lib.container.requirements) - types. binary_op shall not cause side effects. -
- -

to:

- -
- -2- Requires: T must meet the requirements of CopyConstructible - (lib.copyconstructible) and Assignable - (lib.container.requirements) types. In the range [first, last], - binary_op shall neither modify elements nor invalidate iterators - or subranges. - [Footnote: The use of a fully closed range is intentional --end footnote] -
- -

Change 26.4.2/2 from:

- -
- -2- Requires: T must meet the requirements of CopyConstructible - (lib.copyconstructible) and Assignable (lib.container.requirements) - types. binary_op1 and binary_op2 shall not cause side effects. -
- -

to:

- -
- -2- Requires: T must meet the requirements of CopyConstructible - (lib.copyconstructible) and Assignable (lib.container.requirements) - types. In the ranges [first, last] and [first2, first2 + (last - - first)], binary_op1 and binary_op2 shall neither modify elements - nor invalidate iterators or subranges. - [Footnote: The use of fully closed ranges is intentional --end footnote] -
- - -

Change 26.4.3/4 from:

- -
- -4- Requires: binary_op is expected not to have any side effects. -
- -

to:

- -
- -4- Requires: In the ranges [first, last] and [result, result + - (last - first)], binary_op shall neither modify elements nor - invalidate iterators or subranges. - [Footnote: The use of fully closed ranges is intentional --end footnote] -
- -

Change 26.4.4/2 from:

- -
- -2- Requires: binary_op shall not have any side effects. -
- -

to:

- -
- -2- Requires: In the ranges [first, last] and [result, result + - (last - first)], binary_op shall neither modify elements nor - invalidate iterators or subranges. - [Footnote: The use of fully closed ranges is intentional --end footnote] -
- -

[Toronto: Dave Abrahams supplied wording.]

- -

[Copenhagen: Proposed resolution was modified slightly. Matt -added footnotes pointing out that the use of closed ranges was -intentional.]

- -
-

243. get and getline when sentry reports failure

Section: 27.6.1.3 [lib.istream.unformatted]  Status: WP  Submitter: Martin Sebor  Date: May 15 2000

-

basic_istream<>::get(), and basic_istream<>::getline(), -are unclear with respect to the behavior and side-effects of the named -functions in case of an error.

- -

27.6.1.3, p1 states that "... If the sentry object returns -true, when converted to a value of type bool, the function endeavors -to obtain the requested input..." It is not clear from this (or -the rest of the paragraph) what precisely the behavior should be when -the sentry ctor exits by throwing an exception or when the sentry -object returns false. In particular, what is the number of characters -extracted that gcount() returns supposed to be?

- -

27.6.1.3 p8 and p19 say about the effects of get() and getline(): -"... In any case, it then stores a null character (using -charT()) into the next successive location of the array." Is not -clear whether this sentence applies if either of the conditions above -holds (i.e., when sentry fails).

-

Proposed resolution:

-

Add to 27.6.1.3, p1 after the sentence

- -
-"... If the sentry object returns true, when converted to a value of -type bool, the function endeavors to obtain the requested input." -
- -

the following

- - -
-"Otherwise, if the sentry constructor exits by throwing an exception or -if the sentry object returns false, when converted to a value of type -bool, the function returns without attempting to obtain any input. In -either case the number of extracted characters is set to 0; unformatted -input functions taking a character array of non-zero size as an argument -shall also store a null character (using charT()) in the first location -of the array." -
-

Rationale:

-

Although the general philosophy of the input functions is that the -argument should not be modified upon failure, getline -historically added a terminating null unconditionally. Most -implementations still do that. Earlier versions of the draft standard -had language that made this an unambiguous requirement; those words -were moved to a place where their context made them less clear. See -Jerry Schwarz's message c++std-lib-7618.

-
-

248. time_get fails to set eofbit

Section: 22.2.5 [lib.category.time]  Status: WP  Submitter: Martin Sebor  Date: 22 June 2000

-

There is no requirement that any of time_get member functions set -ios::eofbit when they reach the end iterator while parsing their input. -Since members of both the num_get and money_get facets are required to -do so (22.2.2.1.2, and 22.2.6.1.2, respectively), time_get members -should follow the same requirement for consistency.

-

Proposed resolution:

-

Add paragraph 2 to section 22.2.5.1 with the following text:

- -
-If the end iterator is reached during parsing by any of the get() -member functions, the member sets ios_base::eofbit in err. -
-

Rationale:

-

Two alternative resolutions were proposed. The LWG chose this one -because it was more consistent with the way eof is described for other -input facets.

-
-

250. splicing invalidates iterators

Section: 23.2.2.4 [lib.list.ops]  Status: WP  Submitter: Brian Parker   Date: 14 Jul 2000

-

-Section 23.2.2.4 [lib.list.ops] states that -

-
  void splice(iterator position, list<T, Allocator>& x);
-
-

-invalidates all iterators and references to list x. -

- -

-This is unnecessary and defeats an important feature of splice. In -fact, the SGI STL guarantees that iterators to x remain valid -after splice. -

-

Proposed resolution:

- -

Add a footnote to 23.2.2.4 [lib.list.ops], paragraph 1:

-
-[Footnote: As specified in 20.1.5 [lib.allocator.requirements], paragraphs -4-5, the semantics described in this clause applies only to the case -where allocators compare equal. --end footnote] -
- -

In 23.2.2.4 [lib.list.ops], replace paragraph 4 with:

-
-Effects: Inserts the contents of x before position and x becomes -empty. Pointers and references to the moved elements of x now refer to -those same elements but as members of *this. Iterators referring to the -moved elements will continue to refer to their elements, but they now -behave as iterators into *this, not into x. -
- -

In 23.2.2.4 [lib.list.ops], replace paragraph 7 with:

-
-Effects: Inserts an element pointed to by i from list x before -position and removes the element from x. The result is unchanged if -position == i or position == ++i. Pointers and references to *i continue -to refer to this same element but as a member of *this. Iterators to *i -(including i itself) continue to refer to the same element, but now -behave as iterators into *this, not into x. -
- -

In 23.2.2.4 [lib.list.ops], replace paragraph 12 with:

-
-Requires: [first, last) is a valid range in x. The result is -undefined if position is an iterator in the range [first, last). -Pointers and references to the moved elements of x now refer to those -same elements but as members of *this. Iterators referring to the moved -elements will continue to refer to their elements, but they now behave as -iterators into *this, not into x. -
- -

[pre-Copenhagen: Howard provided wording.]

-

Rationale:

-

The original proposed resolution said that iterators and references -would remain "valid". The new proposed resolution clarifies what that -means. Note that this only applies to the case of equal allocators. ->From 20.1.5 [lib.allocator.requirements] paragraph 4, the behavior of list when -allocators compare nonequal is outside the scope of the standard.

-
-

251. basic_stringbuf missing allocator_type

Section: 27.7.1 [lib.stringbuf]  Status: WP  Submitter: Martin Sebor  Date: 28 Jul 2000

-

The synopsis for the template class basic_stringbuf -doesn't list a typedef for the template parameter -Allocator. This makes it impossible to determine the type of -the allocator at compile time. It's also inconsistent with all other -template classes in the library that do provide a typedef for the -Allocator parameter.

-

Proposed resolution:

-

Add to the synopses of the class templates basic_stringbuf (27.7.1), -basic_istringstream (27.7.2), basic_ostringstream (27.7.3), and -basic_stringstream (27.7.4) the typedef:

-
  typedef Allocator allocator_type;
-
-
-

252. missing casts/C-style casts used in iostreams

Section: 27.7 [lib.string.streams]  Status: WP  Submitter: Martin Sebor  Date: 28 Jul 2000

-

27.7.2.2, p1 uses a C-style cast rather than the more appropriate -const_cast<> in the Returns clause for basic_istringstream<>::rdbuf(). -The same C-style cast is being used in 27.7.3.2, p1, D.7.2.2, p1, and -D.7.3.2, p1, and perhaps elsewhere. 27.7.6, p1 and D.7.2.2, p1 are missing -the cast altogether.

- -

C-style casts have not been deprecated, so the first part of this -issue is stylistic rather than a matter of correctness.

-

Proposed resolution:

-

In 27.7.2.2, p1 replace

-
  -1- Returns: (basic_stringbuf<charT,traits,Allocator>*)&sb.
- -

with

-
  -1- Returns: const_cast<basic_stringbuf<charT,traits,Allocator>*>(&sb).
- - -

In 27.7.3.2, p1 replace

-
  -1- Returns: (basic_stringbuf<charT,traits,Allocator>*)&sb.
- -

with

-
  -1- Returns: const_cast<basic_stringbuf<charT,traits,Allocator>*>(&sb).
- -

In 27.7.6, p1, replace

-
  -1- Returns: &sb
- -

with

-
  -1- Returns: const_cast<basic_stringbuf<charT,traits,Allocator>*>(&sb).
- -

In D.7.2.2, p1 replace

-
  -2- Returns: &sb. 
- -

with

-
  -2- Returns: const_cast<strstreambuf*>(&sb).
-
-

253. valarray helper functions are almost entirely useless

Section: 26.3.2.1 [lib.valarray.cons], 26.3.2.2 [lib.valarray.assign]  Status: WP  Submitter: Robert Klarer  Date: 31 Jul 2000

-

This discussion is adapted from message c++std-lib-7056 posted -November 11, 1999. I don't think that anyone can reasonably claim -that the problem described below is NAD.

- -

These valarray constructors can never be called:

- -
   template <class T>
-         valarray<T>::valarray(const slice_array<T> &);
-   template <class T>
-         valarray<T>::valarray(const gslice_array<T> &);
-   template <class T>
-         valarray<T>::valarray(const mask_array<T> &);
-   template <class T>
-         valarray<T>::valarray(const indirect_array<T> &);
-
- -

Similarly, these valarray assignment operators cannot be -called:

- -
     template <class T>
-     valarray<T> valarray<T>::operator=(const slice_array<T> &);
-     template <class T>
-     valarray<T> valarray<T>::operator=(const gslice_array<T> &);
-     template <class T>
-     valarray<T> valarray<T>::operator=(const mask_array<T> &);
-     template <class T>
-     valarray<T> valarray<T>::operator=(const indirect_array<T> &);
-
- -

Please consider the following example:

- -
   #include <valarray>
-   using namespace std;
-
-   int main()
-   {
-       valarray<double> va1(12);
-       valarray<double> va2(va1[slice(1,4,3)]); // line 1
-   }
-
- - -

Since the valarray va1 is non-const, the result of the sub-expression -va1[slice(1,4,3)] at line 1 is an rvalue of type const -std::slice_array<double>. This slice_array rvalue is then used to -construct va2. The constructor that is used to construct va2 is -declared like this:

- -
     template <class T>
-     valarray<T>::valarray(const slice_array<T> &);
-
- -

Notice the constructor's const reference parameter. When the -constructor is called, a slice_array must be bound to this reference. -The rules for binding an rvalue to a const reference are in 8.5.3, -paragraph 5 (see also 13.3.3.1.4). Specifically, paragraph 5 -indicates that a second slice_array rvalue is constructed (in this -case copy-constructed) from the first one; it is this second rvalue -that is bound to the reference parameter. Paragraph 5 also requires -that the constructor that is used for this purpose be callable, -regardless of whether the second rvalue is elided. The -copy-constructor in this case is not callable, however, because it is -private. Therefore, the compiler should report an error.

- -

Since slice_arrays are always rvalues, the valarray constructor that has a -parameter of type const slice_array<T> & can never be called. The -same reasoning applies to the three other constructors and the four -assignment operators that are listed at the beginning of this post. -Furthermore, since these functions cannot be called, the valarray helper -classes are almost entirely useless.

-

Proposed resolution:

-

slice_array:

- - -

gslice_array:

- - -

mask_array:

- - -

indirect_array:

- -

[Proposed resolution was modified in Santa Cruz: explicitly make -copy constructor and copy assignment operators public, instead of -removing them.]

-

Rationale:

-

Keeping the valarray constructors private is untenable. Merely -making valarray a friend of the helper classes isn't good enough, -because access to the copy constructor is checked in the user's -environment.

- -

Making the assignment operator public is not strictly necessary to -solve this problem. A majority of the LWG (straw poll: 13-4) -believed we should make the assignment operators public, in addition -to the copy constructors, for reasons of symmetry and user -expectation.

-
-

256. typo in 27.4.4.2, p17: copy_event does not exist

Section: 27.4.4.2 [lib.basic.ios.members]  Status: WP  Submitter: Martin Sebor  Date: 21 Aug 2000

-

-27.4.4.2, p17 says -

- -
--17- Before copying any parts of rhs, calls each registered callback -pair (fn,index) as (*fn)(erase_event,*this,index). After all parts but -exceptions() have been replaced, calls each callback pair that was -copied from rhs as (*fn)(copy_event,*this,index). -
- -

-The name copy_event isn't defined anywhere. The intended name was -copyfmt_event. -

-

Proposed resolution:

-

Replace copy_event with copyfmt_event in the named paragraph.

-
-

259. basic_string::operator[] and const correctness

Section: 21.3.4 [lib.string.access]  Status: WP  Submitter: Chris Newton   Date: 27 Aug 2000

-

-Paraphrased from a message that Chris Newton posted to comp.std.c++: -

- -

-The standard's description of basic_string<>::operator[] -seems to violate const correctness. -

- -

-The standard (21.3.4/1) says that "If pos < size(), -returns data()[pos]." The types don't work. The -return value of data() is const charT*, but -operator[] has a non-const version whose return type is reference. -

-

Proposed resolution:

-

-In section 21.3.4, paragraph 1, change -"data()[pos]" to "*(begin() + -pos)". -

-
-

260. Inconsistent return type of istream_iterator::operator++(int) -

Section: 24.5.1.2 [lib.istream.iterator.ops]  Status: WP  Submitter: Martin Sebor  Date: 27 Aug 2000

-

The synopsis of istream_iterator::operator++(int) in 24.5.1 shows -it as returning the iterator by value. 24.5.1.2, p5 shows the same -operator as returning the iterator by reference. That's incorrect -given the Effects clause below (since a temporary is returned). The -`&' is probably just a typo.

-

Proposed resolution:

-

Change the declaration in 24.5.1.2, p5 from

-
 istream_iterator<T,charT,traits,Distance>& operator++(int);
- 
-

to

-
 istream_iterator<T,charT,traits,Distance> operator++(int);
- 
-

(that is, remove the `&').

-
-

261. Missing description of istream_iterator::operator!= -

Section: 24.5.1.2 [lib.istream.iterator.ops]  Status: WP  Submitter: Martin Sebor  Date: 27 Aug 2000

-

-24.5.1, p3 lists the synopsis for -

- -
   template <class T, class charT, class traits, class Distance>
-        bool operator!=(const istream_iterator<T,charT,traits,Distance>& x,
-                        const istream_iterator<T,charT,traits,Distance>& y);
-
- -

-but there is no description of what the operator does (i.e., no Effects -or Returns clause) in 24.5.1.2. -

-

Proposed resolution:

-

-Add paragraph 7 to the end of section 24.5.1.2 with the following text: -

- -
   template <class T, class charT, class traits, class Distance>
-        bool operator!=(const istream_iterator<T,charT,traits,Distance>& x,
-                        const istream_iterator<T,charT,traits,Distance>& y);
-
- -

-7- Returns: !(x == y).

-
-

262. Bitmask operator ~ specified incorrectly

Section: 17.3.2.1.2 [lib.bitmask.types]  Status: WP  Submitter: Beman Dawes  Date: 03 Sep 2000

-

-The ~ operation should be applied after the cast to int_type. -

-

Proposed resolution:

-

-Change 17.3.2.1.2 [lib.bitmask.types] operator~ from: -

- -
   bitmask operator~ ( bitmask X )
-     { return static_cast< bitmask>(static_cast<int_type>(~ X)); }
-
- -

-to: -

- -
   bitmask operator~ ( bitmask X )
-     { return static_cast< bitmask>(~static_cast<int_type>(X)); }
-
-
-

263. Severe restriction on basic_string reference counting

Section: 21.3 [lib.basic.string]  Status: WP  Submitter: Kevlin Henney  Date: 04 Sep 2000

-

-The note in paragraph 6 suggests that the invalidation rules for -references, pointers, and iterators in paragraph 5 permit a reference- -counted implementation (actually, according to paragraph 6, they permit -a "reference counted implementation", but this is a minor editorial fix). -

- -

-However, the last sub-bullet is so worded as to make a reference-counted -implementation unviable. In the following example none of the -conditions for iterator invalidation are satisfied: -

- -
    // first example: "*******************" should be printed twice
-    string original = "some arbitrary text", copy = original;
-    const string & alias = original;
-
-    string::const_iterator i = alias.begin(), e = alias.end();
-    for(string::iterator j = original.begin(); j != original.end(); ++j)
-        *j = '*';
-    while(i != e)
-        cout << *i++;
-    cout << endl;
-    cout << original << endl;
-
- -

-Similarly, in the following example: -

- -
    // second example: "some arbitrary text" should be printed out
-    string original = "some arbitrary text", copy = original;
-    const string & alias = original;
-
-    string::const_iterator i = alias.begin();
-    original.begin();
-    while(i != alias.end())
-        cout << *i++;
-
- -

-I have tested this on three string implementations, two of which were -reference counted. The reference-counted implementations gave -"surprising behavior" because they invalidated iterators on -the first call to non-const begin since construction. The current -wording does not permit such invalidation because it does not take -into account the first call since construction, only the first call -since various member and non-member function calls. -

-

Proposed resolution:

-

-Change the following sentence in 21.3 paragraph 5 from -

- -
- Subsequent to any of the above uses except the forms of insert() and - erase() which return iterators, the first call to non-const member - functions operator[](), at(), begin(), rbegin(), end(), or rend(). -
- -

to

- -
- Following construction or any of the above uses, except the forms of - insert() and erase() that return iterators, the first call to non- - const member functions operator[](), at(), begin(), rbegin(), end(), - or rend(). -
-
-

264. Associative container insert(i, j) complexity requirements are not feasible.

Section: 23.1.2 [lib.associative.reqmts]  Status: WP  Submitter: John Potter  Date: 07 Sep 2000

-

-Table 69 requires linear time if [i, j) is sorted. Sorted is necessary but not sufficient. -Consider inserting a sorted range of even integers into a set<int> containing the odd -integers in the same range. -

- -

Related issue: 102

-

Proposed resolution:

-

-In Table 69, in section 23.1.2, change the complexity clause for -insertion of a range from "N log(size() + N) (N is the distance -from i to j) in general; linear if [i, j) is sorted according to -value_comp()" to "N log(size() + N), where N is the distance -from i to j". -

- -

[Copenhagen: Minor fix in proposed resolution: fixed unbalanced -parens in the revised wording.]

- -

Rationale:

-

-Testing for valid insertions could be less efficient than simply -inserting the elements when the range is not both sorted and between -two adjacent existing elements; this could be a QOI issue. -

- -

-The LWG considered two other options: (a) specifying that the -complexity was linear if [i, j) is sorted according to value_comp() -and between two adjacent existing elements; or (b) changing to -Klog(size() + N) + (N - K) (N is the distance from i to j and K is the -number of elements which do not insert immediately after the previous -element from [i, j) including the first). The LWG felt that, since -we can't guarantee linear time complexity whenever the range to be -inserted is sorted, it's more trouble than it's worth to say that it's -linear in some special cases. -

-
-

265. std::pair::pair() effects overly restrictive

Section: 20.2.2 [lib.pairs]  Status: WP  Submitter: Martin Sebor  Date: 11 Sep 2000

-

-I don't see any requirements on the types of the elements of the -std::pair container in 20.2.2. From the descriptions of the member -functions it appears that they must at least satisfy the requirements of -20.1.3 [lib.copyconstructible] and 20.1.4 [lib.default.con.req], and in -the case of the [in]equality operators also the requirements of 20.1.1 -[lib.equalitycomparable] and 20.1.2 [lib.lessthancomparable]. -

- -

-I believe that the the CopyConstructible requirement is unnecessary in -the case of 20.2.2, p2. -

-

Proposed resolution:

-

Change the Effects clause in 20.2.2, p2 from

- -
--2- Effects: Initializes its members as if implemented: pair() : -first(T1()), second(T2()) {} -
- -

to

- -
--2- Effects: Initializes its members as if implemented: pair() : -first(), second() {} -
-

Rationale:

-

The existing specification of pair's constructor appears to be a -historical artifact: there was concern that pair's members be properly -zero-initialized when they are built-in types. At one time there was -uncertainty about whether they would be zero-initialized if the -default constructor was written the obvious way. This has been -clarified by core issue 178, and there is no longer any doubt that -the straightforward implementation is correct.

-
-

266. bad_exception::~bad_exception() missing Effects clause

Section: 18.6.2.1 [lib.bad.exception]  Status: WP  Submitter: Martin Sebor  Date: 24 Sep 2000

-

-The synopsis for std::bad_exception lists the function ~bad_exception() -but there is no description of what the function does (the Effects -clause is missing). -

-

Proposed resolution:

-

-Remove the destructor from the class synopses of -bad_alloc (18.4.2.1 [lib.bad.alloc]), -bad_cast (18.5.2 [lib.bad.cast]), -bad_typeid (18.5.3 [lib.bad.typeid]), -and bad_exception (18.6.2.1 [lib.bad.exception]). -

-

Rationale:

-

-This is a general problem with the exception classes in clause 18. -The proposed resolution is to remove the destructors from the class -synopses, rather than to document the destructors' behavior, because -removing them is more consistent with how exception classes are -described in clause 19. -

-
-

268. Typo in locale synopsis

Section: 22.1.1 [lib.locale]  Status: WP  Submitter: Martin Sebor  Date: 5 Oct 2000

-

The synopsis of the class std::locale in 22.1.1 contains two typos: -the semicolons after the declarations of the default ctor -locale::locale() and the copy ctor locale::locale(const locale&) -are missing.

-

Proposed resolution:

-

Add the missing semicolons, i.e., change

- -
    //  construct/copy/destroy:
-        locale() throw()
-        locale(const locale& other) throw()
-
- -

in the synopsis in 22.1.1 to

- -
    //  construct/copy/destroy:
-        locale() throw();
-        locale(const locale& other) throw();
-
-
-

270. Binary search requirements overly strict

Section: 25.3.3 [lib.alg.binary.search]  Status: WP  Submitter: Matt Austern  Date: 18 Oct 2000

-

-Each of the four binary search algorithms (lower_bound, upper_bound, -equal_range, binary_search) has a form that allows the user to pass a -comparison function object. According to 25.3, paragraph 2, that -comparison function object has to be a strict weak ordering. -

- -

-This requirement is slightly too strict. Suppose we are searching -through a sequence containing objects of type X, where X is some -large record with an integer key. We might reasonably want to look -up a record by key, in which case we would want to write something -like this: -

-
    struct key_comp {
-      bool operator()(const X& x, int n) const {
-        return x.key() < n;
-      }
-    }
-
-    std::lower_bound(first, last, 47, key_comp());
-
- -

-key_comp is not a strict weak ordering, but there is no reason to -prohibit its use in lower_bound. -

- -

-There's no difficulty in implementing lower_bound so that it allows -the use of something like key_comp. (It will probably work unless an -implementor takes special pains to forbid it.) What's difficult is -formulating language in the standard to specify what kind of -comparison function is acceptable. We need a notion that's slightly -more general than that of a strict weak ordering, one that can encompass -a comparison function that involves different types. Expressing that -notion may be complicated. -

- -

Additional questions raised at the Toronto meeting:

-
    -
  • Do we really want to specify what ordering the implementor must - use when calling the function object? The standard gives - specific expressions when describing these algorithms, but it also - says that other expressions (with different argument order) are - equivalent.
  • -
  • If we are specifying ordering, note that the standard uses both - orderings when describing equal_range.
  • -
  • Are we talking about requiring these algorithms to work properly - when passed a binary function object whose two argument types - are not the same, or are we talking about requirements when - they are passed a binary function object with several overloaded - versions of operator()?
  • -
  • The definition of a strict weak ordering does not appear to give - any guidance on issues of overloading; it only discusses expressions, - and all of the values in these expressions are of the same type. - Some clarification would seem to be in order.
  • -
- -

Additional discussion from Copenhagen:

-
    -
  • It was generally agreed that there is a real defect here: if -the predicate is merely required to be a Strict Weak Ordering, then -it's possible to pass in a function object with an overloaded -operator(), where the version that's actually called does something -completely inappropriate. (Such as returning a random value.)
  • - -
  • An alternative formulation was presented in a paper distributed by -David Abrahams at the meeting, "Binary Search with Heterogeneous -Comparison", J16-01/0027 = WG21 N1313: Instead of viewing the -predicate as a Strict Weak Ordering acting on a sorted sequence, view -the predicate/value pair as something that partitions a sequence. -This is almost equivalent to saying that we should view binary search -as if we are given a unary predicate and a sequence, such that f(*p) -is true for all p below a specific point and false for all p above it. -The proposed resolution is based on that alternative formulation.
  • -
-

Proposed resolution:

- -

Change 25.3 [lib.alg.sorting] paragraph 3 from:

- -
- 3 For all algorithms that take Compare, there is a version that uses - operator< instead. That is, comp(*i, *j) != false defaults to *i < - *j != false. For the algorithms to work correctly, comp has to - induce a strict weak ordering on the values. -
- -

to:

- -
- 3 For all algorithms that take Compare, there is a version that uses - operator< instead. That is, comp(*i, *j) != false defaults to *i - < *j != false. For algorithms other than those described in - lib.alg.binary.search (25.3.3) to work correctly, comp has to induce - a strict weak ordering on the values. -
- -

Add the following paragraph after 25.3 [lib.alg.sorting] paragraph 5:

- -
- -6- A sequence [start, finish) is partitioned with respect to an - expression f(e) if there exists an integer n such that - for all 0 <= i < distance(start, finish), f(*(begin+i)) is true if - and only if i < n. -
- -

Change 25.3.3 [lib.alg.binary.search] paragraph 1 from:

- -
- -1- All of the algorithms in this section are versions of binary - search and assume that the sequence being searched is in order - according to the implied or explicit comparison function. They work - on non-random access iterators minimizing the number of - comparisons, which will be logarithmic for all types of - iterators. They are especially appropriate for random access - iterators, because these algorithms do a logarithmic number of - steps through the data structure. For non-random access iterators - they execute a linear number of steps. -
- -

to:

- -
- -1- All of the algorithms in this section are versions of binary - search and assume that the sequence being searched is partitioned - with respect to an expression formed by binding the search key to - an argument of the implied or explicit comparison function. They - work on non-random access iterators minimizing the number of - comparisons, which will be logarithmic for all types of - iterators. They are especially appropriate for random access - iterators, because these algorithms do a logarithmic number of - steps through the data structure. For non-random access iterators - they execute a linear number of steps. -
- -

Change 25.3.3.1 [lib.lower.bound] paragraph 1 from:

- -
- -1- Requires: Type T is LessThanComparable - (lib.lessthancomparable). -
- -

to:

- -
- -1- Requires: The elements e of [first, last) are partitioned with - respect to the expression e < value or comp(e, value) -
- - -

Remove 25.3.3.1 [lib.lower.bound] paragraph 2:

- -
- -2- Effects: Finds the first position into which value can be - inserted without violating the ordering. -
- -

Change 25.3.3.2 [lib.upper.bound] paragraph 1 from:

- -
- -1- Requires: Type T is LessThanComparable (lib.lessthancomparable). -
- -

to:

- -
- -1- Requires: The elements e of [first, last) are partitioned with - respect to the expression !(value < e) or !comp(value, e) -
- -

Remove 25.3.3.2 [lib.upper.bound] paragraph 2:

- -
- -2- Effects: Finds the furthermost position into which value can be - inserted without violating the ordering. -
- -

Change 25.3.3.3 [lib.equal.range] paragraph 1 from:

- -
- -1- Requires: Type T is LessThanComparable - (lib.lessthancomparable). -
- -

to:

- -
- -1- Requires: The elements e of [first, last) are partitioned with - respect to the expressions e < value and !(value < e) or - comp(e, value) and !comp(value, e). Also, for all elements e of - [first, last), e < value implies !(value < e) or comp(e, - value) implies !comp(value, e) -
- -

Change 25.3.3.3 [lib.equal.range] paragraph 2 from:

- -
- -2- Effects: Finds the largest subrange [i, j) such that the value - can be inserted at any iterator k in it without violating the - ordering. k satisfies the corresponding conditions: !(*k < value) - && !(value < *k) or comp(*k, value) == false && comp(value, *k) == - false. -
- -

to:

- -
   -2- Returns: 
-         make_pair(lower_bound(first, last, value),
-                   upper_bound(first, last, value))
-       or
-         make_pair(lower_bound(first, last, value, comp),
-                   upper_bound(first, last, value, comp))
-
- -

Change 25.3.3.3 [lib.binary.search] paragraph 1 from:

- -
- -1- Requires: Type T is LessThanComparable - (lib.lessthancomparable). -
- -

to:

- -
- -1- Requires: The elements e of [first, last) are partitioned with - respect to the expressions e < value and !(value < e) or comp(e, - value) and !comp(value, e). Also, for all elements e of [first, - last), e < value implies !(value < e) or comp(e, value) implies - !comp(value, e) -
- -

[Copenhagen: Dave Abrahams provided this wording]

- -

[Redmond: Minor changes in wording. (Removed "non-negative", and -changed the "other than those described in" wording.) Also, the LWG -decided to accept the "optional" part.]

- -

Rationale:

-

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.

-
-

271. basic_iostream missing typedefs

Section: 27.6.1.5 [lib.iostreamclass]  Status: WP  Submitter: Martin Sebor  Date: 02 Nov 2000

-

-Class template basic_iostream has no typedefs. The typedefs it -inherits from its base classes can't be used, since (for example) -basic_iostream<T>::traits_type is ambiguous. -

-

Proposed resolution:

- -

Add the following to basic_iostream's class synopsis in -27.6.1.5 [lib.iostreamclass], immediately after public:

- -
  // types:
-  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;
-
-
-

272. Missing parentheses around subexpression

Section: 27.4.4.3 [lib.iostate.flags]  Status: WP  Submitter: Martin Sebor  Date: 02 Nov 2000

-

-27.4.4.3, p4 says about the postcondition of the function: If -rdbuf()!=0 then state == rdstate(); otherwise -rdstate()==state|ios_base::badbit. -

- -

-The expression on the right-hand-side of the operator==() needs to be -parenthesized in order for the whole expression to ever evaluate to -anything but non-zero. -

-

Proposed resolution:

-

-Add parentheses like so: rdstate()==(state|ios_base::badbit). -

-
-

273. Missing ios_base qualification on members of a dependent class

Section: 27 [lib.input.output]  Status: WP  Submitter: Martin Sebor  Date: 02 Nov 2000

-

27.5.2.4.2, p4, and 27.8.1.6, p2, 27.8.1.7, p3, 27.8.1.9, p2, -27.8.1.10, p3 refer to in and/or out w/o ios_base:: qualification. -That's incorrect since the names are members of a dependent base -class (14.6.2 [temp.dep]) and thus not visible.

-

Proposed resolution:

-

Qualify the names with the name of the class of which they are -members, i.e., ios_base.

-
-

274. a missing/impossible allocator requirement

Section: 20.1.5 [lib.allocator.requirements]  Status: WP  Submitter: Martin Sebor  Date: 02 Nov 2000

-

-I see that table 31 in 20.1.5, p3 allows T in std::allocator<T> to be of -any type. But the synopsis in 20.4.1 calls for allocator<>::address() to -be overloaded on reference and const_reference, which is ill-formed for -all T = const U. In other words, this won't work: -

- -

-template class std::allocator<const int>; -

- -

-The obvious solution is to disallow specializations of allocators on -const types. However, while containers' elements are required to be -assignable (which rules out specializations on const T's), I think that -allocators might perhaps be potentially useful for const values in other -contexts. So if allocators are to allow const types a partial -specialization of std::allocator<const T> would probably have to be -provided. -

-

Proposed resolution:

-

Change the text in row 1, column 2 of table 32 in 20.1.5, p3 from

- -
- any type -
- -

to

-
- any non-const, non-reference type -
- -

[Redmond: previous proposed resolution was "any non-const, -non-volatile, non-reference type". Got rid of the "non-volatile".]

- -

Rationale:

-

-Two resolutions were originally proposed: one that partially -specialized std::allocator for const types, and one that said an -allocator's value type may not be const. The LWG chose the second. -The first wouldn't be appropriate, because allocators are intended for -use by containers, and const value types don't work in containers. -Encouraging the use of allocators with const value types would only -lead to unsafe code. -

-

-The original text for proposed resolution 2 was modified so that it -also forbids volatile types and reference types. -

- -

[Curaçao: LWG double checked and believes volatile is correctly -excluded from the PR.]

- -
-

275. Wrong type in num_get::get() overloads

Section: 22.2.2.1.1 [lib.facet.num.get.members]  Status: WP  Submitter: Matt Austern  Date: 02 Nov 2000

-

-In 22.2.2.1.1, we have a list of overloads for num_get<>::get(). -There are eight overloads, all of which are identical except for the -last parameter. The overloads are: -

-
    -
  • long&
  • -
  • unsigned short&
  • -
  • unsigned int&
  • -
  • unsigned long&
  • -
  • short&
  • -
  • double&
  • -
  • long double&
  • -
  • void*&
  • -
- -

-There is a similar list, in 22.2.2.1.2, of overloads for -num_get<>::do_get(). In this list, the last parameter has -the types: -

-
    -
  • long&
  • -
  • unsigned short&
  • -
  • unsigned int&
  • -
  • unsigned long&
  • -
  • float&
  • -
  • double&
  • -
  • long double&
  • -
  • void*&
  • -
- -

-These two lists are not identical. They should be, since -get is supposed to call do_get with exactly -the arguments it was given. -

-

Proposed resolution:

-

In 22.2.2.1.1 [lib.facet.num.get.members], change

-
  iter_type get(iter_type in, iter_type end, ios_base& str,
-                ios_base::iostate& err, short& val) const;
-
-

to

-
  iter_type get(iter_type in, iter_type end, ios_base& str,
-                ios_base::iostate& err, float& val) const;
-
-
-

276. Assignable requirement for container value type overly strict

Section: 23.1 [lib.container.requirements]  Status: WP  Submitter: Peter Dimov  Date: 07 Nov 2000

-

-23.1/3 states that the objects stored in a container must be -Assignable. 23.3.1 [lib.map], paragraph 2, -states that map satisfies all requirements for a container, while in -the same time defining value_type as pair<const Key, T> - a type -that is not Assignable. -

- -

-It should be noted that there exists a valid and non-contradictory -interpretation of the current text. The wording in 23.1/3 avoids -mentioning value_type, referring instead to "objects stored in a -container." One might argue that map does not store objects of -type map::value_type, but of map::mapped_type instead, and that the -Assignable requirement applies to map::mapped_type, not -map::value_type. -

- -

-However, this makes map a special case (other containers store objects of -type value_type) and the Assignable requirement is needlessly restrictive in -general. -

- -

-For example, the proposed resolution of active library issue -103 is to make set::iterator a constant iterator; this -means that no set operations can exploit the fact that the stored -objects are Assignable. -

- -

-This is related to, but slightly broader than, closed issue -140. -

-

Proposed resolution:

-

23.1/3: Strike the trailing part of the sentence:

-
- , and the additional requirements of Assignable types from 23.1/3 -
-

so that it reads:

-
- -3- The type of objects stored in these components must meet the - requirements of CopyConstructible types (lib.copyconstructible). -
- -

23.1/4: Modify to make clear that this requirement is not for all -containers. Change to:

- -
--4- Table 64 defines the Assignable requirement. Some containers -require this property of the types to be stored in the container. T is -the type used to instantiate the container. t is a value of T, and u is -a value of (possibly const) T. -
- -

23.1, Table 65: in the first row, change "T is Assignable" to "T is -CopyConstructible".

- -

23.2.1/2: Add sentence for Assignable requirement. Change to:

- -
--2- A deque satisfies all of the requirements of a container and of a -reversible container (given in tables in lib.container.requirements) and -of a sequence, including the optional sequence requirements -(lib.sequence.reqmts). In addition to the requirements on the stored -object described in 23.1[lib.container.requirements], the stored object -must also meet the requirements of Assignable. Descriptions are -provided here only for operations on deque that are not described in one -of these tables or for operations where there is additional semantic -information. -
- -

23.2.2/2: Add Assignable requirement to specific methods of list. -Change to:

- -
-

-2- A list satisfies all of the requirements of a container and of a -reversible container (given in two tables in lib.container.requirements) -and of a sequence, including most of the the optional sequence -requirements (lib.sequence.reqmts). The exceptions are the operator[] -and at member functions, which are not provided. - -[Footnote: These member functions are only provided by containers whose -iterators are random access iterators. --- end foonote] -

- -

list does not require the stored type T to be Assignable unless the -following methods are instantiated: - -[Footnote: Implementors are permitted but not required to take advantage -of T's Assignable properties for these methods. -- end foonote] -

-
     list<T,Allocator>& operator=(const list<T,Allocator>&  x );
-     template <class InputIterator>
-       void assign(InputIterator first, InputIterator last);
-     void assign(size_type n, const T& t);
-
- - -

Descriptions are provided here only for operations on list that are not -described in one of these tables or for operations where there is -additional semantic information.

-
- -

23.2.4/2: Add sentence for Assignable requirement. Change to:

- -
--2- A vector satisfies all of the requirements of a container and of a -reversible container (given in two tables in lib.container.requirements) -and of a sequence, including most of the optional sequence requirements -(lib.sequence.reqmts). The exceptions are the push_front and pop_front -member functions, which are not provided. In addition to the -requirements on the stored object described in -23.1[lib.container.requirements], the stored object must also meet the -requirements of Assignable. Descriptions are provided here only for -operations on vector that are not described in one of these tables or -for operations where there is additional semantic information. -
-

Rationale:

-

list, set, multiset, map, multimap are able to store non-Assignables. -However, there is some concern about list<T>: -although in general there's no reason for T to be Assignable, some -implementations of the member functions operator= and -assign do rely on that requirement. The LWG does not want -to forbid such implementations.

- -

Note that the type stored in a standard container must still satisfy -the requirements of the container's allocator; this rules out, for -example, such types as "const int". See issue 274 -for more details. -

- -

In principle we could also relax the "Assignable" requirement for -individual vector member functions, such as -push_back. However, the LWG did not see great value in such -selective relaxation. Doing so would remove implementors' freedom to -implement vector::push_back in terms of -vector::insert.

- -
-

278. What does iterator validity mean?

Section: 23.2.2.4 [lib.list.ops]  Status: WP  Submitter: P.J. Plauger  Date: 27 Nov 2000

-

-Section 23.2.2.4 [lib.list.ops] states that -

-
  void splice(iterator position, list<T, Allocator>& x);
-
-

-invalidates all iterators and references to list x. -

- -

-But what does the C++ Standard mean by "invalidate"? You -can still dereference the iterator to a spliced list element, but -you'd better not use it to delimit a range within the original -list. For the latter operation, it has definitely lost some of its -validity. -

- -

-If we accept the proposed resolution to issue 250, -then we'd better clarify that a "valid" iterator need no -longer designate an element within the same container as it once did. -We then have to clarify what we mean by invalidating a past-the-end -iterator, as when a vector or string grows by reallocation. Clearly, -such an iterator has a different kind of validity. Perhaps we should -introduce separate terms for the two kinds of "validity." -

-

Proposed resolution:

-

Add the following text to the end of section 24.1 [lib.iterator.requirements], -after paragraph 5:

-
-An invalid iterator is an iterator that may be -singular. [Footnote: This definition applies to pointers, since -pointers are iterators. The effect of dereferencing an iterator that -has been invalidated is undefined.] -
- -

[post-Copenhagen: Matt provided wording.]

- -

[Redmond: General agreement with the intent, some objections to -the wording. Dave provided new wording.]

-

Rationale:

-

This resolution simply defines a term that the Standard uses but - never defines, "invalid", in terms of a term that is defined, - "singular".

- -

Why do we say "may be singular", instead of "is singular"? That's - becuase a valid iterator is one that is known to be nonsingular. - Invalidating an iterator means changing it in such a way that it's - no longer known to be nonsingular. An example: inserting an - element into the middle of a vector is correctly said to invalidate - all iterators pointing into the vector. That doesn't necessarily - mean they all become singular.

-
-

280. Comparison of reverse_iterator to const reverse_iterator

Section: 24.4.1 [lib.reverse.iterators]  Status: WP  Submitter: Steve Cleary  Date: 27 Nov 2000

-

-This came from an email from Steve Cleary to Fergus in reference to -issue 179. The library working group briefly discussed -this in Toronto and believed it should be a separate issue. There was -also some reservations about whether this was a worthwhile problem to -fix. -

- -

-Steve said: "Fixing reverse_iterator. std::reverse_iterator can -(and should) be changed to preserve these additional -requirements." He also said in email that it can be done without -breaking user's code: "If you take a look at my suggested -solution, reverse_iterator doesn't have to take two parameters; there -is no danger of breaking existing code, except someone taking the -address of one of the reverse_iterator global operator functions, and -I have to doubt if anyone has ever done that. . . But, just in -case they have, you can leave the old global functions in as well -- -they won't interfere with the two-template-argument functions. With -that, I don't see how any user code could break." -

-

Proposed resolution:

-

-Section: 24.4.1.1 [lib.reverse.iterator] -add/change the following declarations:

-
  A) Add a templated assignment operator, after the same manner
-        as the templated copy constructor, i.e.:
-
-  template < class U >
-  reverse_iterator < Iterator >& operator=(const reverse_iterator< U >& u);
-
-  B) Make all global functions (except the operator+) have
-  two template parameters instead of one, that is, for
-  operator ==, !=, <, >, <=, >=, - replace:
-
-       template < class Iterator >
-       typename reverse_iterator< Iterator >::difference_type operator-(
-                 const reverse_iterator< Iterator >& x,
-                 const reverse_iterator< Iterator >& y);
-
-  with:
-
-      template < class Iterator1, class Iterator2 >
-      typename reverse_iterator < Iterator1 >::difference_type operator-(
-                 const reverse_iterator < Iterator1 > & x,
-                 const reverse_iterator < Iterator2 > & y);
-
-

-Also make the addition/changes for these signatures in -24.4.1.3 [lib.reverse.iter.ops]. -

- -

[ -Copenhagen: The LWG is concerned that the proposed resolution -introduces new overloads. Experience shows that introducing -overloads is always risky, and that it would be inappropriate to -make this change without implementation experience. It may be -desirable to provide this feature in a different way. -]

- -

[ -Lillehammer: We now have implementation experience, and agree that -this solution is safe and correct. -]

- -
-

281. std::min() and max() requirements overly restrictive

Section: 25.3.7 [lib.alg.min.max]  Status: WP  Submitter: Martin Sebor  Date: 02 Dec 2000

-

The requirements in 25.3.7, p1 and 4 call for T to satisfy the -requirements of LessThanComparable (20.1.2 [lib.lessthancomparable]) -and CopyConstructible (20.1.3 [lib.copyconstructible]). -Since the functions take and return their arguments and result by -const reference, I believe the CopyConstructible requirement -is unnecessary. -

-

Proposed resolution:

-

Remove the CopyConstructible requirement. Specifically, replace -25.3.7, p1 with

-

-1- Requires: Type T is LessThanComparable -(20.1.2 [lib.lessthancomparable]). -

-

and replace 25.3.7, p4 with

-

-4- Requires: Type T is LessThanComparable -(20.1.2 [lib.lessthancomparable]). -

-
-

282. What types does numpunct grouping refer to?

Section: 22.2.2.2.2 [lib.facet.num.put.virtuals]  Status: WP  Submitter: Howard Hinnant  Date: 5 Dec 2000

-

-Paragraph 16 mistakenly singles out integral types for inserting -thousands_sep() characters. This conflicts with the syntax for floating -point numbers described under 22.2.3.1/2. -

-

Proposed resolution:

-

Change paragraph 16 from:

- -
-For integral types, punct.thousands_sep() characters are inserted into -the sequence as determined by the value returned by punct.do_grouping() -using the method described in 22.2.3.1.2 [lib.facet.numpunct.virtuals]. -
- -

To:

- -
-For arithmetic types, punct.thousands_sep() characters are inserted into -the sequence as determined by the value returned by punct.do_grouping() -using the method described in 22.2.3.1.2 [lib.facet.numpunct.virtuals]. -
- -

[ -Copenhagen: Opinions were divided about whether this is actually an -inconsistency, but at best it seems to have been unintentional. This -is only an issue for floating-point output: The standard is -unambiguous that implementations must parse thousands_sep characters -when performing floating-point. The standard is also unambiguous that -this requirement does not apply to the "C" locale. -]

- -

[ -A survey of existing practice is needed; it is believed that some -implementations do insert thousands_sep characters for floating-point -output and others fail to insert thousands_sep characters for -floating-point input even though this is unambiguously required by the -standard. -]

- -

[Post-Curaçao: the above proposed resolution is the consensus of -Howard, Bill, Pete, Benjamin, Nathan, Dietmar, Boris, and Martin.]

- -
-

283. std::replace() requirement incorrect/insufficient

Section: 25.2.4 [lib.alg.replace]  Status: WP  Submitter: Martin Sebor  Date: 15 Dec 2000

-

-(revision of the further discussion) -There are a number of problems with the requires clauses for the -algorithms in 25.1 and 25.2. The requires clause of each algorithm -should describe the necessary and sufficient requirements on the inputs -to the algorithm such that the algorithm compiles and runs properly. -Many of the requires clauses fail to do this. Here is a summary of the kinds -of mistakes: -

- -
    -
  1. -Use of EqualityComparable, which only puts requirements on a single -type, when in fact an equality operator is required between two -different types, typically either T and the iterator's value type -or between the value types of two different iterators. -
  2. -
  3. -Use of Assignable for T when in fact what was needed is Assignable -for the value_type of the iterator, and convertability from T to the -value_type of the iterator. Or for output iterators, the requirement -should be that T is writable to the iterator (output iterators do -not have value types). -
  4. -
- -

-Here is the list of algorithms that contain mistakes: -

- -
    -
  • 25.1.2 std::find
  • -
  • 25.1.6 std::count
  • -
  • 25.1.8 std::equal
  • -
  • 25.1.9 std::search, std::search_n
  • -
  • 25.2.4 std::replace, std::replace_copy
  • -
  • 25.2.5 std::fill
  • -
  • 25.2.7 std::remove, std::remove_copy
  • -
- -

-Also, in the requirements for EqualityComparable, the requirement that -the operator be defined for const objects is lacking. -

- -

Proposed resolution:

- -

20.1.1 Change p1 from

- -

In Table 28, T is a type to be supplied by a C++ program -instantiating a template, a, b, and c are -values of type T. -

- -

to

- -

-In Table 28, T is a type to be supplied by a C++ program -instantiating a template, a, b, and c are -values of type const T. -

- -

25 Between p8 and p9

- -

Add the following sentence:

- -

When the description of an algorithm gives an expression such as -*first == value for a condition, it is required that the expression -evaluate to either true or false in boolean contexts.

- -

25.1.2 Change p1 by deleting the requires clause.

- -

25.1.6 Change p1 by deleting the requires clause.

- -

25.1.9

- -

Change p4 from

- -

-4- Requires: Type T is EqualityComparable -(20.1.1), type Size is convertible to integral type (4.7.12.3). -

- -

to

- -

-4- Requires: The type Size is convertible to integral -type (4.7.12.3).

- -

25.2.4 Change p1 from

- -

-1- Requires: Type T is Assignable (23.1 ) (and, for replace(), EqualityComparable (20.1.1 )).

- -

to

- -

-1- Requires: The expression *first = new_value must be valid.

- -

and change p4 from

- -

-4- Requires: Type T is Assignable (23.1) (and, -for replace_copy(), EqualityComparable -(20.1.1)). The ranges [first, last) and [result, result + -(last - first)) shall not overlap.

- -

to

- -

-4- Requires: The results of the expressions *first and -new_value must be writable to the result output iterator. The -ranges [first, last) and [result, result + (last - -first)) shall not overlap.

- - -

25.2.5 Change p1 from

- -

-1- Requires: Type T is Assignable (23.1). The -type Size is convertible to an integral type (4.7.12.3).

- -

to

- -

-1- Requires: The expression value must be is writable to -the output iterator. The type Size is convertible to an -integral type (4.7.12.3).

- -

25.2.7 Change p1 from

- -

-1- Requires: Type T is EqualityComparable (20.1.1).

- -

to

- -

--1- Requires: The value type of the iterator must be -Assignable (23.1). -

- -

Rationale:

-

-The general idea of the proposed solution is to remove the faulty -requires clauses and let the returns and effects clauses speak for -themselves. That is, the returns clauses contain expressions that must -be valid, and therefore already imply the correct requirements. In -addition, a sentence is added at the beginning of chapter 25 saying -that expressions given as conditions must evaluate to true or false in -a boolean context. An alternative would be to say that the type of -these condition expressions must be literally bool, but that would be -imposing a greater restriction that what the standard currently says -(which is convertible to bool). -

-
-

284. unportable example in 20.3.7, p6

Section: 20.3.7 [lib.function.pointer.adaptors]  Status: WP  Submitter: Martin Sebor  Date: 26 Dec 2000

-

The example in 20.3.7 [lib.function.pointer.adaptors], p6 shows how to use the C -library function strcmp() with the function pointer adapter -ptr_fun(). But since it's unspecified whether the C library -functions have extern "C" or extern -"C++" linkage [17.4.2.2 [lib.using.linkage]], and since -function pointers with different the language linkage specifications -(7.5 [dcl.link]) are incompatible, whether this example is -well-formed is unspecified. -

-

Proposed resolution:

-

Change 20.3.7 [lib.function.pointer.adaptors] paragraph 6 from:

-
-

[Example:

-
    replace_if(v.begin(), v.end(), not1(bind2nd(ptr_fun(strcmp), "C")), "C++");
-  
-

replaces each C with C++ in sequence v.

-
- - -

to:

-
-

[Example:

-
    int compare(const char*, const char*);
-    replace_if(v.begin(), v.end(),
-               not1(bind2nd(ptr_fun(compare), "abc")), "def");
-  
-

replaces each abc with def in sequence v.

-
- -

Also, remove footnote 215 in that same paragraph.

- -

[Copenhagen: Minor change in the proposed resolution. Since this -issue deals in part with C and C++ linkage, it was believed to be too -confusing for the strings in the example to be "C" and "C++". -]

- -

[Redmond: More minor changes. Got rid of the footnote (which -seems to make a sweeping normative requirement, even though footnotes -aren't normative), and changed the sentence after the footnote so that -it corresponds to the new code fragment.]

- -
-

285. minor editorial errors in fstream ctors

Section: 27.8.1.6 [lib.ifstream.cons]  Status: WP  Submitter: Martin Sebor  Date: 31 Dec 2000

-

27.8.1.6 [lib.ifstream.cons], p2, 27.8.1.9 [lib.ofstream.cons], p2, and -27.8.1.12 [lib.fstream.cons], p2 say about the effects of each constructor: -

- -

... If that function returns a null pointer, calls -setstate(failbit) (which may throw ios_base::failure). -

- -

The parenthetical note doesn't apply since the ctors cannot throw an -exception due to the requirement in 27.4.4.1 [lib.basic.ios.cons], p3 -that exceptions() be initialized to ios_base::goodbit. -

-

Proposed resolution:

-

-Strike the parenthetical note from the Effects clause in each of the -paragraphs mentioned above. -

-
-

286. <cstdlib> requirements missing size_t typedef

Section: 25.4 [lib.alg.c.library]  Status: WP  Submitter: Judy Ward  Date: 30 Dec 2000

-

-The <cstdlib> header file contains prototypes for bsearch and -qsort (C++ Standard section 25.4 paragraphs 3 and 4) and other -prototypes (C++ Standard section 21.4 paragraph 1 table 49) that -require the typedef size_t. Yet size_t is not listed in the -<cstdlib> synopsis table 78 in section 25.4. -

-

Proposed resolution:

-

-Add the type size_t to Table 78 (section 25.4) and add -the type size_t <cstdlib> to Table 97 (section C.2). -

-

Rationale:

-

Since size_t is in <stdlib.h>, it must also be in <cstdlib>.

-
-

288. <cerrno> requirements missing macro EILSEQ

Section: 19.3 [lib.errno]  Status: WP  Submitter: Judy Ward  Date: 30 Dec 2000

-

-ISO/IEC 9899:1990/Amendment1:1994 Section 4.3 States: "The list -of macros defined in <errno.h> is adjusted to include a new -macro, EILSEQ" -

- -

-ISO/IEC 14882:1998(E) section 19.3 does not refer -to the above amendment. -

- -

Proposed resolution:

-

-Update Table 26 (section 19.3) "Header <cerrno> synopsis" -and Table 95 (section C.2) "Standard Macros" to include EILSEQ. -

-
-

291. Underspecification of set algorithms

Section: 25.3.5 [lib.alg.set.operations]  Status: WP  Submitter: Matt Austern  Date: 03 Jan 2001

-

-The standard library contains four algorithms that compute set -operations on sorted ranges: set_union, set_intersection, -set_difference, and set_symmetric_difference. Each -of these algorithms takes two sorted ranges as inputs, and writes the -output of the appropriate set operation to an output range. The elements -in the output range are sorted. -

- -

-The ordinary mathematical definitions are generalized so that they -apply to ranges containing multiple copies of a given element. Two -elements are considered to be "the same" if, according to an -ordering relation provided by the user, neither one is less than the -other. So, for example, if one input range contains five copies of an -element and another contains three, the output range of set_union -will contain five copies, the output range of -set_intersection will contain three, the output range of -set_difference will contain two, and the output range of -set_symmetric_difference will contain two. -

- -

-Because two elements can be "the same" for the purposes -of these set algorithms, without being identical in other respects -(consider, for example, strings under case-insensitive comparison), -this raises a number of unanswered questions: -

- -
    -
  • If we're copying an element that's present in both of the -input ranges, which one do we copy it from?
  • -
  • If there are n copies of an element in the relevant -input range, and the output range will contain fewer copies (say -m) which ones do we choose? The first m, or the last -m, or something else?
  • -
  • Are these operations stable? That is, does a run of equivalent -elements appear in the output range in the same order as as it -appeared in the input range(s)?
  • -
- -

-The standard should either answer these questions, or explicitly -say that the answers are unspecified. I prefer the former option, -since, as far as I know, all existing implementations behave the -same way. -

- -

Proposed resolution:

- -

Add the following to the end of 25.3.5.2 [lib.set.union] paragraph 5:

-
-If [first1, last1) contains m elements that are equivalent to -each other and [first2, last2) contains n elements that are -equivalent to them, then max(m, n) of these elements -will be copied to the output range: all m of these elements -from [first1, last1), and the last max(n-m, 0) of them from -[first2, last2), in that order. -
- -

Add the following to the end of 25.3.5.3 [lib.set.intersection] paragraph 5:

-
-If [first1, last1) contains m elements that are equivalent to each -other and [first2, last2) contains n elements that are -equivalent to them, the first min(m, n) of those -elements from [first1, last1) are copied to the output range. -
- -

Add a new paragraph, Notes, after 25.3.5.4 [lib.set.difference] -paragraph 4:

-
-If [first1, last1) contains m elements that are equivalent to each -other and [first2, last2) contains n elements that are -equivalent to them, the last max(m-n, 0) elements from -[first1, last1) are copied to the output range. -
- -

Add a new paragraph, Notes, after 25.3.5.5 [lib.set.symmetric.difference] -paragraph 4:

-
-If [first1, last1) contains m elements that are equivalent to -each other and [first2, last2) contains n elements that are -equivalent to them, then |m - n| of those elements will be -copied to the output range: the last m - n of these elements -from [first1, last1) if m > n, and the last n - -m of these elements from [first2, last2) if m < n. -
- -

[Santa Cruz: it's believed that this language is clearer than - what's in the Standard. However, it's also believed that the - Standard may already make these guarantees (although not quite in - these words). Bill and Howard will check and see whether they think - that some or all of these changes may be redundant. If so, we may - close this issue as NAD.]

- -

Rationale:

-

For simple cases, these descriptions are equivalent to what's - already in the Standard. For more complicated cases, they describe - the behavior of existing implementations.

-
-

292. effects of a.copyfmt (a)

Section: 27.4.4.2 [lib.basic.ios.members]  Status: WP  Submitter: Martin Sebor  Date: 05 Jan 2001

-

The Effects clause of the member function copyfmt() in -27.4.4.2, p15 doesn't consider the case where the left-hand side -argument is identical to the argument on the right-hand side, that is -(this == &rhs). If the two arguments are identical there -is no need to copy any of the data members or call any callbacks -registered with register_callback(). Also, as Howard Hinnant -points out in message c++std-lib-8149 it appears to be incorrect to -allow the object to fire erase_event followed by -copyfmt_event since the callback handling the latter event -may inadvertently attempt to access memory freed by the former. -

-

Proposed resolution:

-

Change the Effects clause in 27.4.4.2, p15 from

- -
--15- Effects:Assigns to the member objects of *this -the corresponding member objects of rhs, except that... -
- -

to

- -
--15- Effects:If (this == &rhs) does nothing. Otherwise -assigns to the member objects of *this the corresponding member -objects of rhs, except that... -
-
-

295. Is abs defined in <cmath>?

Section: 26.5 [lib.c.math]  Status: WP  Submitter: Jens Maurer  Date: 12 Jan 2001

-

-Table 80 lists the contents of the <cmath> header. It does not -list abs(). However, 26.5, paragraph 6, which lists added -signatures present in <cmath>, does say that several overloads -of abs() should be defined in <cmath>. -

-

Proposed resolution:

-

-Add abs to Table 80. Also, remove the parenthetical list -of functions "(abs(), div(), rand(), srand())" from 26.5 [lib.c.math], -paragraph 1. -

- -

[Copenhagen: Modified proposed resolution so that it also gets -rid of that vestigial list of functions in paragraph 1.]

- -

Rationale:

-

All this DR does is fix a typo; it's uncontroversial. A -separate question is whether we're doing the right thing in -putting some overloads in <cmath> that we aren't also -putting in <cstdlib>. That's issue 323.

-
-

297. const_mem_fun_t<>::argument_type should be const T*

Section: 20.3.8 [lib.member.pointer.adaptors]  Status: WP  Submitter: Martin Sebor  Date: 6 Jan 2001

-

The class templates const_mem_fun_t in 20.3.8, p8 and -const_mem_fun1_t -in 20.3.8, p9 derive from unary_function<T*, S>, and -binary_function<T*, -A, S>, respectively. Consequently, their argument_type, and -first_argument_type -members, respectively, are both defined to be T* (non-const). -However, their function call member operator takes a const T* -argument. It is my opinion that argument_type should be const -T* instead, so that one can easily refer to it in generic code. The -example below derived from existing code fails to compile due to the -discrepancy: -

- -

template <class T> -
void foo (typename T::argument_type arg)   // #1 -
{ -
    typename T::result_type (T::*pf) (typename -T::argument_type) -const =   // #2 -
        &T::operator(); -
} -

- -

struct X { /* ... */ };

- -

int main () -
{ -
    const X x; -
    foo<std::const_mem_fun_t<void, X> ->(&x);   -// #3 -
} -

- -

#1 foo() takes a plain unqualified X* as an argument -
#2 the type of the pointer is incompatible with the type of the member -function -
#3 the address of a constant being passed to a function taking a non-const -X* -

-

Proposed resolution:

-

Replace the top portion of the definition of the class template -const_mem_fun_t in 20.3.8, p8 -

-

template <class S, class T> class const_mem_fun_t -
          : public -unary_function<T*, S> { -

-

with

-

template <class S, class T> class const_mem_fun_t -
          : public -unary_function<const T*, S> { -

-

Also replace the top portion of the definition of the class template -const_mem_fun1_t in 20.3.8, p9

-

template <class S, class T, class A> class const_mem_fun1_t -
          : public -binary_function<T*, A, S> { -

-

with

-

template <class S, class T, class A> class const_mem_fun1_t -
          : public -binary_function<const T*, A, S> { -

-

Rationale:

-

This is simply a contradiction: the argument_type typedef, -and the argument type itself, are not the same.

-
-

298. ::operator delete[] requirement incorrect/insufficient

Section: 18.4.1.2 [lib.new.delete.array]  Status: WP  Submitter: John A. Pedretti  Date: 10 Jan 2001

-

-The default behavior of operator delete[] described in 18.4.1.2, p12 - -namely that for non-null value of ptr, the operator reclaims storage -allocated by the earlier call to the default operator new[] - is not -correct in all cases. Since the specified operator new[] default -behavior is to call operator new (18.4.1.2, p4, p8), which can be -replaced, along with operator delete, by the user, to implement their -own memory management, the specified default behavior of operator -delete[] must be to call operator delete. -

-

Proposed resolution:

-

Change 18.4.1.2, p12 from

-
--12- Default behavior: -
    -
  • -For a null value of ptr , does nothing. -
  • -
  • -Any other value of ptr shall be a value returned -earlier by a call to the default operator new[](std::size_t). -[Footnote: The value must not have been invalidated by an intervening -call to operator delete[](void*) (17.4.3.7 [lib.res.on.arguments]). ---- end footnote] -For such a non-null value of ptr , reclaims storage -allocated by the earlier call to the default operator new[]. -
  • -
-
- -

to

- -
--12- Default behavior: Calls operator -delete(ptr) -or operator delete(ptr, std::nothrow) respectively. -
-

and expunge paragraph 13.

-
-

300. list::merge() specification incomplete

Section: 23.2.2.4 [lib.list.ops]  Status: WP  Submitter: John Pedretti  Date: 23 Jan 2001

-

-The "Effects" clause for list::merge() (23.2.2.4, p23) -appears to be incomplete: it doesn't cover the case where the argument -list is identical to *this (i.e., this == &x). The requirement in the -note in p24 (below) is that x be empty after the merge which is surely -unintended in this case. -

-

Proposed resolution:

-

In 23.2.2.4 [lib.list.ops], replace paragraps 23-25 with:

-
-

-23 Effects: if (&x == this) does nothing; otherwise, merges the two -sorted ranges [begin(), end()) and [x.begin(), x.end()). The result -is a range in which the elements will be sorted in non-decreasing -order according to the ordering defined by comp; that is, for every -iterator i in the range other than the first, the condition comp(*i, -*(i - 1)) will be false. -

- -

-24 Notes: Stable: if (&x != this), then for equivalent elements in the -two original ranges, the elements from the original range [begin(), -end()) always precede the elements from the original range [x.begin(), -x.end()). If (&x != this) the range [x.begin(), x.end()) is empty -after the merge. -

- -

-25 Complexity: At most size() + x.size() - 1 applications of comp if -(&x ! = this); otherwise, no applications of comp are performed. If -an exception is thrown other than by a comparison there are no -effects. -

- -
- -

[Copenhagen: The original proposed resolution did not fix all of -the problems in 23.2.2.4 [lib.list.ops], p22-25. Three different -paragraphs (23, 24, 25) describe the effects of merge. -Changing p23, without changing the other two, appears to introduce -contradictions. Additionally, "merges the argument list into the -list" is excessively vague.]

- -

[Post-Curaçao: Robert Klarer provided new wording.]

- -
-

301. basic_string template ctor effects clause omits allocator argument

Section: 21.3.1 [lib.string.cons]  Status: WP  Submitter: Martin Sebor  Date: 27 Jan 2001

-

-The effects clause for the basic_string template ctor in 21.3.1, p15 -leaves out the third argument of type Allocator. I believe this to be -a mistake. -

-

Proposed resolution:

-

Replace

- -
-

-15- Effects: If InputIterator is an integral - type, equivalent to

- -
basic_string(static_cast<size_type>(begin), - static_cast<value_type>(end))
-
- -

with

- -
-

-15- Effects: If InputIterator is an integral - type, equivalent to

- -
basic_string(static_cast<size_type>(begin), - static_cast<value_type>(end), a)
-
-
-

303. Bitset input operator underspecified

Section: 23.3.5.3 [lib.bitset.operators]  Status: WP  Submitter: Matt Austern  Date: 5 Feb 2001

-

-In 23.3.5.3, we are told that bitset's input operator -"Extracts up to N (single-byte) characters from -is.", where is is a stream of type -basic_istream<charT, traits>. -

- -

-The standard does not say what it means to extract single byte -characters from a stream whose character type, charT, is in -general not a single-byte character type. Existing implementations -differ. -

- -

-A reasonable solution will probably involve widen() and/or -narrow(), since they are the supplied mechanism for -converting a single character between char and -arbitrary charT. -

- -

Narrowing the input characters is not the same as widening the -literals '0' and '1', because there may be some -locales in which more than one wide character maps to the narrow -character '0'. Narrowing means that alternate -representations may be used for bitset input, widening means that -they may not be.

- -

Note that for numeric input, num_get<> -(22.2.2.1.2/8) compares input characters to widened version of narrow -character literals.

- -

From Pete Becker, in c++std-lib-8224:

-
-

-Different writing systems can have different representations for the -digits that represent 0 and 1. For example, in the Unicode representation -of the Devanagari script (used in many of the Indic languages) the digit 0 -is 0x0966, and the digit 1 is 0x0967. Calling narrow would translate those -into '0' and '1'. But Unicode also provides the ASCII values 0x0030 and -0x0031 for for the Latin representations of '0' and '1', as well as code -points for the same numeric values in several other scripts (Tamil has no -character for 0, but does have the digits 1-9), and any of these values -would also be narrowed to '0' and '1'. -

- -

...

- -

-It's fairly common to intermix both native and Latin -representations of numbers in a document. So I think the rule has to be -that if a wide character represents a digit whose value is 0 then the bit -should be cleared; if it represents a digit whose value is 1 then the bit -should be set; otherwise throw an exception. So in a Devanagari locale, -both 0x0966 and 0x0030 would clear the bit, and both 0x0967 and 0x0031 -would set it. Widen can't do that. It would pick one of those two values, -and exclude the other one. -

- -
- -

From Jens Maurer, in c++std-lib-8233:

- -
-

-Whatever we decide, I would find it most surprising if -bitset conversion worked differently from int conversion -with regard to alternate local representations of -numbers. -

- -

Thus, I think the options are:

-
    -
  • Have a new defect issue for 22.2.2.1.2/8 so that it will -require the use of narrow().
  • - -
  • Have a defect issue for bitset() which describes clearly -that widen() is to be used.
  • -
-
-

Proposed resolution:

- -

Replace the first two sentences of paragraph 5 with:

- -
- Extracts up to N characters from is. Stores these - characters in a temporary object str of type - basic_string<charT, traits>, then evaluates the - expression x = bitset<N>(str). -
- -

Replace the third bullet item in paragraph 5 with:

-
  • - the next input character is neither is.widen(0) - nor is.widen(1) (in which case the input character - is not extracted). -
- -

Rationale:

-

Input for bitset should work the same way as numeric -input. Using widen does mean that alternative digit -representations will not be recognized, but this was a known -consequence of the design choice.

-
-

305. Default behavior of codecvt<wchar_t, char, mbstate_t>::length()

Section: 22.2.1.5.2 [lib.locale.codecvt.virtuals]  Status: WP  Submitter: Howard Hinnant  Date: 24 Jan 2001

-

22.2.1.5/3 introduces codecvt in part with:

- -
- codecvt<wchar_t,char,mbstate_t> converts between the native - character sets for tiny and wide characters. Instantiations on - mbstate_t perform conversion between encodings known to the library - implementor. -
- -

But 22.2.1.5.2/10 describes do_length in part with:

- -
- ... codecvt<wchar_t, char, mbstate_t> ... return(s) the lesser of max and - (from_end-from). -
- -

-The semantics of do_in and do_length are linked. What one does must -be consistent with what the other does. 22.2.1.5/3 leads me to -believe that the vendor is allowed to choose the algorithm that -codecvt<wchar_t,char,mbstate_t>::do_in performs so that it makes -his customers happy on a given platform. But 22.2.1.5.2/10 explicitly -says what codecvt<wchar_t,char,mbstate_t>::do_length must -return. And thus indirectly specifies the algorithm that -codecvt<wchar_t,char,mbstate_t>::do_in must perform. I believe -that this is not what was intended and is a defect. -

- -

Discussion from the -lib reflector: - -
This proposal would have the effect of making the semantics of -all of the virtual functions in codecvt<wchar_t, char, -mbstate_t> implementation specified. Is that what we want, or -do we want to mandate specific behavior for the base class virtuals -and leave the implementation specified behavior for the codecvt_byname -derived class? The tradeoff is that former allows implementors to -write a base class that actually does something useful, while the -latter gives users a way to get known and specified---albeit -useless---behavior, and is consistent with the way the standard -handles other facets. It is not clear what the original intention -was.

- -

-Nathan has suggest a compromise: a character that is a widened version -of the characters in the basic execution character set must be -converted to a one-byte sequence, but there is no such requirement -for characters that are not part of the basic execution character set. -

-

Proposed resolution:

-

-Change 22.2.1.5.2/5 from: -

-

-The instantiations required in Table 51 (lib.locale.category), namely -codecvt<wchar_t,char,mbstate_t> and -codecvt<char,char,mbstate_t>, store no characters. Stores no more -than (to_limit-to) destination elements. It always leaves the to_next -pointer pointing one beyond the last element successfully stored. -

-

-to: -

-

-Stores no more than (to_limit-to) destination elements, and leaves the -to_next pointer pointing one beyond the last element successfully -stored. codecvt<char,char,mbstate_t> stores no characters. -

- -

Change 22.2.1.5.2/10 from:

- -
--10- Returns: (from_next-from) where from_next is the largest value in -the range [from,from_end] such that the sequence of values in the -range [from,from_next) represents max or fewer valid complete -characters of type internT. The instantiations required in Table 51 -(21.1.1.1.1), namely codecvt<wchar_t, char, mbstate_t> and -codecvt<char, char, mbstate_t>, return the lesser of max and -(from_end-from). -
- -

to:

- -
--10- Returns: (from_next-from) where from_next is the largest value in -the range [from,from_end] such that the sequence of values in the range -[from,from_next) represents max or fewer valid complete characters of -type internT. The instantiation codecvt<char, char, mbstate_t> returns -the lesser of max and (from_end-from). -
- -

[Redmond: Nathan suggested an alternative resolution: same as -above, but require that, in the default encoding, a character from the -basic execution character set would map to a single external -character. The straw poll was 8-1 in favor of the proposed -resolution.]

- -

Rationale:

-

The default encoding should be whatever users of a given platform -would expect to be the most natural. This varies from platform to -platform. In many cases there is a preexisting C library, and users -would expect the default encoding to be whatever C uses in the default -"C" locale. We could impose a guarantee like the one Nathan suggested -(a character from the basic execution character set must map to a -single external character), but this would rule out important -encodings that are in common use: it would rule out JIS, for -example, and it would rule out a fixed-width encoding of UCS-4.

- -

[Curaçao: fixed rationale typo at the request of Ichiro Koshida; -"shift-JIS" changed to "JIS".]

- -
-

306. offsetof macro and non-POD types

Section: 18.1 [lib.support.types]  Status: WP  Submitter: Steve Clamage  Date: 21 Feb 2001

-

Spliced together from reflector messages c++std-lib-8294 and -8295:

- -

18.1, paragraph 5, reads: "The macro offsetof -accepts a restricted set of type arguments in this -International Standard. type shall be a POD structure or a POD -union (clause 9). The result of applying the offsetof macro to a field -that is a static data member or a function member is -undefined."

- -

For the POD requirement, it doesn't say "no diagnostic -required" or "undefined behavior". I read 1.4 [intro.compliance], paragraph 1, to mean that a diagnostic is required. -It's not clear whether this requirement was intended. While it's -possible to provide such a diagnostic, the extra complication doesn't -seem to add any value. -

-

Proposed resolution:

-

Change 18.1, paragraph 5, to "If type is not a POD -structure or a POD union the results are undefined."

- -

[Copenhagen: straw poll was 7-4 in favor. It was generally -agreed that requiring a diagnostic was inadvertent, but some LWG -members thought that diagnostics should be required whenever -possible.]

- -
-

307. Lack of reference typedefs in container adaptors

Section: 23.2.3 [lib.container.adaptors]  Status: WP  Submitter: Howard Hinnant  Date: 13 Mar 2001

- -

From reflector message c++std-lib-8330. See also lib-8317.

- -

-The standard is currently inconsistent in 23.2.3.2 [lib.priority.queue] -paragraph 1 and 23.2.3.3 [lib.stack] paragraph 1. -23.2.3.3/1, for example, says: -

- -
--1- Any sequence supporting operations back(), push_back() and pop_back() -can be used to instantiate stack. In particular, vector (lib.vector), list -(lib.list) and deque (lib.deque) can be used. -
- -

But this is false: vector<bool> can not be used, because the -container adaptors return a T& rather than using the underlying -container's reference type.

- -

This is a contradiction that can be fixed by:

- -
    -
  1. Modifying these paragraphs to say that vector<bool> - is an exception.
  2. -
  3. Removing the vector<bool> specialization.
  4. -
  5. Changing the return types of stack and priority_queue to use - reference typedef's.
  6. -
- -

-I propose 3. This does not preclude option 2 if we choose to do it -later (see issue 96); the issues are independent. Option -3 offers a small step towards support for proxied containers. This -small step fixes a current contradiction, is easy for vendors to -implement, is already implemented in at least one popular lib, and -does not break any code. -

- -

Proposed resolution:

-

Summary: Add reference and const_reference typedefs to queue, -priority_queue and stack. Change return types of "value_type&" to -"reference". Change return types of "const value_type&" to -"const_reference". Details:

- -

Change 23.2.3.1/1 from:

- -
  namespace std {
-    template <class T, class Container = deque<T> >
-    class queue {
-    public:
-      typedef typename Container::value_type            value_type;
-      typedef typename Container::size_type             size_type;
-      typedef          Container                        container_type;
-    protected:
-      Container c;
-
-    public:
-      explicit queue(const Container& = Container());
-
-      bool      empty() const             { return c.empty(); }
-      size_type size()  const             { return c.size(); }
-      value_type&       front()           { return c.front(); }
-      const value_type& front() const     { return c.front(); }
-      value_type&       back()            { return c.back(); }
-      const value_type& back() const      { return c.back(); }
-      void push(const value_type& x)      { c.push_back(x); }
-      void pop()                          { c.pop_front(); }
-    };
-
- -

to:

- -
  namespace std {
-    template <class T, class Container = deque<T> >
-    class queue {
-    public:
-      typedef typename Container::value_type            value_type;
-      typedef typename Container::reference             reference;
-      typedef typename Container::const_reference       const_reference;
-      typedef typename Container::value_type            value_type;
-      typedef typename Container::size_type             size_type;
-      typedef          Container                        container_type;
-    protected:
-      Container c;
-
-    public:
-      explicit queue(const Container& = Container());
-
-      bool      empty() const             { return c.empty(); }
-      size_type size()  const             { return c.size(); }
-      reference         front()           { return c.front(); }
-      const_reference   front() const     { return c.front(); }
-      reference         back()            { return c.back(); }
-      const_reference   back() const      { return c.back(); }
-      void push(const value_type& x)      { c.push_back(x); }
-      void pop()                          { c.pop_front(); }
-    };
-
- -

Change 23.2.3.2/1 from:

- -
  namespace std {
-    template <class T, class Container = vector<T>,
-              class Compare = less<typename Container::value_type> >
-    class priority_queue {
-    public:
-      typedef typename Container::value_type            value_type;
-      typedef typename Container::size_type             size_type;
-      typedef          Container                        container_type;
-    protected:
-      Container c;
-      Compare comp;
-
-    public:
-      explicit priority_queue(const Compare& x = Compare(),
-                              const Container& = Container());
-      template <class InputIterator>
-        priority_queue(InputIterator first, InputIterator last,
-                       const Compare& x = Compare(),
-                       const Container& = Container());
-
-      bool      empty() const       { return c.empty(); }
-      size_type size()  const       { return c.size(); }
-      const value_type& top() const { return c.front(); }
-      void push(const value_type& x);
-      void pop();
-    };
-                                  //  no equality is provided
-  }
-
- -

to:

- -
  namespace std {
-    template <class T, class Container = vector<T>,
-              class Compare = less<typename Container::value_type> >
-    class priority_queue {
-    public:
-      typedef typename Container::value_type            value_type;
-      typedef typename Container::reference             reference;
-      typedef typename Container::const_reference       const_reference;
-      typedef typename Container::size_type             size_type;
-      typedef          Container                        container_type;
-    protected:
-      Container c;
-      Compare comp;
-
-    public:
-      explicit priority_queue(const Compare& x = Compare(),
-                              const Container& = Container());
-      template <class InputIterator>
-        priority_queue(InputIterator first, InputIterator last,
-                       const Compare& x = Compare(),
-                       const Container& = Container());
-
-      bool      empty() const       { return c.empty(); }
-      size_type size()  const       { return c.size(); }
-      const_reference   top() const { return c.front(); }
-      void push(const value_type& x);
-      void pop();
-    };
-                                  //  no equality is provided
-  }
-
- -

And change 23.2.3.3/1 from:

- -
  namespace std {
-    template <class T, class Container = deque<T> >
-    class stack {
-    public:
-      typedef typename Container::value_type            value_type;
-      typedef typename Container::size_type             size_type;
-      typedef          Container                        container_type;
-    protected:
-      Container c;
-
-    public:
-      explicit stack(const Container& = Container());
-
-      bool      empty() const             { return c.empty(); }
-      size_type size()  const             { return c.size(); }
-      value_type&       top()             { return c.back(); }
-      const value_type& top() const       { return c.back(); }
-      void push(const value_type& x)      { c.push_back(x); }
-      void pop()                          { c.pop_back(); }
-    };
-
-    template <class T, class Container>
-      bool operator==(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator< (const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator!=(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator> (const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator>=(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator<=(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-  }
-
- -

to:

- -
  namespace std {
-    template <class T, class Container = deque<T> >
-    class stack {
-    public:
-      typedef typename Container::value_type            value_type;
-      typedef typename Container::reference             reference;
-      typedef typename Container::const_reference       const_reference;
-      typedef typename Container::size_type             size_type;
-      typedef          Container                        container_type;
-    protected:
-      Container c;
-
-    public:
-      explicit stack(const Container& = Container());
-
-      bool      empty() const             { return c.empty(); }
-      size_type size()  const             { return c.size(); }
-      reference         top()             { return c.back(); }
-      const_reference   top() const       { return c.back(); }
-      void push(const value_type& x)      { c.push_back(x); }
-      void pop()                          { c.pop_back(); }
-    };
-
-    template <class T, class Container>
-      bool operator==(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator< (const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator!=(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator> (const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator>=(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-    template <class T, class Container>
-      bool operator<=(const stack<T, Container>& x,
-                      const stack<T, Container>& y);
-  }
-
- -

[Copenhagen: This change was discussed before the IS was released -and it was deliberately not adopted. Nevertheless, the LWG believes -(straw poll: 10-2) that it is a genuine defect.]

- -
-

308. Table 82 mentions unrelated headers

Section: 27 [lib.input.output]  Status: WP  Submitter: Martin Sebor  Date: 15 Mar 2001

-

-Table 82 in section 27 mentions the header <cstdlib> for String -streams (27.7 [lib.string.streams]) and the headers <cstdio> and -<cwchar> for File streams (27.8 [lib.file.streams]). It's not clear -why these headers are mentioned in this context since they do not -define any of the library entities described by the -subclauses. According to 17.4.1.1 [lib.contents], only such headers -are to be listed in the summary. -

-

Proposed resolution:

-

Remove <cstdlib> and <cwchar> from -Table 82.

- -

[Copenhagen: changed the proposed resolution slightly. The -original proposed resolution also said to remove <cstdio> from -Table 82. However, <cstdio> is mentioned several times within -section 27.8 [lib.file.streams], including 27.8.2 [lib.c.files].]

- -
-

310. Is errno a macro?

Section: 17.4.1.2 [lib.headers], 19.3 [lib.errno]  Status: WP  Submitter: Steve Clamage  Date: 21 Mar 2001

-

- Exactly how should errno be declared in a conforming C++ header? -

- -

- The C standard says in 7.1.4 that it is unspecified whether errno is a - macro or an identifier with external linkage. In some implementations - it can be either, depending on compile-time options. (E.g., on - Solaris in multi-threading mode, errno is a macro that expands to a - function call, but is an extern int otherwise. "Unspecified" allows - such variability.) -

- -

The C++ standard:

-
    -
  • 17.4.1.2 says in a note that errno must be macro in C. (false)
  • -
  • 17.4.3.1.3 footnote 166 says errno is reserved as an external - name (true), and implies that it is an identifier.
  • -
  • 19.3 simply lists errno as a macro (by what reasoning?) and goes - on to say that the contents of of C++ <errno.h> are the - same as in C, begging the question.
  • -
  • C.2, table 95 lists errno as a macro, without comment.
  • -
- -

I find no other references to errno.

- -

We should either explicitly say that errno must be a macro, even - though it need not be a macro in C, or else explicitly leave it - unspecified. We also need to say something about namespace std. - A user who includes <cerrno> needs to know whether to write - errno, or ::errno, or std::errno, or - else <cerrno> is useless.

- -

Two acceptable fixes:

-
    -
  • errno must be a macro. This is trivially satisfied by adding
    -   #define errno (::std::errno)
    - to the headers if errno is not already a macro. You then always - write errno without any scope qualification, and it always expands - to a correct reference. Since it is always a macro, you know to - avoid using errno as a local identifer.

  • -
  • errno is in the global namespace. This fix is inferior, because - ::errno is not guaranteed to be well-formed.

  • -
- -

[ - This issue was first raised in 1999, but it slipped through - the cracks. - ]

-

Proposed resolution:

-

Change the Note in section 17.4.1.2p5 from

- -
- Note: the names defined as macros in C include the following: - assert, errno, offsetof, setjmp, va_arg, va_end, and va_start. -
- -

to

- -
- Note: the names defined as macros in C include the following: - assert, offsetof, setjmp, va_arg, va_end, and va_start. -
- -

In section 19.3, change paragraph 2 from

- -
- The contents are the same as the Standard C library header - <errno.h>. -
- -

to

- -
- The contents are the same as the Standard C library header - <errno.h>, except that errno shall be defined as a macro. -
-

Rationale:

-

C++ must not leave it up to the implementation to decide whether or -not a name is a macro; it must explicitly specify exactly which names -are required to be macros. The only one that really works is for it -to be a macro.

- -

[Curaçao: additional rationale added.]

- -
-

311. Incorrect wording in basic_ostream class synopsis

Section: 27.6.2.1 [lib.ostream]  Status: WP  Submitter: Andy Sawyer  Date: 21 Mar 2001

- -

In 27.6.2.1 [lib.ostream], the synopsis of class basic_ostream says:

- -
  // partial specializationss
-  template<class traits>
-    basic_ostream<char,traits>& operator<<( basic_ostream<char,traits>&,
-                                            const char * );
-
- -

Problems:

-
    -
  • Too many 's's at the end of "specializationss"
  • -
  • This is an overload, not a partial specialization
  • -
- -

Proposed resolution:

-

In the synopsis in 27.6.2.1 [lib.ostream], remove the -// partial specializationss comment. Also remove the same -comment (correctly spelled, but still incorrect) from the synopsis in -27.6.2.5.4 [lib.ostream.inserters.character]. -

- -

[ -Pre-Redmond: added 27.6.2.5.4 [lib.ostream.inserters.character] because of Martin's -comment in c++std-lib-8939. -]

- -
-

312. Table 27 is missing headers

Section: 20 [lib.utilities]  Status: WP  Submitter: Martin Sebor  Date: 29 Mar 2001

-

Table 27 in section 20 lists the header <memory> (only) for -Memory (lib.memory) but neglects to mention the headers -<cstdlib> and <cstring> that are discussed in 20.4.6 [lib.c.malloc].

-

Proposed resolution:

-

Add <cstdlib> and <cstring> to Table 27, in the same row -as <memory>.

-
-

315. Bad "range" in list::unique complexity

Section: 23.2.2.4 [lib.list.ops]  Status: WP  Submitter: Andy Sawyer  Date: 1 May 2001

-

-23.2.2.4 [lib.list.ops], Para 21 describes the complexity of -list::unique as: "If the range (last - first) is not empty, exactly -(last - first) -1 applications of the corresponding predicate, -otherwise no applications of the predicate)". -

- -

-"(last - first)" is not a range. -

-

Proposed resolution:

-

-Change the "range" from (last - first) to [first, last). -

-
-

316. Vague text in Table 69

Section: 23.1.2 [lib.associative.reqmts]  Status: WP  Submitter: Martin Sebor  Date: 4 May 2001

-

Table 69 says this about a_uniq.insert(t):

- -
-inserts t if and only if there is no element in the container with key -equivalent to the key of t. The bool component of the returned pair -indicates whether the insertion takes place and the iterator component of the -pair points to the element with key equivalent to the key of t. -
- -

The description should be more specific about exactly how the bool component -indicates whether the insertion takes place.

-

Proposed resolution:

-

Change the text in question to

- -
-...The bool component of the returned pair is true if and only if the insertion -takes place... -
-
-

317. Instantiation vs. specialization of facets

Section: 22 [lib.localization]  Status: WP  Submitter: Martin Sebor  Date: 4 May 2001

-

-The localization section of the standard refers to specializations of -the facet templates as instantiations even though the required facets -are typically specialized rather than explicitly (or implicitly) -instantiated. In the case of ctype<char> and -ctype_byname<char> (and the wchar_t versions), these facets are -actually required to be specialized. The terminology should be -corrected to make it clear that the standard doesn't mandate explicit -instantiation (the term specialization encompasses both explicit -instantiations and specializations). -

-

Proposed resolution:

-

-In the following paragraphs, replace all occurrences of the word -instantiation or instantiations with specialization or specializations, -respectively: -

- -
-22.1.1.1.1, p4, Table 52, 22.2.1.1, p2, 22.2.1.5, p3, 22.2.1.5.1, p5, -22.2.1.5.2, p10, 22.2.2, p2, 22.2.3.1, p1, 22.2.3.1.2, p1, p2 and p3, -22.2.4.1, p1, 22.2.4.1.2, p1, 22,2,5, p1, 22,2,6, p2, 22.2.6.3.2, p7, and -Footnote 242. -
- -

And change the text in 22.1.1.1.1, p4 from

- -
- An implementation is required to provide those instantiations - for facet templates identified as members of a category, and - for those shown in Table 52: -
- -

to

- -
- An implementation is required to provide those specializations... -
- -

[Nathan will review these changes, and will look for places where -explicit specialization is necessary.]

- -

Rationale:

-

This is a simple matter of outdated language. The language to -describe templates was clarified during the standardization process, -but the wording in clause 22 was never updated to reflect that -change.

-
-

318. Misleading comment in definition of numpunct_byname

Section: 22.2.3.2 [lib.locale.numpunct.byname]  Status: WP  Submitter: Martin Sebor  Date: 12 May 2001

-

The definition of the numpunct_byname template contains the following -comment:

- -
    namespace std {
-        template <class charT>
-        class numpunct_byname : public numpunct<charT> {
-    // this class is specialized for char and wchar_t.
-        ...
-
- -

There is no documentation of the specializations and it seems -conceivable that an implementation will not explicitly specialize the -template at all, but simply provide the primary template.

-

Proposed resolution:

-

Remove the comment from the text in 22.2.3.2 and from the proposed -resolution of library issue 228.

-
-

319. Storage allocation wording confuses "Required behavior", "Requires"

Section: 18.4.1.1 [lib.new.delete.single], 18.4.1.2 [lib.new.delete.array]  Status: WP  Submitter: Beman Dawes  Date: 15 May 2001

-

The standard specifies 17.3.1.3 [lib.structure.specifications] that "Required -behavior" elements describe "the semantics of a function definition -provided by either the implementation or a C++ program."

- -

The standard specifies 17.3.1.3 [lib.structure.specifications] that "Requires" -elements describe "the preconditions for calling the function."

- -

In the sections noted below, the current wording specifies -"Required Behavior" for what are actually preconditions, and thus -should be specified as "Requires".

- -

Proposed resolution:

- -

In 18.4.1.1 [lib.new.delete.single] Para 12 Change:

-
-

Required behavior: accept a value of ptr that is null or that was - returned by an earlier call ...

-
-

to:

-
-

Requires: the value of ptr is null or the value returned by an - earlier call ...

-
- -

In 18.4.1.2 [lib.new.delete.array] Para 11 Change:

-
-

Required behavior: accept a value of ptr that is null or that was - returned by an earlier call ...

-
-

to:

-
-

Requires: the value of ptr is null or the value returned by an - earlier call ...

-
- -
-

320. list::assign overspecified

Section: 23.2.2.1 [lib.list.cons]  Status: WP  Submitter: Howard Hinnant  Date: 17 May 2001

-

-Section 23.2.2.1, paragraphs 6-8 specify that list assign (both forms) have -the "effects" of a call to erase followed by a call to insert. -

- -

-I would like to document that implementers have the freedom to implement -assign by other methods, as long as the end result is the same and the -exception guarantee is as good or better than the basic guarantee. -

- -

-The motivation for this is to use T's assignment operator to recycle -existing nodes in the list instead of erasing them and reallocating -them with new values. It is also worth noting that, with careful -coding, most common cases of assign (everything but assignment with -true input iterators) can elevate the exception safety to strong if -T's assignment has a nothrow guarantee (with no extra memory cost). -Metrowerks does this. However I do not propose that this subtlety be -standardized. It is a QoI issue.

- -

Existing practise: -Metrowerks and SGI recycle nodes, Dinkumware and Rogue Wave don't. -

-

Proposed resolution:

-

Change 23.2.2.1/7 from:

- -
-

Effects:

- -
   erase(begin(), end());
-   insert(begin(), first, last);
-
-
- -

to:

- -
-

Effects: Replaces the contents of the list with the range [first, last).

-
- -

In 23.1.1 [lib.sequence.reqmts], in Table 67 (sequence requirements), -add two new rows:

-
      a.assign(i,j)     void      pre: i,j are not iterators into a.
-                                  Replaces elements in a with a copy
-                                  of [i, j).
-
-      a.assign(n,t)     void      pre: t is not a reference into a.
-                                  Replaces elements in a with n copies
-                                  of t.
-
- -

Change 23.2.2.1/8 from:

- -
-

Effects:

-
   erase(begin(), end());
-   insert(begin(), n, t);
-
-
-

to:

- -
-

Effects: Replaces the contents of the list with n copies of t.

-
- -

[Redmond: Proposed resolution was changed slightly. Previous -version made explicit statement about exception safety, which wasn't -consistent with the way exception safety is expressed elsewhere. -Also, the change in the sequence requirements is new. Without that -change, the proposed resolution would have required that assignment of -a subrange would have to work. That too would have been -overspecification; it would effectively mandate that assignment use a -temporary. Howard provided wording. -]

- -

[Curaçao: Made editorial improvement in wording; changed -"Replaces elements in a with copies of elements in [i, j)." -with "Replaces the elements of a with a copy of [i, j)." -Changes not deemed serious enough to requre rereview.]

- -
-

321. Typo in num_get

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: WP  Submitter: Kevin Djang  Date: 17 May 2001

-

-Section 22.2.2.1.2 at p7 states that "A length specifier is added to -the conversion function, if needed, as indicated in Table 56." -However, Table 56 uses the term "length modifier", not "length -specifier". -

-

Proposed resolution:

-

-In 22.2.2.1.2 at p7, change the text "A length specifier is added ..." -to be "A length modifier is added ..." -

-

Rationale:

-

C uses the term "length modifier". We should be consistent.

-
-

322. iterator and const_iterator should have the same value type

Section: 23.1 [lib.container.requirements]  Status: WP  Submitter: Matt Austern  Date: 17 May 2001

-

-It's widely assumed that, if X is a container, -iterator_traits<X::iterator>::value_type and -iterator_traits<X::const_iterator>::value_type should both be -X::value_type. However, this is nowhere stated. The language in -Table 65 is not precise about the iterators' value types (it predates -iterator_traits), and could even be interpreted as saying that -iterator_traits<X::const_iterator>::value_type should be "const -X::value_type". -

- -

Related issue: 279.

-

Proposed resolution:

-

In Table 65 ("Container Requirements"), change the return type for -X::iterator to "iterator type whose value type is T". Change the -return type for X::const_iterator to "constant iterator type whose -value type is T".

-

Rationale:

-

-This belongs as a container requirement, rather than an iterator -requirement, because the whole notion of iterator/const_iterator -pairs is specific to containers' iterator. -

-

-It is existing practice that (for example) -iterator_traits<list<int>::const_iterator>::value_type -is "int", rather than "const int". This is consistent with -the way that const pointers are handled: the standard already -requires that iterator_traits<const int*>::value_type is int. -

-
-

324. Do output iterators have value types?

Section: 24.1.2 [lib.output.iterators]  Status: WP  Submitter: Dave Abrahams  Date: 7 June 2001

- -

Table 73 suggests that output iterators have value types. It -requires the expression "*a = t". Additionally, although Table 73 -never lists "a = t" or "X(a) = t" in the "expressions" column, it -contains a note saying that "a = t" and "X(a) = t" have equivalent -(but nowhere specified!) semantics.

- -

According to 24.1/9, t is supposed to be "a value of value type -T":

- -
- In the following sections, a and b denote values of X, n denotes a - value of the difference type Distance, u, tmp, and m denote - identifiers, r denotes a value of X&, t denotes a value of - value type T. -
- -

Two other parts of the standard that are relevant to whether -output iterators have value types:

- -
    -
  • 24.1/1 says "All iterators i support the expression *i, - resulting in a value of some class, enumeration, or built-in type - T, called the value type of the iterator".
  • - -
  • - 24.3.1/1, which says "In the case of an output iterator, the types - iterator_traits<Iterator>::difference_type - iterator_traits<Iterator>::value_type are both defined as void." -
  • -
- -

The first of these passages suggests that "*i" is supposed to -return a useful value, which contradicts the note in 24.1.2/2 saying -that the only valid use of "*i" for output iterators is in an -expression of the form "*i = t". The second of these passages appears -to contradict Table 73, because it suggests that "*i"'s return value -should be void. The second passage is also broken in the case of a an -iterator type, like non-const pointers, that satisfies both the output -iterator requirements and the forward iterator requirements.

- -

What should the standard say about *i's return value when -i is an output iterator, and what should it say about that t is in the -expression "*i = t"? Finally, should the standard say anything about -output iterators' pointer and reference types?

- -

Proposed resolution:

-

24.1 p1, change

- -
-

All iterators i support the expression *i, resulting -in a value of some class, enumeration, or built-in type T, -called the value type of the iterator.

-
- -

to

- -
-

All input iterators i support the expression *i, -resulting in a value of some class, enumeration, or built-in type -T, called the value type of the iterator. All output -iterators support the expression *i = o where o is a -value of some type that is in the set of types that are writable to -the particular iterator type of i. -

-
- -

24.1 p9, add

- -
-

o denotes a value of some type that is writable to the -output iterator. -

-
- -

Table 73, change

- -
-
*a = t
-
-
- -

to

- -
-
*r = o
-
-
- -

and change

- -
-
*r++ = t
-
-
- -

to

- -
-
*r++ = o
-
-
- -

[post-Redmond: Jeremy provided wording]

- -

Rationale:

-

The LWG considered two options: change all of the language that -seems to imply that output iterators have value types, thus making it -clear that output iterators have no value types, or else define value -types for output iterator consistently. The LWG chose the former -option, because it seems clear that output iterators were never -intended to have value types. This was a deliberate design decision, -and any language suggesting otherwise is simply a mistake.

- -

A future revision of the standard may wish to revisit this design -decision.

-
-

325. Misleading text in moneypunct<>::do_grouping

Section: 22.2.6.3.2 [lib.locale.moneypunct.virtuals]  Status: WP  Submitter: Martin Sebor  Date: 02 Jul 2001

-

The Returns clause in 22.2.6.3.2, p3 says about -moneypunct<charT>::do_grouping() -

- -
- Returns: A pattern defined identically as the result of - numpunct<charT>::do_grouping().241) -
- -

Footnote 241 then reads

- -
- This is most commonly the value "\003" (not "3"). -
- -

-The returns clause seems to imply that the two member functions must -return an identical value which in reality may or may not be true, -since the facets are usually implemented in terms of struct std::lconv -and return the value of the grouping and mon_grouping, respectively. -The footnote also implies that the member function of the moneypunct -facet (rather than the overridden virtual functions in moneypunct_byname) -most commonly return "\003", which contradicts the C standard which -specifies the value of "" for the (most common) C locale. -

- -

Proposed resolution:

-

Replace the text in Returns clause in 22.2.6.3.2, p3 with the following:

- -
- Returns: A pattern defined identically as, but not necessarily - equal to, the result of numpunct<charT>::do_grouping().241) -
- -

and replace the text in Footnote 241 with the following:

- -
- To specify grouping by 3s the value is "\003", not "3". -
-

Rationale:

-

-The fundamental problem is that the description of the locale facet -virtuals serves two purposes: describing the behavior of the base -class, and describing the meaning of and constraints on the behavior -in arbitrary derived classes. The new wording makes that separation a -little bit clearer. The footnote (which is nonnormative) is not -supposed to say what the grouping is in the "C" locale or in any other -locale. It is just a reminder that the values are interpreted as small -integers, not ASCII characters. -

-
-

327. Typo in time_get facet in table 52

Section: 22.1.1.1.1 [lib.locale.category]  Status: WP  Submitter: Tiki Wan  Date: 06 Jul 2001

-

The wchar_t versions of time_get and -time_get_byname are listed incorrectly in table 52, -required instantiations. In both cases the second template -parameter is given as OutputIterator. It should instead be -InputIterator, since these are input facets.

-

Proposed resolution:

-

-In table 52, required instantiations, in -22.1.1.1.1 [lib.locale.category], change

-
    time_get<wchar_t, OutputIterator>
-    time_get_byname<wchar_t, OutputIterator>
-
-

to

-
    time_get<wchar_t, InputIterator>
-    time_get_byname<wchar_t, InputIterator>
-
- -

[Redmond: Very minor change in proposed resolution. Original had -a typo, wchart instead of wchar_t.]

- -
-

328. Bad sprintf format modifier in money_put<>::do_put()

Section: 22.2.6.2.2 [lib.locale.money.put.virtuals]  Status: WP  Submitter: Martin Sebor  Date: 07 Jul 2001

-

The sprintf format string , "%.01f" (that's the digit one), in the -description of the do_put() member functions of the money_put facet in -22.2.6.2.2, p1 is incorrect. First, the f format specifier is wrong -for values of type long double, and second, the precision of 01 -doesn't seem to make sense. What was most likely intended was -"%.0Lf"., that is a precision of zero followed by the L length -modifier.

-

Proposed resolution:

-

Change the format string to "%.0Lf".

-

Rationale:

-

Fixes an obvious typo

-
-

329. vector capacity, reserve and reallocation

Section: 23.2.4.2 [lib.vector.capacity], 23.2.4.3 [lib.vector.modifiers]  Status: WP  Submitter: Anthony Williams  Date: 13 Jul 2001

-

-There is an apparent contradiction about which circumstances can cause -a reallocation of a vector in Section 23.2.4.2 [lib.vector.capacity] and -section 23.2.4.3 [lib.vector.modifiers]. -

- -

23.2.4.2p5 says:

-
-Notes: Reallocation invalidates all the references, pointers, and iterators -referring to the elements in the sequence. It is guaranteed that no -reallocation takes place during insertions that happen after a call to -reserve() until the time when an insertion would make the size of the vector -greater than the size specified in the most recent call to reserve(). -
- -

Which implies if I do

- -
  std::vector<int> vec;
-  vec.reserve(23);
-  vec.reserve(0);
-  vec.insert(vec.end(),1);
-
- -

then the implementation may reallocate the vector for the insert, -as the size specified in the previous call to reserve was zero.

- -

However, the previous paragraphs (23.2.4.2, p1-2) state:

-
-

-(capacity) Returns: The total number of elements the vector -can hold without requiring reallocation -

-

-...After reserve(), capacity() is greater or equal to the -argument of reserve if reallocation happens; and equal to the previous value -of capacity() otherwise... -

-
- -

-This implies that vec.capacity() is still 23, and so the insert() -should not require a reallocation, as vec.size() is 0. This is backed -up by 23.2.4.3p1: -

-
-(insert) Notes: Causes reallocation if the new size is greater than the old -capacity. -
- -

-Though this doesn't rule out reallocation if the new size is less -than the old capacity, I think the intent is clear. -

- -

Proposed resolution:

-

Change the wording of 23.2.4.2 [lib.vector.capacity] paragraph 5 to:

- -
-Notes: Reallocation invalidates all the references, pointers, and -iterators referring to the elements in the sequence. It is guaranteed -that no reallocation takes place during insertions that happen after a -call to reserve() until the time when an insertion would make the size -of the vector greater than the value of capacity(). -
- -

[Redmond: original proposed resolution was modified slightly. In -the original, the guarantee was that there would be no reallocation -until the size would be greater than the value of capacity() after the -most recent call to reserve(). The LWG did not believe that the -"after the most recent call to reserve()" added any useful -information.]

- -

Rationale:

-

There was general agreement that, when reserve() is called twice in -succession and the argument to the second invocation is smaller than -the argument to the first, the intent was for the second invocation to -have no effect. Wording implying that such cases have an effect on -reallocation guarantees was inadvertant.

-
-

331. bad declaration of destructor for ios_base::failure

Section: 27.4.2.1.1 [lib.ios::failure]  Status: WP  Submitter: PremAnand M. Rao  Date: 23 Aug 2001

-

-With the change in 17.4.4.8 [lib.res.on.exception.handling] to state - "An implementation may strengthen the exception-specification for a - non-virtual function by removing listed exceptions." -(issue 119) -and the following declaration of ~failure() in ios_base::failure -

-
    namespace std {
-       class ios_base::failure : public exception {
-       public:
-           ...
-           virtual ~failure();
-           ...
-       };
-     }
-
-

the class failure cannot be implemented since in 18.6.1 [lib.exception] the destructor of class exception has an empty -exception specification:

-
    namespace std {
-       class exception {
-       public:
-         ...
-         virtual ~exception() throw();
-         ...
-       };
-     }
-
-

Proposed resolution:

-

Remove the declaration of ~failure().

-

Rationale:

-

The proposed resolution is consistent with the way that destructors -of other classes derived from exception are handled.

-
-

333. does endl imply synchronization with the device?

Section: 27.6.2.7 [lib.ostream.manip]  Status: WP  Submitter: PremAnand M. Rao  Date: 27 Aug 2001

-

A footnote in 27.6.2.7 [lib.ostream.manip] states:

-
- [Footnote: The effect of executing cout << endl is to insert a - newline character in the output sequence controlled by cout, then - synchronize it with any external file with which it might be - associated. --- end foonote] -
- -

-Does the term "file" here refer to the external device? -This leads to some implementation ambiguity on systems with fully -buffered files where a newline does not cause a flush to the device. -

- -

-Choosing to sync with the device leads to significant performance -penalties for each call to endl, while not sync-ing leads to -errors under special circumstances. -

- -

-I could not find any other statement that explicitly defined -the behavior one way or the other. -

-

Proposed resolution:

-

Remove footnote 300 from section 27.6.2.7 [lib.ostream.manip].

-

Rationale:

-

We already have normative text saying what endl does: it -inserts a newline character and calls flush. This footnote -is at best redundant, at worst (as this issue says) misleading, -because it appears to make promises about what flush -does.

-
-

334. map::operator[] specification forces inefficient implementation

Section: 23.3.1.2 [lib.map.access]  Status: WP  Submitter: Andrea Griffini  Date: 02 Sep 2001

-

-The current standard describes map::operator[] using a -code example. That code example is however quite -inefficient because it requires several useless copies -of both the passed key_type value and of default -constructed mapped_type instances. -My opinion is that was not meant by the comitee to -require all those temporary copies. -

- -

Currently map::operator[] behaviour is specified as:

-
  Returns:
-    (*((insert(make_pair(x, T()))).first)).second.
-
- -

-This specification however uses make_pair that is a -template function of which parameters in this case -will be deduced being of type const key_type& and -const T&. This will create a pair<key_type,T> that -isn't the correct type expected by map::insert so -another copy will be required using the template -conversion constructor available in pair to build -the required pair<const key_type,T> instance. -

- -

If we consider calling of key_type copy constructor -and mapped_type default constructor and copy -constructor as observable behaviour (as I think we -should) then the standard is in this place requiring -two copies of a key_type element plus a default -construction and two copy construction of a mapped_type -(supposing the addressed element is already present -in the map; otherwise at least another copy -construction for each type). -

- -

A simple (half) solution would be replacing the description with:

-
  Returns:
-    (*((insert(value_type(x, T()))).first)).second.
-
- -

This will remove the wrong typed pair construction that -requires one extra copy of both key and value.

- -

However still the using of map::insert requires temporary -objects while the operation, from a logical point of view, -doesn't require any.

- -

I think that a better solution would be leaving free an -implementer to use a different approach than map::insert -that, because of its interface, forces default constructed -temporaries and copies in this case. -The best solution in my opinion would be just requiring -map::operator[] to return a reference to the mapped_type -part of the contained element creating a default element -with the specified key if no such an element is already -present in the container. Also a logarithmic complexity -requirement should be specified for the operation. -

- -

-This would allow library implementers to write alternative -implementations not using map::insert and reaching optimal -performance in both cases of the addressed element being -present or absent from the map (no temporaries at all and -just the creation of a new pair inside the container if -the element isn't present). -Some implementer has already taken this option but I think -that the current wording of the standard rules that as -non-conforming. -

- -

Proposed resolution:

- -

-Replace 23.3.1.2 [lib.map.access] paragraph 1 with -

-
-

--1- Effects: If there is no key equivalent to x in the map, inserts -value_type(x, T()) into the map. -

-

--2- Returns: A reference to the mapped_type corresponding to x in *this. -

-

--3- Complexity: logarithmic. -

-
- -

[This is the second option mentioned above. Howard provided -wording. We may also wish to have a blanket statement somewhere in -clause 17 saying that we do not intend the semantics of sample code -fragments to be interpreted as specifing exactly how many copies are -made. See issue 98 for a similar problem.]

- -

Rationale:

-

-This is the second solution described above; as noted, it is -consistent with existing practice. -

- -

Note that we now need to specify the complexity explicitly, because -we are no longer defining operator[] in terms of -insert.

-
-

335. minor issue with char_traits, table 37

Section: 21.1.1 [lib.char.traits.require]  Status: WP  Submitter: Andy Sawyer  Date: 06 Sep 2001

-

-Table 37, in 21.1.1 [lib.char.traits.require], descibes char_traits::assign -as: -

-
  X::assign(c,d)   assigns c = d.
-
- -

And para 1 says:

- -
- [...] c and d denote values of type CharT [...] -
- -

-Naturally, if c and d are values, then the assignment is -(effectively) meaningless. It's clearly intended that (in the case of -assign, at least), 'c' is intended to be a reference type. -

- -

I did a quick survey of the four implementations I happened to have -lying around, and sure enough they all have signatures:

-
    assign( charT&, const charT& );
-
- -

(or the equivalent). It's also described this way in Nico's book. -(Not to mention the synopses of char_traits<char> in 21.1.3.1 -and char_traits<wchar_t> in 21.1.3.2...) -

-

Proposed resolution:

-

Add the following to 21.1.1 para 1:

-
- r denotes an lvalue of CharT -
- -

and change the description of assign in the table to:

-
  X::assign(r,d)   assigns r = d
-
-
-

336. Clause 17 lack of references to deprecated headers

Section: 17 [lib.library]  Status: WP  Submitter: Detlef Vollmann  Date: 05 Sep 2001

-

From c++std-edit-873:

- -

17.4.1.2 [lib.headers], Table 11. In this table, the header -<strstream> is missing.

- -

This shows a general problem: The whole clause 17 refers quite -often to clauses 18 through 27, but D.7 is also a part of the standard -library (though a deprecated one).

- -

Proposed resolution:

- -

To 17.4.1.2 [lib.headers] Table 11, C++ Library Headers, add -"<strstream>".

- -

In the following places, change "clauses 17 through 27" to "clauses -17 through 27 and Annex D":

- - - - -
-

337. replace_copy_if's template parameter should be InputIterator

Section: 25.2.4 [lib.alg.replace]  Status: WP  Submitter: Detlef Vollmann  Date: 07 Sep 2001

-

From c++std-edit-876:

- -

-In section 25.2.4 [lib.alg.replace] before p4: The name of the first -parameter of template replace_copy_if should be "InputIterator" -instead of "Iterator". According to 17.3.2.1 [lib.type.descriptions] p1 the -parameter name conveys real normative meaning. -

-

Proposed resolution:

-

Change Iterator to InputIterator.

-
-

338.  is whitespace allowed between `-' and a digit?

Section: 22.2 [lib.locale.categories]  Status: WP  Submitter: Martin Sebor  Date: 17 Sep 2001

-

->From Stage 2 processing in 22.2.2.1.2 [lib.facet.num.get.virtuals], p8 and 9 (the -original text or the text corrected by the proposed resolution of -issue 221) it seems clear that no whitespace is allowed -within a number, but 22.2.3.1 [lib.locale.numpunct], p2, which gives the -format for integer and floating point values, says that whitespace is -optional between a plusminus and a sign. -

- -

-The text needs to be clarified to either consistently allow or -disallow whitespace between a plusminus and a sign. It might be -worthwhile to consider the fact that the C library stdio facility does -not permit whitespace embedded in numbers and neither does the C or -C++ core language (the syntax of integer-literals is given in 2.13.1 [lex.icon], that of floating-point-literals in 2.13.3 [lex.fcon] of the C++ standard). -

-

Proposed resolution:

-

Change the first part of 22.2.3.1 [lib.locale.numpunct] paragraph 2 from:

-
-

-The syntax for number formats is as follows, where digit -represents the radix set specified by the fmtflags argument -value, whitespace is as determined by the facet -ctype<charT> (22.2.1.1), and thousands-sep and -decimal-point are the results of corresponding -numpunct<charT> members. Integer values have the -format: -

-
  integer   ::= [sign] units
-  sign      ::= plusminus [whitespace]
-  plusminus ::= '+' | '-'
-  units     ::= digits [thousands-sep units]
-  digits    ::= digit [digits]
-
-
-

to:

-
-

-The syntax for number formats is as follows, where digit -represents the radix set specified by the fmtflags argument -value, and thousands-sep and decimal-point are the -results of corresponding numpunct<charT> members. -Integer values have the format: -

-
  integer   ::= [sign] units
-  sign      ::= plusminus
-  plusminus ::= '+' | '-'
-  units     ::= digits [thousands-sep units]
-  digits    ::= digit [digits]
-
-
-

Rationale:

-

It's not clear whether the format described in 22.2.3.1 [lib.locale.numpunct] paragraph 2 has any normative weight: nothing in the -standard says how, or whether, it's used. However, there's no reason -for it to differ gratuitously from the very specific description of -numeric processing in 22.2.2.1.2 [lib.facet.num.get.virtuals]. The proposed -resolution removes all mention of "whitespace" from that format.

-
-

339. definition of bitmask type restricted to clause 27

Section: 22.2.1 [lib.category.ctype], 17.3.2.1.2 [lib.bitmask.types]  Status: WP  Submitter: Martin Sebor  Date: 17 September 2001

-

-The ctype_category::mask type is declared to be an enum in 22.2.1 [lib.category.ctype] with p1 then stating that it is a bitmask type, most -likely referring to the definition of bitmask type in 17.3.2.1.2 [lib.bitmask.types], p1. However, the said definition only applies to -clause 27, making the reference in 22.2.1 somewhat dubious. -

-

Proposed resolution:

-

Clarify 17.3.2.1.2, p1 by changing the current text from

-
- Several types defined in clause 27 are bitmask types. Each bitmask type - can be implemented as an enumerated type that overloads certain operators, - as an integer type, or as a bitset (23.3.5 [lib.template.bitset]). -
-

to read

-
- Several types defined in clauses lib.language.support through - lib.input.output and Annex D are bitmask types. Each bitmask type can - be implemented as an enumerated type that overloads certain operators, - as an integer type, or as a bitset (lib.template.bitset). -
- -

-Additionally, change the definition in 22.2.1 to adopt the same -convention as in clause 27 by replacing the existing text with the -following (note, in particluar, the cross-reference to 17.3.2.1.2 in -22.2.1, p1): -

- -
-

22.2.1 The ctype category [lib.category.ctype]

-
namespace std {
-    class ctype_base {
-    public:
-        typedef T mask;
-
-        // numeric values are for exposition only.
-        static const mask space = 1 << 0;
-        static const mask print = 1 << 1;
-        static const mask cntrl = 1 << 2;
-        static const mask upper = 1 << 3;
-        static const mask lower = 1 << 4;
-        static const mask alpha = 1 << 5;
-        static const mask digit = 1 << 6;
-        static const mask punct = 1 << 7;
-        static const mask xdigit = 1 << 8;
-        static const mask alnum = alpha | digit;
-        static const mask graph = alnum | punct;
-    };
-}
-
- -

The type mask is a bitmask type (17.3.2.1.2 [lib.bitmask.types]).

-
- -

[Curaçao: The LWG notes that T above should be bold-italics to be -consistent with the rest of the standard.]

- -
-

340. interpretation of has_facet<Facet>(loc) -

Section: 22.1.1.1.1 [lib.locale.category]  Status: WP  Submitter: Martin Sebor  Date: 18 Sep 2001

-

-It's unclear whether 22.1.1.1.1, p3 says that -has_facet<Facet>(loc) returns true for any Facet -from Table 51 or whether it includes Table 52 as well: -

- -
-For any locale loc either constructed, or returned by -locale::classic(), and any facet Facet that is a member of a -standard category, has_facet<Facet>(loc) is true. Each -locale member function which takes a locale::category -argument operates on the corresponding set of facets. -
- -

-It seems that it comes down to which facets are considered to be members of a -standard category. Intuitively, I would classify all the facets in Table 52 as -members of their respective standard categories, but there are an unbounded set -of them... -

- -

-The paragraph implies that, for instance, has_facet<num_put<C, -OutputIterator> >(loc) must always return true. I don't think that's -possible. If it were, then use_facet<num_put<C, OutputIterator> ->(loc) would have to return a reference to a distinct object for each -valid specialization of num_put<C, OutputIteratory>, which is -clearly impossible. -

- -

-On the other hand, if none of the facets in Table 52 is a member of a standard -category then none of the locale member functions that operate on entire -categories of facets will work properly. -

- -

-It seems that what p3 should mention that it's required (permitted?) -to hold only for specializations of Facet from Table 52 on -C from the set { char, wchar_t }, and -InputIterator and OutputIterator from the set of -{ -{i,o}streambuf_iterator<{char,wchar_t}> -}. -

-

Proposed resolution:

-

In 22.1.1.1.1 [lib.locale.category], paragraph 3, change -"that is a member of a standard category" to "shown in Table 51".

-

Rationale:

-

The facets in Table 52 are an unbounded set. Locales should not be -required to contain an infinite number of facets.

- -

It's not necessary to talk about which values of InputIterator and -OutputIterator must be supported. Table 51 already contains a -complete list of the ones we need.

-
-

341. Vector reallocation and swap

Section: 23.2.4.2 [lib.vector.capacity]  Status: WP  Submitter: Anthony Williams  Date: 27 Sep 2001

-

It is a common idiom to reduce the capacity of a vector by swapping it with -an empty one:

-
  std::vector<SomeType> vec;
-  // fill vec with data
-  std::vector<SomeType>().swap(vec);
-  // vec is now empty, with minimal capacity
-
- -

However, the wording of 23.2.4.2 [lib.vector.capacity]paragraph 5 prevents -the capacity of a vector being reduced, following a call to -reserve(). This invalidates the idiom, as swap() is thus prevented -from reducing the capacity. The proposed wording for issue 329 does not affect this. Consequently, the example above -requires the temporary to be expanded to cater for the contents of -vec, and the contents be copied across. This is a linear-time -operation.

- -

However, the container requirements state that swap must have constant -complexity (23.1 [lib.container.requirements] note to table 65).

- -

This is an important issue, as reallocation affects the validity of -references and iterators.

- -

If the wording of 23.2.4.2p5 is taken to be the desired intent, then -references and iterators remain valid after a call to swap, if they refer to -an element before the new end() of the vector into which they originally -pointed, in which case they refer to the element at the same index position. -Iterators and references that referred to an element whose index position -was beyond the new end of the vector are invalidated.

- -

If the note to table 65 is taken as the desired intent, then there are two -possibilities with regard to iterators and references:

- -
    -
  1. All Iterators and references into both vectors are invalidated.
  2. -
  3. Iterators and references into either vector remain valid, and remain -pointing to the same element. Consequently iterators and references that -referred to one vector now refer to the other, and vice-versa.
  4. -
-

Proposed resolution:

-

Add a new paragraph after 23.2.4.2 [lib.vector.capacity] paragraph 5:

-
-
  void swap(vector<T,Allocator>& x);
-
-

Effects: Exchanges the contents and capacity() of *this -with that of x.

-

Complexity: Constant time.

-
- -

[This solves the problem reported for this issue. We may also -have a problem with a circular definition of swap() for other -containers.]

- -

Rationale:

-

-swap should be constant time. The clear intent is that it should just -do pointer twiddling, and that it should exchange all properties of -the two vectors, including their reallocation guarantees. -

-
-

345. type tm in <cwchar>

Section: 21.4 [lib.c.strings]  Status: WP  Submitter: Clark Nelson  Date: 19 Oct 2001

-

-C99, and presumably amendment 1 to C90, specify that <wchar.h> -declares struct tm as an incomplete type. However, table 48 in 21.4 [lib.c.strings] does not mention the type tm as being declared in -<cwchar>. Is this omission intentional or accidental? -

-

Proposed resolution:

-

In section 21.4 [lib.c.strings], add "tm" to table 48.

-
-

346. Some iterator member functions should be const

Section: 24.1 [lib.iterator.requirements]  Status: WP  Submitter: Jeremy Siek  Date: 20 Oct 2001

-

Iterator member functions and operators that do not change the state -of the iterator should be defined as const member functions or as -functions that take iterators either by const reference or by -value. The standard does not explicitly state which functions should -be const. Since this a fairly common mistake, the following changes -are suggested to make this explicit.

- -

The tables almost indicate constness properly through naming: r -for non-const and a,b for const iterators. The following changes -make this more explicit and also fix a couple problems.

-

Proposed resolution:

-

In 24.1 [lib.iterator.requirements] Change the first section of p9 from -"In the following sections, a and b denote values of X..." to -"In the following sections, a and b denote values of type const X...".

- -

In Table 73, change

-
    a->m   U&         ...
-
- -

to

- -
    a->m   const U&   ...
-    r->m   U&         ...
-
- -

In Table 73 expression column, change

- -
    *a = t
-
- -

to

- -
    *r = t
-
- -

[Redmond: The container requirements should be reviewed to see if -the same problem appears there.]

- -
-

347. locale::category and bitmask requirements

Section: 22.1.1.1.1 [lib.locale.category]  Status: WP  Submitter: P.J. Plauger, Nathan Myers  Date: 23 Oct 2001

-

-In 22.1.1.1.1 [lib.locale.category] paragraph 1, the category members -are described as bitmask elements. In fact, the bitmask requirements -in 17.3.2.1.2 [lib.bitmask.types] don't seem quite right: none -and all are bitmask constants, not bitmask elements.

- -

In particular, the requirements for none interact poorly -with the requirement that the LC_* constants from the C library must -be recognizable as C++ locale category constants. LC_* values should -not be mixed with these values to make category values.

- -

We have two options for the proposed resolution. Informally: -option 1 removes the requirement that LC_* values be recognized as -category arguments. Option 2 changes the category type so that this -requirement is implementable, by allowing none to be some -value such as 0x1000 instead of 0.

- -

Nathan writes: "I believe my proposed resolution [Option 2] merely -re-expresses the status quo more clearly, without introducing any -changes beyond resolving the DR.

- -

Proposed resolution:

-

Replace the first two paragraphs of 22.1.1.1 [lib.locale.types] with:

-
-
    typedef int category;
-
- -

Valid category values include the locale member bitmask -elements collate, ctype, monetary, -numeric, time, and messages, each of which -represents a single locale category. In addition, locale member -bitmask constant none is defined as zero and represents no -category. And locale member bitmask constant all is defined such that -the expression

-
    (collate | ctype | monetary | numeric | time | messages | all) == all
-
-

-is true, and represents the union of all categories. Further -the expression (X | Y), where X and Y each -represent a single category, represents the union of the two -categories. -

- -

-locale member functions expecting a category -argument require one of the category values defined above, or -the union of two or more such values. Such a category -argument identifies a set of locale categories. Each locale category, -in turn, identifies a set of locale facets, including at least those -shown in Table 51: -

-
-

[Curaçao: need input from locale experts.]

- -

Rationale:

- -

The LWG considered, and rejected, an alternate proposal (described - as "Option 2" in the discussion). The main reason for rejecting it - was that library implementors were concerened about implementation - difficult, given that getting a C++ library to work smoothly with a - separately written C library is already a delicate business. Some - library implementers were also concerned about the issue of adding - extra locale categories.

- -
-

Option 2:
-Replace the first paragraph of 22.1.1.1 [lib.locale.types] with:

-
-

-Valid category values include the enumerated values. In addition, the -result of applying commutative operators | and & to any two valid -values is valid, and results in the setwise union and intersection, -respectively, of the argument categories. The values all and -none are defined such that for any valid value cat, the -expressions (cat | all == all), (cat & all == cat), -(cat | none == cat) and (cat & none == none) are -true. For non-equal values cat1 and cat2 of the -remaining enumerated values, (cat1 & cat2 == none) is true. -For any valid categories cat1 and cat2, the result -of (cat1 & ~cat2) is valid, and equals the setwise union of -those categories found in cat1 but not found in cat2. -[Footnote: it is not required that all equal the setwise union -of the other enumerated values; implementations may add extra categories.] -

-
-
-
-

349. Minor typographical error in ostream_iterator

Section: 24.5.2 [lib.ostream.iterator]  Status: WP  Submitter: Andy Sawyer  Date: 24 Oct 2001

-

24.5.2 [lib.ostream.iterator] states:

-
    [...]
-
-    private:
-    // basic_ostream<charT,traits>* out_stream; exposition only
-    // const char* delim; exposition only
-
- -

Whilst it's clearly marked "exposition only", I suspect 'delim' -should be of type 'const charT*'.

-

Proposed resolution:

-

-In 24.5.2 [lib.ostream.iterator], replace const char* delim with -const charT* delim. -

-
-

352. missing fpos requirements

Section: 21.1.2 [lib.char.traits.typedefs]  Status: WP  Submitter: Martin Sebor  Date: 2 Dec 2001

-

-(1) -There are no requirements on the stateT template parameter of -fpos listed in 27.4.3. The interface appears to require that -the type be at least Assignable and CopyConstructible (27.4.3.1, p1), -and I think also DefaultConstructible (to implement the operations in -Table 88). -

-

-21.1.2, p3, however, only requires that -char_traits<charT>::state_type meet the requirements of -CopyConstructible types. -

-

-(2) -Additionally, the stateT template argument has no -corresponding typedef in fpos which might make it difficult to use in -generic code. -

-

Proposed resolution:

-

-Modify 21.1.2, p4 from -

-

- Requires: state_type shall meet the requirements of - CopyConstructible types (20.1.3). -

-

- Requires: state_type shall meet the requirements of Assignable - (23.1, p4), CopyConstructible (20.1.3), and - DefaultConstructible (20.1.4) types. -

- -

Rationale:

-

The LWG feels this is two issues, as indicated above. The first is -a defect---std::basic_fstream is unimplementable without these -additional requirements---and the proposed resolution fixes it. The -second is questionable; who would use that typedef? The class -template fpos is used only in a very few places, all of which know the -state type already. Unless motivation is provided, the second should -be considered NAD.

-
-

354. Associative container lower/upper bound requirements

Section: 23.1.2 [lib.associative.reqmts]  Status: WP  Submitter: Hans Aberg  Date: 17 Dec 2001

-

-Discussions in the thread "Associative container lower/upper bound -requirements" on comp.std.c++ suggests that there is a defect in the -C++ standard, Table 69 of section 23.1.2, "Associative containers", -[lib.associative.reqmts]. It currently says:

- -
-

-a.find(k): returns an iterator pointing to an element with the key equivalent to -k, or a.end() if such an element is not found. -

- -

-a.lower_bound(k): returns an iterator pointing to the first element with -key not less than k. -

- -

-a.upper_bound(k): returns an iterator pointing to the first element with -key greater than k. -

-
- -

-We have "or a.end() if such an element is not found" for -find, but not for upper_bound or -lower_bound. As the text stands, one would be forced to -insert a new element into the container and return an iterator to that -in case the sought iterator does not exist, which does not seem to be -the intention (and not possible with the "const" versions). -

-

Proposed resolution:

- -

Change Table 69 of section 23.1.2 [lib.associative.reqmts] indicated entries -to:

- -
-

-a.lower_bound(k): returns an iterator pointing to the first element with -key not less than k, or a.end() if such an element is not found. -

- -

-a.upper_bound(k): returns an iterator pointing to the first element with -key greater than k, or a.end() if such an element is not found. -

-
- -

[Curaçao: LWG reviewed PR.]

- -
-

355. Operational semantics for a.back()

Section: 23.1.1 [lib.sequence.reqmts]  Status: WP  Submitter: Yaroslav Mironov  Date: 23 Jan 2002

- -

Table 68 "Optional Sequence Operations" in 23.1.1/12 -specifies operational semantics for "a.back()" as -"*--a.end()", which may be ill-formed [because calling -operator-- on a temporary (the return) of a built-in type is -ill-formed], provided a.end() returns a simple pointer rvalue -(this is almost always the case for std::vector::end(), for -example). Thus, the specification is not only incorrect, it -demonstrates a dangerous construct: "--a.end()" may -successfully compile and run as intended, but after changing the type -of the container or the mode of compilation it may produce -compile-time error.

- -

Proposed resolution:

-

Change the specification in table 68 "Optional Sequence -Operations" in 23.1.1/12 for "a.back()" from

- - -
-*--a.end() -
- -

to

- -
- { iterator tmp = a.end(); --tmp; return *tmp; } -
- -

and the specification for "a.pop_back()" from

- -
-a.erase(--a.end()) -
- -

to

- -
- { iterator tmp = a.end(); --tmp; a.erase(tmp); } -
- -

[Curaçao: LWG changed PR from "{ X::iterator tmp = -a.end(); return *--tmp; }" to "*a.rbegin()", and from -"{ X::iterator tmp = a.end(); a.erase(--tmp); }" to -"a.erase(rbegin())".]

- -

[There is a second possible defect; table 68 "Optional -Sequence Operations" in the "Operational Semantics" -column uses operations present only in the "Reversible -Container" requirements, yet there is no stated dependency -between these separate requirements tables. Ask in Santa Cruz if the -LWG would like a new issue opened.]

- -

[Santa Cruz: the proposed resolution is even worse than what's in - the current standard: erase is undefined for reverse iterator. If - we're going to make the change, we need to define a temporary and - use operator--. Additionally, we don't know how prevalent this is: - do we need to make this change in more than one place? Martin has - volunteered to review the standard and see if this problem occurs - elsewhere.]

- -

[Oxford: Matt provided new wording to address the concerns raised - in Santa Cruz. It does not appear that this problem appears - anywhere else in clauses 23 or 24.]

- -

[Kona: In definition of operational semantics of back(), change -"*tmp" to "return *tmp;"]

- -
-

358. interpreting thousands_sep after a decimal_point -

Section: 22.2.2.1.2 [lib.facet.num.get.virtuals]  Status: WP  Submitter: Martin Sebor  Date: 12 Mar 2002

-

-I don't think thousands_sep is being treated correctly after -decimal_point has been seen. Since grouping applies only to the -integral part of the number, the first such occurrence should, IMO, -terminate Stage 2. (If it does not terminate it, then 22.2.2.1.2, p12 -and 22.2.3.1.2, p3 need to explain how thousands_sep is to be -interpreted in the fractional part of a number.) -

- -

-The easiest change I can think of that resolves this issue would be -something like below. -

-

Proposed resolution:

-

-Change the first sentence of 22.2.2.1.2, p9 from -

- -
- If discard is true then the position of the character is - remembered, but the character is otherwise ignored. If it is not - discarded, then a check is made to determine if c is allowed as - the next character of an input field of the conversion specifier - returned by stage 1. If so it is accumulated. -
- -

to

- -
- If discard is true, then if '.' has not yet been - accumulated, then the position of the character is remembered, but - the character is otherwise ignored. Otherwise, if '.' has - already been accumulated, the character is discarded and Stage 2 - terminates. ... -
- -

Rationale:

-

We believe this reflects the intent of the Standard. Thousands sep - characters after the decimal point are not useful in any locale. - Some formatting conventions do group digits that follow the decimal - point, but they usually introduce a different grouping character - instead of reusing the thousand sep character. If we want to add - support for such conventions, we need to do so explicitly.

- -
-

359. num_put<>::do_put (..., bool) undocumented

Section: 22.2.2.2.1 [lib.facet.num.put.members]  Status: WP  Submitter: Martin Sebor  Date: 12 Mar 2002

-

22.2.2.2.1, p1:

- -
    iter_type put (iter_type out, ios_base& str, char_type fill,
-                   bool val) const;
-    ...
-
-    1   Returns: do_put (out, str, fill, val).
-    
- -

AFAICS, the behavior of do_put (..., bool) is not documented anywhere, -however, 22.2.2.2.2, p23:

- -
-
iter_type put (iter_type out, ios_base& str, char_type fill,
-               bool val) const;
-
- - - Effects: If (str.flags() & ios_base::boolalpha) == 0 then do - out = do_put(out, str, fill, (int)val) - Otherwise do -
             string_type s =
-                 val ? use_facet<ctype<charT> >(loc).truename()
-                     : use_facet<ctype<charT> >(loc).falsename();
-
- and then insert the characters of s into out. out. -
- -

-This means that the bool overload of do_put() will never be called, -which contradicts the first paragraph. Perhaps the declaration -should read do_put(), and not put()? -

- -

-Note also that there is no Returns clause for this function, which -should probably be corrected, just as should the second occurrence -of "out." in the text. -

- -

-I think the least invasive change to fix it would be something like -the following: -

-

Proposed resolution:

-

In 22.2.2.2.2 [lib.facet.num.put.virtuals], just above paragraph 1, remove - the bool overload.

- -

-In 22.2.2.2.2 [lib.facet.num.put.virtuals], p23, make the following changes -

- -
- Replace put() with do_put() in the declaration - of the member function. -
- -
- Change the Effects clause to a Returns clause (to - avoid the requirement to call do_put(..., int) from - do_put (..., bool)) - like so: -
- -
- 23 Returns: If (str.flags() & - ios_base::boolalpha) == 0 then - do_put (out, str, fill, (long)val) - Otherwise the function obtains a string s as if by -
             string_type s =
-                val ? use_facet<ctype<charT> >(loc).truename()
-                    : use_facet<ctype<charT> >(loc).falsename();
-
- and then inserts each character c of s into out via - *out++ = c - and returns out. -
- -

Rationale:

-

-This fixes a couple of obvious typos, and also fixes what appears to -be a requirement of gratuitous inefficiency. -

-
-

360. locale mandates inefficient implementation

Section: 22.1.1 [lib.locale]  Status: WP  Submitter: Martin Sebor  Date: 12 Mar 2002

-

-22.1.1, p7 (copied below) allows iostream formatters and extractors -to make assumptions about the values returned from facet members. -However, such assumptions are apparently not guaranteed to hold -in other cases (e.g., when the facet members are being called directly -rather than as a result of iostream calls, or between successive -calls to the same iostream functions with no interevening calls to -imbue(), or even when the facet member functions are called -from other member functions of other facets). This restriction -prevents locale from being implemented efficiently. -

-

Proposed resolution:

-

Change the first sentence in 22.1.1, p7 from

-
- In successive calls to a locale facet member function during - a call to an iostream inserter or extractor or a streambuf member - function, the returned result shall be identical. [Note: This - implies that such results may safely be reused without calling - the locale facet member function again, and that member functions - of iostream classes cannot safely call imbue() - themselves, except as specified elsewhere. --end note] -
- -

to

- -
- In successive calls to a locale facet member function on a facet - object installed in the same locale, the returned result shall be - identical. ... -
- -

Rationale:

-

This change is reasonable becuase it clarifies the intent of this - part of the standard.

-
-

363. Missing exception specification in 27.4.2.1.1

Section: 27.4.2.1.1 [lib.ios::failure]  Status: WP  Submitter: Walter Brown and Marc Paterno  Date: 20 May 2002

-

-The destructor of ios_base::failure should have an empty throw -specification, because the destructor of its base class, exception, is -declared in this way. -

-

Proposed resolution:

-

Change the destructor to

-
  virtual ~failure() throw();
-
-

Rationale:

-

Fixes an obvious glitch. This is almost editorial.

-
-

364. Inconsistent wording in 27.5.2.4.2

Section: 27.5.2.4.2 [lib.streambuf.virt.buffer]  Status: WP  Submitter: Walter Brown, Marc Paterno  Date: 10 May 2002

-

-27.5.2.4.2 [lib.streambuf.virt.buffer] paragraph 1 is inconsistent with the Effects -clause for seekoff. -

-

Proposed resolution:

-

-Make this paragraph, the Effects clause for setbuf, consistent in wording -with the Effects clause for seekoff in paragraph 3 by amending paragraph 1 -to indicate the purpose of setbuf: -

- -

Original text:

- -
-1 Effects: Performs an operation that is defined separately for each -class derived from basic_streambuf in this clause (27.7.1.3, 27.8.1.4). -
- -

Proposed text:

- -
-1 Effects: Influences stream buffering in a way that is defined separately -for each class derived from basic_streambuf in this clause -(27.7.1.3, 27.8.1.4). -
- -

Rationale:

-

The LWG doesn't believe there is any normative difference between - the existing wording and what's in the proposed resolution, but the - change may make the intent clearer.

-
-

365. Lack of const-qualification in clause 27

Section: 27 [lib.input.output]  Status: WP  Submitter: Walter Brown, Marc Paterno  Date: 10 May 2002

-

-Some stream and streambuf member functions are declared non-const, -even thought they appear only to report information rather than to -change an object's logical state. They should be declared const. See -document N1360 for details and rationale. -

- -

The list of member functions under discussion: in_avail, -showmanyc, tellg, tellp, is_open.

- -

Related issue: 73

- -

Proposed resolution:

-

In 27.8.1.5, 27.8.1.7, 27.8.1.8, 27.8.1.10, 27.8.1.11, and 27.8.1.13

-

Replace

-
  bool is_open();
-
-

with

-
  bool is_open() const;
-
-

Rationale:

-

Of the changes proposed in N1360, the only one that is safe is -changing the filestreams' is_open to const. The LWG believed that -this was NAD the first time it considered this issue (issue 73), but now thinks otherwise. The corresponding streambuf -member function, after all,is already const.

- -

The other proposed changes are less safe, because some streambuf -functions that appear merely to report a value do actually perform -mutating operations. It's not even clear that they should be -considered "logically const", because streambuf has two interfaces, a -public one and a protected one. These functions may, and often do, -change the state as exposed by the protected interface, even if the -state exposed by the public interface is unchanged.

- -

Note that implementers can make this change in a binary compatible -way by providing both overloads; this would be a conforming extension.

- -
-

370. Minor error in basic_istream::get

Section: 27.6.1.3 [lib.istream.unformatted]  Status: WP  Submitter: Ray Lischner  Date: 15 Jul 2002

-

Defect report for description of basic_istream::get (section 27.6.1.3 [lib.istream.unformatted]), paragraph 15. The description for the get function -with the following signature:

- -
  basic_istream<charT,traits>& get(basic_streambuf<char_type,traits>&
-  sb);
-
- -

is incorrect. It reads

- -
- Effects: Calls get(s,n,widen('\n')) -
- -

which I believe should be:

- -
- Effects: Calls get(sb,widen('\n')) -
-

Proposed resolution:

-

Change the Effects paragraph to:

-
- Effects: Calls get(sb,this->widen('\n')) -
- -

[Pre-Oxford: Minor correction from Howard: replaced 'widen' - with 'this->widen'.]

- -

Rationale:

-

Fixes an obvious typo.

-
-

373. Are basic_istream and basic_ostream to use (exceptions()&badbit) != 0 ?

Section: 27.6.1.2.1 [lib.istream.formatted.reqmts], 27.6.2.5.1 [lib.ostream.formatted.reqmts]  Status: WP  Submitter: Keith Baker  Date: 23 Jul 2002

- -

-In 27.6.1.2.1 [lib.istream.formatted.reqmts] and 27.6.2.5.1 [lib.ostream.formatted.reqmts] -(exception()&badbit) != 0 is used in testing for rethrow, yet -exception() is the constructor to class std::exception in 18.6.1 [lib.exception] that has no return type. Should member function -exceptions() found in 27.4.4 [lib.ios] be used instead? -

- -

Proposed resolution:

-

-In 27.6.1.2.1 [lib.istream.formatted.reqmts] and 27.6.2.5.1 [lib.ostream.formatted.reqmts], change -"(exception()&badbit) != 0" to "(exceptions()&badbit) != 0". -

-

Rationale:

-

Fixes an obvious typo.

-
-

375. basic_ios should be ios_base in 27.7.1.3

Section: 27.7.1.3 [lib.stringbuf.virtuals]  Status: WP  Submitter: Ray Lischner  Date: 14 Aug 2002

-

-In Section 27.7.1.3 [lib.stringbuf.virtuals]: Table 90, Table 91, and paragraph -14 all contain references to "basic_ios::" which should be -"ios_base::". -

-

Proposed resolution:

-

-Change all references to "basic_ios" in Table 90, Table 91, and -paragraph 14 to "ios_base". -

-

Rationale:

-

Fixes an obvious typo.

-
-

379. nonsensical ctype::do_widen() requirement

Section: 22.2.1.1.2 [lib.locale.ctype.virtuals]  Status: WP  Submitter: Martin Sebor  Date: 6 Sep 2002

-

-The last sentence in 22.2.1.1.2, p11 below doesn't seem to make sense. -

-
  charT do_widen (char c) const;
-
-  -11- Effects: Applies the simplest reasonable transformation from
-       a char value or sequence of char values to the corresponding
-       charT value or values. The only characters for which unique
-       transformations are required are those in the basic source
-       character set (2.2). For any named ctype category with a
-       ctype<charT> facet ctw and valid ctype_base::mask value
-       M (is(M, c) || !ctw.is(M, do_widen(c))) is true.
-
-

-Shouldn't the last sentence instead read -

-
       For any named ctype category with a ctype<char> facet ctc
-       and valid ctype_base::mask value M
-       (ctc.is(M, c) || !is(M, do_widen(c))) is true.
-
-

-I.e., if the narrow character c is not a member of a class of -characters then neither is the widened form of c. (To paraphrase -footnote 224.) -

-

Proposed resolution:

-

-Replace the last sentence of 22.2.1.1.2 [lib.locale.ctype.virtuals], p11 with the -following text: -

-
       For any named ctype category with a ctype<char> facet ctc
-       and valid ctype_base::mask value M,
-       (ctc.is(M, c) || !is(M, do_widen(c))) is true.
-
- -

[Kona: Minor edit. Added a comma after the M for clarity.]

- -

Rationale:

-

The LWG believes this is just a typo, and that this is the correct fix.

-
-

380. typos in codecvt tables 53 and 54

Section: 22.2.1.5.2 [lib.locale.codecvt.virtuals]  Status: WP  Submitter: Martin Sebor  Date: 6 Sep 2002

-

-Tables 53 and 54 in 22.2.1.5.2 [lib.locale.codecvt.virtuals] are both titled "convert -result values," when surely "do_in/do_out result values" must have -been intended for Table 53 and "do_unshift result values" for Table -54. -

-

-Table 54, row 3 says that the meaning of partial is "more characters -needed to be supplied to complete termination." The function is not -supplied any characters, it is given a buffer which it fills with -characters or, more precisely, destination elements (i.e., an escape -sequence). So partial means that space for more than (to_limit - to) -destination elements was needed to terminate a sequence given the -value of state. -

-

Proposed resolution:

-

-Change the title of Table 53 to "do_in/do_out result values" and -the title of Table 54 to "do_unshift result values." -

-

-Change the text in Table 54, row 3 (the partial row), under the -heading Meaning, to "space for more than (to_limit - to) destination -elements was needed to terminate a sequence given the value of state." -

-
-

381. detection of invalid mbstate_t in codecvt

Section: 22.2.1.5.2 [lib.locale.codecvt.virtuals]  Status: WP  Submitter: Martin Sebor  Date: 6 Sep 2002

-

-All but one codecvt member functions that take a state_type argument -list as one of their preconditions that the state_type argument have -a valid value. However, according to 22.2.1.5.2, p6, -codecvt::do_unshift() is the only codecvt member that is supposed to -return error if the state_type object is invalid. -

- -

-It seems to me that the treatment of state_type by all codecvt member -functions should be the same and the current requirements should be -changed. Since the detection of invalid state_type values may be -difficult in general or computationally expensive in some specific -cases, I propose the following: -

-

Proposed resolution:

-

-Add a new paragraph before 22.2.1.5.2, p5, and after the function -declaration below -

-
    result do_unshift(stateT& state,
-    externT* to, externT* to_limit, externT*& to_next) const;
-
-

-as follows: -

-
    Requires: (to <= to_end) well defined and true; state initialized,
-    if at the beginning of a sequence, or else equal to the result of
-    converting the preceding characters in the sequence.
-
-

-and change the text in Table 54, row 4, the error row, under -the heading Meaning, from -

-
    state has invalid value
-
-

-to -

-
    an unspecified error has occurred
-
-

Rationale:

-

The intent is that implementations should not be required to detect -invalid state values; such a requirement appears nowhere else. An -invalid state value is a precondition violation, i.e. undefined -behavior. Implementations that do choose to detect invalid state -values, or that choose to detect any other kind of error, may return -error as an indication.

-
-

383. Bidirectional iterator assertion typo

Section: 24.1.4 [lib.bidirectional.iterators]  Status: WP  Submitter: ysapir (submitted via comp.std.c++)  Date: 17 Oct 2002

-

-Following a discussion on the boost list regarding end iterators and -the possibility of performing operator--() on them, it seems to me -that there is a typo in the standard. This typo has nothing to do -with that discussion. -

- -

-I have checked this newsgroup, as well as attempted a search of the -Active/Defect/Closed Issues List on the site for the words "s is -derefer" so I believe this has not been proposed before. Furthermore, -the "Lists by Index" mentions only DR 299 on section -24.1.4, and DR 299 is not related to this issue. -

- -

-The standard makes the following assertion on bidirectional iterators, -in section 24.1.4 [lib.bidirectional.iterators], Table 75: -

- -
                         operational  assertion/note
-expression  return type   semantics    pre/post-condition
-
---r          X&                        pre: there exists s such
-                                       that r == ++s.
-                                       post: s is dereferenceable.
-                                       --(++r) == r.
-                                       --r == --s implies r == s.
-                                       &r == &--r.
-
- -

-(See http://aspn.activestate.com/ASPN/Mail/Message/boost/1395763.) -

- -

-In particular, "s is dereferenceable" seems to be in error. It seems -that the intention was to say "r is dereferenceable". -

- -

-If it were to say "r is dereferenceable" it would -make perfect sense. Since s must be dereferenceable prior to -operator++, then the natural result of operator-- (to undo operator++) -would be to make r dereferenceable. Furthermore, without other -assertions, and basing only on precondition and postconditions, we -could not otherwise know this. So it is also interesting information. -

- -

Proposed resolution:

-

-Change the guarantee to "postcondition: r is dereferenceable." -

-

Rationale:

-

Fixes an obvious typo

-
-

386. Reverse iterator's operator[] has impossible return type

Section: 24.4.1.3.11 [lib.reverse.iter.opindex]  Status: DR  Submitter: Matt Austern  Date: 23 Oct 2002

-

In 24.4.1.3.11 [lib.reverse.iter.opindex], reverse_iterator<>::operator[] -is specified as having a return type of reverse_iterator::reference, -which is the same as iterator_traits<Iterator>::reference. -(Where Iterator is the underlying iterator type.)

- -

The trouble is that Iterator's own operator[] doesn't - necessarily have a return type - of iterator_traits<Iterator>::reference. Its - return type is merely required to be convertible - to Iterator's value type. The return type specified for - reverse_iterator's operator[] would thus appear to be impossible.

- -

With the resolution of issue 299, the type of - a[n] will continue to be required (for random access - iterators) to be convertible to the value type, and also a[n] = - t will be a valid expression. Implementations of - reverse_iterator will likely need to return a proxy from - operator[] to meet these requirements. As mentioned in the - comment from Dave Abrahams, the simplest way to specify that - reverse_iterator meet this requirement to just mandate - it and leave the return type of operator[] unspecified.

- -

Proposed resolution:

- -

In 24.4.1.2 [lib.reverse.iter.requirements] change:

- -
-
reference operator[](difference_type n) const;
-
-
- -

to:

- -
-
unspecified operator[](difference_type n) const; // see lib.random.access.iterators
-
-
- - - - -

[ -Comments from Dave Abrahams: IMO we should resolve 386 by just saying - that the return type of reverse_iterator's operator[] is - unspecified, allowing the random access iterator requirements to - impose an appropriate return type. If we accept 299's proposed - resolution (and I think we should), the return type will be - readable and writable, which is about as good as we can do. -]

-
-

389. Const overload of valarray::operator[] returns by value

Section: 26.3.2 [lib.template.valarray]  Status: WP  Submitter: Gabriel Dos Reis  Date: 8 Nov 2002

-

Consider the following program:

-
    #include <iostream>
-    #include <ostream>
-    #include <vector>
-    #include <valarray>
-    #include <algorithm>
-    #include <iterator>
-    template<typename Array>
-    void print(const Array& a)
-    {
-    using namespace std;
-    typedef typename Array::value_type T;
-    copy(&a[0], &a[0] + a.size(),
-    ostream_iterator<T>(std::cout, " "));
-    }
-    template<typename T, unsigned N>
-    unsigned size(T(&)[N]) { return N; }
-    int main()
-    {
-    double array[] = { 0.89, 9.3, 7, 6.23 };
-    std::vector<double> v(array, array + size(array));
-    std::valarray<double> w(array, size(array));
-    print(v); // #1
-    std::cout << std::endl;
-    print(w); // #2
-    std::cout << std::endl;
-    }
-
- -

While the call numbered #1 succeeds, the call numbered #2 fails -because the const version of the member function -valarray<T>::operator[](size_t) returns a value instead of a -const-reference. That seems to be so for no apparent reason, no -benefit. Not only does that defeats users' expectation but it also -does hinder existing software (written either in C or Fortran) -integration within programs written in C++. There is no reason why -subscripting an expression of type valarray<T> that is const-qualified -should not return a const T&.

-

Proposed resolution:

-

In the class synopsis in 26.3.2 [lib.template.valarray], and in -26.3.2.3 [lib.valarray.access] just above paragraph 1, change

-
  T operator[](size_t const);
-
-

to

-
  const T& operator[](size_t const);
-
- -

[Kona: fixed a minor typo: put semicolon at the end of the line - wehre it belongs.]

- -

Rationale:

-

Return by value seems to serve no purpose. Valaray was explicitly -designed to have a specified layout so that it could easily be -integrated with libraries in other languages, and return by value -defeats that purpose. It is believed that this change will have no -impact on allowable optimizations.

-
-

391. non-member functions specified as const

Section: 22.1.3.2 [lib.conversions]  Status: WP  Submitter: James Kanze  Date: 10 Dec 2002

-

-The specifications of toupper and tolower both specify the functions as -const, althought they are not member functions, and are not specified as -const in the header file synopsis in section 22.1 [lib.locales]. -

-

Proposed resolution:

-

In 22.1.3.2 [lib.conversions], remove const from the function - declarations of std::toupper and std::tolower

-

Rationale:

-

Fixes an obvious typo

-
-

395. inconsistencies in the definitions of rand() and random_shuffle()

Section: 26.5 [lib.c.math]  Status: WP  Submitter: James Kanze  Date: 3 Jan 2003

-

-In 26.5 [lib.c.math], the C++ standard refers to the C standard for the -definition of rand(); in the C standard, it is written that "The -implementation shall behave as if no library function calls the rand -function." -

- -

-In 25.2.11 [lib.alg.random.shuffle], there is no specification as to -how the two parameter version of the function generates its random -value. I believe that all current implementations in fact call rand() -(in contradiction with the requirement avove); if an implementation does -not call rand(), there is the question of how whatever random generator -it does use is seeded. Something is missing. -

- -

Proposed resolution:

-

-In [lib.c.math], add a paragraph specifying that the C definition of -rand shal be modified to say that "Unless otherwise specified, the -implementation shall behave as if no library function calls the rand -function." -

- -

-In [lib.alg.random.shuffle], add a sentence to the effect that "In -the two argument form of the function, the underlying source of -random numbers is implementation defined. [Note: in particular, an -implementation is permitted to use rand.] -

-

Rationale:

-

The original proposed resolution proposed requiring the - two-argument from of random_shuffle to - use rand. We don't want to do that, because some existing - implementations already use something else: gcc - uses lrand48, for example. Using rand presents a - problem if the number of elements in the sequence is greater than - RAND_MAX.

-
-

400. redundant type cast in lib.allocator.members

Section: 20.4.1.1 [lib.allocator.members]  Status: WP  Submitter: Markus Mauhart  Date: 27 Feb 2003

-

-20.4.1.1 [lib.allocator.members] allocator members, contains -the following 3 lines: -

- -
  12 Returns: new((void *) p) T( val)
-     void destroy(pointer p);
-  13 Returns: ((T*) p)->~T()
-
- -

-The type cast "(T*) p" in the last line is redundant cause -we know that std::allocator<T>::pointer is a typedef for T*. -

-

Proposed resolution:

-

-Replace "((T*) p)" with "p". -

-

Rationale:

-

Just a typo, this is really editorial.

-
-

402. wrong new expression in [some_]allocator::construct

Section: 20.1.5 [lib.allocator.requirements], 20.4.1.1 [lib.allocator.members],   Status: WP  Submitter: Markus Mauhart  Date: 27 Feb 2003

-

-This applies to the new expression that is contained in both par12 of -20.4.1.1 [lib.allocator.members] and in par2 (table 32) of 20.1.5 [lib.allocator.requirements]. -I think this new expression is wrong, involving unintended side -effects. -

- - -

20.4.1.1 [lib.allocator.members] contains the following 3 lines:

- -
  11 Returns: the largest value N for which the call allocate(N,0) might succeed.
-     void construct(pointer p, const_reference val);
-  12 Returns: new((void *) p) T( val)
-
- - -

20.1.5 [lib.allocator.requirements] in table 32 has the following line:

-
  a.construct(p,t)   Effect: new((void*)p) T(t)
-
- -

-.... with the prerequisits coming from the preceding two paragraphs, -especially from table 31: -

- -
  alloc<T>             a     ;// an allocator for T
-  alloc<T>::pointer    p     ;// random access iterator
-                              // (may be different from T*)
-  alloc<T>::reference  r = *p;// T&
-  T const&             t     ;
-
- -

-Cause of using "new" but not "::new", any existing "T::operator new" -function will hide the global placement new function. When there is no -"T::operator new" with adequate signature, -every_alloc<T>::construct(..) is ill-formed, and most -std::container<T,every_alloc<T>> use it; a workaround -would be adding placement new and delete functions with adequate -signature and semantic to class T, but class T might come from another -party. Maybe even worse is the case when T has placement new and -delete functions with adequate signature but with "unknown" semantic: -I dont like to speculate about it, but whoever implements -any_container<T,any_alloc> and wants to use construct(..) -probably must think about it. -

-

Proposed resolution:

-

-Replace "new" with "::new" in both cases. -

-
-

403. basic_string::swap should not throw exceptions

Section: 21.3.5.8 [lib.string::swap]  Status: WP  Submitter: Beman Dawes  Date: 25 Mar 2003

- -

-std::basic_string, 21.3 [lib.basic.string] paragraph 2 says that -basic_string "conforms to the requirements of a Sequence, as specified -in (23.1.1)." The sequence requirements specified in (23.1.1) to not -include any prohibition on swap members throwing exceptions. -

- -

-Section 23.1 [lib.container.requirements] paragraph 10 does limit conditions under -which exceptions may be thrown, but applies only to "all container -types defined in this clause" and so excludes basic_string::swap -because it is defined elsewhere. -

- -

-Eric Niebler points out that 21.3 [lib.basic.string] paragraph 5 explicitly -permits basic_string::swap to invalidates iterators, which is -disallowed by 23.1 [lib.container.requirements] paragraph 10. Thus the standard would -be contradictory if it were read or extended to read as having -basic_string meet 23.1 [lib.container.requirements] paragraph 10 requirements. -

- -

-Yet several LWG members have expressed the belief that the original -intent was that basic_string::swap should not throw exceptions as -specified by 23.1 [lib.container.requirements] paragraph 10, and that the standard is -unclear on this issue. The complexity of basic_string::swap is -specified as "constant time", indicating the intent was to avoid -copying (which could cause a bad_alloc or other exception). An -important use of swap is to ensure that exceptions are not thrown in -exception-safe code. -

- -

-Note: There remains long standing concern over whether or not it is -possible to reasonably meet the 23.1 [lib.container.requirements] paragraph 10 swap -requirements when allocators are unequal. The specification of -basic_string::swap exception requirements is in no way intended to -address, prejudice, or otherwise impact that concern. -

- - - - - -

Proposed resolution:

-

-In 21.3.5.8 [lib.string::swap], add a throws clause: -

- -

-Throws: Shall not throw exceptions. -

-
-

404. May a replacement allocation function be declared inline?

Section: 17.4.3.4 [lib.replacement.functions], 18.4.1 [lib.new.delete]  Status: WP  Submitter: Matt Austern  Date: 24 Apr 2003

-

-The eight basic dynamic memory allocation functions (single-object -and array versions of ::operator new and ::operator delete, in the -ordinary and nothrow forms) are replaceable. A C++ program may -provide an alternative definition for any of them, which will be used -in preference to the implementation's definition. -

- -

-Three different parts of the standard mention requirements on -replacement functions: 17.4.3.4 [lib.replacement.functions], 18.4.1.1 [lib.new.delete.single] -and 18.4.1.2 [lib.new.delete.array], and 3.7.3 [basic.stc.dynamic]. -

- -

None of these three places say whether a replacement function may - be declared inline. 18.4.1.1 [lib.new.delete.single] paragraph 2 specifies a - signature for the replacement function, but that's not enough: - the inline specifier is not part of a function's signature. - One might also reason from 7.1.2 [dcl.fct.spec] paragraph 2, which - requires that "an inline function shall be defined in every - translation unit in which it is used," but this may not be quite - specific enough either. We should either explicitly allow or - explicitly forbid inline replacement memory allocation - functions.

-

Proposed resolution:

-

-Add a new sentence to the end of 17.4.3.4 [lib.replacement.functions] paragraph 3: -"The program's definitions shall not be specified as inline. -No diagnostic is required." -

- -

[Kona: added "no diagnostic is required"]

- -

Rationale:

-

-The fact that inline isn't mentioned appears to have been -nothing more than an oversight. Existing implementations do not -permit inline functions as replacement memory allocation functions. -Providing this functionality would be difficult in some cases, and is -believed to be of limited value. -

-
-

405. qsort and POD

Section: 25.4 [lib.alg.c.library]  Status: WP  Submitter: Ray Lischner  Date: 08 Apr 2003

-

-Section 25.4 [lib.alg.c.library] describes bsearch and qsort, from the C -standard library. Paragraph 4 does not list any restrictions on qsort, -but it should limit the base parameter to point to POD. Presumably, -qsort sorts the array by copying bytes, which requires POD. -

-

Proposed resolution:

-

-In 25.4 [lib.alg.c.library] paragraph 4, just after the declarations and -before the nonnormative note, add these words: "both of which have the -same behavior as the original declaration. The behavior is undefined -unless the objects in the array pointed to by base are of POD -type." -

- -

[Something along these lines is clearly necessary. Matt - provided wording.]

-
-

406. vector::insert(s) exception safety

Section: 23.2.4.3 [lib.vector.modifiers]  Status: DR  Submitter: Dave Abrahams  Date: 27 Apr 2003

-

-There is a possible defect in the standard: the standard text was -never intended to prevent arbitrary ForwardIterators, whose operations -may throw exceptions, from being passed, and it also wasn't intended -to require a temporary buffer in the case where ForwardIterators were -passed (and I think most implementations don't use one). As is, the -standard appears to impose requirements that aren't met by any -existing implementation. -

-

Proposed resolution:

-

Replace 23.2.4.3 [lib.vector.modifiers] paragraph 1 with:

-
- 1- Notes: Causes reallocation if the new size is greater than the - old capacity. If no reallocation happens, all the iterators and - references before the insertion point remain valid. If an exception - is thrown other than by the copy constructor or assignment operator - of T or by any InputIterator operation there are no effects. -
- -

[We probably need to say something similar for deque.]

- -
-

407. Can singular iterators be destroyed?

Section: 24.1 [lib.iterator.requirements]  Status: WP  Submitter: Nathan Myers  Date: 3 June 2003

-

-Clause 24.1 [lib.iterator.requirements], paragraph 5, says that the only expression -that is defined for a singular iterator is "an assignment of a -non-singular value to an iterator that holds a singular value". This -means that destroying a singular iterator (e.g. letting an automatic -variable go out of scope) is technically undefined behavior. This -seems overly strict, and probably unintentional. -

-

Proposed resolution:

-

-Change the sentence in question to "... the only exceptions are -destroying an iterator that holds a singular value, or the assignment -of a non-singular value to an iterator that holds a singular value." -

-
-

409. Closing an fstream should clear error state

Section: 27.8.1.7 [lib.ifstream.members], 27.8.1.10 [lib.ofstream.members]  Status: DR  Submitter: Nathan Myers  Date: 3 June 2003

-

-A strict reading of 27.8.1 [lib.fstreams] shows that opening or -closing a basic_[io]fstream does not affect the error bits. This -means, for example, that if you read through a file up to EOF, and -then close the stream and reopen it at the beginning of the file, -the EOF bit in the stream's error state is still set. This is -counterintuitive. -

-

-The LWG considered this issue once before, as issue 22, -and put in a footnote to clarify that the strict reading was indeed -correct. We did that because we believed the standard was -unambiguous and consistent, and that we should not make architectural -changes in a TC. Now that we're working on a new revision of the -language, those considerations no longer apply. -

-

Proposed resolution:

- -

Change 27.8.1.7 [lib.ifstream.members], para. 3 from:

- -
-Calls rdbuf()->open(s,mode|in). If that function returns a null -pointer, calls setstate(failbit) (which may throw ios_base::failure -[Footnote: (lib.iostate.flags)]. -
- -

to:

- -
Calls rdbuf()->open(s,mode|in). If that function returns -a null pointer, calls setstate(failbit) (which may throw -ios_base::failure [Footnote: (lib.iostate.flags)), else calls clear(). -
- -

Change 27.8.1.10 [lib.ofstream.members], para. 3 from:

- -
Calls rdbuf()->open(s,mode|out). If that function -returns a null pointer, calls setstate(failbit) (which may throw -ios_base::failure [Footnote: (lib.iostate.flags)). -
- -

to:

- -
Calls rdbuf()->open(s,mode|out). If that function -returns a null pointer, calls setstate(failbit) (which may throw -ios_base::failure [Footnote: (lib.iostate.flags)), else calls clear(). -
- -

Change 27.8.1.13 [lib.fstream.members], para. 3 from:

- -
Calls rdbuf()->open(s,mode), If that function returns a -null pointer, calls setstate(failbit), (which may throw -ios_base::failure). (lib.iostate.flags) ) -
- -

to:

- -
Calls rdbuf()->open(s,mode), If that function returns a -null pointer, calls setstate(failbit), (which may throw -ios_base::failure). (lib.iostate.flags) ), else calls clear(). -
- - - -

[Kona: the LWG agrees this is a good idea. Post-Kona: Bill -provided wording. He suggests having open, not close, clear the error -flags.]

- -

[Post-Sydney: Howard provided a new proposed resolution. The - old one didn't make sense because it proposed to fix this at the - level of basic_filebuf, which doesn't have access to the stream's - error state. Howard's proposed resolution fixes this at the level - of the three fstream class template instead.]

- -
-

410. Missing semantics for stack and queue comparison operators

Section: 23.2.3.1 [lib.queue], 23.2.3.3 [lib.stack]  Status: WP  Submitter: Hans Bos  Date: 7 Jun 2003

-

-Sections 23.2.3.1 [lib.queue] and 23.2.3.3 [lib.stack] list -comparison operators (==, !=, <, <=, >, =>) for queue and -stack. Only the semantics for queue::operator== (23.2.3.1 [lib.queue] par2) and queue::operator< (23.2.3.1 [lib.queue] -par3) are defined. -

-

Proposed resolution:

- -

Add the following new paragraphs after 23.2.3.1 [lib.queue] - paragraph 3:

- -
- -
  operator!=
-
-

Returns: x.c != y.c

- -
  operator>
-
-

Returns: x.c > y.c

- -
  operator<=
-
-

Returns: x.c <= y.c

- -
  operator>=
-
-

Returns: x.c >= y.c

- -
- -

Add the following paragraphs at the end of 23.2.3.3 [lib.stack]:

- -
- -
  operator==
-
-

Returns: x.c == y.c

- -
  operator<
-
-

Returns: x.c < y.c

- -
  operator!=
-
-

Returns: x.c != y.c

- -
  operator>
-
-

Returns: x.c > y.c

- -
  operator<=
-
-

Returns: x.c <= y.c

- -
  operator>=
-
-

Returns: x.c >= y.c

- -
- - -

[Kona: Matt provided wording.]

- -

Rationale:

-There isn't any real doubt about what these operators are -supposed to do, but we ought to spell it out. -
-

411. Wrong names of set member functions

Section: 25.3.5 [lib.alg.set.operations]  Status: WP  Submitter: Daniel Frey  Date: 9 Jul 2003

-

-25.3.5 [lib.alg.set.operations] paragraph 1 reads: -"The semantics of the set operations are generalized to multisets in a -standard way by defining union() to contain the maximum number of -occurrences of every element, intersection() to contain the minimum, and -so on." -

- -

-This is wrong. The name of the functions are set_union() and -set_intersection(), not union() and intersection(). -

-

Proposed resolution:

-

Change that sentence to use the correct names.

-
-

412. Typo in 27.4.4.3

Section: 27.4.4.3 [lib.iostate.flags]  Status: WP  Submitter: Martin Sebor  Date: 10 Jul 2003

-

-The Effects clause in 27.4.4.3 [lib.iostate.flags] paragraph 5 says that the -function only throws if the respective bits are already set prior to -the function call. That's obviously not the intent. The typo ought to -be corrected and the text reworded as: "If (state & -exceptions()) == 0, returns. ..." -

-

Proposed resolution:

-

-In 27.4.4.3 [lib.iostate.flags] paragraph 5, replace "If (rdstate() & -exceptions()) == 0" with "If ((state | (rdbuf() ? goodbit : badbit)) -& exceptions()) == 0". -

- -

[Kona: the original proposed resolution wasn't quite right. We - really do mean rdstate(); the ambiguity is that the wording in the - standard doesn't make it clear whether we mean rdstate() before - setting the new state, or rdsate() after setting it. We intend the - latter, of course. Post-Kona: Martin provided wording.]

- -
-

413. Proposed resolution to LDR#64 still wrong

Section: 27.6.1.2.3 [lib.istream::extractors]  Status: DR  Submitter: Bo Persson  Date: 13 Jul 2003

-

-The second sentence of the proposed resolution says: -

- -

-"If it inserted no characters because it caught an exception thrown -while extracting characters from sb and ..." -

- -

-However, we are not extracting from sb, but extracting from the -basic_istream (*this) and inserting into sb. I can't really tell if -"extracting" or "sb" is a typo. -

- -

[ -Sydney: Definitely a real issue. We are, indeed, extracting characters -from an istream and not from sb. The problem was there in the FDIS and -wasn't fixed by issue 64. Probably what was intended was -to have *this instead of sb. We're talking about the exception flag -state of a basic_istream object, and there's only one basic_istream -object in this discussion, so that would be a consistent -interpretation. (But we need to be careful: the exception policy of -this member function must be consistent with that of other -extractors.) PJP will provide wording. -]

- -

Proposed resolution:

-

Change the sentence from:

- -
-If it inserted no characters because it caught an exception thrown -while extracting characters from sb and failbit is on in exceptions(), -then the caught exception is rethrown. -
- -

to:

- -
-If it inserted no characters because it caught an exception thrown -while extracting characters from *this and failbit is on in exceptions(), -then the caught exception is rethrown. -
-
-

414. Which iterators are invalidated by v.erase()?

Section: 23.2.4.3 [lib.vector.modifiers]  Status: WP  Submitter: Matt Austern  Date: 19 Aug 2003

-

-Consider the following code fragment: -

-
-
int A[8] = { 1,3,5,7,9,8,4,2 };
-std::vector<int> v(A, A+8);
-
-std::vector<int>::iterator i1 = v.begin() + 3;
-std::vector<int>::iterator i2 = v.begin() + 4;
-v.erase(i1);
-
-
- -

-Which iterators are invalidated by v.erase(i1): i1, i2, -both, or neither? -

- -

-On all existing implementations that I know of, the status of i1 and -i2 is the same: both of them will be iterators that point to some -elements of the vector (albeit not the same elements they did -before). You won't get a crash if you use them. Depending on -exactly what you mean by "invalidate", you might say that neither one -has been invalidated because they still point to something, -or you might say that both have been invalidated because in both -cases the elements they point to have been changed out from under the -iterator. -

- -

-The standard doesn't say either of those things. It says that erase -invalidates all iterators and references "after the point of the -erase". This doesn't include i1, since it's at the point of the -erase instead of after it. I can't think of any sensible definition -of invalidation by which one can say that i2 is invalidated but i1 -isn't. -

- -

-(This issue is important if you try to reason about iterator validity -based only on the guarantees in the standard, rather than reasoning -from typical implementation techniques. Strict debugging modes, -which some programmers find useful, do not use typical implementation -techniques.) -

-

Proposed resolution:

-

-In 23.2.4.3 [lib.vector.modifiers] paragraph 3, change "Invalidates all the -iterators and references after the point of the erase" to -"Invalidates iterators and references at or after the point of the -erase". -

-

Rationale:

-

I believe this was essentially a typographical error, and that it - was taken for granted that erasing an element invalidates iterators - that point to it. The effects clause in question treats iterators - and references in parallel, and it would seem counterintuitive to - say that a reference to an erased value remains valid.

-
-

415. behavior of std::ws

Section: 27.6.1.4 [lib.istream.manip]  Status: WP  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-According to 27.6.1.4, the ws() manipulator is not required to construct -the sentry object. The manipulator is also not a member function so the -text in 27.6.1, p1 through 4 that describes the exception policy for -istream member functions does not apply. That seems inconsistent with -the rest of extractors and all the other input functions (i.e., ws will -not cause a tied stream to be flushed before extraction, it doesn't check -the stream's exceptions or catch exceptions thrown during input, and it -doesn't affect the stream's gcount). -

-

Proposed resolution:

-

-Add to 27.6.1.4 [lib.istream.manip], immediately before the first sentence -of paragraph 1, the following text: -

- -
- Behaves as an unformatted input function (as described in - 27.6.1.3, paragraph 1), except that it does not count the number - of characters extracted and does not affect the value returned by - subsequent calls to is.gcount(). After constructing a sentry - object... -
- -

[Post-Kona: Martin provided wording]

- -
-

420. is std::FILE a complete type?

Section: 27.8.1 [lib.fstreams]  Status: WP  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-7.19.1, p2, of C99 requires that the FILE type only be declared in -<stdio.h>. None of the (implementation-defined) members of the -struct is mentioned anywhere for obvious reasons. -

- -

-C++ says in 27.8.1, p2 that FILE is a type that's defined in <cstdio>. Is -it really the intent that FILE be a complete type or is an implementation -allowed to just declare it without providing a full definition? -

-

Proposed resolution:

-

In the first sentence of 27.8.1 [lib.fstreams] paragraph 2, change - "defined" to "declared".

-

Rationale:

-

We don't want to impose any restrictions beyond what the C standard - already says. We don't want to make anything implementation defined, - because that imposes new requirements in implementations.

-
-

425. return value of std::get_temporary_buffer

Section: 20.4.3 [lib.temporary.buffer]  Status: WP  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-The standard is not clear about the requirements on the value returned from -a call to get_temporary_buffer(0). In particular, it fails to specify whether -the call should return a distinct pointer each time it is called (like -operator new), or whether the value is unspecified (as if returned by -malloc). The standard also fails to mention what the required behavior -is when the argument is less than 0. -

-

Proposed resolution:

-

Change 20.4.3 [lib.temporary.buffer] paragraph 2 from "...or a pair of 0 -values if no storage can be obtained" to "...or a pair of 0 values if -no storage can be obtained or if n <= 0."

-

[Kona: Matt provided wording]

-
-

426. search_n(), fill_n(), and generate_n() with negative n

Section: 25.1.9 [lib.alg.search], 25.2.5 [lib.alg.fill], 25.2.6 [lib.alg.generate]  Status: WP  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-The complexity requirements for these function templates are incorrect -(or don't even make sense) for negative n:

- -

25.1.9, p7 (search_n): -
-Complexity: At most (last1 - first1) * count applications -of the corresponding predicate.

- -

25.2.5, p3 (fill_n): -
-Complexity: Exactly last - first (or n) assignments.

-
- -

25.2.6, p3 (generate_n): -
-Complexity: Exactly last - first (or n) assignments.

- -

-In addition, the Requirements or the Effects clauses for the latter two -templates don't say anything about the behavior when n is negative. -

-

Proposed resolution:

-

Change 25.1.9, p7 to

- -
-Complexity: At most (last1 - first1) * count applications -of the corresponding predicate if count is positive, -or 0 otherwise. -
- -

Change 25.2.5, p2 to

-
-Effects: Assigns value through all the iterators in the range [first, -last), or [first, first + n) if n is positive, none otherwise. -
- -

Change 25.2.5, p3 to:

-
-Complexity: Exactly last - first (or n if n is positive, -or 0 otherwise) assignments. -
- -

-Change 25.2.6, p1 -to (notice the correction for the misspelled "through"): -

-
-Effects: Invokes the function object genand assigns the return -value of gen through all the iterators in the range [first, last), -or [first, first + n) if n is positive, or [first, first) -otherwise. -
- -

Change 25.2.6, p3 to:

-
-Complexity: Exactly last - first (or n if n is positive, -or 0 otherwise) assignments. -
-

Rationale:

-

Informally, we want to say that whenever we see a negative number - we treat it the same as if it were zero. We believe the above - changes do that (although they may not be the minimal way of saying - so). The LWG considered and rejected the alternative of saying that - negative numbers are undefined behavior.

-
-

428. string::erase(iterator) validity

Section: 21.3.5.5 [lib.string::erase]  Status: WP  Submitter: Martin Sebor  Date: 18 Sep 2003

-

-23.1.1, p3 along with Table 67 specify as a prerequisite for a.erase(q) -that q must be a valid dereferenceable iterator into the sequence a. -

- -

-However, 21.3.5.5, p5 describing string::erase(p) only requires that -p be a valid iterator. -

- -

-This may be interepreted as a relaxation of the general requirement, -which is most likely not the intent. -

-

Proposed resolution:

-

Remove 21.3.5.5 [lib.string::erase] paragraph 5.

-

Rationale:

-

The LWG considered two options: changing the string requirements to - match the general container requirements, or just removing the - erroneous string requirements altogether. The LWG chose the latter - option, on the grounds that duplicating text always risks the - possibility that it might be duplicated incorrectly.

-
-

432. stringbuf::overflow() makes only one write position available

Section: 27.7.1.3 [lib.stringbuf.virtuals]  Status: WP  Submitter: Christian W Brock  Date: 24 Sep 2003

-

27.7.1.3 par 8 says:

-
-Notes: The function can make a write position available only if - ( mode & ios_base::out) != 0. To make a write position - available, the function reallocates (or initially allocates) an - array object with a sufficient number of elements to hold the - current array object (if any), plus one additional write position. - If ( mode & ios_base::in) != 0, the function alters the read end - pointer egptr() to point just past the new write position (as - does the write end pointer epptr()). -
- -

-The sentences "plus one additional write position." and especially - "(as does the write end pointer epptr())" COULD by interpreted - (and is interpreted by at least my library vendor) as: -

- -
- post-condition: epptr() == pptr()+1 -
- -

-This WOULD force sputc() to call the virtual overflow() each time. -

- -

The proposed change also affects Defect Report 169.

- -

Proposed resolution:

-

27.7.1.1/2 Change:

- -
-2- Notes: The function allocates no array object. -
- -

-to: -

- -
-2- Postcondition: str() == "". -
- -

-27.7.1.1/3 Change: -

- -
-

--3- Effects: Constructs an object of class basic_stringbuf, -initializing the base class with basic_streambuf() -(lib.streambuf.cons), and initializing mode with which . Then copies -the content of str into the basic_stringbuf underlying character -sequence and initializes the input and output sequences according to -which. If which & ios_base::out is true, initializes the output -sequence with the underlying sequence. If which & ios_base::in is -true, initializes the input sequence with the underlying sequence. -

-
- -

to:

- -
-

--3- Effects: Constructs an object of class basic_stringbuf, -initializing the base class with basic_streambuf() -(lib.streambuf.cons), and initializing mode with which. Then copies -the content of str into the basic_stringbuf underlying character -sequence. If which & ios_base::out is true, initializes the output -sequence such that pbase() points to the first underlying character, -epptr() points one past the last underlying character, and if (which & -ios_base::ate) is true, pptr() is set equal to -epptr() else pptr() is set equal to pbase(). If which & ios_base::in -is true, initializes the input sequence such that eback() and gptr() -point to the first underlying character and egptr() points one past -the last underlying character. -

-
- -

27.7.1.2/1 Change:

- -
-

--1- Returns: A basic_string object whose content is equal to the -basic_stringbuf underlying character sequence. 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. In -case of an empty underlying character sequence, the function returns -basic_string<charT,traits,Allocator>(). -

-
- -

to:

- -
-

--1- Returns: A basic_string object whose content is equal to the -basic_stringbuf underlying character sequence. If the basic_stringbuf -was created only in input mode, the resultant basic_string contains -the character sequence in the range [eback(), egptr()). If the -basic_stringbuf was created with (which & ios_base::out) being true -then the resultant basic_string contains the character sequence in the -range [pbase(), high_mark) where high_mark represents the position one -past the highest initialized character in the buffer. Characters can -be initialized either through writing to the stream, or by -constructing the basic_stringbuf with a basic_string, or by calling -the str(basic_string) member function. In the case of calling the -str(basic_string) member function, all characters initialized prior to -the call are now considered uninitialized (except for those -characters re-initialized by the new basic_string). Otherwise the -basic_stringbuf has been created in neither input nor output mode and -a zero length basic_string is returned. -

-
- -

-27.7.1.2/2 Change: -

- -
-

--2- Effects: If the basic_stringbuf's underlying character sequence is -not empty, deallocates it. Then copies the content of s into the -basic_stringbuf underlying character sequence and initializes the -input and output sequences according to the mode stored when creating -the basic_stringbuf object. If (mode&ios_base::out) is true, then -initializes the output sequence with the underlying sequence. If -(mode&ios_base::in) is true, then initializes the input sequence with -the underlying sequence. -

-
- -

to:

- -
-

--2- Effects: Copies the content of s into the basic_stringbuf -underlying character sequence. If mode & ios_base::out is true, -initializes the output sequence such that pbase() points to the first -underlying character, epptr() points one past the last underlying -character, and if (mode & ios_base::ate) is true, -pptr() is set equal to epptr() else pptr() is set equal to pbase(). If -mode & ios_base::in is true, initializes the input sequence such that -eback() and gptr() point to the first underlying character and egptr() -points one past the last underlying character. -

-
- -

Remove 27.2.1.2/3. (Same rationale as issue 238: incorrect and unnecessary.)

- -

27.7.1.3/1 Change:

- -
-

-1- Returns: If the input sequence has a read position available, -returns traits::to_int_type(*gptr()). Otherwise, returns -traits::eof(). -

-
- -

to:

- -
-

-1- Returns: If the input sequence has a read position available, -returns traits::to_int_type(*gptr()). Otherwise, returns -traits::eof(). Any character in the underlying buffer which has been -initialized is considered to be part of the input sequence. -

-
- -

27.7.1.3/9 Change:

- -
-

--9- Notes: The function can make a write position available only if ( -mode & ios_base::out) != 0. To make a write position available, the -function reallocates (or initially allocates) an array object with a -sufficient number of elements to hold the current array object (if -any), plus one additional write position. If ( mode & ios_base::in) != -0, the function alters the read end pointer egptr() to point just past -the new write position (as does the write end pointer epptr()). -

-
- -

to:

- -
-

--9- The function can make a write position available only if ( mode & -ios_base::out) != 0. To make a write position available, the function -reallocates (or initially allocates) an array object with a sufficient -number of elements to hold the current array object (if any), plus one -additional write position. If ( mode & ios_base::in) != 0, the -function alters the read end pointer egptr() to point just past the -new write position. -

-
- -

27.7.1.3/12 Change:

- -
-

--12- _ If (newoff + off) < 0, or (xend - xbeg) < (newoff + off), the -positioning operation fails. Otherwise, the function assigns xbeg + -newoff + off to the next pointer xnext . -

-
- -

to:

- -
-

--12- _ If (newoff + off) < 0, or if (newoff + off) refers to an -uninitialized character (as defined in 27.7.1.2 [lib.stringbuf.members] -paragraph 1), the positioning operation fails. Otherwise, the function -assigns xbeg + newoff + off to the next pointer xnext . -

-
- -

[post-Kona: Howard provided wording. At Kona the LWG agreed that - something along these lines was a good idea, but the original - proposed resolution didn't say enough about the effect of various - member functions on the underlying character sequences.]

- -

Rationale:

-

The current basic_stringbuf description is over-constrained in such -a way as to prohibit vendors from making this the high-performance -in-memory stream it was meant to be. The fundamental problem is that -the pointers: eback(), gptr(), egptr(), pbase(), pptr(), epptr() are -observable from a derived client, and the current description -restricts the range [pbase(), epptr()) from being grown geometrically. -This change allows, but does not require, geometric growth of this -range.

- -

Backwards compatibility issues: These changes will break code that -derives from basic_stringbuf, observes epptr(), and depends upon -[pbase(), epptr()) growing by one character on each call to overflow() -(i.e. test suites). Otherwise there are no backwards compatibility -issues.

- -

27.7.1.1/2: The non-normative note is non-binding, and if it were -binding, would be over specification. The recommended change focuses -on the important observable fact.

- -

27.7.1.1/3: This change does two things: 1. It describes exactly -what must happen in terms of the sequences. The terms "input -sequence" and "output sequence" are not well defined. 2. It -introduces a common extension: open with app or ate mode. I concur -with issue 238 that paragraph 4 is both wrong and unnecessary.

- -

27.7.1.2/1: This change is the crux of the efficiency issue. The -resultant basic_string is not dependent upon epptr(), and thus -implementors are free to grow the underlying buffer geometrically -during overflow() *and* place epptr() at the end of that buffer.

- -

27.7.1.2/2: Made consistent with the proposed 27.7.1.1/3.

- -

27.7.1.3/1: Clarifies that characters written to the stream beyond -the initially specified string are available for reading in an i/o -basic_streambuf.

- -

27.7.1.3/9: Made normative by removing "Notes:", and removed the -trailing parenthetical comment concerning epptr().

- -

27.7.1.3/12: Restricting the positioning to [xbeg, xend) is no -longer allowable since [pbase(), epptr()) may now contain -uninitialized characters. Positioning is only allowable over the -initialized range.

-
-

434. bitset::to_string() hard to use

Section: 23.3.5.2 [lib.bitset.members]  Status: DR  Submitter: Martin Sebor  Date: 15 Oct 2003

-

-It has been pointed out a number of times that the bitset to_string() member -function template is tedious to use since callers must explicitly specify the -entire template argument list (3 arguments). At least two implementations -provide a number of overloads of this template to make it easier to use. -

-

Proposed resolution:

-

In order to allow callers to specify no template arguments at all, just the -first one (charT), or the first 2 (charT and traits), in addition to all -three template arguments, add the following three overloads to both the -interface (declarations only) of the class template bitset as well as to -section 23.3.5.2, immediately after p34, the Returns clause of the existing -to_string() member function template:

- -
    template <class charT, class traits>
-    basic_string<charT, traits, allocator<charT> >
-    to_string () const;
-
-    -34.1- Returns: to_string<charT, traits, allocator<charT> >().
-
-    template <class charT>
-    basic_string<charT, char_traits<charT>, allocator<charT> >
-    to_string () const;
-
-    -34.2- Returns: to_string<charT, char_traits<charT>, allocator<charT> >().
-
-    basic_string<char, char_traits<char>, allocator<char> >
-    to_string () const;
-
-    -34.3- Returns: to_string<char, char_traits<char>, allocator<char> >().
-
- -

[Kona: the LWG agrees that this is an improvement over the - status quo. Dietmar thought about an alternative using a proxy - object but now believes that the proposed resolution above is the - right choice. -]

- -
-

435. bug in DR 25

Section: 21.3.7.9 [lib.string.io]  Status: WP  Submitter: Martin Sebor  Date: 15 Oct 2003

- -

-It has been pointed out that the proposed resolution in DR 25 may not be -quite up to snuff:
-http://gcc.gnu.org/ml/libstdc++/2003-09/msg00147.html -http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#25
-

- -

-It looks like Petur is right. The complete corrected text is copied below. -I think we may have have been confused by the reference to 22.2.2.2.2 and -the subsequent description of `n' which actually talks about the second -argument to sputn(), not about the number of fill characters to pad with. -

- -

-So the question is: was the original text correct? If the intent was to -follow classic iostreams then it most likely wasn't, since setting width() -to less than the length of the string doesn't truncate it on output. This -is also the behavior of most implementations (except for SGI's standard -iostreams where the operator does truncate). -

-

Proposed resolution:

-

Change the text in 21.3.7.9, p4 from

-
- If bool(k) is true, inserts characters as if by calling - os.rdbuf()->sputn(str.data(), n), padding as described in stage 3 - of lib.facet.num.put.virtuals, where n is the larger of os.width() - and str.size(); -
-

to

-
- If bool(k) is true, determines padding as described in - lib.facet.num.put.virtuals, and then inserts the resulting - sequence of characters seq as if by calling - os.rdbuf()->sputn(seq, n), where n is the larger of - os.width() and str.size(); -
- -

[Kona: it appears that neither the original wording, DR25, nor the - proposed resolution, is quite what we want. We want to say that - the string will be output, padded to os.width() if necessary. We - don't want to duplicate the padding rules in clause 22, because - they're complicated, but we need to be careful because they weren't - quite written with quite this case in mind. We need to say what - the character sequence is, and then defer to clause 22. Post-Kona: - Benjamin provided wording.]

- -
-

436. are cv-qualified facet types valid facets?

Section: 22.1.1.1.2 [lib.locale.facet]  Status: WP  Submitter: Martin Sebor  Date: 15 Oct 2003

-

-Is "const std::ctype<char>" a valid template argument to has_facet, use_facet, -and the locale template ctor? And if so, does it designate the same Facet as -the non-const "std::ctype<char>?" What about "volatile std::ctype<char>?" -Different implementations behave differently: some fail to compile, others -accept such types but behave inconsistently. -

-

Proposed resolution:

-

Change 22.1.1.1.2, p1 to read:

- -

Template parameters in this clause which are required to be facets -are those named Facet in declarations. A program that passes a type -that is not a facet, or a type that refers to volatile-qualified -facet, as an (explicit or deduced) template parameter to a locale -function expecting a facet, is ill-formed. A const-qualified facet is -a valid template argument to any locale function that expects a Facet -template parameter.

- -

[Kona: changed the last sentence from a footnote to normative -text.]

- -
-

438. Ambiguity in the "do the right thing" clause

Section: 23.1.1 [lib.sequence.reqmts]  Status: DR  Submitter: Howard Hinnant  Date: 20 Oct 2003

- -

Section 23.1.1 [lib.sequence.reqmts], paragraphs 9-11, fixed up the problem -noticed with statements like:

-
vector<int> v(10, 1);
-
- -

The intent of the above statement was to construct with:

-
vector(size_type, const value_type&);
-
- -

but early implementations failed to compile as they bound to:

-
template <class InputIterator>
-vector(InputIterator f, InputIterator l);
-
-

instead.

- -

Paragraphs 9-11 say that if InputIterator is an integral type, then the -member template constructor will have the same effect as:

-
vector<static_cast<size_type>(f), static_cast<value_type>(l));
-
-

(and similarly for the other member template functions of sequences).

- -

There is also a note that describes one implementation technique:

-
- One way that sequence implementors can satisfy this requirement is to - specialize the member template for every integral type. -
- -

This might look something like:

-
-
template <class T>
-struct vector
-{
-     typedef unsigned size_type;
-
-     explicit vector(size_type) {}
-     vector(size_type, const T&) {}
-
-     template <class I>
-     vector(I, I);
-
-     // ...
-};
-
-template <class T>
-template <class I>
-vector<T>::vector(I, I) { ... }
-
-template <>
-template <>
-vector<int>::vector(int, int) { ... }
-
-template <>
-template <>
-vector<int>::vector(unsigned, unsigned) { ... }
-
-//  ...
-
-
- -

Label this solution 'A'.

- -

The standard also says:

-
- Less cumbersome implementation techniques also exist. -
-

-A popular technique is to not specialize as above, but instead catch -every call with the member template, detect the type of InputIterator, -and then redirect to the correct logic. Something like: -

-
-
template <class T>
-template <class I>
-vector<T>::vector(I f, I l)
-{
-     choose_init(f, l, int2type<is_integral<I>::value>());
-}
-
-template <class T>
-template <class I>
-vector<T>::choose_init(I f, I l, int2type<false>)
-{
-    // construct with iterators
-}
-
-template <class T>
-template <class I>
-vector<T>::choose_init(I f, I l, int2type<true>)
-{
-    size_type sz = static_cast<size_type>(f);
-    value_type v = static_cast<value_type>(l);
-    // construct with sz,v
-}
-
-
- -

Label this solution 'B'.

- -

Both of these solutions solve the case the standard specifically -mentions:

-
vector<int> v(10, 1);  // ok, vector size 10, initialized to 1
-
- -

-However, (and here is the problem), the two solutions have different -behavior in some cases where the value_type of the sequence is not an -integral type. For example consider: -

-
     pair<char, char>                     p('a', 'b');
-     vector<vector<pair<char, char> > >   d('a', 'b');
-
-

-The second line of this snippet is likely an error. Solution A catches -the error and refuses to compile. The reason is that there is no -specialization of the member template constructor that looks like: -

-
template <>
-template <>
-vector<vector<pair<char, char> > >::vector(char, char) { ... }
-
- -

-So the expression binds to the unspecialized member template -constructor, and then fails (compile time) because char is not an -InputIterator. -

- -

-Solution B compiles the above example though. 'a' is casted to an -unsigned integral type and used to size the outer vector. 'b' is -static casted to the inner vector using it's explicit constructor: -

- -
explicit vector(size_type n);
-
- -

-and so you end up with a static_cast<size_type>('a') by -static_cast<size_type>('b') matrix. -

- -

-It is certainly possible that this is what the coder intended. But the -explicit qualifier on the inner vector has been thwarted at any rate. -

- -

-The standard is not clear whether the expression: -

- -
     vector<vector<pair<char, char> > >   d('a', 'b');
-
- -

-(and similar expressions) are: -

- -
    -
  1. undefined behavior.
  2. -
  3. illegal and must be rejected.
  4. -
  5. legal and must be accepted.
  6. -
- -

My preference is listed in the order presented.

- -

There are still other techniques for implementing the requirements of -paragraphs 9-11, namely the "restricted template technique" (e.g. -enable_if). This technique is the most compact and easy way of coding -the requirements, and has the behavior of #2 (rejects the above -expression). -

- -

-Choosing 1 would allow all implementation techniques I'm aware of. -Choosing 2 would allow only solution 'A' and the enable_if technique. -Choosing 3 would allow only solution 'B'. -

- -

-Possible wording for a future standard if we wanted to actively reject -the expression above would be to change "static_cast" in paragraphs -9-11 to "implicit_cast" where that is defined by: -

- -
-
template <class T, class U>
-inline
-T implicit_cast(const U& u)
-{
-     return u;
-}
-
-
- -

Proposed resolution:

- -Replace 23.1.1 [lib.sequence.reqmts] paragraphs 9 - 11 with: - -

For every sequence defined in this clause and in clause lib.strings:

- -
    -
  • -

    If the constructor

    -
           template <class InputIterator>
    -       X(InputIterator f, InputIterator l,
    -         const allocator_type& a = allocator_type())
    -       
    -

    is called with a type InputIterator that does not qualify as - an input iterator, then the constructor will behave as if the - overloaded constructor:

    -
           X(size_type, const value_type& = value_type(),
    -         const allocator_type& = allocator_type())
    -       
    -

    were called instead, with the arguments static_cast<size_type>(f), l and a, respectively.

    -
  • - -
  • -

    If the member functions of the forms:

    -
           template <class InputIterator>          //  such as  insert()
    -       rt fx1(iterator p, InputIterator f, InputIterator l);
    -
    -       template <class InputIterator>          //  such as  append(), assign()
    -       rt fx2(InputIterator f, InputIterator l);
    -
    -       template <class InputIterator>          //  such as  replace()
    -       rt fx3(iterator i1, iterator i2, InputIterator f, InputIterator l);
    -       
    -

    are called with a type InputIterator that does not qualify as - an input iterator, then these functions will behave as if the - overloaded member functions:

    -
           rt fx1(iterator, size_type, const value_type&);
    -
    -       rt fx2(size_type, const value_type&);
    -
    -       rt fx3(iterator, iterator, size_type, const value_type&);
    -       
    -

    were called instead, with the same arguments.

    -
  • -
- -

In the previous paragraph the alternative binding will fail if f -is not implicitly convertible to X::size_type or if l is not implicitly -convertible to X::value_type.

- -

-The extent to which an implementation determines that a type cannot be -an input iterator is unspecified, except that as a minimum integral -types shall not qualify as input iterators. -

- - - -

[ -Kona: agreed that the current standard requires v('a', 'b') -to be accepted, and also agreed that this is surprising behavior. The -LWG considered several options, including something like -implicit_cast, which doesn't appear to be quite what we want. We -considered Howards three options: allow acceptance or rejection, -require rejection as a compile time error, and require acceptance. By -straw poll (1-6-1), we chose to require a compile time error. -Post-Kona: Howard provided wording. -]

- -

[ -Sydney: The LWG agreed with this general direction, but there was some -discomfort with the wording in the original proposed resolution. -Howard submitted new wording, and we will review this again in -Redmond. -]

- -

[Redmond: one very small change in wording: the first argument - is cast to size_t. This fixes the problem of something like - vector<vector<int> >(5, 5), where int is not - implicitly convertible to the value type.]

- -

Rationale:

-

The proposed resolution fixes:

- -
  vector<int> v(10, 1);
-
- -

-since as integral types 10 and 1 must be disqualified as input -iterators and therefore the (size,value) constructor is called (as -if).

- -

The proposed resolution breaks:

- -
  vector<vector<T> > v(10, 1);
-
- -

-because the integral type 1 is not *implicitly* convertible to -vector<T>. The wording above requires a diagnostic.

- -

-The proposed resolution leaves the behavior of the following code -unspecified. -

- -
  struct A
-  {
-    operator int () const {return 10;}
-  };
-
-  struct B
-  {
-    B(A) {}
-  };
-
-  vector<B> v(A(), A());
-
- -

-The implementation may or may not detect that A is not an input -iterator and employee the (size,value) constructor. Note though that -in the above example if the B(A) constructor is qualified explicit, -then the implementation must reject the constructor as A is no longer -implicitly convertible to B. -

-
-

441. Is fpos::state const?

Section: 27.4.3 [lib.fpos]  Status: WP  Submitter: Vincent Leloup  Date: 17 Nov 2003

-

-In section 27.4.3.1 [lib.fpos.members] fpos<stateT>::state() is declared -non const, but in section 27.4.3 [lib.fpos] it is declared const. -

-

Proposed resolution:

-

-In section 27.4.3.1 [lib.fpos.members], change the declaration of -fpos<stateT>::state() to const. -

-
-

442. sentry::operator bool() inconsistent signature

Section: 27.6.2.3 [lib.ostream::sentry]  Status: WP  Submitter: Vincent Leloup  Date: 18 Nov 2003

-

-In section 27.6.2.3 [lib.ostream::sentry] paragraph 4, in description part -basic_ostream<charT, traits>::sentry::operator bool() is declared -as non const, but in section 27.6.2.3, in synopsis it is declared -const. -

-

Proposed resolution:

-

-In section 27.6.2.3 [lib.ostream::sentry] paragraph 4, change the declaration -of sentry::operator bool() to const. -

-
-

443. filebuf::close() inconsistent use of EOF

Section: 27.8.1.3 [lib.filebuf.members]  Status: WP  Submitter: Vincent Leloup  Date: 20 Nov 2003

-

-In section 27.8.1.3 [lib.filebuf.members] par6, in effects description of -basic_filebuf<charT, traits>::close(), overflow(EOF) is used twice; -should be overflow(traits::eof()). -

-

Proposed resolution:

-

-Change overflow(EOF) to overflow(traits::eof()). -

-
-

444. Bad use of casts in fstream

Section: 27.8.1 [lib.fstreams]  Status: DR  Submitter: Vincent Leloup  Date: 20 Nov 2003

-

-27.8.1.7 [lib.ifstream.members] p1, 27.8.1.10 [lib.ofstream.members] p1, 27.8.1.13 [lib.fstream.members] p1 seems have same problem as exposed in LWG issue -252. -

-

Proposed resolution:

- -

[Sydney: Genuine defect. 27.8.1.13 needs a cast to cast away - constness. The other two places are stylistic: we could change the - C-style casts to const_cast. Post-Sydney: Howard provided wording. -]

- -

Change 27.8.1.7/1 from:

-
- Returns: (basic_filebuf<charT,traits>*)&sb. -
- -

to:

-
- Returns: const_cast<basic_filebuf<charT,traits>*>(&sb). -
- -

Change 27.8.1.10/1 from:

-
- Returns: (basic_filebuf<charT,traits>*)&sb. -
- -

to:

-
- Returns: const_cast<basic_filebuf<charT,traits>*>(&sb). -
- -

Change 27.8.1.13/1 from:

-
- Returns: &sb. -
- -

to:

-
- Returns: const_cast<basic_filebuf<charT,traits>*>(&sb). -
- - - -
-

445. iterator_traits::reference unspecified for some iterator categories

Section: 24.3.1 [lib.iterator.traits]  Status: DR  Submitter: Dave Abrahams  Date: 9 Dec 2003

-

-The standard places no restrictions at all on the reference type -of input, output, or forward iterators (for forward iterators it -only specifies that *x must be value_type& and doesn't mention -the reference type). Bidirectional iterators' reference type is -restricted only by implication, since the base iterator's -reference type is used as the return type of reverse_iterator's -operator*, which must be T& in order to be a conforming forward -iterator. -

- -

-Here's what I think we ought to be able to expect from an input -or forward iterator's reference type R, where a is an iterator -and V is its value_type -

- -
    -
  • - *a is convertible to R -
  • - -
  • - R is convertible to V -
  • - -
  • - static_cast<V>(static_cast<R>(*a)) is equivalent to - static_cast<V>(*a) -
  • -
- -

A mutable forward iterator ought to satisfy, for x of type V:

-
  • - { R r = *a; r = x; } is equivalent to *a = x; -
  • - -

    -I think these requirements capture existing container iterators -(including vector<bool>'s), but render istream_iterator invalid; -its reference type would have to be changed to a constant -reference. -

    - - -

    -(Jeremy Siek) During the discussion in Sydney, it was felt that a -simpler long term solution for this was needed. The solution proposed -was to require reference to be the same type as *a -and pointer to be the same type as a->. Most -iterators in the Standard Library already meet this requirement. Some -iterators are output iterators, and do not need to meet the -requirement, and others are only specified through the general -iterator requirements (which will change with this resolution). The -sole case where there is an explicit definition of the reference type -that will need to change is istreambuf_iterator which returns -charT from operator* but has a reference type of -charT&. We propose changing the reference type of -istreambuf_iterator to charT. -

    - -

    The other option for resolving the issue with pointer, - mentioned in the note below, is to remove pointer - altogether. I prefer placing requirements on pointer to - removing it for two reasons. First, pointer will become - useful for implementing iterator adaptors and in particular, - reverse_iterator will become more well defined. Second, - removing pointer is a rather drastic and publicly-visible - action to take.

    - -

    The proposed resolution technically enlarges the requirements for -iterators, which means there are existing iterators (such as -istreambuf_iterator, and potentially some programmer-defined -iterators) that will no longer meet the requirements. Will this break -existing code? The scenario in which it would is if an algorithm -implementation (say in the Standard Library) is changed to rely on -iterator_traits::reference, and then is used with one of the -iterators that do not have an appropriately defined -iterator_traits::reference. -

    - - -

    The proposed resolution makes one other subtle change. Previously, -it was required that output iterators have a difference_type -and value_type of void, which means that a forward -iterator could not be an output iterator. This is clearly a mistake, -so I've changed the wording to say that those types may be -void. -

    - -

    Proposed resolution:

    - -

    In 24.3.1 [lib.iterator.traits], after:

    - -
    -be defined as the iterator's difference type, value type and iterator -category, respectively. -
    - -

    add

    - -
    -In addition, the types -
    iterator_traits<Iterator>::reference
    -iterator_traits<Iterator>::pointer
    -
    -must be defined as the iterator's reference and pointer types, that -is, the same type as the type of *a and a->, -respectively. -
    - -

    In 24.3.1 [lib.iterator.traits], change:

    - -
    -In the case of an output iterator, the types -
    iterator_traits<Iterator>::difference_type
    -iterator_traits<Iterator>::value_type
    -
    -are both defined as void. -
    - -

    to:

    -
    -In the case of an output iterator, the types -
    iterator_traits<Iterator>::difference_type
    -iterator_traits<Iterator>::value_type
    -iterator_traits<Iterator>::reference
    -iterator_traits<Iterator>::pointer
    -
    -may be defined as void. -
    - -

    In 24.5.3 [lib.istreambuf.iterator], change:

    -
    -
    typename traits::off_type, charT*, charT&>
    -
    -
    -

    to:

    -
    -
    typename traits::off_type, charT*, charT>
    -
    -
    - -

    [ -Redmond: there was concern in Sydney that this might not be the only place -where things were underspecified and needed to be changed. Jeremy -reviewed iterators in the standard and confirmed that nothing else -needed to be changed. -]

    - -
    -

    448. Random Access Iterators over abstract classes

    Section: 24.1.5 [lib.random.access.iterators]  Status: WP  Submitter: Dave Abrahams  Date: 7 Jan 2004

    -

    -Table 76, the random access iterator requirement table, says that the -return type of a[n] must be "convertible to T". When an iterator's -value_type T is an abstract class, nothing is convertible to T. -Surely this isn't an intended restriction? -

    -

    Proposed resolution:

    -

    -Change the return type to "convertible to T const&". -

    -
    -

    449. Library Issue 306 Goes Too Far

    Section: 18.1 [lib.support.types]  Status: WP  Submitter: Pete Becker  Date: 15 Jan 2004

    -

    Original text:

    -
    -The macro offsetof accepts a restricted set of type arguments in this -International Standard. type shall be a POD structure or a POD union -(clause 9). The result of applying the offsetof macro to a field that -is a static data member or a function member is undefined." -
    - -

    Revised text:

    -
    -"If type is not a POD structure or a POD union the results are undefined." -
    - -

    -Looks to me like the revised text should have replaced only the second -sentence. It doesn't make sense standing alone. -

    - -

    Proposed resolution:

    -

    Change 18.1, paragraph 5, to:

    - -
    -The macro offsetof accepts a restricted set of type arguments in this -International Standard. If type is not a POD structure or a POD union -the results are undefined. The result of applying the offsetof macro -to a field that is a static data member or a function member is -undefined." -
    -
    -

    453. basic_stringbuf::seekoff need not always fail for an empty stream

    Section: 27.7.1.3 [lib.stringbuf.virtuals]  Status: DR  Submitter: Bill Plauger  Date: 30 Jan 2004

    -
      pos_type basic_stringbuf::seekoff(off_type, ios_base::seekdir,
    -                                    ios_base::openmode);
    -
    -

    -is obliged to fail if nothing has been inserted into the stream. This -is unnecessary and undesirable. It should be permissible to seek to -an effective offset of zero.

    - -

    [ - Sydney: Agreed that this is an annoying problem: seeking to zero should be - legal. Bill will provide wording. -]

    - -

    Proposed resolution:

    -

    Change the sentence from:

    -
    -For a sequence to be positioned, if its next pointer (either -gptr() or pptr()) is a null pointer, the positioning operation -fails. -
    - -

    to:

    - -
    -For a sequence to be positioned, if its next pointer (either -gptr() or pptr()) is a null pointer and the new offset newoff -is nonzero, the positioning operation fails. -
    -
    -

    455. cerr::tie() and wcerr::tie() are overspecified

    Section: 27.3 [lib.iostream.objects]  Status: DR  Submitter: Bill Plauger  Date: 30 Jan 2004

    -

    -Both cerr::tie() and wcerr::tie() are obliged to be null at program -startup. This is overspecification and overkill. It is both traditional -and useful to tie cerr to cout, to ensure that standard output is drained -whenever an error message is written. This behavior should at least be -permitted if not required. Same for wcerr::tie(). -

    -

    Proposed resolution:

    - -

    Add to the description of cerr:

    -
    -After the object cerr is initialized, cerr.tie() returns &cout. -Its state is otherwise the same as required for basic_ios<char>::init -(lib.basic.ios.cons). -
    - -

    Add to the description of wcerr:

    - -
    -After the object wcerr is initialized, wcerr.tie() returns &wcout. -Its state is otherwise the same as required for basic_ios<wchar_t>::init -(lib.basic.ios.cons). -
    - -

    [Sydney: straw poll (3-1): we should require, not just - permit, cout and cerr to be tied on startup. Pre-Redmond: Bill will - provide wording.]

    -
    -

    457. bitset constructor: incorrect number of initialized bits

    Section: 23.3.5.1 [lib.bitset.cons]  Status: DR  Submitter: Dag Henriksson  Date: 30 Jan 2004

    -

    -The constructor from unsigned long says it initializes "the first M -bit positions to the corresponding bit values in val. M is the smaller -of N and the value CHAR_BIT * sizeof(unsigned long)." -

    - -

    -Object-representation vs. value-representation strikes again. CHAR_BIT * -sizeof (unsigned long) does not give us the number of bits an unsigned long -uses to hold the value. Thus, the first M bit position above is not -guaranteed to have any corresponding bit values in val. -

    -

    Proposed resolution:

    -

    In 23.3.5.1 [lib.bitset.cons] paragraph 2, change "M is the smaller of - N and the value CHAR_BIT * sizeof (unsigned long). (249)" to - "M is the smaller of N and the number of bits in - the value representation (section 3.9 [basic.types]) of unsigned - long." -

    -
    -

    460. Default modes missing from basic_fstream member specifications

    Section: 27.8.1 [lib.fstreams]  Status: DR  Submitter: Ben Hutchings  Date: 1 Apr 2004

    -

    -The second parameters of the non-default constructor and of the open -member function for basic_fstream, named "mode", are optional -according to the class declaration in 27.8.1.11 [lib.fstream]. The -specifications of these members in 27.8.1.12 [lib.fstream.cons] and -27.8.1.13 lib.fstream.members] disagree with this, though the -constructor declaration has the "explicit" function-specifier implying -that it is intended to be callable with one argument. -

    -

    Proposed resolution:

    -

    In 27.8.1.12 [lib.fstream.cons], change

    -
      explicit basic_fstream(const char* s, ios_base::openmode mode); 
    -
    -

    to

    -
      explicit basic_fstream(const char* s,
    -                         ios_base::openmode mode = ios_base::in|ios_base::out);
    -
    -

    In 27.8.1.13 [lib.fstream.members], change

    -
      void open(const char*s, ios_base::openmode mode); 
    -
    -

    to

    - void open(const char*s, - ios_base::openmode mode = ios_base::in|ios_base::out); -
    -

    461. time_get hard or impossible to implement

    Section: 22.2.5.1.2 [lib.locale.time.get.virtuals]  Status: WP  Submitter: Bill Plauger  Date: 23 Mar 2004

    -

    -Template time_get currently contains difficult, if not impossible, -requirements for do_date_order, do_get_time, and do_get_date. All require -the implementation to scan a field generated by the %x or %X conversion -specifier in strftime. Yes, do_date_order can always return no_order, but -that doesn't help the other functions. The problem is that %x can be -nearly anything, and it can vary widely with locales. It's horribly -onerous to have to parse "third sunday after Michaelmas in the year of -our Lord two thousand and three," but that's what we currently ask of -do_get_date. More practically, it leads some people to think that if -%x produces 10.2.04, we should know to look for dots as separators. Still -not easy. -

    - -

    -Note that this is the opposite effect from the intent stated in the -footnote earlier in this subclause: -

    - -
    -"In other words, user confirmation is required for reliable parsing of -user-entered dates and times, but machine-generated formats can be -parsed reliably. This allows parsers to be aggressive about interpreting -user variations on standard formats." -
    - -

    -We should give both implementers and users an easier and more reliable -alternative: provide a (short) list of alternative delimiters and say -what the default date order is for no_order. For backward compatibility, -and maximum latitude, we can permit an implementation to parse whatever -%x or %X generates, but we shouldn't require it. -

    -

    Proposed resolution:

    - -

    In the description:

    -
    iter_type do_get_time(iter_type s, iter_type end, ios_base& str,
    -        ios_base::iostate& err, tm* t) const;
    -
    - -

    -2 Effects: Reads characters starting at suntil it has extracted those -struct tm members, and remaining format characters, used by -time_put<>::put to produce the format specified by 'X', or until it -encounters an error or end of sequence. -

    - -

    change: 'X'

    - -

    to: "%H:%M:%S"

    - - -

    Change

    -
    iter_type do_get_date(iter_type s, iter_type end, ios_base& str,
    -        ios_base::iostate& err, tm* t) const;
    -
    -4 Effects: Reads characters starting at s until it has extracted those
    -struct tm members, and remaining format characters, used by
    -time_put<>::put to produce the format specified by 'x', or until it
    -encounters an error.
    -
    - -

    to

    -iter_type do_get_date(iter_type s, iter_type end, ios_base& str, - ios_base::iostate& err, tm* t) const; - -4 Effects: Reads characters starting at s until it has extracted those -struct tm members, and remaining format characters, used by -time_put<>::put to produce one of the following formats, or until it -encounters an error. The format depends on the value returned by -date_order() as follows: - - date_order() format - - no_order "%m/%d/%y" - dmy "%d/%m/%y" - mdy "%m/%d/%y" - ymd "%y/%m/%d" - ydm "%y/%d/%m" - -An implementation may also accept additional implementation-defined formats. -
    
    -
    -

    [Redmond: agreed that this is a real problem. The solution is - probably to match C99's parsing rules. Bill provided wording. -]

    - -
    -

    464. Suggestion for new member functions in standard containers

    Section: 23.2.4 [lib.vector], 23.3.1 [lib.map]  Status: WP  Submitter: Thorsten Ottosen  Date: 12 May 2004

    - -

    To add slightly more convenience to vector<T> and map<Key,T> we should consider to add

    -
      -
    1. add vector<T>::data() member (const and non-const version) -semantics: if( empty() ) return 0; else return buffer_;
    2. -
    3. add map<Key,T>::at( const Key& k ) member (const and non-const version) -semantics: iterator i = find( k ); if( i != end() ) return *i; else throw range_error();
    4. -
    - -

    Rationale:

    - -
      -
    • To obtain a pointer to the vector's buffer, one must use either -operator[]() (which can give undefined behavior for empty vectors) or -at() (which will then throw if the vector is empty).
    • -
    • tr1::array<T,sz> already has a data() member
    • -
    • e cannot use operator[]() when T is not DefaultDonstructible
    • -
    • Neither when the map is const.
    • -
    • when we want to make sure we don't add an element accidently
    • -
    • when it should be considered an error if a key is not in the map
    • -
    - -

    Proposed resolution:

    -

    In 23.2.4 [lib.vector], add the following to the vector - synopsis after "element access" and before "modifiers":

    -
      // [lib.vector.data] data access
    -  pointer       data();
    -  const_pointer data() const;
    -
    - -

    Add a new subsection of 23.2.4 [lib.vector]:

    -
    -

    23.2.4.x vector data access

    -
       pointer       data();
    -   const_pointer data() const;
    -
    -

    Returns: A pointer such that [data(), data() + size()) is a valid - range. For a non-empty vector, data() == &front().

    -

    Complexity: Constant time.

    -

    Throws: Nothing.

    -
    - -

    In 23.3.1 [lib.map], add the following to the map -synopsis immediately after the line for operator[]:

    -
      T&       at(const key_type& x);
    -  const T& at(const key_type& x) const;
    -
    - -

    Add the following to 23.3.1.2 [lib.map.access]:

    -
    -
      T&       at(const key_type& x);
    -  const T& at(const key_type& x) const;
    -
    - -

    Returns: A reference to the element whose key is equivalent - to x, if such an element is present in the map.

    -

    Throws: out_of_range if no such element is present.

    - -
    - -

    Rationale:

    -

    Neither of these additions provides any new functionality but the - LWG agreed that they are convenient, especially for novices. The - exception type chosen for at, std::out_of_range, - was chosen to match vector::at.

    -
    -

    465. Contents of <ciso646>

    Section: 17.4.1.2 [lib.headers]  Status: WP  Submitter: Steve Clamage  Date: 3 Jun 2004

    -

    C header <iso646.h> defines macros for some operators, such as -not_eq for !=.

    - -

    Section 17.4.1.2 [lib.headers] "Headers" says that except as noted in -clauses 18 through 27, the <cname> C++ header contents are the same -as the C header <name.h>. In particular, table 12 lists -<ciso646> as a C++ header.

    - -

    I don't find any other mention of <ciso646>, or any mention of -<iso646.h>, in clauses 17 thorough 27. That implies that the -contents of <ciso646> are the same as C header <iso646.h>.

    - -

    Annex C (informative, not normative) in [diff.header.iso646.h] C.2.2.2 -"Header <iso646.h>" says that the alternative tokens are not -defined as macros in <ciso646>, but does not mention the contents -of <iso646.h>.

    - -

    I don't find any normative text to support C.2.2.2.

    - -

    Proposed resolution:

    -

    Add to section 17.4.1.2 Headers [lib.headers] a new paragraph after - paragraph 6 (the one about functions must be functions):

    - -
    -

    Identifiers that are keywords or operators in C++ shall not be defined -as macros in C++ standard library headers. -[Footnote:In particular, including the standard header <iso646.h> -or <ciso646> has no effect.

    -
    - -

    [post-Redmond: Steve provided wording.]

    - -
    -

    467. char_traits::lt(), compare(), and memcmp()

    Section: 21.1.3.1 [lib.char.traits.specializations.char]  Status: WP  Submitter: Martin Sebor  Date: 28 Jun 2004

    - -

    -Table 37 describes the requirements on Traits::compare() in terms of -those on Traits::lt(). 21.1.3.1, p6 requires char_traits<char>::lt() -to yield the same result as operator<(char, char). -

    - -

    -Most, if not all, implementations of char_traits<char>::compare() -call memcmp() for efficiency. However, the C standard requires both -memcmp() and strcmp() to interpret characters under comparison as -unsigned, regardless of the signedness of char. As a result, all -these char_traits implementations fail to meet the requirement -imposed by Table 37 on compare() when char is signed. -

    - - -

    Read email thread starting with c++std-lib-13499 for more.

    -

    Proposed resolution:

    - - -

    Change 21.1.3.1, p6 from

    -
    - The two-argument members assign, eq, and lt are defined identically - to the built-in operators =, ==, and < respectively. -
    -

    to

    -
    - The two-argument member assign is defined identically to - the built-in operator =. The two - argument members eq and lt are defined identically to - the built-in operators == and < for type unsigned char. -
    - -

    [Redmond: The LWG agreed with this general direction, but we - also need to change eq to be consistent with this change. - Post-Redmond: Martin provided wording.]

    - -
    -

    468. unexpected consequences of ios_base::operator void*()

    Section: 27.4.4.3 [lib.iostate.flags]  Status: WP  Submitter: Martin Sebor  Date: 28 Jun 2004

    - -

    The program below is required to compile but when run it typically -produces unexpected results due to the user-defined conversion from -std::cout or any object derived from basic_ios to void*. -

    - -
        #include <cassert>
    -    #include <iostream>
    -
    -    int main ()
    -    {
    -        assert (std::cin.tie () == std::cout);
    -        // calls std::cout.ios::operator void*()
    -    }
    -
    - -

    Proposed resolution:

    - -

    -Replace std::basic_ios<charT, traits>::operator void*() with another -conversion operator to some unspecified type that is guaranteed not -to be convertible to any other type except for bool (a pointer-to-member -might be one such suitable type). In addition, make it clear that the -pointer type need not be a pointer to a complete type and when non-null, -the value need not be valid. -

    - -

    Specifically, change in [lib.ios] the signature of

    -
        operator void*() const;
    -
    -

    to

    -
        operator unspecified-bool-type() const;
    -
    -

    and change [lib.iostate.flags], p1 from

    -
        operator void*() const;
    -
    -

    to

    -
    operator unspecified-bool-type() const;
    -
    -     -1- Returns: if fail() then a value that will evaluate false in a
    -      boolean context; otherwise a value that will evaluate true in a
    -      boolean context. The value type returned shall not be
    -      convertible to int.
    -
    -     -2- [Note: This conversion can be used in contexts where a bool
    -      is expected (e.g., an if condition); however, implicit
    -      conversions (e.g., to int) that can occur with bool are not
    -      allowed, eliminating some sources of user error. One possible
    -      implementation choice for this type is pointer-to-member.  - end
    -      note]
    -
    - -

    [Redmond: 5-4 straw poll in favor of doing this.]

    -

    [Lillehammer: Doug provided revised wording for - "unspecified-bool-type".]

    - -
    -

    469. vector<bool> ill-formed relational operators

    Section: 23.2.5 [lib.vector.bool]  Status: DR  Submitter: Martin Sebor  Date: 28 Jun 2004

    - -

    -The overloads of relational operators for vector<bool> specified -in [lib.vector.bool] are redundant (they are semantically identical -to those provided for the vector primary template) and may even be -diagnosed as ill-formed (refer to Daveed Vandevoorde's explanation -in c++std-lib-13647). -

    - -

    Proposed resolution:

    -

    -Remove all overloads of overloads of relational operators for -vector<bool> from [lib.vector.bool]. -

    -
    -

    474. confusing Footnote 297

    Section: 27.6.2.5.4 [lib.ostream.inserters.character]  Status: WP  Submitter: Martin Sebor  Date: 1 Jul 2004

    - -

    -I think Footnote 297 is confused. The paragraph it applies to seems -quite clear in that widen() is only called if the object is not a char -stream (i.e., not basic_ostream<char>), so it's irrelevant what the -value of widen(c) is otherwise. -

    -

    Proposed resolution:

    -

    -I propose to strike the Footnote. -

    -
    -

    496. Illegal use of "T" in vector<bool>

    Section: 23.2.5 [lib.vector.bool]  Status: WP  Submitter: richard@ex-parrot.com  Date: 10 Feb 2005

    -

    -In the synopsis of the std::vector<bool> specialisation in 23.2.5 [lib.vector.bool], -the non-template assign() function has the signature

    - -
      void assign( size_type n, const T& t );
    -
    - -

    The type, T, is not defined in this context.

    -

    Proposed resolution:

    -

    Replace "T" with "value_type".

    -

    ----- End of document -----

    - \ No newline at end of file diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/mt_allocator.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/mt_allocator.html deleted file mode 100644 index e91760e8b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/mt_allocator.html +++ /dev/null @@ -1,558 +0,0 @@ - - - - - - - - - - A fixed-size, multi-thread optimized allocator - - - - - - - -

    A fixed-size, multi-thread optimized allocator

    - -

    - The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/ext/mt_allocator.html. -

    - -

    - To the libstdc++-v3 homepage. -

    - - -
    -

    - Introduction -

    - -

    The mt allocator [hereinafter referred to simply as "the -allocator"] is a fixed size (power of two) allocator that was -initially developed specifically to suit the needs of multi threaded -applications [hereinafter referred to as an MT application]. Over time -the allocator has evolved and been improved in many ways, in -particular it now also does a good job in single threaded applications -[hereinafter referred to as a ST application]. (Note: In this -document, when referring to single threaded applications this also -includes applications that are compiled with gcc without thread -support enabled. This is accomplished using ifdef's on -__GTHREADS). This allocator is tunable, very flexible, and capable of -high-performance. -

    - -

    -The aim of this document is to describe - from a application point of -view - the "inner workings" of the allocator. -

    - -

    - Design Overview -

    - -

    There are three general components to the allocator: a datum -describing the characteristics of the memory pool, a policy class -containing this pool that links instantiation types to common or -individual pools, and a class inheriting from the policy class that is -the actual allocator. -

    - -

    The datum describing pools characteristics is -

    -   template<bool _Thread>
    -     class __pool
    - 
    -This class is parametrized on thread support, and is explicitly -specialized for both multiple threads (with bool==true) -and single threads (via bool==false.) It is possible to -use a custom pool datum instead of the default class that is provided. -

    - -

    There are two distinct policy classes, each of which can be used -with either type of underlying pool datum. -

    - -
    -  template<bool _Thread>
    -    struct __common_pool_policy
    -
    -  template<typename _Tp, bool _Thread>
    -    struct __per_type_pool_policy
    -
    - -

    The first policy, __common_pool_policy, implements a -common pool. This means that allocators that are instantiated with -different types, say char and long will both -use the same pool. This is the default policy. -

    - -

    The second policy, __per_type_pool_policy, implements -a separate pool for each instantiating type. Thus, char -and long will use separate pools. This allows per-type -tuning, for instance. -

    - -

    Putting this all together, the actual allocator class is -

    -  template<typename _Tp, typename _Poolp = __default_policy>
    -    class __mt_alloc : public __mt_alloc_base<_Tp>,  _Poolp
    -
    -This class has the interface required for standard library allocator -classes, namely member functions allocate and -deallocate, plus others. -

    - -

    - Tunable parameters -

    - -

    Certain allocation parameters can be modified, or tuned. There -exists a nested

    struct __pool_base::_Tune
    that contains all -these parameters, which include settings for -

    -
      -
    • Alignment
    • -
    • Maximum bytes before calling ::operator new directly
    • -
    • Minimum bytes
    • -
    • Size of underlying global allocations
    • -
    • Maximum number of supported threads
    • -
    • Migration of deallocations to the global free list
    • -
    • Shunt for global new and delete
    • -
    -

    Adjusting parameters for a given instance of an allocator can only -happen before any allocations take place, when the allocator itself is -initialized. For instance: -

    -
    -#include <ext/mt_allocator.h>
    -
    -struct pod
    -{
    -  int i;
    -  int j;
    -};
    -
    -int main()
    -{
    -  typedef pod value_type;
    -  typedef __gnu_cxx::__mt_alloc<value_type> allocator_type;
    -  typedef __gnu_cxx::__pool_base::_Tune tune_type;
    -
    -  tune_type t_default;
    -  tune_type t_opt(16, 5120, 32, 5120, 20, 10, false);
    -  tune_type t_single(16, 5120, 32, 5120, 1, 10, false);
    -
    -  tune_type t;
    -  t = allocator_type::_M_get_options();  
    -  allocator_type::_M_set_options(t_opt);
    -  t = allocator_type::_M_get_options();  
    -
    -  allocator_type a;
    -  allocator_type::pointer p1 = a.allocate(128);
    -  allocator_type::pointer p2 = a.allocate(5128);
    -
    -  a.deallocate(p1, 128);
    -  a.deallocate(p2, 5128);
    -
    -  return 0;
    -}
    -
    - -

    - Initialization -

    - -

    -The static variables (pointers to freelists, tuning parameters etc) -are initialized as above, or are set to the global defaults. -

    - -

    -The very first allocate() call will always call the -_S_initialize_once() function. In order to make sure that this -function is called exactly once we make use of a __gthread_once call -in MT applications and check a static bool (_S_init) in ST -applications. -

    - -

    -The _S_initialize() function: -- If the GLIBCXX_FORCE_NEW environment variable is set, it sets the bool - _S_force_new to true and then returns. This will cause subsequent calls to - allocate() to return memory directly from a new() call, and deallocate will - only do a delete() call. -

    - -

    -- If the GLIBCXX_FORCE_NEW environment variable is not set, both ST and MT - applications will: - - Calculate the number of bins needed. A bin is a specific power of two size - of bytes. I.e., by default the allocator will deal with requests of up to - 128 bytes (or whatever the value of _S_max_bytes is when _S_init() is - called). This means that there will be bins of the following sizes - (in bytes): 1, 2, 4, 8, 16, 32, 64, 128. - - - Create the _S_binmap array. All requests are rounded up to the next - "large enough" bin. I.e., a request for 29 bytes will cause a block from - the "32 byte bin" to be returned to the application. The purpose of - _S_binmap is to speed up the process of finding out which bin to use. - I.e., the value of _S_binmap[ 29 ] is initialized to 5 (bin 5 = 32 bytes). -

    -

    - - Create the _S_bin array. This array consists of bin_records. There will be - as many bin_records in this array as the number of bins that we calculated - earlier. I.e., if _S_max_bytes = 128 there will be 8 entries. - Each bin_record is then initialized: - - bin_record->first = An array of pointers to block_records. There will be - as many block_records pointers as there are maximum number of threads - (in a ST application there is only 1 thread, in a MT application there - are _S_max_threads). - This holds the pointer to the first free block for each thread in this - bin. I.e., if we would like to know where the first free block of size 32 - for thread number 3 is we would look this up by: _S_bin[ 5 ].first[ 3 ] - - The above created block_record pointers members are now initialized to - their initial values. I.e. _S_bin[ n ].first[ n ] = NULL; -

    - -

    -- Additionally a MT application will: - - Create a list of free thread id's. The pointer to the first entry - is stored in _S_thread_freelist_first. The reason for this approach is - that the __gthread_self() call will not return a value that corresponds to - the maximum number of threads allowed but rather a process id number or - something else. So what we do is that we create a list of thread_records. - This list is _S_max_threads long and each entry holds a size_t thread_id - which is initialized to 1, 2, 3, 4, 5 and so on up to _S_max_threads. - Each time a thread calls allocate() or deallocate() we call - _S_get_thread_id() which looks at the value of _S_thread_key which is a - thread local storage pointer. If this is NULL we know that this is a newly - created thread and we pop the first entry from this list and saves the - pointer to this record in the _S_thread_key variable. The next time - we will get the pointer to the thread_record back and we use the - thread_record->thread_id as identification. I.e., the first thread that - calls allocate will get the first record in this list and thus be thread - number 1 and will then find the pointer to its first free 32 byte block - in _S_bin[ 5 ].first[ 1 ] - When we create the _S_thread_key we also define a destructor - (_S_thread_key_destr) which means that when the thread dies, this - thread_record is returned to the front of this list and the thread id - can then be reused if a new thread is created. - This list is protected by a mutex (_S_thread_freelist_mutex) which is only - locked when records are removed/added to the list. -

    -

    - - Initialize the free and used counters of each bin_record: - - bin_record->free = An array of size_t. This keeps track of the number - of blocks on a specific thread's freelist in each bin. I.e., if a thread - has 12 32-byte blocks on it's freelists and allocates one of these, this - counter would be decreased to 11. - - - bin_record->used = An array of size_t. This keeps track of the number - of blocks currently in use of this size by this thread. I.e., if a thread - has made 678 requests (and no deallocations...) of 32-byte blocks this - counter will read 678. - - The above created arrays are now initialized with their initial values. - I.e. _S_bin[ n ].free[ n ] = 0; -

    -

    - - Initialize the mutex of each bin_record: The bin_record->mutex - is used to protect the global freelist. This concept of a global - freelist is explained in more detail in the section "A multi - threaded example", but basically this mutex is locked whenever a - block of memory is retrieved or returned to the global freelist - for this specific bin. This only occurs when a number of blocks - are grabbed from the global list to a thread specific list or when - a thread decides to return some blocks to the global freelist. -

    - -

    Notes about deallocation. This allocator does not explicitly -release memory. Because of this, memory debugging programs like -valgrind or purify may notice leaks: sorry about this -inconvenience. Operating systems will reclaim allocated memory at -program termination anyway. If sidestepping this kind of noise is -desired, there are three options: use an allocator, like -new_allocator that releases memory while debugging, use -GLIBCXX_FORCE_NEW to bypass the allocator's internal pools, or use a -custom pool datum that releases resources on destruction.

    - -

    On systems with the function __cxa_atexit, the -allocator can be forced to free all memory allocated before program -termination with the member function -__pool_type::_M_destroy. However, because this member -function relies on the precise and exactly-conforming ordering of -static destructors, including those of a static local -__pool object, it should not be used, ever, on systems -that don't have the necessary underlying support. In addition, in -practice, forcing deallocation can be tricky, as it requires the -__pool object to be fully-constructed before the object -that uses it is fully constructed. For most (but not all) STL -containers, this works, as an instance of the allocator is constructed -as part of a container's constructor. However, this assumption is -implementation-specific, and subject to change. For an example of a -pool that frees memory, see the following - - example. -

    - -

    - A single threaded example (and a primer for the multi threaded example!) -

    - -

    -Let's start by describing how the data on a freelist is laid out in memory. -This is the first two blocks in freelist for thread id 3 in bin 3 (8 bytes): -

    -
    -+----------------+
    -| next* ---------|--+  (_S_bin[ 3 ].first[ 3 ] points here)
    -|                |  |
    -|                |  |
    -|                |  |
    -+----------------+  |
    -| thread_id = 3  |  |
    -|                |  |
    -|                |  |
    -|                |  |
    -+----------------+  |
    -| DATA           |  |  (A pointer to here is what is returned to the
    -|                |  |   the application when needed)
    -|                |  |
    -|                |  |
    -|                |  |
    -|                |  |
    -|                |  |
    -|                |  |
    -+----------------+  |
    -+----------------+  |
    -| next*          |<-+  (If next == NULL it's the last one on the list)
    -|                |
    -|                |
    -|                |
    -+----------------+
    -| thread_id = 3  |
    -|                |
    -|                |
    -|                |
    -+----------------+
    -| DATA           |
    -|                |
    -|                |
    -|                |
    -|                |
    -|                |
    -|                |
    -|                |
    -+----------------+
    -
    - -

    -With this in mind we simplify things a bit for a while and say that there is -only one thread (a ST application). In this case all operations are made to -what is referred to as the global pool - thread id 0 (No thread may be -assigned this id since they span from 1 to _S_max_threads in a MT application). -

    -

    -When the application requests memory (calling allocate()) we first look at the -requested size and if this is > _S_max_bytes we call new() directly and return. -

    -

    -If the requested size is within limits we start by finding out from which -bin we should serve this request by looking in _S_binmap. -

    -

    -A quick look at _S_bin[ bin ].first[ 0 ] tells us if there are any blocks of -this size on the freelist (0). If this is not NULL - fine, just remove the -block that _S_bin[ bin ].first[ 0 ] points to from the list, -update _S_bin[ bin ].first[ 0 ] and return a pointer to that blocks data. -

    -

    -If the freelist is empty (the pointer is NULL) we must get memory from the -system and build us a freelist within this memory. All requests for new memory -is made in chunks of _S_chunk_size. Knowing the size of a block_record and -the bytes that this bin stores we then calculate how many blocks we can create -within this chunk, build the list, remove the first block, update the pointer -(_S_bin[ bin ].first[ 0 ]) and return a pointer to that blocks data. -

    - -

    -Deallocation is equally simple; the pointer is casted back to a block_record -pointer, lookup which bin to use based on the size, add the block to the front -of the global freelist and update the pointer as needed -(_S_bin[ bin ].first[ 0 ]). -

    - -

    -The decision to add deallocated blocks to the front of the freelist was made -after a set of performance measurements that showed that this is roughly 10% -faster than maintaining a set of "last pointers" as well. -

    - -

    - A multi threaded example -

    - -

    -In the ST example we never used the thread_id variable present in each block. -Let's start by explaining the purpose of this in a MT application. -

    - -

    -The concept of "ownership" was introduced since many MT applications -allocate and deallocate memory to shared containers from different -threads (such as a cache shared amongst all threads). This introduces -a problem if the allocator only returns memory to the current threads -freelist (I.e., there might be one thread doing all the allocation and -thus obtaining ever more memory from the system and another thread -that is getting a longer and longer freelist - this will in the end -consume all available memory). -

    - -

    -Each time a block is moved from the global list (where ownership is -irrelevant), to a threads freelist (or when a new freelist is built -from a chunk directly onto a threads freelist or when a deallocation -occurs on a block which was not allocated by the same thread id as the -one doing the deallocation) the thread id is set to the current one. -

    - -

    -What's the use? Well, when a deallocation occurs we can now look at -the thread id and find out if it was allocated by another thread id -and decrease the used counter of that thread instead, thus keeping the -free and used counters correct. And keeping the free and used counters -corrects is very important since the relationship between these two -variables decides if memory should be returned to the global pool or -not when a deallocation occurs. -

    - -

    -When the application requests memory (calling allocate()) we first -look at the requested size and if this is > _S_max_bytes we call new() -directly and return. -

    - -

    -If the requested size is within limits we start by finding out from which -bin we should serve this request by looking in _S_binmap. -

    - -

    -A call to _S_get_thread_id() returns the thread id for the calling thread -(and if no value has been set in _S_thread_key, a new id is assigned and -returned). -

    - -

    -A quick look at _S_bin[ bin ].first[ thread_id ] tells us if there are -any blocks of this size on the current threads freelist. If this is -not NULL - fine, just remove the block that _S_bin[ bin ].first[ -thread_id ] points to from the list, update _S_bin[ bin ].first[ -thread_id ], update the free and used counters and return a pointer to -that blocks data. -

    - -

    -If the freelist is empty (the pointer is NULL) we start by looking at -the global freelist (0). If there are blocks available on the global -freelist we lock this bins mutex and move up to block_count (the -number of blocks of this bins size that will fit into a _S_chunk_size) -or until end of list - whatever comes first - to the current threads -freelist and at the same time change the thread_id ownership and -update the counters and pointers. When the bins mutex has been -unlocked, we remove the block that _S_bin[ bin ].first[ thread_id ] -points to from the list, update _S_bin[ bin ].first[ thread_id ], -update the free and used counters, and return a pointer to that blocks -data. -

    - -

    -The reason that the number of blocks moved to the current threads -freelist is limited to block_count is to minimize the chance that a -subsequent deallocate() call will return the excess blocks to the -global freelist (based on the _S_freelist_headroom calculation, see -below). -

    - -

    -However if there isn't any memory on the global pool we need to get -memory from the system - this is done in exactly the same way as in a -single threaded application with one major difference; the list built -in the newly allocated memory (of _S_chunk_size size) is added to the -current threads freelist instead of to the global. -

    - -

    -The basic process of a deallocation call is simple: always add the -block to the front of the current threads freelist and update the -counters and pointers (as described earlier with the specific check of -ownership that causes the used counter of the thread that originally -allocated the block to be decreased instead of the current threads -counter). -

    - -

    -And here comes the free and used counters to service. Each time a -deallocation() call is made, the length of the current threads -freelist is compared to the amount memory in use by this thread. -

    - -

    -Let's go back to the example of an application that has one thread -that does all the allocations and one that deallocates. Both these -threads use say 516 32-byte blocks that was allocated during thread -creation for example. Their used counters will both say 516 at this -point. The allocation thread now grabs 1000 32-byte blocks and puts -them in a shared container. The used counter for this thread is now -1516. -

    - -

    -The deallocation thread now deallocates 500 of these blocks. For each -deallocation made the used counter of the allocating thread is -decreased and the freelist of the deallocation thread gets longer and -longer. But the calculation made in deallocate() will limit the length -of the freelist in the deallocation thread to _S_freelist_headroom % -of it's used counter. In this case, when the freelist (given that the -_S_freelist_headroom is at it's default value of 10%) exceeds 52 -(516/10) blocks will be returned to the global pool where the -allocating thread may pick them up and reuse them. -

    - -

    -In order to reduce lock contention (since this requires this bins -mutex to be locked) this operation is also made in chunks of blocks -(just like when chunks of blocks are moved from the global freelist to -a threads freelist mentioned above). The "formula" used can probably -be improved to further reduce the risk of blocks being "bounced back -and forth" between freelists. -

    - -
    -

    Return to the top of the page or - to the libstdc++ homepage. -

    - - - - -
    -

    -See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/Std_hash_set_impl.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/Std_hash_set_impl.jpg deleted file mode 100644 index ff7bae0eec3a485702e94e8f52fad533720095f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51488 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 - - - Acknowledgements - - - - -

    Acknowledgements

    - - -
      -
    1. This library was written at the Network Storage Technologies Group of -IBM's Haifa Research Labs.
    2. -
    3. The library is based heavily on policy-based design and uses many useful -techniques from [alexandrescu01modern]. -
    4. -
    5. Two ideas are borrowed from the SGI-STL implementation [sgi_stl]: -
        -
      1. - The prime-based resize policies use a list of primes taken from the SGI-STL implementation. -
      2. -
      3. The red-black trees contain both a root node and a header - node (containing metadata), connected in a way - that forward and reverse iteration can be performed efficiently. -
      4. -
      -
    6. -
    7. Some test utilities borrow ideas from [boost_timer]. -
    8. -
    9. We would like to thank Scott Meyers for useful comments (without attributing to him - any flaws in the design or implementation of the library). -
    10. -
    11. Much of the documentation is - -[Python Powered] -. -
    12. -
    - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/balls_and_bins.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/balls_and_bins.jpg deleted file mode 100644 index d9f7e8bb04808af6b8155b314a145a7203fdca27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18512 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 T4VwWikLA~xJKzl_?6>~|!K%eP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr.html deleted file mode 100644 index ca91c332e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr.html +++ /dev/null @@ -1,1229 +0,0 @@ - - - - - - -basic_assoc_cntnr Interface - - - - - -

    -basic_assoc_cntnr - - - Interface - - -

    - -

    A basic associative container, specialized for the "map" case. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General container definitions. - - -
      2. - -
      3. -Categories. - - -
      4. - -
      5. -Policy definitions. - - -
      6. - -
      7. -Key-type definitions. - - -
      8. - -
      9. -Data-type definitions. - - -
      10. - -
      11. -Value-type definitions. - - -
      12. - -
      13. -Iterator definitions. - - -
      14. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Information methods. - - -
      4. - -
      5. -Insert methods. - - -
      6. - -
      7. -Find methods. - - -
      8. - -
      9. -Erase methods. - - -
      10. - -
      11. -Iteration methods. - - -
      12. - -
      - -
    8. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    DS_Tag
    - - -
    -

    Data structure tag.

    - - -
    -- - - -
    -
    Policy_Tl
    - - -
    -

    Policy typelist.

    - - -
    -- - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -- - - -
    - -

    -General container definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    typename Allocator::size_type
    - - -
    -

    Size type.

    - - -
    -
    difference_type
    - - -
    -
    typename Allocator::difference_type
    - - -
    -

    Difference type.

    - - -
    - -

    -Categories. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    ds_category
    - - -
    -
    DS_Tag
    - - -
    -

    The underlying data-structure tag of the container. comment =

    - - -
    -
    ms_category
    - - -
    -
    data_enabled_ms_tag
    - - -
    -

    The mapping-semantics category of the container.

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    allocator
    - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    - -

    -Key-type definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    key_type
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::value_type
    - - -
    -

    Key type.

    - - -
    -
    key_reference
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::reference
    - - -
    -

    Key reference type.

    - - -
    -
    const_key_reference
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::const_reference
    - - -
    -

    Const key reference type.

    - - -
    -
    key_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::pointer
    - - -
    -

    Key pointer type.

    - - -
    -
    const_key_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::const_pointer
    - - -
    -

    Const key pointer type.

    - - -
    - -

    -Data-type definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    data_type
    - - -
    -
    typename allocator::template rebind<
    -    Data>::other::value_type
    - - -
    -

    Data type.

    - - -
    -
    data_reference
    - - -
    -
    typename allocator::template rebind<
    -    Data>::other::reference
    - - -
    -

    Data reference type.

    - - -
    -
    const_data_reference
    - - -
    -
    typename allocator::template rebind<
    -    Data>::other::const_reference
    - - -
    -

    Const data reference type.

    - - -
    -
    data_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Data>::other::pointer
    - - -
    -

    Data pointer type.

    - - -
    -
    const_data_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Data>::other::const_pointer
    - - -
    -

    Const data pointer type.

    - - -
    - -

    -Value-type definitions. - - -

    - -

    Types pertaining to the domain of the relationships of the table.

    This is explained in Data Types, Value Types, Mapped Data Types, and Mapped Value Types and Mapped Data Types and Mapped Value Types.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    value_type
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, data_type> >::other::value_type
    - - -
    -

    Data type.

    - - -
    -
    reference
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, data_type> >::other::reference
    - - -
    -

    Value reference type.

    - - -
    -
    const_reference
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, data_type> >::other::const_reference
    - - -
    -

    Const value reference type.

    - - -
    -
    pointer
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, data_type> >::other::pointer
    - - -
    -

    Value pointer type.

    - - -
    -
    const_pointer
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, data_type> >::other::const_pointer
    - - -
    -

    Const Value pointer type.

    - - -
    - -

    -Iterator definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_find_iterator
    - - -
    -
    Underlying data-structure's const find-type iterator.
    - - -
    -

    Const find-type iterator.

    - - -
    -
    find_iterator
    - - -
    -
    Underlying data-structure's find-type iterator.
    - - -
    -

    Find-type iterator.

    - - -
    -
    const_iterator
    - - -
    -
    Underlying data-structure's const range-type iterator.
    - - -
    -

    Const range-type iterator.

    - - -
    -
    iterator
    - - -
    -
    Underlying data-structure's range-type iterator.
    - - -
    -

    Range-type iterator.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual
    -  ~basic_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Information methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  size
    -  () const
    - - -
    -

    Returns the number of distinct value_type objects the container object is storing.

    - - -
    -
    inline size_type
    -  max_size
    -  () const
    - - -
    -

    Returns an upper bound on the number of distinct value_type objects this container can store.

    - - -
    -
    inline bool
    -  empty
    -  () const
    - - -
    -

    Returns whether the container object is not storing any value_type objects.

    - - -
    -
    inline static const_key_reference
    -  extract_key
    -  (const_reference r_val)
    - - -
    -

    Extracts a key from a value_type.

    - - -
    - -

    -Insert methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline std::pair<find_iterator, bool>
    -  insert
    -  (const_reference r_val)
    - - -
    -

    Inserts a value_type object. If no value_type with r_val's key was in the container object, inserts and returns (find_iterator object associated with r_val, true); otherwise just returns (find_iterator object associated with r_val's key, false).

    - - -
    -
    inline data_reference
    -  operator[]
    -  (const_key_reference r_key)
    - - -
    -

    Inserts (if necessary) a value_type object associated with r_key. Returns a data_reference associated with r_key

    - - -
    - -

    -Find methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline find_iterator
    -  find
    -  (const_key_reference r_key)
    - - -
    -

    Returns the find_iterator corresponding to the value_type with r_key as its key, or the find_iterator corresponding to the just-after-last entry if no such value_type.

    - - -
    -
    inline const_find_iterator
    -  find
    -  (const_key_reference r_key) const
    - - -
    -

    Returns the const_find_iterator corresponding to the value_type with r_key as its key, or the const_find_iterator corresponding to the just-after-last entry if no such value_type.

    - - -
    -
    inline const_data_reference
    -  operator[]
    -  (const_key_reference r_key) const
    - - -
    -

    Inserts (if necessary) a value_type object associated with r_key. Returns a data_reference associated with r_key

    - - -
    - -

    -Erase methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  erase
    -  (const_key_reference r_key)
    - - -
    -

    Erases the value_type associated with r_key; returns the number of value_types erased (0 or 1).

    - - -
    -
    template<
    -  class Pred>
    -inline size_type
    -  erase_if
    -  (Pred prd)
    - - -
    -

    Erases any value_type satisfying the predicate prd (this is transactional, either all matching value_types are erased, or, if an exception is thrown (for types whose erase can throw an exception) none); returns the number of value_types erased.

    - - -
    -
    void
    -  clear
    -  ()
    - - -
    -

    Clears the container object.

    - - -
    - -

    -Iteration methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline iterator
    -  begin
    -  ()
    - - -
    -

    Returns an iterator corresponding to the first value_type in the container.

    - - -
    -
    inline const_iterator
    -  begin
    -  () const
    - - -
    -

    Returns a const_iterator corresponding to the first value_type in the container.

    - - -
    -
    inline iterator
    -  end
    -  ()
    - - -
    -

    Returns an iterator corresponding to the just-after_last value_type in the container.

    - - -
    -
    inline const_iterator
    -  end
    -  () const
    - - -
    -

    Returns a const_iterator corresponding to the just-after_last value_type in the container.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_compound_data.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_compound_data.html deleted file mode 100644 index 4cde4dbb8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_compound_data.html +++ /dev/null @@ -1,1244 +0,0 @@ - - - - - - -basic_assoc_cntnr Interface - - - - - -

    -basic_assoc_cntnr - - - Interface - - -

    - -

    A basic associative container specialized for the "multimap" case. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General container definitions. - - -
      2. - -
      3. -Categories. - - -
      4. - -
      5. -Policy definitions. - - -
      6. - -
      7. -Key-type definitions. - - -
      8. - -
      9. -Data-type definitions. - - -
      10. - -
      11. -Value-type definitions. - - -
      12. - -
      13. -Iterator definitions. - - -
      14. - -
      15. -Mapping-level definitions. - - -
      16. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Information methods. - - -
      4. - -
      5. -Insert methods. - - -
      6. - -
      7. -Find methods. - - -
      8. - -
      9. -Erase methods. - - -
      10. - -
      11. -Iteration methods. - - -
      12. - -
      - -
    8. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Cntnr
    - - -
    -

    (Associative) container to which each data is mapped.

    - - -
    -- - - -
    -
    DS_Tag
    - - -
    -

    Data structure tag.

    - - -
    -- - - -
    -
    Policy_Tl
    - - -
    -

    Policy typelist.

    - - -
    -- - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -- - - -
    - -

    -General container definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    typename Allocator::size_type
    - - -
    -

    Size type.

    - - -
    -
    difference_type
    - - -
    -
    typename Allocator::difference_type
    - - -
    -

    Difference type.

    - - -
    - -

    -Categories. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    ds_category
    - - -
    -
    DS_Tag
    - - -
    -

    The underlying data-structure tag of the container. comment =

    - - -
    -
    ms_category
    - - -
    -
    compound_data_enabled_ms_tag
    - - -
    -

    The mapping-semantics category of the container. override_from =

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    allocator
    - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    - -

    -Key-type definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    key_type
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::value_type
    - - -
    -

    Key type.

    - - -
    -
    key_reference
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::reference
    - - -
    -

    Key reference type.

    - - -
    -
    const_key_reference
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::const_reference
    - - -
    -

    Const key reference type.

    - - -
    -
    key_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::pointer
    - - -
    -

    Key pointer type.

    - - -
    -
    const_key_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::const_pointer
    - - -
    -

    Const key pointer type.

    - - -
    - -

    -Data-type definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    data_type
    - - -
    -
    typename allocator::template rebind<
    -    Cntnr>::other::value_type
    - - -
    -

    Data type.

    - - -
    -
    data_reference
    - - -
    -
    typename allocator::template rebind<
    -    Cntnr>::other::reference
    - - -
    -

    Data reference type.

    - - -
    -
    const_data_reference
    - - -
    -
    typename allocator::template rebind<
    -    Cntnr>::other::const_reference
    - - -
    -

    Const data reference type.

    - - -
    -
    data_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Cntnr>::other::pointer
    - - -
    -

    Data pointer type.

    - - -
    -
    const_data_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Cntnr>::other::const_pointer
    - - -
    -

    Const data pointer type.

    - - -
    - -

    -Value-type definitions. - - -

    - -

    Types pertaining to the domain of the relationships of the table.

    This is explained in Data Types, Value Types, Mapped Data Types, and Mapped Value Types and Mapped Data Types and Mapped Value Types.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    value_type
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, Cntnr>::other::value_type
    - - -
    -

    Data type.

    - - -
    -
    reference
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, Cntnr>::other::reference
    - - -
    -

    Value reference type.

    - - -
    -
    const_reference
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, Cntnr>::other::const_reference
    - - -
    -

    Const value reference type.

    - - -
    -
    pointer
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, Cntnr>::other::pointer
    - - -
    -

    Value pointer type.

    - - -
    -
    const_pointer
    - - -
    -
    typename allocator::rebind<
    -    std::pair<const key_type, Cntnr>::other::const_pointer
    - - -
    -

    Const Value pointer type.

    - - -
    - -

    -Iterator definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_find_iterator
    - - -
    -
    Underlying data-structure's const find-type iterator.
    - - -
    -

    Const find-type iterator.

    - - -
    -
    find_iterator
    - - -
    -
    Underlying data-structure's find-type iterator.
    - - -
    -

    Find-type iterator.

    - - -
    -
    const_iterator
    - - -
    -
    Underlying data-structure's const range-type iterator.
    - - -
    -

    Const range-type iterator.

    - - -
    -
    iterator
    - - -
    -
    Underlying data-structure's range-type iterator.
    - - -
    -

    Range-type iterator.

    - - -
    - -

    -Mapping-level definitions. - - -

    - -

    See Mapping-Semantics.

    - - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual
    -  ~basic_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Information methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  size
    -  () const
    - - -
    -

    Returns the number of distinct value_type objects the container object is storing.

    - - -
    -
    inline size_type
    -  max_size
    -  () const
    - - -
    -

    Returns an upper bound on the number of distinct value_type objects this container can store.

    - - -
    -
    inline bool
    -  empty
    -  () const
    - - -
    -

    Returns whether the container object is not storing any value_type objects.

    - - -
    -
    inline static const_key_reference
    -  extract_key
    -  (const_reference r_val)
    - - -
    -

    Extracts a key from a value_type.

    - - -
    - -

    -Insert methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline std::pair<find_iterator, bool>
    -  insert
    -  (const_reference r_val)
    - - -
    -

    Inserts a value_type object. If no value_type with r_val's key was in the container object, inserts and returns (find_iterator object associated with r_val, true); otherwise just returns (find_iterator object associated with r_val's key, false).

    - - -
    -
    inline data_reference
    -  operator[]
    -  (const_key_reference r_key)
    - - -
    -

    Inserts (if necessary) a value_type object associated with r_key. Returns a data_reference associated with r_key

    - - -
    - -

    -Find methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline find_iterator
    -  find
    -  (const_key_reference r_key)
    - - -
    -

    Returns the find_iterator corresponding to the value_type with r_key as its key, or the find_iterator corresponding to the just-after-last entry if no such value_type.

    - - -
    -
    inline const_find_iterator
    -  find
    -  (const_key_reference r_key) const
    - - -
    -

    Returns the const_find_iterator corresponding to the value_type with r_key as its key, or the const_find_iterator corresponding to the just-after-last entry if no such value_type.

    - - -
    -
    inline const_data_reference
    -  operator[]
    -  (const_key_reference r_key) const
    - - -
    -

    Inserts (if necessary) a value_type object associated with r_key. Returns a data_reference associated with r_key

    - - -
    - -

    -Erase methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  erase
    -  (const_key_reference r_key)
    - - -
    -

    Erases the value_type associated with r_key; returns the number of value_types erased (0 or 1).

    - - -
    -
    template<
    -  class Pred>
    -inline size_type
    -  erase_if
    -  (Pred prd)
    - - -
    -

    Erases any value_type satisfying the predicate prd (this is transactional, either all matching value_types are erased, or, if an exception is thrown (for types whose erase can throw an exception) none); returns the number of value_types erased.

    - - -
    -
    void
    -  clear
    -  ()
    - - -
    -

    Clears the container object.

    - - -
    - -

    -Iteration methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline iterator
    -  begin
    -  ()
    - - -
    -

    Returns an iterator corresponding to the first value_type in the container.

    - - -
    -
    inline const_iterator
    -  begin
    -  () const
    - - -
    -

    Returns a const_iterator corresponding to the first value_type in the container.

    - - -
    -
    inline iterator
    -  end
    -  ()
    - - -
    -

    Returns an iterator corresponding to the just-after_last value_type in the container.

    - - -
    -
    inline const_iterator
    -  end
    -  () const
    - - -
    -

    Returns a const_iterator corresponding to the just-after_last value_type in the container.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_no_data.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_no_data.html deleted file mode 100644 index 8dd0a39a5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_assoc_cntnr_no_data.html +++ /dev/null @@ -1,1046 +0,0 @@ - - - - - - -basic_assoc_cntnr Interface - - - - - -

    -basic_assoc_cntnr - - - Interface - - -

    - -

    A basic associative container specialized for the "set" case. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General container definitions. - - -
      2. - -
      3. -Categories. - - -
      4. - -
      5. -Policy definitions. - - -
      6. - -
      7. -Key-type definitions. - - -
      8. - -
      9. -Value-type definitions. - - -
      10. - -
      11. -Iterator definitions. - - -
      12. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Information methods. - - -
      4. - -
      5. -Insert methods. - - -
      6. - -
      7. -Find methods. - - -
      8. - -
      9. -Erase methods. - - -
      10. - -
      11. -Iteration methods. - - -
      12. - -
      - -
    8. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    DS_Tag
    - - -
    -

    Data structure tag.

    - - -
    -- - - -
    -
    Policy_Tl
    - - -
    -

    Policy typelist.

    - - -
    -- - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -- - - -
    - -

    -General container definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    typename Allocator::size_type
    - - -
    -

    Size type.

    - - -
    -
    difference_type
    - - -
    -
    typename Allocator::difference_type
    - - -
    -

    Difference type.

    - - -
    - -

    -Categories. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    ds_category
    - - -
    -
    DS_Tag
    - - -
    -

    The underlying data-structure tag of the container. comment =

    - - -
    -
    ms_category
    - - -
    -
    basic_ms_tag
    - - -
    -

    The mapping-semantics category of the container.

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    allocator
    - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    - -

    -Key-type definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    key_type
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::value_type
    - - -
    -

    Key type.

    - - -
    -
    key_reference
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::reference
    - - -
    -

    Key reference type.

    - - -
    -
    const_key_reference
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::const_reference
    - - -
    -

    Const key reference type.

    - - -
    -
    key_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::pointer
    - - -
    -

    Key pointer type.

    - - -
    -
    const_key_pointer
    - - -
    -
    typename allocator::template rebind<
    -    Key>::other::const_pointer
    - - -
    -

    Const key pointer type.

    - - -
    - -

    -Value-type definitions. - - -

    - -

    Types pertaining to the domain of the relationships of the table.

    This is explained in Data Types, Value Types, Mapped Data Types, and Mapped Value Types and Mapped Data Types and Mapped Value Types.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    value_type
    - - -
    -
    typename allocator::rebind<
    -    key_type>::other::value_type
    - - -
    -

    Data type.

    - - -
    -
    reference
    - - -
    -
    typename allocator::rebind<
    -    key_type>::other::const_reference
    - - -
    -

    Value reference type.

    - - -
    -
    const_reference
    - - -
    -
    typename allocator::rebind<
    -    key_type>::other::const_reference
    - - -
    -

    Const value reference type.

    - - -
    -
    pointer
    - - -
    -
    typename allocator::rebind<
    -    key_type> >::other::const_pointer
    - - -
    -

    Value pointer type.

    - - -
    -
    const_pointer
    - - -
    -
    typename allocator::rebind<
    -    key_type> >::other::const_pointer
    - - -
    -

    Const Value pointer type.

    - - -
    - -

    -Iterator definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_find_iterator
    - - -
    -
    Underlying data-structure's const find-type iterator.
    - - -
    -

    Const find-type iterator.

    - - -
    -
    find_iterator
    - - -
    -
    Underlying data-structure's find-type iterator.
    - - -
    -

    Find-type iterator.

    - - -
    -
    const_iterator
    - - -
    -
    Underlying data-structure's const range-type iterator.
    - - -
    -

    Const range-type iterator.

    - - -
    -
    iterator
    - - -
    -
    Underlying data-structure's range-type iterator.
    - - -
    -

    Range-type iterator.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual
    -  ~basic_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Information methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  size
    -  () const
    - - -
    -

    Returns the number of distinct value_type objects the container object is storing.

    - - -
    -
    inline size_type
    -  max_size
    -  () const
    - - -
    -

    Returns an upper bound on the number of distinct value_type objects this container can store.

    - - -
    -
    inline bool
    -  empty
    -  () const
    - - -
    -

    Returns whether the container object is not storing any value_type objects.

    - - -
    -
    inline static const_key_reference
    -  extract_key
    -  (const_reference r_val)
    - - -
    -

    Extracts a key from a value_type.

    - - -
    - -

    -Insert methods. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    inline std::pair<find_iterator, bool>
    -  insert
    -  (const_reference r_val)
    - - -
    -

    Inserts a value_type object. If no value_type with r_val's key was in the container object, inserts and returns (find_iterator object associated with r_val, true); otherwise just returns (find_iterator object associated with r_val's key, false).

    - - -
    - -

    -Find methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline find_iterator
    -  find
    -  (const_key_reference r_key)
    - - -
    -

    Returns the find_iterator corresponding to the value_type with r_key as its key, or the find_iterator corresponding to the just-after-last entry if no such value_type.

    - - -
    -
    inline const_find_iterator
    -  find
    -  (const_key_reference r_key) const
    - - -
    -

    Returns the const_find_iterator corresponding to the value_type with r_key as its key, or the const_find_iterator corresponding to the just-after-last entry if no such value_type.

    - - -
    - -

    -Erase methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  erase
    -  (const_key_reference r_key)
    - - -
    -

    Erases the value_type associated with r_key; returns the number of value_types erased (0 or 1).

    - - -
    -
    template<
    -  class Pred>
    -inline size_type
    -  erase_if
    -  (Pred prd)
    - - -
    -

    Erases any value_type satisfying the predicate prd (this is transactional, either all matching value_types are erased, or, if an exception is thrown (for types whose erase can throw an exception) none); returns the number of value_types erased.

    - - -
    -
    void
    -  clear
    -  ()
    - - -
    -

    Clears the container object.

    - - -
    - -

    -Iteration methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline iterator
    -  begin
    -  ()
    - - -
    -

    Returns an iterator corresponding to the first value_type in the container.

    - - -
    -
    inline const_iterator
    -  begin
    -  () const
    - - -
    -

    Returns a const_iterator corresponding to the first value_type in the container.

    - - -
    -
    inline iterator
    -  end
    -  ()
    - - -
    -

    Returns an iterator corresponding to the just-after_last value_type in the container.

    - - -
    -
    inline const_iterator
    -  end
    -  () const
    - - -
    -

    Returns a const_iterator corresponding to the just-after_last value_type in the container.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ds_tag.html deleted file mode 100644 index ca10f35de..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ds_tag.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -basic_ds_tag Interface - - - - - -

    -basic_ds_tag - - - Interface - - -

    - -

    Basic data-structure tag. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_assoc_cntnr.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_assoc_cntnr.html deleted file mode 100644 index 94939ab30..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_assoc_cntnr.html +++ /dev/null @@ -1,609 +0,0 @@ - - - - - - -basic_hash_assoc_cntnr Interface - - - - - -

    -basic_hash_assoc_cntnr - - - Interface - - -

    - -

    A basic hash-based associative container. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -Policy definitions. - - -
      2. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      - -
    10. - -
    11. -Protected Methods: - - -
        -
      1. -Resize methods. - - -
      2. - -
      - -
    12. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    Hash_Fn
    - - -
    -

    Hash functor.

    - - -
    -- - - -
    -
    Eq_Fn
    - - -
    -

    Equivalence functor.

    - - -
    -- - - -
    -
    Resize_Policy
    - - -
    -

    Resize policy.

    - - -
    -- - - -
    -
    Store_Hash
    - - -
    -

    Indicates whether the hash value will be stored along with each key.

    - - -
    -- - - -
    -
    DS_Tag,
    - - -
    -

    Data-structure tag.

    - - -
    -- - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -- - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Resize_Policy
    - - -
    -

    public

    - - -
    -
    Hash_Fn
    - - -
    -

    public

    - - -
    -
    Depending on Data:
    1. null_data_type - basic_assoc_cntnr "set" specialization
    2. compound_data_type<Container> - basic_assoc_cntnr "multimap" specialization
    3. Other - basic_assoc_cntnr "map" specialization
    - - -
    -

    public

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    hash_fn
    - - -
    -
    Hash_Fn
    - - -
    -

    Hash functor type.

    - - -
    -
    eq_fn
    - - -
    -
    Eq_Fn
    - - -
    -

    Equivalence functor type.

    - - -
    -
    resize_policy
    - - -
    -
    Resize_Policy
    - - -
    -

    Resize policy type.

    - - -
    -
    store_hash
    - - -
    -
    Store_Hash
    - - -
    -

    Indicates whether a hash value is stored with each entry.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual
    -  ~basic_hash_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    hash_fn &
    -  get_hash_fn
    -  ()
    - - -
    -

    Access to the hash_fn object.

    - - -
    -
    const hash_fn &
    -  get_hash_fn
    -  () const
    - - -
    -

    Const access to the hash_fn object.

    - - -
    -
    eq_fn &
    -  get_eq_fn
    -  ()
    - - -
    -

    Access to the eq_fn object.

    - - -
    -
    const eq_fn &
    -  get_eq_fn
    -  () const
    - - -
    -

    Const access to the eq_fn object.

    - - -
    -
    Resize_Policy &
    -  get_resize_policy
    -  ()
    - - -
    -

    Access to the resize_policy object.

    - - -
    -
    const resize_policy &
    -  get_resize_policy
    -  () const
    - - -
    -

    Const access to the resize_policy object.

    - - -
    - -

    -Resize methods. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual void
    -  do_resize
    -  (size_type new_size)
    - - -
    -

    Resizes the container object to new_size.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_ds_tag.html deleted file mode 100644 index af421d813..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_hash_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -basic_hash_ds_tag Interface - - - - - -

    -basic_hash_ds_tag - - - Interface - - -

    - -

    Basic hash data-structure tag. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    3. -Base classes. - - -
    4. - -
    - - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    basic_ds_tag
    - - -
    -

    public

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_invalidation_guarantee.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_invalidation_guarantee.html deleted file mode 100644 index 8bba96c22..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_invalidation_guarantee.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -basic_invalidation_guarantee Interface - - - - - -

    -basic_invalidation_guarantee - - - Interface - - -

    - -

    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. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ms_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ms_tag.html deleted file mode 100644 index a4e7dd078..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_ms_tag.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -basic_ms_tag Interface - - - - - -

    -basic_ms_tag - - - Interface - - -

    - -

    Basic mapping-semantics tag. -

    - -
      -
    1. -ms_trait.hpp - - -
    2. - -
    - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr.html deleted file mode 100644 index 73595b788..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr.html +++ /dev/null @@ -1,940 +0,0 @@ - - - - - - -basic_tree_assoc_cntnr Interface - - - - - -

    -basic_tree_assoc_cntnr - - - Interface - - -

    - -

    A basic tree-based associative container. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -General container definitions. - - -
      2. - -
      3. -Key-type definitions. - - -
      4. - -
      5. -Policy definitions. - - -
      6. - -
      7. -Iterator definitions. - - -
      8. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      5. -Erase methods. - - -
      6. - -
      7. -Iteration methods. - - -
      8. - -
      9. -Node-Iteration methods. - - -
      10. - -
      11. -Split and join methods. - - -
      12. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    Cmp_Fn
    - - -
    -

    Comparison functor.

    - - -
    -- - - -
    -
    DS_Tag,
    - - -
    -

    Data-structure tag.

    - - -
    -- - - -
    -
    Node_Updator
    - - -
    -

    Node updator type.

    - - -

    Node Invariants explains this concept.

    - - -
    -- - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -- - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Node_Updator
    - - -
    -

    public

    - - -
    - -

    -General container definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    typename Allocator::size_type
    - - -
    -

    Size type.

    - - -
    - -

    -Key-type definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_key_reference
    - - -
    -
    typename Allocator::template rebind<
    -    Key>::other::const_reference
    - - -
    -

    Const key reference type.

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    cmp_fn
    - - -
    -
    Cmp_Fn
    - - -
    -

    Comparison functor type.

    - - -
    -
    node_updator
    - - -
    -
    Node_Updator
    - - -
    -

    Node updator type.

    - - -
    - -

    -Iterator definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_iterator
    - - -
    -
    Underlying data-structure's const range-type iterator.
    - - -
    -

    Const range-type iterator.

    - - -
    -
    iterator
    - - -
    -
    Underlying data-structure's range-type iterator.
    - - -
    -

    Range-type iterator.

    - - -
    -
    const_reverse_iterator
    - - -
    -
    Underlying data-structure's const reverse range-type iterator.
    - - -
    -

    Const reverse range-type iterator.

    - - -
    -
    reverse_iterator
    - - -
    -
    Underlying data-structure's reverse range-type iterator.
    - - -
    -

    Reverse range-type iterator.

    - - -
    -
    const_node_iterator
    - - -
    -
    basic_tree_assoc_cntnr::const_node_iterator
    - - -
    -

    Const node iterator.

    - - -
    -
    node_iterator
    - - -
    -
    basic_tree_assoc_cntnr::node_iterator
    - - -
    -

    Node iterator.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual
    -  ~basic_tree_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    cmp_fn &
    -  get_cmp_fn
    -  ()
    - - -
    -

    Access to the cmp_fn object.

    - - -
    -
    const cmp_fn &
    -  get_cmp_fn
    -  () const
    - - -
    -

    Const access to the cmp_fn object.

    - - -
    -
    node_updator &
    -  get_node_updator
    -  ()
    - - -
    -

    Access to the node_updator object.

    - - -
    -
    const node_updator &
    -  get_node_updator
    -  () const
    - - -
    -

    Const access to the node_updator object.

    - - -
    - -

    -Erase methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  erase
    -  (const_key_reference r_key)
    - - -
    -

    Erases the value_type associated with r_key; returns the number of value_types erased (0 or 1).

    - - -
    -
    inline iterator
    -  erase
    -  (iterator it)
    - - -
    -

    Erases the value_type corresponding to the iterator it. Returns the iterator corresponding to the next value_type.

    - - -
    -
    inline reverse_iterator
    -  erase
    -  (reverse_iterator it)
    - - -
    -

    Erases the value_type corresponding to the reverse_iterator it. Returns the reverse_iterator corresponding to the previous value_type.

    - - -
    - -

    -Iteration methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline reverse_iterator
    -  rbegin
    -  ()
    - - -
    -

    Returns a reverse_iterator corresponding to the last value_type in the container.

    - - -
    -
    inline const_reverse_iterator
    -  rbegin
    -  () const
    - - -
    -

    Returns a const_reverse_iterator corresponding to the last value_type in the container.

    - - -
    -
    inline reverse_iterator
    -  rend
    -  ()
    - - -
    -

    Returns a reverse_iterator corresponding to the just-before-first value_type in the container.

    - - -
    -
    inline const_reverse_iterator
    -  rend
    -  () const
    - - -
    -

    Returns a const_reverse_iterator corresponding to the just-before-first value_type in the container.

    - - -
    - -

    -Node-Iteration methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline node_iterator
    -  node_begin
    -  ()
    - - -
    -

    Returns a node_iterator corresponding to the value_type at the root of the tree.

    - - -
    -
    inline const_node_iterator
    -  node_begin
    -  () const
    - - -
    -

    Returns a const_node_iterator corresponding to the value_type at the root of the tree.

    - - -
    -
    inline node_iterator
    -  node_end
    -  ()
    - - -
    -

    Returns a node_iterator corresponding to a value_type just after a leaf of the tree.

    - - -
    -
    inline const_node_iterator
    -  node_end
    -  () const
    - - -
    -

    Returns a const_node_iterator corresponding to a value_type just after a leaf of the tree.

    - - -
    - -

    -Split and join methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  join
    -  (basic_tree_assoc_cntnr &r_other)
    - - -
    -

    Joins two trees. When this function returns, r_other will be empty.

    - - -

    When calling this function, r_other's keys must be all larger or all smaller than this object's keys.

    - - -
    -
    inline void
    -  split
    -  (const_key_reference r_key,
    -    basic_tree_assoc_cntnr &r_other)
    - - -
    -

    Joins two trees. When this function returns, r_other will be empty.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_const_node_iterator.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_const_node_iterator.html deleted file mode 100644 index 47095a62a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_const_node_iterator.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - -basic_tree_assoc_cntnr::const_node_iterator Interface - - - - - -

    -basic_tree_assoc_cntnr::const_node_iterator - - - Interface - - -

    - -

    Const node iterator. -

    - -

    This is an -

    - -
      -
    1. -Public Types and Constants: - - -
        -
      1. -Iterator definitions. - - -
      2. - -
      3. -Value-type definitions. - - -
      4. - -
      - -
    2. - -
    3. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Access methods. - - -
      4. - -
      5. -Movement methods. - - -
      6. - -
      7. -Comparison methods. - - -
      8. - -
      - -
    4. - -
    - - -

    -Iterator definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    iterator_category
    - - -
    -
    trivial_iterator_tag
    - - -
    -

    Category. comment =

    - - -
    -
    difference_type
    - - -
    -
    void
    - - -
    -

    Difference type.

    - - -
    - -

    -Value-type definitions. - - -

    - -

    Note that a node iterator's value type is actually a tree iterator.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    value_type
    - - -
    -
    const_iterator
    - - -
    -

    Iterator's value type.

    - - -
    -
    pointer
    - - -
    -
    const_iterator *
    - - -
    -

    Iterator's pointer type.

    - - -
    -
    const_pointer
    - - -
    -
    const_iterator *
    - - -
    -

    Iterator's const pointer type.

    - - -
    -
    reference
    - - -
    -
    const_iterator &
    - - -
    -

    Iterator's reference type.

    - - -
    -
    const_reference
    - - -
    -
    const iterator &
    - - -
    -

    Iterator's const reference type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline
    -  const_node_iterator
    -  (const node_pointer p_nd = NULL)
    - - -
    -

    Default constructor.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    - -

    -Access methods. - - -

    - - - - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline const_iterator
    -  operator*
    -  () const
    - - -
    -

    Access.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    - -

    -Movement methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline const_node_iterator
    -  l_child
    -  () const
    - - -
    -

    Returns the const node iterator associated with the left node.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    -
    inline const_node_iterator
    -  r_child
    -  () const
    - - -
    -

    Returns the const node iterator associated with the right node.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    - -

    -Comparison methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline bool
    -  operator==
    -  (const const_node_iterator &r_other) const
    - - -
    -

    Compares content to a different iterator object.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    -
    inline bool
    -  operator!=
    -  (const const_node_iterator &r_other) const
    - - -
    -

    Compares content (negatively) to a different iterator object.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_node_iterator.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_node_iterator.html deleted file mode 100644 index c9f4fb703..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_node_iterator.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - -basic_tree_assoc_cntnr::node_iterator Interface - - - - - -

    -basic_tree_assoc_cntnr::node_iterator - - - Interface - - -

    - -

    Node iterator. -

    - -

    This is an -

    - -
      -
    1. -Base classes. - - -
    2. - -
    3. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Access methods. - - -
      4. - -
      5. -Movement methods. - - -
      6. - -
      - -
    4. - -
    - - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    const_node_iterator
    - - -
    -

    public

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline
    -  node_iterator
    -  (const node_pointer p_nd = NULL)
    - - -
    -

    Default constructor.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    - -

    -Access methods. - - -

    - - - - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline iterator
    -  operator*
    -  () const
    - - -
    -

    Access.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    - -

    -Movement methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline node_iterator
    -  l_child
    -  ()
    - - -
    -

    Returns the node iterator associated with the left node.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    -
    inline node_iterator
    -  r_child
    -  ()
    - - -
    -

    Returns the node iterator associated with the right node.

    - - -
    -

    O(1) worst.

    - - -
    -3 - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev.html deleted file mode 100644 index b9596f388..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev.html +++ /dev/null @@ -1,771 +0,0 @@ - - - - - - -basic_tree_assoc_cntnr Interface - - - - - -

    -basic_tree_assoc_cntnr - - - Interface - - -

    - -

    A basic tree-based associative container specialized for underlying data-structure which do not support reverse iteration. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -General container definitions. - - -
      2. - -
      3. -Key-type definitions. - - -
      4. - -
      5. -Policy definitions. - - -
      6. - -
      7. -Iterator definitions. - - -
      8. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      5. -Erase methods. - - -
      6. - -
      7. -Node-Iteration methods. - - -
      8. - -
      9. -Split and join methods. - - -
      10. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    Cmp_Fn
    - - -
    -

    Comparison functor.

    - - -
    -- - - -
    -
    Node_Updator
    - - -
    -

    Node updator type.

    - - -

    Node Invariants explains this concept.

    - - -
    -- - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -- - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Node_Updator
    - - -
    -

    public

    - - -
    - -

    -General container definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    typename Allocator::size_type
    - - -
    -

    Size type.

    - - -
    - -

    -Key-type definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_key_reference
    - - -
    -
    typename Allocator::template rebind<
    -    Key>::other::const_reference
    - - -
    -

    Const key reference type.

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    cmp_fn
    - - -
    -
    Cmp_Fn
    - - -
    -

    Comparison functor type.

    - - -
    -
    node_updator
    - - -
    -
    Node_Updator
    - - -
    -

    Node updator type.

    - - -
    - -

    -Iterator definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_iterator
    - - -
    -
    Underlying data-structure's const range-type iterator.
    - - -
    -

    Const range-type iterator.

    - - -
    -
    iterator
    - - -
    -
    Underlying data-structure's range-type iterator.
    - - -
    -

    Range-type iterator.

    - - -
    -
    const_node_iterator
    - - -
    -
    basic_tree_assoc_cntnr::const_node_iterator
    - - -
    -

    Const node iterator.

    - - -
    -
    node_iterator
    - - -
    -
    basic_tree_assoc_cntnr::node_iterator
    - - -
    -

    Node iterator.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual
    -  ~basic_tree_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    cmp_fn &
    -  get_cmp_fn
    -  ()
    - - -
    -

    Access to the cmp_fn object.

    - - -
    -
    const cmp_fn &
    -  get_cmp_fn
    -  () const
    - - -
    -

    Const access to the cmp_fn object.

    - - -
    -
    node_updator &
    -  get_node_updator
    -  ()
    - - -
    -

    Access to the node_updator object.

    - - -
    -
    const node_updator &
    -  get_node_updator
    -  () const
    - - -
    -

    Const access to the node_updator object.

    - - -
    - -

    -Erase methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  erase
    -  (const_key_reference r_key)
    - - -
    -

    Erases the value_type associated with r_key; returns the number of value_types erased (0 or 1).

    - - -
    -
    inline iterator
    -  erase
    -  (iterator it)
    - - -
    -

    Erases the value_type corresponding to the iterator it. Returns the iterator corresponding to the next value_type.

    - - -
    - -

    -Node-Iteration methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline node_iterator
    -  node_begin
    -  ()
    - - -
    -

    Returns a node_iterator corresponding to the value_type at the root of the tree.

    - - -
    -
    inline const_node_iterator
    -  node_begin
    -  () const
    - - -
    -

    Returns a const_node_iterator corresponding to the value_type at the root of the tree.

    - - -
    -
    inline node_iterator
    -  node_end
    -  ()
    - - -
    -

    Returns a node_iterator corresponding to a value_type just after a leaf of the tree.

    - - -
    -
    inline const_node_iterator
    -  node_end
    -  () const
    - - -
    -

    Returns a const_node_iterator corresponding to a value_type just after a leaf of the tree.

    - - -
    - -

    -Split and join methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  join
    -  (basic_tree_assoc_cntnr &r_other)
    - - -
    -

    Joins two trees. When this function returns, r_other will be empty.

    - - -
    -
    inline void
    -  split
    -  (const_key_reference r_key,
    -    basic_tree_assoc_cntnr &r_other)
    - - -
    -

    Joins two trees. When this function returns, r_other will be empty.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev_it.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev_it.html deleted file mode 100644 index b9596f388..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev_it.html +++ /dev/null @@ -1,771 +0,0 @@ - - - - - - -basic_tree_assoc_cntnr Interface - - - - - -

    -basic_tree_assoc_cntnr - - - Interface - - -

    - -

    A basic tree-based associative container specialized for underlying data-structure which do not support reverse iteration. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -General container definitions. - - -
      2. - -
      3. -Key-type definitions. - - -
      4. - -
      5. -Policy definitions. - - -
      6. - -
      7. -Iterator definitions. - - -
      8. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      5. -Erase methods. - - -
      6. - -
      7. -Node-Iteration methods. - - -
      8. - -
      9. -Split and join methods. - - -
      10. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    Cmp_Fn
    - - -
    -

    Comparison functor.

    - - -
    -- - - -
    -
    Node_Updator
    - - -
    -

    Node updator type.

    - - -

    Node Invariants explains this concept.

    - - -
    -- - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -- - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Node_Updator
    - - -
    -

    public

    - - -
    - -

    -General container definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    typename Allocator::size_type
    - - -
    -

    Size type.

    - - -
    - -

    -Key-type definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_key_reference
    - - -
    -
    typename Allocator::template rebind<
    -    Key>::other::const_reference
    - - -
    -

    Const key reference type.

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    cmp_fn
    - - -
    -
    Cmp_Fn
    - - -
    -

    Comparison functor type.

    - - -
    -
    node_updator
    - - -
    -
    Node_Updator
    - - -
    -

    Node updator type.

    - - -
    - -

    -Iterator definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    const_iterator
    - - -
    -
    Underlying data-structure's const range-type iterator.
    - - -
    -

    Const range-type iterator.

    - - -
    -
    iterator
    - - -
    -
    Underlying data-structure's range-type iterator.
    - - -
    -

    Range-type iterator.

    - - -
    -
    const_node_iterator
    - - -
    -
    basic_tree_assoc_cntnr::const_node_iterator
    - - -
    -

    Const node iterator.

    - - -
    -
    node_iterator
    - - -
    -
    basic_tree_assoc_cntnr::node_iterator
    - - -
    -

    Node iterator.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    virtual
    -  ~basic_tree_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    cmp_fn &
    -  get_cmp_fn
    -  ()
    - - -
    -

    Access to the cmp_fn object.

    - - -
    -
    const cmp_fn &
    -  get_cmp_fn
    -  () const
    - - -
    -

    Const access to the cmp_fn object.

    - - -
    -
    node_updator &
    -  get_node_updator
    -  ()
    - - -
    -

    Access to the node_updator object.

    - - -
    -
    const node_updator &
    -  get_node_updator
    -  () const
    - - -
    -

    Const access to the node_updator object.

    - - -
    - -

    -Erase methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  erase
    -  (const_key_reference r_key)
    - - -
    -

    Erases the value_type associated with r_key; returns the number of value_types erased (0 or 1).

    - - -
    -
    inline iterator
    -  erase
    -  (iterator it)
    - - -
    -

    Erases the value_type corresponding to the iterator it. Returns the iterator corresponding to the next value_type.

    - - -
    - -

    -Node-Iteration methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline node_iterator
    -  node_begin
    -  ()
    - - -
    -

    Returns a node_iterator corresponding to the value_type at the root of the tree.

    - - -
    -
    inline const_node_iterator
    -  node_begin
    -  () const
    - - -
    -

    Returns a const_node_iterator corresponding to the value_type at the root of the tree.

    - - -
    -
    inline node_iterator
    -  node_end
    -  ()
    - - -
    -

    Returns a node_iterator corresponding to a value_type just after a leaf of the tree.

    - - -
    -
    inline const_node_iterator
    -  node_end
    -  () const
    - - -
    -

    Returns a const_node_iterator corresponding to a value_type just after a leaf of the tree.

    - - -
    - -

    -Split and join methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  join
    -  (basic_tree_assoc_cntnr &r_other)
    - - -
    -

    Joins two trees. When this function returns, r_other will be empty.

    - - -
    -
    inline void
    -  split
    -  (const_key_reference r_key,
    -    basic_tree_assoc_cntnr &r_other)
    - - -
    -

    Joins two trees. When this function returns, r_other will be empty.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_ds_tag.html deleted file mode 100644 index e28c0b35c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/basic_tree_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -basic_tree_ds_tag Interface - - - - - -

    -basic_tree_ds_tag - - - Interface - - -

    - -

    Basic tree data-structure tag. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    3. -Base classes. - - -
    4. - -
    - - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    basic_ds_tag
    - - -
    -

    public

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_assoc_cntnr.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_assoc_cntnr.html deleted file mode 100644 index 8124e4bcb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_assoc_cntnr.html +++ /dev/null @@ -1,679 +0,0 @@ - - - - - - -cc_hash_assoc_cntnr Interface - - - - - -

    -cc_hash_assoc_cntnr - - - Interface - - -

    - -

    A collision-chaining hash-based associative container. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -Policy definitions. - - -
      2. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    Hash_Fn
    - - -
    -

    Hash functor.

    - - -
    -
    __gnu_cxx::hash<Key>
    if using gcc;
    stdext::hash_value<Key>
    if using Visual C++ .net - - -
    -
    Eq_Fn
    - - -
    -

    Equivalence functor.

    - - -
    -
    std::equal_to<Key>
    - - -
    -
    Comb_Hash_Fn
    - - -
    -

    Combining hash functor.

    - - -

    If Hash_Fn is not null_hash_fn, then this is the range_hashing function functor; otherwise, this is the ranged_hash function functor.

    - - -
    -
    direct_mask_range_hashing<
    -  Allocator>
    - - -
    -
    Resize_Policy
    - - -
    -

    Resize policy.

    - - -
    -If comb_hash_fn is direct_mask_range_hashing<>, then
    hash_standard_resize_policy<
    -  hash_exponential_size_policy<
    -    typename comb_hash_fn::size_type>,
    -  hash_load_check_resize_trigger<
    -    typename comb_hash_fn::size_type>,
    -  false,
    -  typename comb_hash_fn::size_type>
    otherwise,
    hash_standard_resize_policy<
    -  hash_prime_size_policy<
    -    typename comb_hash_fn::size_type>,
    -  hash_load_check_resize_trigger<
    -    typename comb_hash_fn::size_type>,
    -  false,
    -  typename comb_hash_fn::size_type>
    - - -
    -
    Store_Hash
    - - -
    -

    Indicates whether the hash value will be stored along with each key.

    - - -

    If hash_fn is null_hash_fn, then the container will not compile if this value is true

    - - -
    -
    false
    - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -
    std::allocator<char>
    - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Comb_Hash_Fn
    - - -
    -

    public

    - - -
    -
    basic_hash_assoc_cntnr
    - - -
    -

    public

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    comb_hash_fn
    - - -
    -
    Comb_Hash_Fn
    - - -
    -

    Combining hash functor type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      cc_hash_assoc_cntnr
    -  ()
    - - -
    -

    Default constructor.

    - - -
    -
      cc_hash_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn)
    - - -
    -

    Constructor taking some policy objects. r_hash_fn will be copied by the Hash_Fn object of the container object.

    - - -
    -
      cc_hash_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn)
    - - -
    -

    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_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Hash_Fn &r_comb_hash_fn)
    - - -
    -

    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_assoc_cntnr
    -  (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)
    - - -
    -

    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.

    - - -
    -
    template<
    -    class It>
    -  cc_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it)
    - - -
    -

    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<
    -    class It>
    -  cc_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn)
    - - -
    -

    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<
    -    class It>
    -  cc_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn)
    - - -
    -

    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<
    -    class It>
    -  cc_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Hash_Fn &r_comb_hash_fn)
    - - -
    -

    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<
    -    class It>
    -  cc_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    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)
    - - -
    -

    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.

    - - -
    -
      cc_hash_assoc_cntnr
    -  (const cc_hash_assoc_cntnr &r_other)
    - - -
    -

    Copy constructor.

    - - -
    -
    virtual
    -  ~cc_hash_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    -
    cc_hash_assoc_cntnr &
    -  operator=
    -  (const cc_hash_assoc_cntnr &r_other)
    - - -
    -

    Assignment operator.

    - - -
    -
    void
    -  swap
    -  (cc_hash_assoc_cntnr &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    comb_hash_fn &
    -  get_comb_hash_fn
    -  ()
    - - -
    -

    Access to the comb_hash_fn object.

    - - -
    -
    const comb_hash_fn &
    -  get_comb_hash_fn
    -  () const
    - - -
    -

    Const access to the comb_hash_fn object.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_ds_tag.html deleted file mode 100644 index 87b724ef0..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -cc_hash_ds_tag Interface - - - - - -

    -cc_hash_ds_tag - - - Interface - - -

    - -

    Collision-chaining hash data-structure tag. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    3. -Base classes. - - -
    4. - -
    - - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    basic_hash_ds_tag
    - - -
    -

    public

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_max_collision_check_resize_trigger.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_max_collision_check_resize_trigger.html deleted file mode 100644 index 0b19045d2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_max_collision_check_resize_trigger.html +++ /dev/null @@ -1,701 +0,0 @@ - - - - - - -cc_hash_max_collision_check_resize_trigger Interface - - - - - -

    -cc_hash_max_collision_check_resize_trigger - - - Interface - - -

    - -

    A resize trigger policy based on collision checks. It keeps the simulated load factor lower than some given load factor. -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Load access methods. - - -
      4. - -
      - -
    8. - -
    9. -Protected Methods: - - -
        -
      1. -Insert search notifications. - - -
      2. - -
      3. -Find search notifications. - - -
      4. - -
      5. -Erase search notifications. - - -
      6. - -
      7. -Content change notifications. - - -
      8. - -
      9. -Size change notifications. - - -
      10. - -
      11. -Queries. - - -
      12. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    External_Load_Access
    - - -
    -

    Specifies whether the load factor can be accessed externally. The two options have different tradeoffs in terms of flexibility, genericity, and encapsulation.

    - - -
    -false - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -
    external_load_access
    - - -
    -
    External_Load_Access
    - - -
    -

    Indicates whether loads can be accessed externally

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      cc_hash_max_collision_check_resize_trigger
    -  (float load = 0.5)
    - - -
    -

    Default constructor, or constructor taking load, a load factor which it will attempt to maintain.

    - - -
    -
    void
    -  swap
    -  (cc_hash_max_collision_check_resize_trigger &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Load access methods. - - -

    - -

    These methods are only available if the external access parameter is set.

    - - - - - - - - - - - - - -
    MethodDescription
    -
    inline float
    -  get_load
    -  () const
    - - -
    -

    Returns a pair of the minimal and maximal loads, respectively.

    - - -

    Calling this method will not compile when External_Load_Access == false.

    - - -
    - -

    -Insert search notifications. - - -

    - -

    Notifications called during an insert operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_insert_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_insert_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_insert_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Find search notifications. - - -

    - -

    Notifications called during a find operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_find_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_find_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_find_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Erase search notifications. - - -

    - -

    Notifications called during an insert operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_erase_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_erase_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_erase_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Content change notifications. - - -

    - -

    Notifications called when the content of the table changes in a way that can affect the resize policy.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_inserted
    -  (size_type num_entries)
    - - -
    -

    Notifies an element was inserted.

    - - -
    -
    inline void
    -  notify_erased
    -  (size_type num_entries)
    - - -
    -

    Notifies an element was erased.

    - - -
    -
    void
    -  notify_cleared
    -  ()
    - - -
    -

    Notifies the table was cleared.

    - - -
    - -

    -Size change notifications. - - -

    - -

    Notifications called when the table changes size.

    - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  notify_resized
    -  (size_type new_size)
    - - -
    -

    Notifies the table was resized as a result of this object's signifying that a resize is needed.

    - - -
    -
    void
    -  notify_externally_resized
    -  (size_type new_size)
    - - -
    -

    Notifies the table was resized externally.

    - - -
    - -

    -Queries. - - -

    - -

    Called to query whether/how to resize.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline bool
    -  is_resize_needed
    -  () const
    - - -
    -

    Queries whether a resize is needed.

    - - -
    -
    inline bool
    -  is_grow_needed
    -  (size_type size, size_type num_entries) const
    - - -
    -

    Queries whether a grow is needed.

    - - -

    This method is called only if this object indicated is needed.

    - - -
    -
    inline bool
    -  is_shrink_needed
    -  (size_type size, size_type num_entries) const
    - - -
    -

    Queries whether a shrink is needed.

    - - -

    This method is called only if this object indicated is needed.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_policy_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/cc_hash_policy_cd.jpg deleted file mode 100644 index 63891a851b341ba8d07123db8dcf394343b31fc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27118 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⪕XX*!0xQ=Zm#D$%&tiji@!6<_J{LRN$t6a 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/component_requirements.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/component_requirements.html deleted file mode 100644 index 703e4e0f6..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/component_requirements.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - Component Requirements - - -

    Component Requirements

    -

    Functional Requirements

    -
      -
    1. - Keys: -
        -
      1. - Key objects must be copy-constructible (they need not support assignment). -
      2. - Key objects must be destructible.
      3. -
      -
    2. - Data: -
        -
      1. - Data objects must be copy-constructible (they need not support assignment). -
      2. - Data objects must be default constructible. -
      3. - Data objects must be destructible.
      4. -
    -

    Exception Requirements

    -
    -
      -
    1. - Keys: -
        -
      1. - Key objects must not throw exceptions when destructed. -
      2. - Key objects may throw exceptions when copy constructed.
      3. -
      -
    2. - Data: -
        -
      1. - Data objects must must not throw exceptions when destructed. -
      2. - Data objects may throw exceptions when copy constructed.
      3. -
    -
    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_enabled_ms_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_enabled_ms_tag.html deleted file mode 100644 index 6b70c3fce..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_enabled_ms_tag.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -compound_data_enabled_ms_tag Interface - - - - - -

    -compound_data_enabled_ms_tag - - - Interface - - -

    - -

    Mapping-semantics tag indicating that the container objects maps each key to some compound datum. -

    - -
      -
    1. -ms_trait.hpp - - -
    2. - -
    - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_type.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_type.html deleted file mode 100644 index c9fd7e0f4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_data_type.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - -compound_data_type Interface - - - - - -

    -compound_data_type - - - Interface - - -

    - -

    A data-policy indicating that an associative container has multiple mapping levels. -

    - -
      -
    1. -data_type.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Cntnr
    - - -
    -

    (Associative) container type to which every key in the container maps.

    - - -
    -- - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    cntnr
    - - -
    -
    Cntnr
    - - -
    -

    The type of container which is the actual data type.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_ds_tag.html deleted file mode 100644 index c1cb9ce3c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/compound_ds_tag.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - -compound_ds_tag Interface - - - - - -

    -compound_ds_tag - - - Interface - - -

    - -

    Compound data-structure tag. -

    - -

    Indicates that the underlying data-structure is a composition of other data structures. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    3. -Base classes. - - -
    4. - -
    - - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    basic_ds_tag
    - - -
    -

    public

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/concepts.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/concepts.html deleted file mode 100644 index cd7295891..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/concepts.html +++ /dev/null @@ -1,124 +0,0 @@ - - - -Concepts - - - - -

    Concepts

    - -

    -Following are some concepts used throughout the documentation. -

    - -
      -
    1. Null Policy Classes
    2. -
    3. Find and Range Iterators
    4. -
    5. Mapping Levels
    6. -
    - -

    Null Policy Classes

    - -

    - Associative containers are typically parameterized by various policies. -For example, a hash-based associative -container is parameterized by a hash-functor, transforming each key into an non-negative numerical type. Each such value is then further mapped into a position within the table. -The mapping of a key into a position within the table is therefore a two-step process. -

    - -

    -In some -cases, instantiations are redundant. For example, when the keys are integers, it is possible to use a redundant -hash policy, which transforms each key into its value. -

    - -

    - In some other cases, these policies are irrelevent. For example, -a hash-based associative container might transform keys into positions within -a table by a different method than the two-step method described above. In such a case, the hash functor is simply irrelevent. -

    - -

    - pb_assoc uses special pre-defined "null policies" classes -for these cases. Some null policies in pb_assoc -are: -

    -
      -
    1. null_data_type
    2. -
    3. null_node_updator
    4. -
    5. null_hash_fn
    6. -
    7. null_probe_fn
    8. -
    - -

    -A "set" in pb_assoc is an associative container with its Data_Parameter instantiated by -null_data_type. -Tree-Based Containers::Node Invariants -explains another case where a null policy is needed. -

    - - - -

    Find and Range Methods and Iterators

    - -

    - Associative containers allow access to their elements via iterators. E.g., -find returns an iterator to an element with a given key and -begin returns an iterator to the first element in the container. -

    - -

    -In general, there are two types of methods: find types, and range types. - Find-type -methods return iterators corresponding to elements which have been found in some sense, as -the container searched for them in order to access them (i.e., via the -find method) or searched for their location in order to insert them -(i.e., via the insert method). Range-type methods return iterators -which can be used to traverse the range of all stored elements, (i.e., via the -begin and end methods). -

    - -

    Correspondingly, in pb_assoc there are two types of iterators: find type -iterators are returned by find methods, and range iterators are returned by range methods. For example, -if T is any associative container with integer keys, and t -is a container of type T, -then the following snippet is valid: -

    - -
    -typename T::find_iterator it0 = t.find(3);
    -typename T::const_find_iterator it0 = t.find(3);
    -
    -typename T::iterator it0 = t.begin();
    -typename T::const_iterator it0 = t.begin();
    -
    - - -

    - This is motivated and explained further in -Data-Structure Genericity::Find-Type and Range-Type Methods and Iterators, which also explains the relationship between find-type and range-type iterators. -

    - -

    Mapping Levels

    - -

    - In pb_assoc "multimaps" are -"maps" of "sets". While this design allows efficient -operations, it makes for cumbersome use at points. For example a -"multimap" of integers to characters does not -directly support inser(std::make_pair(2, 'b'), since 2 is mapped -to a "set" of characters, and not to a character. -

    - -

    - Consequently, pb_assoc contains a rebind-like mechanism so that -containers can support such operations. To dispel ambiguity, container types are -assigned mapping levels. "Maps" and "sets" have -a mapping level 1, since they use a single association level. The "multimap" -above has a mapping level 2, since it uses two association levels: one for integers, and one for characters. The rebind mechanism can be used to alter the association level. This is described in -Mapping Semantics. -

    - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/contact.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/contact.html deleted file mode 100644 index 2eb28be48..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/contact.html +++ /dev/null @@ -1,19 +0,0 @@ - - - -Contact - - - - - - -

    Contact

    - -

    -For anything relevant, please write to -pbassoc@gmail.com -

    - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_metadata.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_metadata.html deleted file mode 100644 index fb56b1a0a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_metadata.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - -counter_update_metadata Interface - - - - - -

    -counter_update_metadata - - - Interface - - -

    - -

    A list-update metadata type that moves elements to the front of the list based on the counter algorithm. -

    - -
      -
    1. -counter_update_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Size_Type
    - - -
    -

    Size type which will be used for counting the number of times a node was accessed.

    - - -
    -size_t - - -
    - -

    -General definitions. - - -

    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_policy.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_policy.html deleted file mode 100644 index c54fe3739..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/counter_update_policy.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - -counter_update_policy Interface - - - - - -

    -counter_update_policy - - - Interface - - -

    - -

    A list-update policy that moves elements to the front of the list based on the counter algorithm. -

    - -

    This class is likely to slightly change interface when random number generators become part of the C++ standard. -

    - -
      -
    1. -counter_update_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -Size definitions. - - -
      2. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Information methods. - - -
      4. - -
      - -
    8. - -
    9. -Protected Types and Constants: - - -
        -
      1. -Metadata definitions. - - -
      2. - -
      - -
    10. - -
    11. -Protected Methods: - - -
        -
      1. -Metadata operations. - - -
      2. - -
      - -
    12. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    -
    Metadata_Reference
    - - -
    -

    Metadata reference type.

    - - -
    -
    std::allocator<
    -  counter_update_metadata>::
    -    reference
    -
    -
    -
    - -

    -Size definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type used for counting the number of times each node is accessed until the count is reset to 0 and the node moved to the front of the list.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      counter_update_policy
    -  (size_type max_count = 5)
    - - -
    -

    Constructor. max_count determines the the number of times each node is accessed until the count is reset to 0 and the node moved to the front of the list.

    - - -
    -
    void
    -  swap
    -  (counter_update_policy &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Information methods. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    inline
    -  size_type
    -  get_max_count
    -  () const
    - - -
    -

    Returns the max count of each metadata (number of times it is accessed until moved to the front of the list).

    - - -
    - -

    -Metadata definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    metadata_type
    - - -
    -
    counter_update_metadata
    - - -
    -

    Metadata on which this functor operates.

    - - -
    -
    metadata_reference
    - - -
    -
    Metadata_Reference
    - - -
    -

    Reference to metadata on which this functor operates.

    - - -
    - -

    -Metadata operations. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    metadata_type
    -  operator()
    -  () const
    - - -
    -

    Creates a metadata object.

    - - -
    -
    bool
    -  operator()
    -  (metadata_reference r_data) const
    - - -
    -

    Decides whether a metadata object should be moved to the front of the list.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/data_enabled_ms_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/data_enabled_ms_tag.html deleted file mode 100644 index 7ae1ac067..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/data_enabled_ms_tag.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -data_enabled_ms_tag Interface - - - - - -

    -data_enabled_ms_tag - - - Interface - - -

    - -

    Mapping-semantics tag indicating that the container objects maps each key to some datum. -

    - -
      -
    1. -ms_trait.hpp - - -
    2. - -
    - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/design.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/design.html deleted file mode 100644 index 4eace5f70..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/design.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - Design - - - - -

    Design

    - -
      -
    1. Overview describes an overview.
    2. -
    3. Concepts describes some concepts.
    4. -
    5. Data-Structure Genericity discusses generic manipulation of containers based on different underlying data-structures.
    6. -
    7. Mapping-Semantic Genericity discusses generic manipulation of containers with different mapping semantics.
    8. -
    9. Hash-Based Containers describes the design and policies of hash-based containers.
    10. -
    11. Tree-Based Containers describes the design and policies of tree-based containers.
    12. -
    13. List-Based Containers describes the design and policies of list-based containers with update policies.
    14. -
    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/different_underlying_dss.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/different_underlying_dss.jpg deleted file mode 100644 index 2ddd25718142e0a472cebdeee291716278b425dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34944 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 TNmmz&G=6R&Z=s3x-P3;oXPS!f diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mask_range_hashing.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mask_range_hashing.html deleted file mode 100644 index f1915c31b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mask_range_hashing.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - -direct_mask_range_hashing Interface - - - - - -

    -direct_mask_range_hashing - - - Interface - - -

    - -

    A mask range-hashing class (uses a bit-mask). -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      - -
    8. - -
    9. -Protected Methods: - - -
        -
      1. -Notification methods. - - -
      2. - -
      3. -Operators. - - -
      4. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  swap
    -  (direct_mask_range_hashing &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Notification methods. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  notify_resized
    -  (size_type size)
    - - -
    -

    Notifies the policy object that the container's size has changed to size.

    - - -
    - -

    -Operators. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  operator()
    -  (size_type hash) const
    - - -
    -

    Transforms the hash value hash into a ranged-hash value (using a bit-mask).

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mod_range_hashing.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mod_range_hashing.html deleted file mode 100644 index b9096ccb3..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/direct_mod_range_hashing.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - -direct_mod_range_hashing Interface - - - - - -

    -direct_mod_range_hashing - - - Interface - - -

    - -

    A mod range-hashing class (uses the modulo function). -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      - -
    8. - -
    9. -Protected Methods: - - -
        -
      1. -Notification methods. - - -
      2. - -
      3. -Operators. - - -
      4. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  swap
    -  (direct_mod_range_hashing &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Notification methods. - - -

    - -

    -Operators. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  operator()
    -  (size_type hash) const
    - - -
    -

    Transforms the hash value hash into a ranged-hash value (using a modulo operation).

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/disclaimer.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/disclaimer.html deleted file mode 100644 index c5dcb864b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/disclaimer.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Disclaimer and Copyright - - - - - -

    Disclaimer and Copyright

    - -

    -Revised 16 February, 2004 -

    -© Copyright Ami Tavory and Vladimir Dreizin, IBM-HRL, 2004, and Benjamin Kosnik, Red Hat, 2004. -

    -Permission to use, copy, modify, sell, and distribute this software is hereby granted without fee, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation. -

    -

    -None of the above authors, nor IBM Haifa Research Laboratories, Red Hat, or both, make any representation about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. -

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_gen.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_gen.html deleted file mode 100644 index d7cc0aad2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_gen.html +++ /dev/null @@ -1,368 +0,0 @@ - - - - Data-Structure Genericity - - - - -

    Data-Structure Genericity

    - -

    - This section describes genericity over different underlying data-structures. It is organized as follows. -

    -
      -
    1. The Basic Problem
    2. -
    3. Container Hierarchy
    4. -
    5. Data-Structure Tags and Traits
    6. -
    7. Find-Type and Range-Type Methods and Iterators
    8. -
    - -

    The Basic Problem

    - -

    - The design attempts to address the following problem. When writing a function manipulating a generic container object, what is the behaviour of the object? E.g., suppose one writes -

    -
    -template<
    -    class Cntnr>
    -void some_op_sequence
    -    (Cntnr &r_cntnr)
    -{
    -    ...
    -}
    -
    -then one needs to address the following questions in the body -of some_op_sequence: -
      -
    1. Which types and methods does Cntnr support? Containers based on hash tables can be queries for the hash-functor type and object; this is meaningless for tree-based containers. Containers based on trees can be split, joined, or can erase iterators and return the following iterator; this cannot be done by hash-based containers.
    2. -
    3. - What are the guarantees of Cntnr? A container based on a probing hash-table invalidates all iterators when it is modified; this is not the case for containers based on node-based trees. Containers based on a node-based tree can be split or joined without exceptions; this is not the case for containers based on vector-based trees. -
    4. -
    5. How does the container maintain its elements? containers based on splay trees or lists with update policies "cache" "frequently accessed" elements; containers based on most other underlying data-structures do not.
    6. -
    - -

    Container Hierarchy

    - -

    - Figure -Class hierarchy - shows the container hierarchy. -

    -
      -
    1. -basic_assoc_cntnr -contains types and methods shared by all associative containers, e.g., the type allocator and the method find. -
    2. -
    3. basic_hash_assoc_cntnr subclasses -basic_assoc_cntnr, and contains -types and methods shared by all hash-based containers, e.g., the type hash_fn. -
    4. -
        -
      1. -cc_hash_assoc_cntnr -and -gp_hash_assoc_cntnr -each subclass -basic_hash_assoc_cntnr, and encapsulate collision-chaining and (general) probing hash tables, respectively. These two types of hash tables have somewhat different policies and methods (i.e., constructors and policy-access methods). -
      2. -
      -
    5. -tree_assoc_cntnr -subclasses one of -basic_tree_assoc_cntnr which -subclasses -basic_assoc_cntnr. -tree_assoc_cntnr - encapsulates a tree-based container, and is parameterized by which underlying data-structure to use (e.g., a red-black tree); -basic_assoc_cntnr. -is specialized to the capabilities of the underlying structure. -tree_assoc_cntnr contains some additional methods over -basic_assoc_cntnr, -e.g., split and join methods. -
    6. -
    7. -lu_assoc_cntnr -subclasses -basic_assoc_cntnr, -and encapsulates a list with update policies. -
    8. -
    - -

    - The hierarchy is composed naturally, such that each container inherits -all types and methods from its base. Data-Structure Tags and Traits discusses how to query which types and methods each container supports. -

    - - - -

    Data-Structure Tags and Traits

    - -

    - pb_assoc contains a tag and traits mechanism similar to that of the STL's iterators. -

    - -

    - pb_assoc contains a tag hierarchy corresponding to the hierarchy -in Figure -Class hierarchy. -The tag hierarchy is shown in Figure -Data-structure tag class hierarchy. -

    - -
    - -no image -
    - -
    -Data-structure tag class hierarchy. -
    - -

    - basic_assoc_cntnr publicly defines -ds_category as one of the classes in Figure -. -Given any container Cntnr, the tag of the underlying data-structure can be found via typename Cntnr::ds_category. -

    - -

    - Additionally, a traits mechanism can be used to query a container type for its attributes. Given any container Cntnr, then -ds_traits<Cntnr> -is a traits class identifying the properties of the container. -

    - -

    - To find if a container can throw when a key is erased (which is true for vector-based trees, for example), one can use -

    -ds_traits<Cntnr>::erase_can_throw, -for example. - -

    - Some of the definitions in -ds_traits -are dependent on other definitions. E.g., if -ds_traits<Cntnr>::split_join -is true (which is the case for containers based on trees), -then -ds_traits<Cntnr>::split_join_can_throw -indicates whether splits or joins can throw exceptions (which is true for vector-based trees); otherwise -ds_traits<Cntnr>::split_join_can_throw -will yield a compilation error. (This is somewhat similar to a compile-time -version of the COM model -[mscom]). - - -

    Find-Type and Range-Type Methods and Iterators

    - -

    - pb_assoc differentiates between two types of methods: find-type methods, and range-type methods. For example, find is a find-type method, since a container object searches for an element with a given key; insert is a find-type method, since, by STL convention, a container object returns an iterator corresponding to an element with a given key; begin and end are range-type methods, since they are not used to find a specific element, but rather to go over all elements in a container object. -

    - -

    - Correspondingly, containers in pb_assoc define two families of iterators. const_find_iterator and find_iterator are the iterator types returned by find-type methods; const_iterator and iterator are the iterator types returned by range-type methods. -

    - -

    - The relationship between these iterator types varies between container types. In a tree-based container, for example, const_find_iterator and const_iterator are synonymous, and find_iterator and iterator are synonymous; in a hash-based container, for example, this is not the case. Futhermore, find-type iterators in a hash-based container lack movement operators, such as - operator++. - All containers, however, maintain the invariants shown in Figure - -. -

    - - -

    - This distinction between find-type and range-type iterators and methods, while complicating the interface, has several advantages: -

    - -

    Iterators in unordered container types

    - -

    - Given an unordered container type, e.g., a hash-based container, it makes no sense to move an iterator returned by a find-type method. -Let cntnr be an associative-container object, and -consider: -

    - -
    -std::for_each(m.find(1), m.find(5), foo);
    -
    - -

    -which applies foo to all elements in m -between 1 and 5. -

    - -

    If cntnr is a -tree-based container object, then an in-order walk will apply foo -to the relevant elements, e.g., as in Figure -Range iteration in different data-structures --A. If m is a -hash-based container, then the order of elements between any two -elements is undefined (and probably time-varying); there is no -guarantee that the elements traversed will coincide with the -logical elements between 1 and 5, e.g., as in -Figure Range iteration in different data-structures-B. -

    - -

    -The application of a -range function e.g., for_each, to a -pair of hash-based container's iterators is possibly sensical only -if the iterators are those returned by begin and end, -respectively. Therefore, the iterator returned by -m's find method should be immovable. -

    - -

    - Another point also indicates that hash-based containers' -find-type iterators and range-type iterators should be distinct. -Consider Figure - -Find-type iterators in hash tables-A. -An -(immovable) find-type iterator, designed only to access an -element, requires at most a single pointer to the element's link. -Conversely, an iterator designed for range operations -requires some more information e.g., the bucket number), -since a cross-list traversal might be necessary. Alternatively, -the lists might be linked, forming a monolithic total-element -list, as in Figure - -Find-type iterators in hash tables-B (this seems -similar to the Dinkumware design -[dinkumware_stl]). This, -however, complicates the hash-table's operations. - -

    - -no image - -
    -
    -Range iteration in different data-structures. -
    - - -
    - -no image - -
    -
    -Find-type iterators in hash tables. -
    - -

    - As a consequence of this design, -

    - -
    -std::for_each(m.find(1), m.find(5), foo);
    -
    - -

    - will compile for tree-based containers, but will not compile -for hash-tables or other types. The returned type of find -is a find-type iterator. For tree-based containers, this is synonymous -with a range-type iterator, and therefore supports operator++; -for other types of containers, a find-type iterator lacks operator++. -

    - -

    Invalidation Guarantees

    - -

    - Consider the following snippet: -

    - -
    -it = c.find(3);
    -
    -c.erase(5);
    -
    - -

    - Following the call to erase, what is the validity -of it: can it be dereferenced? can it be incremented? -

    - -

    - The answer depends on the underlying data-structure of the container. -Figure -Effect of erase in different underlying data-structures -shows three cases: A1 and A2 show a red-black tree; -B1 and B2 show an ordered-vector tree; C1 and C2 -show a collision-chaining hash table. -

    - -
    - -no image -
    - -
    -Effect of erase in different underlying data-structures. -
    - - -
      -
    1. - `Erasing 5 from A1 yields A2. Clearly, an iterator to 3 - can be dereferenced and incremented. -
    2. -
    3. - Erasing 5 from B1 yields B2. Clearly, an iterator to 3 is - not valid at all. -
    4. -
    5. - Erasing 5 from C1 yields C2. Here the situation is more complicated. -On the one hand, incrementing it can be undefined. On the other -hand, there is no problem in dereferencing it. In -classic STL, it is not possible to express whether it -is valid or not. -
    6. -
    - -

    - Thus again, the iterator concept seems overloaded. Distinguishing -between find and range types allows fine-grained invalidation guarantees. -Invalidation guarantees class hierarchy -shows tags corresponding to different types of invalidation guarantees. -

    - -
    - -no image -
    - -
    -Invalidation guarantees class hierarchy. -
    - -
      -
    1. basic_invalidation_guarantee corresponds to a basic guarantee that a find-type iterator, a found pointer, or a found reference, remains valid as long as the container object is not modified. -
    2. -
    3. find_invalidation_guarantee corresponds to a guarantee that a find-type iterator, a found pointer, or a found reference, remains valid even if the containter object is modified. -
    4. -
    5. range_invalidation_guarantee corresponds to a guarantee that a range-type iterator remains valid even if the containter object is modified. -
    6. -
    - - -

    - To find the invalidation guarantee of a container, one can use -

    -
    -typename ds_traits<Cntnr>::invalidation_guarantee
    -
    - -

    - which is one of the classes in Figure -Invalidation guarantees class hierarchy. -

    - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_tag_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ds_tag_cd.jpg deleted file mode 100644 index 0526f8649fcaa6317fac3b6a1ca9493495789e9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54661 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 - - - - -ds_traits Interface - - - - - -

    -ds_traits - - - Interface - - -

    - -

    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. -

    - -
    - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/embedded_lists_1.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/embedded_lists_1.jpg deleted file mode 100644 index 0d6569ad56622e0aebc0383ac28d556f1bc9afa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24191 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 pP$xv*4BLX)mcZ?u;ckOnWB - - -Examples - - - - -

    Examples

    - -
      -
    1. Basic use
    2. -
    3. Generics
    4. -
    5. Hash-Based Containers
    6. -
    7. Tree-Based Containers
    8. -
    - -

    Basic Use

    - -
      -
    1. basic_map.cc- Basic use of "maps".
    2. -
    3. basic_set.cc- Basic use of "sets". -See -Mapping Semantics::Data Types as a Policy. -
    4. -
    5. basic_multimap.cc- Basic use of "multimaps". -See - Mapping Semantics::Data Types as a Policy. -
    6. -
    7. erase_if.cc- Conditionally -erasing values from a container object. -See -Motivation::Choice of Methods. -
    8. -
    - - - -

    Generics

    - -
      -
    1. ds_traits.cc- -Using -ds_traits to query about underlying -data-structure behaviour. -See -Data-Structure Genericity::Data-Structure Tags and Traits. -
    2. -
    3. mapping_level.cc- -Rebinding a compound associative-container to different mapping levels. -See -Mapping-Semantics::Mapping Levels. -
    4. -
    5. ms_traits.cpp- -Using ms_traits -to query about mapping semantics. -See -Mapping-Semantics::Tags and Traits. -
    6. -
    7. cc_ht_extract_key.cc- - Extracting the key from different types. -
    8. -
    - - -

    Hash-Based Containers

    - -

    - See -Hash-Based Containers. -

    - -

    General

    - -
      -
    1. - hash_bad_find.cc- - A non-compiling example showing wrong use of finding keys in hash-based - containers. - See - Data-Structure Genericity::Find-Type and Range-Type Methods and Iterators. -
    2. -
    - - -

    Resize-Related

    - -

    See - Hash-Based Containers::Resize Policies. -

    - -
      -
    1. - hash_initial_size.cc- - Setting the initial size of a hash-based container object. -
    2. -
    3. - hash_bad_resize.cc- - A non-compiling example showing how not to resize a hash-based container object. -
    4. -
    5. - hash_resize.cc- - Resizing the size of a hash-based container object. -
    6. -
    7. hash_illegal_resize.cc- - Showing an illegal resize of a hash-based container object. -
    8. -
    9. - hash_load_set_change.cc- - Changing the load factors of a hash-based container object. -
    10. -
    - - -

    Hash-Related

    - -

    See - Hash-Based Containers::Hash Policies. -

    - -
      -
    1. - hash_mod.cc- -Using a modulo range-hashing function. -
    2. -
    3. - store_hash.cc- - Storing the hash value along with each key. -
    4. -
    5. - shift_mask.cc- - Writing a range-hashing functor. -
    6. -
    7. ranged_hash.cc- - Writing - a ranged-hash functor.
    8. -
    - - - - - -

    Tree-Based Containers

    - -

    - See -Tree-Based Containers. -

    - -

    Node-Invariatns

    - -

    - See -Tree-Based Containers::Node Invariants. -

    - -
      -
    1. tree_order_statistics.cc- -Using trees for order statistics. -
    2. -
    3. tree_intervals.cc- Augmenting an -ov_tree_set -to support operations on line intervals. -
    4. -
    - -

    Split and Join

    - -

    - See -Tree-Based Containers::Additional Types and Methods. -

    - -
      -
    1. tree_join.cc- Joining -two tree-based container objects. -
    2. -
    3. tree_split.cc- Splitting -a tree-based container object. -
    4. -
    5. tree_order_statistics_join.cc- Order statistics while joining two tree-based container objects. -
    - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/exception_guarantees_specifics.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/exception_guarantees_specifics.html deleted file mode 100644 index 48f12bcfb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/exception_guarantees_specifics.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - Exception Guarantee Specifics - - -

    Exception Guarantee Specifics

    -The following represent exception guaratee specifics, subject to the component exception-requirements. -
      -
    1. No resources are leaked in the face of exceptions. In particular, this means: -
        -
      1. By the time a container's destructor completes: -
          -
        1. It has returned all memory it has allocated to the appropriate deallocation function.
        2. -
        3. The destructor has been called for all objects constructed by the container.
        4. -
        -
      2. Algorithms destroy all temporary objects and deallocate all temporary memory even if the algorithm does not complete due to an exception.
      3. -
      4. Algorithms which construct objects either complete successfully or destroy any objects they have constructed at the time of the exception.
      5. -
      6. Algorithms which destruct objects always succeed.
      7. -
      8. Containers continue to fulfill all of their requirements, even after an exception occurs during a mutating function. For example, they will never give an inaccurate report of its size, or fail to meet performance requirements because of some thrown exception.
      9. -
      -
    2. -
    3. The strong guarantee: If an operation on a container fails due to an exception, then, semantically, the operation is a no-op applied to the container.
    4. -
    5. The operation cannot throw an exception.
    6. -
    -(The phrasing of the above is based on [abrahams97exception].) - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_invalidation_guarantee.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_invalidation_guarantee.html deleted file mode 100644 index 38d94470b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_invalidation_guarantee.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -find_invalidation_guarantee Interface - - - - - -

    -find_invalidation_guarantee - - - Interface - - -

    - -

    Signifies an invalidation guarantee that includes all those of its base, and additionally, that any find-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. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    3. -Base classes. - - -
    4. - -
    - - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    basic_invalidation_guarantee
    - - -
    -

    public

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_cd.jpg deleted file mode 100644 index 5b0e80dedeab7059f34834a5906fbfc207df1b3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48752 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 Mq#J<%?=MsT2cZ-37XSbN diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_range_ops_1.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_range_ops_1.jpg deleted file mode 100644 index 6cc788fc4fdcb3dbc7cbfc56fef24876ffc36f99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18521 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 K9Y(BPkNqD3YyJ)Z diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_range_ops_2.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/find_iterators_range_ops_2.jpg deleted file mode 100644 index 5e567e42cb3a6a4ce190e55eacc6beeb04eabbfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25683 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/generics.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/generics.html deleted file mode 100644 index 5b7f2fb7f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/generics.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Generics - - - - -

    Generics

    - -

    - Naturally, the ability to program generically different associative containers, is beneficial. -The distinction in this library between data_types and -mapped_data_types, and between value_types and -mapped_value_types, somewhat complicates this. -

    - -

    - The generic utility classes ease static detection of different associative-container -types (e.g., whether they are map or multimap types), and the extraction of data from iterators. -

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_assoc_cntnr.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_assoc_cntnr.html deleted file mode 100644 index 3451380f5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_assoc_cntnr.html +++ /dev/null @@ -1,816 +0,0 @@ - - - - - - -gp_hash_assoc_cntnr Interface - - - - - -

    -gp_hash_assoc_cntnr - - - Interface - - -

    - -

    A general-probing hash-based associative container. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -Policy definitions. - - -
      2. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    Hash_Fn
    - - -
    -

    Hash functor.

    - - -
    -
    __gnu_cxx::hash<Key>
    if using gcc;
    stdext::hash_value<Key>
    if using Visual C++ .net - - -
    -
    Eq_Fn
    - - -
    -

    Equivalence functor.

    - - -
    -
    std::equal_to<Key>
    - - -
    -
    Comb_Probe_Fn
    - - -
    -

    Combining probe functor.

    - - -

    If Hash_Fn is null_hash_fn, and Probe_Fn is comb_probe_fn, then this is the ranged_hash function functor; otherwise, this is the range_hashing function functor;

    - - -
    -
    direct_mask_range_hashing<
    -  Allocator>
    - - -
    -
    Probe_Fn
    - - -
    -

    Probe functor.

    - - -
    -If comb_hash_fn is direct_mask_range_hashing<>, then
    linear_probe_fn<
    -  typename comb_hash_fn::size_type>
    otherwise,
    quadratic_probe_fn<
    -  typename comb_hash_fn::size_type>
    - - -
    -
    Resize_Policy
    - - -
    -

    Resize policy.

    - - -
    -If comb_hash_fn is direct_mask_range_hashing<>, then
    hash_standard_resize_policy<
    -  hash_exponential_size_policy<
    -    typename comb_hash_fn::size_type>,
    -  hash_load_check_resize_trigger<
    -    typename comb_hash_fn::size_type>,
    -  false,
    -  typename comb_hash_fn::size_type>
    otherwise,
    hash_standard_resize_policy<
    -  hash_prime_size_policy<
    -    typename comb_hash_fn::size_type>,
    -  hash_load_check_resize_trigger<
    -    typename comb_hash_fn::size_type>,
    -  false,
    -  typename comb_hash_fn::size_type>
    - - -
    -
    Store_Hash
    - - -
    -

    Indicates whether the hash value will be stored along with each key.

    - - -

    If hash_fn is null_hash_fn, then the container will not compile if this value is true

    - - -
    -
    false
    - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -
    std::allocator<char>
    - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Comb_Probe_Fn
    - - -
    -

    public

    - - -
    -
    Probe_Fn
    - - -
    -

    public

    - - -
    -
    basic_hash_assoc_cntnr
    - - -
    -

    public

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    comb_probe_fn
    - - -
    -
    Comb_Probe_Fn
    - - -
    -

    Combining probe functor type.

    - - -
    -
    probe_fn
    - - -
    -
    Probe_Fn
    - - -
    -

    Probe functor type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      gp_hash_assoc_cntnr
    -  ()
    - - -
    -

    Default constructor.

    - - -
    -
      gp_hash_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn)
    - - -
    -

    Constructor taking some policy objects. r_hash_fn will be copied by the Hash_Fn object of the container object.

    - - -
    -
      gp_hash_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn)
    - - -
    -

    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_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Probe_Fn &r_comb_probe_fn)
    - - -
    -

    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_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Probe_Fn &r_comb_probe_fn,
    -    const Probe_Fn &r_probe_fn)
    - - -
    -

    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_assoc_cntnr
    -  (const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Probe_Fn &r_comb_probe_fn,
    -    const Probe_Fn &r_probe_fn,
    -    const Resize_Policy &r_resize_policy)
    - - -
    -

    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.

    - - -
    -
    template<
    -    class It>
    -  gp_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it)
    - - -
    -

    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<
    -    class It>
    -  gp_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn)
    - - -
    -

    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<
    -    class It>
    -  gp_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn)
    - - -
    -

    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<
    -    class It>
    -  gp_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Probe_Fn &r_comb_probe_fn)
    - - -
    -

    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<
    -    class It>
    -  gp_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Probe_Fn &r_comb_probe_fn,
    -    const Probe_Fn &r_probe_fn)
    - - -
    -

    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<
    -    class It>
    -  gp_hash_assoc_cntnr
    -  (It first_it,
    -    It last_it,
    -    const Hash_Fn &r_hash_fn,
    -    const Eq_Fn &r_eq_fn,
    -    const Comb_Probe_Fn &r_comb_probe_fn,
    -    const Probe_Fn &r_probe_fn,
    -    const Resize_Policy &r_resize_policy)
    - - -
    -

    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.

    - - -
    -
      gp_hash_assoc_cntnr
    -  (const gp_hash_assoc_cntnr &r_other)
    - - -
    -

    Copy constructor.

    - - -
    -
    virtual
    -  ~gp_hash_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    -
    gp_hash_assoc_cntnr &
    -  operator=
    -  (const gp_hash_assoc_cntnr &r_other)
    - - -
    -

    Assignment operator.

    - - -
    -
    void
    -  swap
    -  (gp_hash_assoc_cntnr &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    comb_probe_fn &
    -  get_comb_probe_fn
    -  ()
    - - -
    -

    Access to the comb_probe_fn object.

    - - -
    -
    const comb_probe_fn &
    -  get_comb_probe_fn
    -  () const
    - - -
    -

    Const access to the comb_probe_fn object.

    - - -
    -
    probe_fn &
    -  get_probe_fn
    -  ()
    - - -
    -

    Access to the probe_fn object.

    - - -
    -
    const probe_fn &
    -  get_probe_fn
    -  () const
    - - -
    -

    Const access to the probe_fn object.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_ds_tag.html deleted file mode 100644 index 247a193d1..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -gp_hash_ds_tag Interface - - - - - -

    -gp_hash_ds_tag - - - Interface - - -

    - -

    General-probing hash data-structure tag. -

    - -
      -
    1. -ds_trait.hpp - - -
    2. - -
    3. -Base classes. - - -
    4. - -
    - - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    basic_hash_ds_tag
    - - -
    -

    public

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_policy_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/gp_hash_policy_cd.jpg deleted file mode 100644 index 395349fae8d81bb4c38e2573fd3be62657e520ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39817 zcmeEu1yo#Hmi8?QcXyXSaCc3Dg`f$p2@>219xS*82oNB+Cb$Pe2(H21p>POL6$n(& zzuxpr_j^fCzs#(j`Tu{dF4kGpy0z=xvv(cY``h0>H?udZ0RDXiWd#5P0s&@-Kj3Bo zxC@}8qN1UqprfIoVPK$RViV(FV_{)a5E9`L(@@gU(oj-U(=&6k(lc^0QB$*t+~(xv z6BHDrV-=GU<(K3Z5aj>uCLjz93~VfHavU6Teg&BFfxuuSWH1T}GBQHiAMrVWOn^ej zz$b@Fr1=<)(S?{lC?OY}=}vV!iPjjDS>TClFa{TSr$<-@x3$((0+Tjjfxz$1_haZ=aACp<&?>kx_|BuaZ+zU#F$#nyS5sS8-_ZEJskx)GtGlPSuYX{CVsdJFW_E6V4YIzmxwXBsy9fJveDdw|4F3K6 zH@!dr_%CYxRkI)TB0%Vcgp3SEM*B@K5RxaNfeDaN82C^L4+`>SGq(`z2U27?ek9+&`-0nX0Z@&Yk` zrLFlft=<6Gre2EoKeRx%5?tJbnp#&i>J!n6RbCrVC=v8gleqerort~Lt*{|9 z9C1!BkCtJN$m*ScOAN z#s_~D&8W}!lW?LcsJ4+Us2$3qx$gIB#THb3Y;2a7(9cOW0`DjZf)Z{3bk>j?VCNA+ zWvDSicOu0f4dYG{S-5{t0?#%X8+tE4KJ=b2yg%u4e82;jxK|*uAEkdXBiqcvHBr*q zN^NYuD%tY$Yqzae3o*~dhK!^2$G2PU$UQj3c*q#a$36J5J-*A05Q8#)p-(o8d*_zP zlg}CrVhhL!%`LQs-yLM3g2aT9Js>5VeoxN1wiBG})2&CKN_WY2b890c9&(hn$8q3Y1)#NjB*Qr`f7s%S{AS7nb0)0o3IJ3QPS$n?5P{Lti* zVHigr0ktch&wlE|sPP^#A>U{Tjv&l_ajKviNvQKsOodlJQlP*M@TcSDgWYQ$u5rk; z*LF~kmeL#ks#B&Atx+_YpUtIr%?eEoI~k&I;*^vrG+2`Nv^CGdVq15Yv5s+Wvv9V1 zUlGug{gq4R%6~p!_ntdwR8yW9_}^~2GOJGC3F=JGPt-S!QQWRkZ-4|U`5U0}-t{BU z=p$V+UIW9A-Ji!gF|k_`tF$!_)sYHIcsLL0vBVsBxYpk{BtPpXen+9_gYPqnR z62`#BcLG(BRF_lSum@6)D%Y4l0Y0a&H&B@Gl%RN z+l-%_HrF)^YfwcCS~MmNQsrs!-pOhUM3F17hS|_L@l|p8db2EMXs}_=l7n|p)!mX- zh(RW2-9B8YVJoH%ca~0I1PLt4sLbmOx|3P2E7X?0T*|@tr&X;+YzK4YU5e*S8HIbF zn)3`MiUbl#!HgwM(4cjc5tEG2>#S6{Ml^gLoU2uF@KMavfvN1c2V9HBP`$B5so&yQ zgYd;ScAxl;KuJ&i`Wl&qd8@1_K{~jy;Ou%FEhC}yiqu0IF(!IvjEcfbo}9)W(Q<_Z zi-yu%iq_#O_O4;pdGZ`8Wl#ii)M5Updqf>v5PmW!U)$)B$VN(n9#_oXW)6f5+xE^n z$kfTyNso{%NLDh9%!_>YUTTz1+a?CBlj-=}-vz6GQpy`A>UAQBxU6P$u)iga%=}f{ zEd5K${Gd9#)6ywl&Iy#H{CZE*Fh_$}+?%t_P%;|$AH(<`xC40lS7D~JW<9Ch)mXl3dG?R6NBnaES=Vl z4pt(w_+=I-8?rYtxCJk=Ii8zcbK|)K+*5uA{u^TblSal<>_vUZ7G< z3S-D(UpST2N92WLK#d>``&_*QlU2i43dcU~mNelKv4<&=+fsIO1rwZBAAFnaSA8St zg-4j^S@MSO(`onb>gz0{LqDcBx99Bc(1cLS;-WKzNdffuXw({LD5W;?l`XmfHmIQx z9Ny2pTJ@iF!uFPuQ8$!b&Ys1*m6D+S=JcR`Tv8Fnq|}_MMmV31*(uc`64+<{xtL<< z%}cz8Ny{Jn?{-MjOw|*VnC>*_ikJbGiTEm@3D2|Yqx3OV@d1f3pOmWd(HDl1cYqFF zS0b6E5z!o6#kDd%gLa6o9+O`ADhy>@o)DYU?uDr4D6Trv2cMqi`cD&)h@Ht-bwXyG z#rv@3dpgZHwciT6FvO)_bVq#h*)hCov5VXNiiDn9vM26b$E;~1@GO368Xk0^ zW5N^;R%tdRvTF#IW5735r|il8=+efQbUs~_TVQiu+2dnN%iQcjx03_yGkL;L?f(8Y+KsVOD)j@r1H9Vq(-Dro307BsXngf#Z<%7^n-r_Y#5B6Yj7EY* zlY0aa6H=4;^)xZC6o)5T{tn>Ch815%tKR^o&$7=oY1~Oh;1k#K#fUZMgZdR)T%hvm>{!xA_7IlVGDp zRxNNH%!XWXjM@$QiLKJ0nN0dU^ewk>RdM!MNLCb3p?$c?1kytilN?3O3SUnsGO%;; zD%J|q9`|6Wri{@z&~FSJY|^FY9mW-1Kc1nL8pjE(?+?+^cPy|z_%c5r=W^SKl!I0v z5ZBeK%!$IwXHXehlu%?n@7isjK9%u0_s-na4(HHhwyUiZ{-WaAN<@P+)1=w!UG*ZV z$fmekFAbHq&<0WZL4iFklWwv&Fqt@r4Bod`)4R=y^JnTQY+G>cnJcXwBoDpdwwkVAhPcgD%afguWVEurgcZA49C1GKfbNrib=Wa=A(^HFsukg0CPXl*O6E?X+B+Lh-HBrb#w3deL=G_g|tE>(Dv-*j?oQ`!j z=;H3z%XadvW{EL{$db$8*Bjqe8g*cv;F0c?JddrfRoyH-P^RXf=4Hw)p4~N=H@)-K zYuWJqRHxLZ*@NEK`6UAt3jXq1@Lcn&{Ivt|$pxy{8&hAps_hpkB*#85O;8Lu*tFt6 zr{jH6n;k=o=Z)zZtiqPG1DVi}@$Lgd@8L;n3m#drGZTjM12E&oyXG9-_5_9o~bxrOyeycITGI3j*Jrv!l-w$76J4RP^ zEmjN5pQm%4vy^{Xxj#8Wl;a)P1soiG@lWzE{_@FoWiy+{>frs-)tA$g9IQ!Ad4L$vewdNXnA?{& zh{-W=1I#QHU%yh6r9mOql>KKlYMvK!zaJ)M--PR27opoGl5xfut?oc6u|H zNsn?&VEfO#&5GctUlS`4t}U);PG>SInKW5kETd9;AlGm>%r_HP2g>}}GyOTZAlCSM z9_&9`PI*;>tgV@`1i-on;4bRkH8KqslDew^-O4Ungg@1{DbLl*%-6f0D210c9w>32 zBO9?Prte>e`nz4j5#dqX*bRUoG;@V{zI_Ely8&o&aD$_Mv*N90L$v9xNvLavwKL9ol?66e? zToc+=o|AkVxq#qZOK8eOFH1xmtaLVa46)r3?F$rGuRzO4Ld-AgA0!nonP*H-IQFy8 zy67&SAvUkB4`cQEhZ`w)#HI`PdO0u+7iw}&Q1V%iZ{_`&K3L5r83C5evECKNd+eQ< zNu8J|()mwrU+$~@S^wET=qaWLQbK>$7 zsZd59pcNtL5CN}TIUqLR|1E3&WTPL}lRti5>oKILF3KkBCpb_@%0r#k7Dfogka!a{JrYMZp&LaF+5C--b{*fvGH|;7~nVwO5os< z0TMm*3hjiEN9lW$Fizj7ZYhXs} zD}8O;s)ILEtjiY37xF9t<14`1v^(<1p~Y}j%zaOOe zFqtTKIx_2X#V8`>tOb2>x48rd>-Zv>*fwsjetq;+Y-4p4btyjL($_72 z79KpkA~*HL@qsE!Y!G7Z%?{IK*gQ^nDcdWg-gUgsd+9bYbEly`{oEMkrO*U#6w7fW z_kuT5jF~56lhl1WELF2wIQO9b*roO6o!wK-A-dFC3TyOCW^yA;G^L+Z>{j5$&Gu(} zwIt9n75Vin!=u`GMA>6y6Q&d;$Df>8Wa%nu8-Aiqbj72Yu-= z@+M!Q&;3r>Z;Hf5)G}*Lbl15gI>@r{Q`FIR#pB-k)!cLB*-(kZW}~)9NrJ~eU>nBx z!Umr3lYZ(gs1p7yg{%;9;kYV`<@n?dLW%xWtqQ_cK~WrYz|?P_a2ghIVo1RGPlNan!?? zDv3zh+{{RoP*@<`YF^L60-tZlZhx6|+5%?arQ1n*>QutjIA2jwsp72zOR86x+I*cg zcLVHuhZW+57FFqAl3AARTnoD9x?iwu#SbPiIlm;RqTf!4o0>E3cUg^(IDkl*EPJ~z z8LCAsA0Ez=CO8~2wGExT3 z?7VJoTonaDJI|@6xa+g==1o^@YIhr5i;v20X;BIz2aAE@_@yGs4SJyETeT%#&!&$} zYNH0O?LQbQpnsiAsuNcJ-msc|$Hh<()M4b6+U0W=`AwCoBVjkeaMzHj`O_!d)z1pg z7;n>v6CySulep^j6@ndU^r?Cpm3vV*x~d=IknV^zG%Gku_C?ZXVXR9Mj2LPA%RCHU zTZw5=q5VkHCGJ@1d3qrMKbTkQe|(%zjQkdj9BqH)%?g$6`AW1jrQMlofr?Wx)!^fz z(mNgAd4#uZXk48!Hk?KGWhu|Mqb}Xne90y6mg-ygD%zMEMza~H*U472fm<%iIz^et zN4D7Esn>)uaN~K!QOgN>rH2xm~4m7T4RXz33xVV6vun6_6#o0XnoHOXfY#84$R* zO<`BMdG~e3GiLU8JGhu{zrRlO2e4KIub6t~Cw8uRLUihCRGm5#1ZoXacvWAgjRvZ% zWwyjz8y7$wTE_fTV3&z^85KECt%NPo+UcOK)R=H@QM@bb={%PCk?XTiR%YDiMxI+AqPDK-x|!+lB&CR} z>s)VTqg%KHbxjB9}8e{&Om?|T0MF4P|VH;Lb*{wLa>JlW_dN)Sgy$Bt@D3v0QtSIVFU>?24)oo_J*?&r*DaOT z*n^F4Vslfo-fUF`)L#1D0C#c25$Te*GVpI6bsDISvAESJr4{wQHlAXB`SS~c>}23z ztOhl=VY~Z(^I?!ael_kl=hqt|7Lj)$PExRtchbrU4&XDIISq&p*m?Y0Qb3#a2B58I zhyr@X99ra&Ycid*CJxuxCF|>Jt?y@jzojr_KlYc{?YH>txAxeMw3RgrW~eabzF_DO zNPcK;X>tm+Yo0Y~ZTKPI7e*m7_KuJP3oLBi-; zM6znNneO^l{J*6BfhF+7;GU~T*d~|KW899HVg*J<%JvkSDLt%KVv>ovx0;=Pv|cfE z@LIVj2(flYUk-V^0*xS6wLhl95aHU7X)R+E;(rPLd#3O|F%L<79qF^N1%pm%{Cl}f zQ7o7x`8j|yipu|m+|UoXC{X_;{|%66lM^t5h>!$~EuFJ)p-)3AE@=uDjo@|)={8&m zS<0MGtjyyIlKX`kfByLqxDm-Ojgx-~{w<^YcgD%T%=3T2JpDW83K{uchu14A69=4+ z{rQ)cCG>Pytd1=y7-W&xKYG0SpG@9@M&MM}_Z-NsKN5Y{l|x`%L7z4h#sc=oWRl(g z8Chc{HcNK5V7~VD%N;Nh-FG(6>{Cnx=B6-YjNU^ zWv1`B&4(7&qX}b+SyOwD{=ZNjGz{Mo%;-q!WasE+>8=sy?XwiwvaEa^v2t5527r?-$q1-%oH)+oxxvjA_5X@Xa zNK6QYhbhOD`30Ze zE&ilq5x^P8`kxDaTdKmG+ER}Dky{x;Sz@EaUt6q(1WO+{czJf8<3*FM)k(?opj2z# zeq_1uLG+@{hi)K{@h4tV{*O90W3qv>puAYCnJkZhQq(DM4)7AF2>T7OyaD=B3lWed z&(-T0xqnJl20^s>-SUFS2K{d7`7b>Haidt74TFI5i@F9gOL{T4!0jC>;V&8Ib z$^~S{>tbmHGdReZsvpfhnMHSr@mpDDZIZIftRFwA49%jR@gP6s#(mA~+g&F*2a>dp zj{}KPU-(WteCnZL#L|v7nDFq$d91)vCCo2Cb_19N1!L?elc@PqbuSCSy&<7fIx70# zbnuFHlR|YG?lC0mt(rBAy*b(MQ3VYBJt2YyXqU`2HuH3Iq;z$yDU|Ax@@Mf!0*%j? zXM5MXmCOC^wBoFxLN}8?LcAhbW@`^o(B(N2@jxmxi?qZ+arO7NA;#q+FPJCHCxiqb z`dqP%rAuBkY zZzG1xyK^v)LG& z1qwOvuPD#Zr+7_rrV7h58Hr~ZO1f7}bLpDaLbG4kOG*{?dU$w0Mfc5kx$?ALK2rH9 z$FRDrz>q4;k-|}$biZ1TXprMxkS1}pOp98eE)zto!r|lwKw8)v-+Put;vj{Z&yxDO zc!;2)`(^QGG8wh&SDsNh^a8i8t7edABzT6CNc}}BeWsZ1NT+!1D46G z+s{4^QDEluADj6=`KJmY4_6m%0D?VUuNAormC5{6QiISk*R3s1oC@X`*Q=_|xXcpJ z^ILo3MY+&tSmmZFb~yJ;@31srlM~huB#Z61BxHGC+Ue@SbYojsX^Ltq=XZ*gv$jN^ zHq`M`9E89!dpBJrR{f>y5~dD37UF|rQU~8II!x$gl92CvCS*fslR5Y?`M6yiV18uO6tP^FDc2#G;!gyZ&EsTzgQmo zZAVjZQi*CQenyj|-LA~v)!lu!OKK2vzn^9iL%h@j^okelxI#p;G3^>G)!fOX<|p}f zGnA##8yw>?8{e-Ukrfc>Jg|~jqMT5#4_0QX3n3%B8!@gm zM*zN54M~b43-lJP7=AAkK2Kx-f7UI4d@dPz`l>#iw`YD;`Msc@xs8}Tt#+6q8rA}q z%45meXs;I&j0H9JRGGS>*uFtcRd^4w4S@8hk@RsY%ZbDpmBs|F0t|eO5-y_0#(jJ} zWSbr9A#usM|D`4R=PbUCOvKRC#}_`y8TUsX)4xwdW<7%e_afuAZCC>4wR13k&k@uf z)y0Ai>wlv`9nmTYH96-=RqE3rDG`Zoy9?HU0-CGe=+02QVee1AzT{&Axw z_8<$Q9UN&+N19=0A|RBUY3~pQeOG6NlKA8_UFeuy@Fc|xdM`T$Os#G^%0!Fq_ZnpV z8r2&?dlI8sBD+6*8Q?-&TBL7UU|@7hs5!_I{Xxw}VB5MV-OJLSNVo_avEUwGw`&CK z%$2I>PP;FmwpZ30&e|V5TJ0BbKt2UeUf^1TMSgTleuCA?3;h(KVU2HZWj-!%J9BkT z5SO$Z$vXnG&gwq=B?|AT=C6rq<2=-#IMF-E)@;%v-CE(@cxnrkK+MCRy!oFP z(ZBi>o#(L?Hm&s47mms9jlv7_GJKEX)4Z5ovVmp()D$0uKNT+QpUx9E+BRo?R7GEofIl*uW6dbPgI3_R`(ubH#9^N zk?;;CBm?U~-OrLo;2GC4Er_J-W9=JYOh5xo?mx*eAd{s$YYr_)No^QiTu|bL4w1V* zo=KLZ?D@&ezs#%oMf%OZ#M*yfRPoO@Z`Azs^1!@=ogQQGG7A>9CcU<-IDiH`s?(Gu z_8<;g9vrDpcWq=h=R@)9nZzX^4{q`CH@C^4x#0DiYC-zhQ(Sk7Do~8R-nxv4<&S~eXl)3M6f;oIIEAO}@ z!13$eDlSzdjKsCKY+AM6*nAjHn%b>VzWOx@()R2 zrbQJilQM@q^h#{6%LXmjk{Q$w;~P`y#Bm6*rqR4H51P0P;jT)}!h>z4L850Xcuu~% z=N8$Lz3kA3BcY7h7X<(;RP2GDqesGh2epW!nhlC|F7Iq0`IOLU@#QRsG~iT_U)lld*%L8$MCM zz?h%;`X|yI{ylL81Q9HQ%*#;+RuCX?KL?R*{om;h@9>zoLK;>kYN<43T4cN;Xut&DC(X zk&G-QebUYUm4au(+%3^w`x`)0mL~Hovc-5!q7(}ez~m3+n;5aQj96}Q%+*56JPB#s zW^yaZS1R|Zb zmW?T$=~1{ZLKxk@^0}_|mbG>)f` z40TdJU+BSRX5m$heDMf@%B*A&t9>}V#fF=4S#x~6P^OBeD(#5sco`QfZ##D}aV*Oi zjj^^82+w@jj>oVe^OH3Xju9t6Igv`5fkwD(_A*rc{#Mz>m{a}7Co&OsWkz;)&gJW> z7F?h3#(#T$zxV5#e_oa(cE<_T2iMCFSkie;&jdA@TqTZgoRl#yz<-$5Z~}4PCeHR@w0ANCOl@op0v@G ze{WL7Up#<{{)CtoO^btnZ>6*7LM?SIVw$u5tSLs>4%>~HEu-ez%cTx9LeX0fI8yk@ zN{f4Ct#ppg`R5r@Iq^eIs^dt|TMkV0BbmTVA3c`wVG8B`5E}DN6Z+sG4^_S=Ny9Zu zo2pbXAz>Q?-;NIS&v9CIVV&Jcb^PciJ(HZFYSRn~vQjvdfB!PzL*w1pONs$Ka(jy9 z@2G|v5cTm^%kjE=%b7G1!9pi<<>|g#gAk`PRZ@^FlAkV=I+2|-$?*v=oWX;LvUDzu zAs?UKgXxB!&=9HDH6=ZYGehovrJ%u0{?bbWgEd%pvQ8OT>#5P%CRnYB7$oRIZ8ii$D(?n-QPmE>qROG>Eyi=!cPwHv2*=VKH zE&PSfw_%?2Z}4t82D+-7p)o@_IJ#1fWqRn4)vEeNdr_d?NQv(rm{UlV-tG0VH>iO> zAJHQCbyE>-2%%ed}+cfSr?tCZ{^MV^MAT&?ZVtWc5c>H4*bbmtaNv z^?HM{1M&9pscfyV0o6Me1jg#fhVmU1cMeBH+gWXxak`LvGO&vEa_TUiI_7)ksr9?~!riZiONJjqOYc7GK4h|fRQ6dG`F#)hDky1(-Q3R6ar#R; zL6hF+I}RaUcjP!eRA2z>vl_^C+H!@v`wlcUvj!22sl#y$mjbwTJrj?`;tM8jzsaPo9l6l8Yt=P`MW-TDQ7xI zk8MYns(mBoNjL=XLEL;{qJYIY=Ii-|jQS6}_Z)Qu@H5Po@n7CQ+z*x&JtYQlk!aZX z_$(;eH<0F`7ar$F-1(rTy3iODgSx2lw8HzXbhpj6y2#w)V@G1h9AO)&s);-;JkM zNA}0@lG$zAd;i^?c~n;h@A8$z$OVer4Ulhz0PFuyM6y{_1shan2sa(mVeHClNM&Gf zYhxYWYEEYZXH?a|VmzU(x#hb=^Qc!}oOg%gI_F}F=@Kdu|Hjb(-lf0t9N+y~l;(o+ zajiF%6GlPcO)(IRu`bnZhzPfMz99G+2)03IE+WVNPW@WS;GCuPBanUJq*2|%>XdwH zs1xpFw9P$tusdE~l7oc6KaddEEm1)4S-8v>_D|=xYll96rdySbx>AC5FW75C^cRiPI|5e&hNJ!|0KU8+h?!%?L%75H<{r z>J{~B!X!B4yS6Ho5rSK4e!9fI>*&x}_x#CQI)11ky#{J1@gsFNWKROama($&ja~{f z3fK&|l?}-N0hqAw=BBDP;#s6Tz_*$sCyBm#sYsV>@H?dG?}Z2dajn$nGv$oKp23y} zGJnW6Hr-Op32P-aOy^zsUbUTZgR)2DWa4MEMBV@|fyuZxZbJrtI<5a~+W*<-c%0DC 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 PL2uLQ2Ss1WFBAU - - -Hash and Probe Policies - - - - -

    Hash and Probe Policies

    - - -

    - As mentioned in -Hash Policies, -some of the containers require a ranged-hash function policy for -mapping key types into a non-negative integral type in a range. -E.g., collision-based containers -(cc_ht_map, -cc_ht_set, -cc_ht_multimap, -and -cc_ht_multiset), -require a ranged-hash function. -

    - -

    - Similarly, some hash tables -need a ranged-probe function policy for mapping -key types into a sequence of non-negative integral types in a range. -E.g., probing-based containers -(gp_ht_map, -gp_ht_set, -gp_ht_multimap, -and -gp_ht_multiset), -require a ranged-hash function. -

    - -

    - Policy Classes -contains classes for creating ranged-hash and ranged-probe function policies. -

    - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_based_containers.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_based_containers.html deleted file mode 100644 index 527885128..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_based_containers.html +++ /dev/null @@ -1,1056 +0,0 @@ - - - - Hash-Based Containers - - - - - - -

    Hash-Based Containers

    - -

    - This section describes hash-based containers. It is organized -as follows. -

    - -
      -
    1. - Overview is an overview. -
    2. -
    3. - Hash Policies discusses - hash policies. -
    4. -
    5. - Resize Policies discusses - resize policies. -
    6. -
    7. - Policy Interaction discusses - interaction between policies. -
    8. -
    - - - -

    Overview

    - - -

    - Figure -Hash-based containers - shows the container-hierarchy; the hash-based containers are circled. -cc_hash_assoc_cntnr -is a collision-chaining hash-based container; -gp_hash_assoc_cntnr -is a (general) probing hash-based container. -

    - -
    - -no image -
    -
    - -Hash-based containers. -
    - -

    - The collision-chaining hash-based container has the following declaration. -

    -
    -template<
    -	typename Key,
    -	typename Data,
    -	class Hash_Fn = std::hash<Key>,
    -	class Eq_Fn = std::equal_to<Key>,
    -	class Comb_Hash_Fn =
    -		direct_mask_range_hashing<>
    -	class Resize_Policy = default explained below.
    -	bool Store_Hash = false,
    -	class Allocator =
    -		std::allocator<char> >
    -class cc_hash_assoc_cntnr;
    -
    - -

    - The parameters have the following meaning: -

    -
      -
    1. Key is the key type. -
    2. -
    3. Data is the data-policy, and is explained in -Mapping-Semantics Genericity::Data Types as a Policy. -
    4. -
    5. Hash_Fn is a key hashing functor.
    6. -
    7. Eq_Fn is a key equivalence functor.
    8. -
    9. Comb_Hash_Fn is a range-hashing_functor; it -describes how to translate hash values into positions within the table. -This is described in -Hash Policies.
    10. - -
    11. Resize_Policy describes how a container object should -change its internal size. This is described in -Resize Policies.
    12. -
    13. Store_Hash indicates whether the hash value should -be stored with each entry. This is described in -Policy Interaction.
    14. -
    15. Allocator is (surprisingly) an allocator type. -
    16. -
    - -

    - The probing hash-based container has the following declaration. -

    -
    -template<
    -	typename Key,
    -	typename Data,
    -	class Hash_Fn =
    -		std::hash<
    -			Key>,
    -	class Eq_Fn =
    -		std::equal_to<
    -			Key>,
    -	class Comb_Probe_Fn =
    -		direct_mask_range_hashing<>
    -	class Probe_Fn = default explained below.
    -	class Resize_Policy = default explained below.
    -	bool Store_Hash = false,
    -	class Allocator =
    -		std::allocator<char> >
    -class gp_hash_assoc_cntnr;
    -
    - -

    - The parameters are identical to those of the collision-chaining container, except -for the following. -

    -
      -
    1. Comb_Probe_Fn describes how to transform a probe sequence into -a sequence of positions within the table. -
    2. -
    3. Probe_Fn describes a probe sequence policy.
    4. -
    - - -

    - Some of the default template values depend on the values of other parameters, -and are explained in -Policy Interaction. -

    - -

    Hash Policies

    -

    - This subsection describes hash policies. It is organized as follows: -

    -
      -
    1. General Terms describes - some general terms. -
    2. -
    3. Range-Hashing Functions - describes range-hasing functions.
    4. -
    5. Ranged-Hash Functions - describes ranged-hash functions.
    6. -
    7. Implementation in pb_assoc - describes the implementation of these concepts in pb_assoc. -
    8. -
    - - -

    General Terms

    - -

    - There -are actually three functions involved in transforming a key into a hash-table's -position (see Figure - -Hash runctions, ranged-hash functions, and range-hashing functions -): -

    -
      -
    1. - A ranged-hash function, which maps keys into an interval of the - non-negative integrals. This is the function actually required by the - hash-table algorithm. -
    2. -
    3. - A hash function, which maps keys into non-negative integral types. This is - typically specified by the writer of the key class. -
    4. -
    5. - A range-hashing function, which maps non-negative integral types into an - interval of non-negative integral types. -
    6. -
    - -
    - -no image -
    -
    - -Hash runctions, ranged-hash functions, and range-hashing functions. -
    - -

    - Let U be a domain (e.g., the integers, or the strings of 3 - characters). A hash-table algorithm needs to map elements of U "uniformly" - into the range [0,..., m - 1] (where m is a non-negative integral - value, and is, in general, time varying). I.e., the algorithm needs a ranged-hash - function -

    -

    - f : U × Z+ → Z+ , -

    -

    - such that for any u in U -, -

    -

    - 0 ≤ f(u, m) ≤ m - 1 , -

    -

    - and which has "good uniformity" properties [knuth98sorting]. - One common solution is to use the composition of the hash function -

    -

    - h : U → Z+ , -

    -

    - which maps elements of U into the non-negative integrals, and -

    -

    - g : Z+ × Z+ → Z+, -

    -

    - which maps a non-negative hash value, and a non-negative range upper-bound into - a non-negative integral in the range between 0 (inclusive) and the range upper - bound (exclusive), i.e., for any r in Z+, -

    -

    - 0 ≤ g(r, m) ≤ m - 1 . -

    -

    - The resulting ranged-hash function, is -

    -

    - f(u , m) = g(h(u), m) - (1) . -

    - -

    - From the above, it is obvious that given g and h, f can - always be composed (however the converse is not true). The STL's hash-based - containers allow specifying a hash function, and use a hard-wired range-hashing function; the ranged-hash function is implicitly composed. -

    - - -

    - The above describes the case where a key is to be mapped into a single -position within a hash table, e.g., in a collision-chaining table. -In other cases, a key is to be mapped into a sequence of poisitions -within a table, e.g., in a probing table. -

    -

    - Similar terms apply in this case: the table requires a ranged probe -function, mapping a key into a sequence of positions withing the table. This is -typically acheived by composing a hash function mapping the key -into a non-negative integral type, a probe function transforming the -hash value into a sequence of hash values, and a range-hashing function -transforming the sequence of hash values into a sequence of positions. -

    - - -

    Range-Hashing Functions

    - -

    - Some common choices for range-hashing functions are the division, - multiplication, and middle-square methods [knuth98sorting], - defined as -

    -

    - g(r, m) = r mod m (2) , -

    -

    - g(r, m) = ⌈ u/v ( a r mod v ) ⌉ , -

    -

    - and -

    -

    - g(r, m) = ⌈ u/v ( r2 mod v ) ⌉ , -

    -

    -respectively, for some positive integrals u and v (typically -powers of 2), and some a. Each of these range-hashing functions works -best for some different setting. -

    -

    - The division method (2) is a very common - choice. However, even this single method can be implemented in two very - different ways. It is possible to implement (2) - using the low level % (modulo) operation (for any m), or the low - level & (bit-mask) operation (for the case where m is a power of - 2), i.e., -

    -

    - g(r, m) = r % m (3) , -

    -

    - and -

    -

    - - g(r, m) = r & m - 1, ( m = 2k - - for some k) (4) , -

    -

    - respectively. -

    -

    - The % (modulo) implementation (3) - has the advantage that for m a prime far from a power of 2, g(r, m) - is affected by all the bits of r (minimizing the chance of collision). - It has the disadvantage of using the costly modulo operation. This method is - hard-wired into SGI's implementation [sgi_stl]. -

    - -

    - The & (bit-mask) implementation (4) - has the advantage of relying on the fast bitwise and operation. It has the - disadvantage that for g(r, m) is affected only by the low order bits of r. - This method is hard-wired into Dinkumware's implementation [dinkumware_stl]. -

    - - - - -

    Ranged-Hash Functions

    - -

    - In some less frequent cases it is beneficial to allow the client to -directly specify a ranged-hash hash function. It is true, that the writer of -the ranged-hash function cannot rely on the values of m having specific -numerical properties suitable for hashing (in the sense used in [knuth98sorting]), -since the values of m are determined by a resize policy with possibly -orthogonal considerations. -

    - -

    - There are two cases where a ranged-hash function can be superior. The firs is when using perfect hashing -[knuth98sorting]; the second -is when the values of m can be used to estimate the -"general" number of distinct values required. This is described in the following. -

    - -

    - Let -

    - -

    - s = [ s0,..., st - 1] -

    - -

    - be a string of t characters, each of which is from domain S. -Consider the following ranged-hash function: -

    - -

    - - - f1(s, m) = - ∑ i = - 0t - 1 si ai mod m - (5) , -

    - -

    - where a is some non-negative integral value. This is the standard -string-hashing function used in SGI's implementation (with a = 5) [sgi_stl]. -Its advantage is that it takes into account all of the characters of the -string. -

    - -

    - Now assume that s is the string representation of a of a long DNA -sequence (and so S = {'A', 'C', 'G', 'T'}). In this case, scanning the -entire string might be prohibitively expensive. A possible alternative might be -to use only the first k characters of the string, where -

    - -

    - k |S| ≥ m , -

    -

    - i.e., using the hash function -

    -

    - f2(s, m) = ∑ i = 0k - - 1 si ai mod m , (6) -

    -

    - requiring scanning over only -

    -

    - k = log4( m ) -

    -

    - characters. -

    -

    - Other more elaborate hash-functions might scan k characters starting at - a random position (determined at each resize), or scanning k random - positions (determined at each resize), i.e., using -

    -

    - f3(s, m) = ∑ i = r0r0 + k - 1 - si ai mod m , -

    -

    - or -

    -

    - f4(s, m) = ∑ i = 0k - 1 sri - ari mod m , -

    -

    -

    - respectively, for r0,..., rk-1 each in the - (inclusive) range [0,...,t-1]. -

    - - -

    Implementation in pb_assoc

    - -

    -cc_hash_assoc_cntnr is -parameterized by Hash_Fn and Comb_Hash_Fn, a hash functor -and a combining hash functor, respectively. -

    - -

    - For any hash functor except null_hash_fn, -one of the -Concepts::Null Policy Classes, -then Comb_Hash_Fn is considered a range-hashing functor. -The container will synthesize a ranged-hash functor from both. For example, Figure - -Insert hash sequence diagram - -shows an insert sequence diagram. The user inserts an element (point A), -the container transforms the key into a non-negative integral using the hash -functor (points B and C), and transforms the result into a position -using the combining functor (points D and E). -

    - -
    - -no image - -
    -
    -Insert hash sequence diagram. -
    - - -

    - pb_assoc contains the following range-hashing policies: -

    - -
      -
    1. -direct_mask_range_hashing -and -direct_mod_range_hashing -are range-hashing functions based on a bit-mask and a modulo operation, respectively. -
    2. -
    - - -

    - If Comb_Hash_Fn is instantiated by -null_hash_fn, -and a combining-hash functor, the container treats -the combining hash functor as a ranged-hash function. For example, Figure - -Insert hash sequence diagram with a null combination policy - -shows an insert sequence diagram. The user inserts an element (point A), -the container transforms the key into a position -using the combining functor (points B and C). -

    - - -
    - -no image - -
    -
    -Insert hash sequence diagram with a null combination policy. -
    - -

    - Similarly, -gp_hash_assoc_cntnr -is parameterized by Hash_Fn, Probe_Fn, and -Comb_Probe_Fn. As before, if Probe_Fn -and Comb_Probe_Fn are, respectively, -null_hash_fn and -null_probe_fn, -then Comb_Probe_Fn is a ranged-probe functor. Otherwise, Hash_Fn -is a hash functor, Probe_Fn is a functor for offsets from a hash value, -and Comb_Probe_Fn transforms a probe sequence into a sequence of positions -within the table. -

    - -

    - pb_assoc contains the following probe policies: -

    - -
      -
    1. -linear_probe_fn is a linear probe -function. -
    2. -
    3. -quadratic_probe_fn is -a quadratic probe function. -
    4. -
    - - - - - - - - - -

    Resize Policies

    - -

    - This subsection describes resize policies. It is organized as follows: -

    - -
      -
    1. General Terms describes general - terms. -
    2. -
    3. Size Policies describes size - policies. -
    4. -
    5. Trigger Policies describes trigger - policies. -
    6. Implementation in pb_assoc - describes the implementation of these concepts in pb_assoc. -
    7. -
    - - -

    General Terms

    - -

    - Hash-tables, as opposed to trees, do not naturally grow or shrink. It -is necessary to specify policies to determine how and when a hash table should change -its size. -

    - -

    - In general, resize policies can be decomposed into (probably orthogonal) -policies: -

    -
      -
    1. A size policy indicating how a hash table should -grow (e.g., it should multiply by powers of 2). -
    2. -
    3. A trigger policy indicating when a hash table should -grow (e.g., a load factor is exceeded). -
    4. -
    - - - -

    Size Policies

    - -

    - Size policies determine how a hash table -changes size. These policies are simple, and there are relatively -few sensible options. An exponential-size policy (with the initial -size and growth factors both powers of 2) works well with a -mask-based range-hashing function (see the Range-Hashing Policies subsection), -and is the -hard-wired policy used by Dinkumware -[dinkumware_stl]. A -prime-list based policy works well with a modulo-prime range -hashing function (see the Range-Hashing Policies subsection), -and is the -hard-wired policy used by SGI's implementation -[sgi_stl]. -

    - - - - -

    Trigger Policies

    - -

    - Trigger policies determine when a hash table changes size. -Following is a description of two polcies: load-check -policies, and a collision-check policies. -

    - -

    - Load-check policies are straightforward. The user -specifies two factors, αmin and αmax, and -the hash table maintains the invariant that -

    -

    - - - αmin - ≤ - (number of stored elements) / (hash-table size) - ≤ - αmax - - - (1) - . -

    - -

    - Collision-check policies work in the opposite direction of -load-check policies. They focus on keeping the number of -collisions moderate and hoping -that the size of the table will not grow very large, -instead of keeping a moderate load-factor and -hoping that the number of collisions will be small. -A -maximal collision-check policy resizes when the shortest -probe-sequence grows too large. -

    - - -

    - Consider Figure -Balls and bins. - Let the size of the hash table be denoted by m, the -length of a probe sequence be denoted by k, and some load -factor be denoted by α. We would like to calculate the -minimal length of k, such that if there were α m elements -in the hash table, a probe sequence of length k would be found -with probability at most 1/m. -

    - -
    - -no image - -
    -
    -Balls and bins. -
    - - -

    - Denote the probability that a probe sequence of length k -appears in bin i by pi, the length of the probe sequence -of bin i by li, and assume uniform distribution. -Then -

    -

    - - p1 - = (3) - -

    -

    - - P(l1 ≥ k) - = - -

    -

    - P(l1 ≥ α ( 1 + k / α - 1 ) - ≤ (a) -

    -

    - - e - ^ - ( - - - ( - α ( k / α - 1 )2 - ) - /2 - ) - - , -

    -

    - where (a) follows from the Chernoff bound -[motwani95random]. -To -calculate the probability that some bin contains a probe -sequence greater than k, we note that the li are -negatively-dependent -[dubhashi98neg]. -Let I(.) -denote the indicator function. Then -

    - - P( existsi li ≥ k ) - = (3) - -

    -

    - - P - ( - ∑ i = 1m - I(li ≥ k) ≥ 1 - ) - = - -

    -

    - - P - ( - ∑ i = 1m - I - ( - li ≥ k - ) - ≥ - m p1 ( 1 + 1 / (m p1) - 1 ) - ) - ≤ (a) -

    -

    - - e - ^ - ( - ( - - - m p1 - ( - 1 / (m p1) - 1 - ) - 2 - ) - / - 2 - ) - , - -

    -

    -where (a) follows from the fact that the Chernoff bound can be -applied to negatively-dependent variables -[dubhashi98neg]. -Inserting (2) into -(3), and equating with 1/m, -we obtain -

    -

    - - k - ~ - √ - ( - 2 α ln 2 m ln(m) ) - ) - - . -

    - - - - - - - - - -

    Implementation in pb_assoc

    - -

    - The resize policies in the previous subsection are conceptually straightforward. The design -of hash-based containers' size-related interface is complicated by some factors. -

    -
      -
    1. Most containers, i.e. lists, trees, and vectors, have a single "size" concept. There is no -distinction between the number of entries the container holds and the number of entries it is using. This, -of course, is not the case for hash-based containers. Moreover, even describing the -"actual" size of a hash-based container (as opposed to its logical size) is difficult - a probing-based container -holds entries to elements, even those it does not use, while a chaining-based container holds pointers to entries. -
    2. -
    3. - The policies mentioned above operate in terms of invariants. E.g. a load-check trigger policy -maintains an invariant concerning the load factor of a container object. This is sometimes too rigid: -
        -
      1. In some cases it is desirable to allow controlled override of an entire policy, e.g. by externally resizing a container object (or giving it an initial size, which is a special case of externally resizing the container). -
      2. -
      3. - In other cases it is desirable to allow changing the specifics of a policy in runtime, e.g., changing the load factors of a load-check policy. -
      4. -
      -
    4. -
    5. - Resize policies interact strongly with hash policies. Performance-wise, for example, it is undesirable to use an exponential size policy of powers of two with a modulo range-hashing function, and it is undesirable to use a prime size policy with a mask range-hashing function. In other cases, the effects are more dramatic. For example, using a quadratic probe function with an exponential size policy will probably cause cases where the container object has available entries which are never reached by the probe function. (Hash Policies -discusses the previous concepts.) -
    6. -
    - -

    - Clearly, the more of these points an interface addresses, the greater its flexibility but the lower its encapsulation and uniformity between associative containers. -

    - - - -

    - This library attempts to address these types of problems by delegating all size-related functionality to -policy classes. Hash-based containers -are parameterized by a resize-policy class (among others), and derive publicly from -the resize-policy class -[alexandrescu01modern] - E.g., a collision-chaining -hash table is defined as follows: -

    -
    -cc_ht_map<
    -  class Key,
    -  class Data,
    -  ...
    -  class Resize_Policy
    -  ...> :
    -    public Resize_Policy
    -
    - -

    - The containers themselves lack any functionality or public interface for manipulating sizes. A container -object merely forwards events to its resize policy object and queries it for needed actions. -

    - -

    - Figure - -Insert resize sequence diagram - -shows a (possible) sequence diagram of an insert operation. -The user inserts an element; the hash table -notifies its resize policy that a search has started (point A); -in this case, a single collision is encountered - the table -notifies its resize policy of this (point B); the container -finally notifies its resize policy that the search has ended (point C); -it then queries its resize policy whether a resize is needed, and if so, -what is the new size (points D to G); following the resize, it notifies -the policy that a resize has completed (point H); finally, the element -is inserted, and the policy notified (point I). -

    - -
    - -no image - -
    -
    -Insert resize sequence diagram. -
    - -

    - This addresses, to some extent, the problems mentioned above: -

    -
      -
    1. - Different instantiations of range-hashing policies can be met with different instantiations of - resize policies. -
    2. -
    3. - Questions on size-related interface are avoided, since the containers have no size-related methods. Thus - a container has no method for querying its actual size. It merely continuously forwards enough information to - its resize policy to answer such queries; the designer of the resize policy can decide whether, or how, to design the appropriate method. Also, a container has no methods for setting its size. It merely queries its -resize policy for an initial size, queries it on a new size (if the resize policy indicates a resize is needed), and -supports a protected virtual function for external resize. -
    4. -
    - -

    - The library contains a single class for instantiating a resize policy, -pb_assoc contains -a standard resize policy, -hash_standard_resize_policy (the name is explained shortly). -In terms of interface, it is parameterized by a boolean constant indicating whether its public interface supports -queries of actual size and external resize operations (the inclusion and exclusion of these methods in the interface have obvious tradeoffs in terms of encapsulation and flexibility). -([alexandrescu01modern] shows many techniques for -changing between alternative interfaces at compile time.) -

    - -

    -As noted before, - size and trigger policies are usually orthogonal. -hash_standard_resize_policy -is parameterized by size and trigger policies. For example, -a collision-chaining hash table -is typically be defined as follows: -

    -
    -cc_ht_map<
    -  key,
    -  data,
    -  ...
    -  hash_standard_resize_policy<
    -    some_trigger_policy,
    -    some_size_policy,
    -    ...> >
    -
    - -

    - The sole function of -hash_standard_resize_policy - is to -act as a standard delegator -[gamma95designpatterns] for these -policies. - -

    - Figures -Standard resize policy trigger sequence diagram - and -Standard resize policy size sequence diagram - show sequence diagrams illustrating the interaction between - the standard resize policy and its trigger and size policies, respectively. -

    - -
    - -no image - -
    -
    -Standard resize policy trigger sequence diagram. -
    - -
    - -no image - -
    -
    -Standard resize policy size sequence diagram. -
    - -

    - The library (currently) supports the following instantiations of size -and trigger policies: -

    - -
      -
    1. - hash_load_check_resize_trigger implements - a load check trigger policy. -
    2. -
    3. - cc_hash_max_collision_check_resize_trigger - implements a collision check trigger policy. -
    4. -
    5. -hash_exponential_size_policy implemens -an exponential-size policy (which should be used with mask range hashing). -
    6. -
    7. -hash_prime_size_policy implementing -a size policy based on a sequence of primes -[sgi_stl] (which should be used with mod range hashing -
    8. -
    - -

    - The trigger policies also support interfaces for changing their specifics which depend on compile time constants. -

    - - -

    - Figure -Resize policy class diagram gives an overall picture -of the resize-related classes. -Container (which stands for any of the hash-based containers) is parameterized -by Resize_Policy, from which it subclasses publicly -[alexandrescu01modern]. -This class is currently instantiated only by -hash_standard_resize_policy. -hash_standard_resize_policy itself -is parameterized by Trigger_Policy and Size_Policy. -Currently, Trigger_Policy is instantiated by -hash_load_check_resize_trigger, -or -cc_hash_max_collision_check_resize_trigger; Size_Policy is instantiated by -hash_exponential_size_policy, -or -hash_prime_size_policy. -

    - - -
    - -no image - -
    -
    -Resize policy class diagram. -
    - - - - -

    Policy Interaction

    - -

    - Hash-tables are unfortunately susceptible to choice of policies. One -of the more complicated aspects of this is that poor combinations of good policies -can alter performance drastically. Following are some considerations. -

    - - - - - -

    Range-Hashing Policies and Resize Policies

    - -

    -

    - - -

    Equivalence Functors, Storing Hash Values, and Hash Functions

    - - -

    -cc_hash_assoc_cntnr -and -gp_hash_assoc_cntnr -are parameterized by an equivalenc functor and by a Store_Hash -parameter. If the latter parameter is true, then -the container stores with each entry a hash value, and uses -this value in case of collisions to determine whether to apply a hash value. -This can lower the cost of collision for some types, but increase the cost of collisions for other types. -

    - -

    - If a ranged-hash function or ranged probe function is directly supplied, however, -then it makes no sense to store the hash value with each entry. pb_assoc's container will fail at compilation, by design, if this is attempted. -

    - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_cd.jpg deleted file mode 100644 index 6c26a177985592cb0b5a141956026df16f3769c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54780 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Ⓢj>6YYR75u9l#U24 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 g9^<>1;FkL6%X=pF diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_exponential_size_policy.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_exponential_size_policy.html deleted file mode 100644 index f0fc5a762..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_exponential_size_policy.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - -hash_exponential_size_policy Interface - - - - - -

    -hash_exponential_size_policy - - - Interface - - -

    - -

    A size policy whose sequence of sizes form an exponential sequence (typically powers of 2) -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructors, and related methods. - - -
      2. - -
      - -
    8. - -
    9. -Protected Methods: - - -
        -
      1. -Size methods - - -
      2. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    - -

    -Constructors, destructors, and related methods. - - -

    - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      hash_exponential_size_policy
    -  (size_type start_size = 8,
    -    size_type grow_factor = 2)
    - - -
    -

    Default constructor, or onstructor taking a start_size, a start size and grow_factor, a growth factor. The policy will use the sequence of sizes start_size, start_size * grow_factor, start_size * grow_factor^2, ...

    - - -
    -
    void
    -  swap
    -  (hash_exponential_size_policy &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Size methods - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    size_type
    -  get_init_size
    -  (size_type suggested_size) const
    - - -
    -

    Given suggested_size, a suggested size, returns an initial size of the container related to the initial size.

    - - -
    -
    size_type
    -  get_nearest_larger_size
    -  (size_type cur_size) const
    - - -
    -

    Given cur_size, the current size, returns a size that is larger.

    - - -
    -
    size_type
    -  get_nearest_smaller_size
    -  (size_type cur_size) const
    - - -
    -

    Given cur_size, the current size, returns a size that is smaller.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_fn.html deleted file mode 100644 index 6ef435b0a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_fn.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Hash Functions - - - - -

    Hash Functions

    - -

    -A hash function is essentially an std::unary_operator. It takes a -const_key_reference, and returns -a (non-negative) integral type. -

    - -

    - A special hash function, null_hash_fn -serves to indicate that the ranged-hash function -or ranged-probe function should not be formed by composition. -

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_load_check_resize_trigger.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_load_check_resize_trigger.html deleted file mode 100644 index 6670d6968..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_load_check_resize_trigger.html +++ /dev/null @@ -1,744 +0,0 @@ - - - - - - -hash_load_check_resize_trigger Interface - - - - - -

    -hash_load_check_resize_trigger - - - Interface - - -

    - -

    A resize trigger policy based on a load check. It keeps the load factor between some load factors load_min and load_max. -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Load access methods. - - -
      4. - -
      - -
    8. - -
    9. -Protected Methods: - - -
        -
      1. -Insert search notifications. - - -
      2. - -
      3. -Find search notifications. - - -
      4. - -
      5. -Erase search notifications. - - -
      6. - -
      7. -Content change notifications. - - -
      8. - -
      9. -Size change notifications. - - -
      10. - -
      11. -Queries. - - -
      12. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    External_Load_Access
    - - -
    -

    Specifies whether the load factor can be accessed externally. The two options have different tradeoffs in terms of flexibility, genericity, and encapsulation.

    - - -
    -false - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -
    external_load_access
    - - -
    -
    External_Load_Access
    - - -
    -

    Indicates whether loads can be accessed externally

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      hash_load_check_resize_trigger
    -  (float load_min = 0.125,
    -    float load_max = 0.5)
    - - -
    -

    Default constructor, or constructor taking load_min and load_max load factors between which this policy will keep the actual load.

    - - -

    It is the responsibility of the user to ensure that load_min is smaller than load_max.

    - - -
    -
    void
    -  swap
    -  (hash_load_check_resize_trigger &r_other)
    - - -
    -

    Swaps content.

    - - -
    -
      virtual
    -    ~hash_load_check_resize_trigger
    -    ()
    - - -
    -

    Destructor.

    - - -
    - -

    -Load access methods. - - -

    - -

    These methods are only available if the external access parameter is set.

    - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline std::pair<float, float>
    -  get_loads
    -  () const
    - - -
    -

    Returns a pair of the minimal and maximal loads, respectively.

    - - -

    Calling this method will not compile when External_Load_Access == false.

    - - -
    -
    void
    -  set_loads
    -  (std::pair<float, float> load_pair)
    - - -
    -

    Sets the loads through a pair of the minimal and maximal loads, respectively.

    - - -

    Calling this method resizes the container, and might throw an exception. It is the responsibility of the user to pass appropriate loads to this function. Calling this method will not compile when External_Load_Access == false.

    - - -
    - -

    -Insert search notifications. - - -

    - -

    Notifications called during an insert operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_insert_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_insert_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_insert_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Find search notifications. - - -

    - -

    Notifications called during a find operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_find_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_find_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_find_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Erase search notifications. - - -

    - -

    Notifications called during an insert operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_erase_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_erase_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_erase_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Content change notifications. - - -

    - -

    Notifications called when the content of the table changes in a way that can affect the resize policy.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_inserted
    -  (size_type num_entries)
    - - -
    -

    Notifies an element was inserted. the total number of entries in the table is num_entries.

    - - -
    -
    inline void
    -  notify_erased
    -  (size_type num_entries)
    - - -
    -

    Notifies an element was erased.

    - - -
    -
    void
    -  notify_cleared
    -  ()
    - - -
    -

    Notifies the table was cleared.

    - - -
    - -

    -Size change notifications. - - -

    - -

    Notifications called when the table changes size.

    - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  notify_resized
    -  (size_type new_size)
    - - -
    -

    Notifies the table was resized as a result of this object's signifying that a resize is needed.

    - - -
    -
    void
    -  notify_externally_resized
    -  (size_type new_size)
    - - -
    -

    Notifies the table was resized externally.

    - - -
    - -

    -Queries. - - -

    - -

    Called to query whether/how to resize.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline bool
    -  is_resize_needed
    -  () const
    - - -
    -

    Queries whether a resize is needed.

    - - -
    -
    inline bool
    -  is_grow_needed
    -  (size_type size,
    -    size_type num_entries) const
    - - -
    -

    Queries whether a grow is needed.

    - - -

    This method is called only if this object indicated resize is needed. The actual size of the table is size, and the number of entries in it is num_entries.

    - - -
    -
    inline bool
    -  is_shrink_needed
    -  (size_type size,
    -    size_type num_entries) const
    - - -
    -

    Queries whether a shrink is needed.

    - - -

    This method is called only if this object indicated resize is needed. The actual size of the table is size, and the number of entries in it is num_entries.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_policies.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_policies.html deleted file mode 100644 index c5bc2aada..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_policies.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - Hash Policies - - - - - -

    Hash Policies

    -

    - This subsection describes hash policies. It is organized as follows: -

    -
      -
    1. The General Terms Section describes - some general terms. -
    2. -
    3. The Range-Hashing Functions Section - describes range-hasing functions.
    4. -
    5. The Ranged-Hash Functions Section - describes ranged-hash functions.
    6. -
    7. The Implementation in pb_assoc Section - describes the implementation of these concepts in pb_assoc. -
    8. -
    - - -

    General Terms

    - -

    - There -are actually three functions involved in transforming a key into a hash-table's -position (see Figure - -Hash runctions, ranged-hash functions, and range-hashing functions -): -

    -
      -
    1. - A ranged-hash function, which maps keys into an interval of the - non-negative integrals. This is the function actually required by the - hash-table algorithm. -
    2. -
    3. - A hash function, which maps keys into non-negative integral types. This is - typically specified by the writer of the key class. -
    4. -
    5. - A range-hashing function, which maps non-negative integral types into an - interval of non-negative integral types. -
    6. -
    - -
    - -no image - -Hash runctions, ranged-hash functions, and range-hashing functions. -
    - -

    - Let U be a domain (e.g., the integers, or the strings of 3 - characters). A hash-table algorithm needs to map elements of U "uniformly" - into the range [0,..., m - 1] (where m is a non-negative integral - value, and is, in general, time varying). I.e., the algorithm needs a ranged-hash - function -

    -

    - f : U × Z+ → Z+ , -

    -

    - such that for any u in U -, -

    -

    - 0 ≤ f(u, m) ≤ m - 1 , -

    -

    - and which has "good uniformity" properties [knuth98sorting]. - One common solution is to use the composition of the hash function -

    -

    - h : U → Z+ , -

    -

    - which maps elements of U into the non-negative integrals, and -

    -

    - g : Z+ × Z+ → Z+, -

    -

    - which maps a non-negative hash value, and a non-negative range upper-bound into - a non-negative integral in the range between 0 (inclusive) and the range upper - bound (exclusive), i.e., for any r in Z+, -

    -

    - 0 ≤ g(r, m) ≤ m - 1 . -

    -

    - The resulting ranged-hash function, is -

    -

    - f(u , m) = g(h(u), m) - (1) . -

    - -

    - From the above, it is obvious that given g and h, f can - always be composed (however the converse is not true). -

    - - -

    - The above describes the case where a key is to be mapped into a single -position within a hash table, e.g., in a collision-chaining table. -In other cases, a key is to be mapped into a sequence of poisitions -within a table, e.g., in a probing table. -

    -

    - Similar terms apply in this case: the table requires a ranged probe -function, mapping a key into a sequence of positions withing the table. This is -typically acheived by composing a hash function mapping the key -into a non-negative integral type, a probe function transforming the -hash value into a sequence of hash values, and a range-hashing function -transforming the sequence of hash values into a sequence of positions. -

    - - -

    Range-Hashing Functions

    - -

    - Some common choices for range-hashing functions are the division, - multiplication, and middle-square methods [knuth98sorting], - defined as -

    -

    - g(r, m) = r mod m (2) , -

    -

    - g(r, m) = ⌈ u/v ( a r mod v ) ⌉ , -

    -

    - and -

    -

    - g(r, m) = ⌈ u/v ( r2 mod v ) ⌉ , -

    -

    -respectively, for some positive integrals u and v (typically -powers of 2), and some a. Each of these range-hashing functions works -best for some different setting. -

    -

    - The division method (2) is a very common - choice. However, even this single method can be implemented in two very - different ways. It is possible to implement (2) - using the low level % (modulo) operation (for any m), or the low - level & (bit-mask) operation (for the case where m is a power of - 2), i.e., -

    -

    - g(r, m) = r % m (3) , -

    -

    - and -

    -

    - - g(r, m) = r & m - 1, ( m = 2k - - for some k) (4) , -

    -

    - respectively. -

    -

    - The % (modulo) implementation (3) - has the advantage that for m a prime far from a power of 2, g(r, m) - is affected by all the bits of r (minimizing the chance of collision). - It has the disadvantage of using the costly modulo operation. This method is - hard-wired into SGI's implementation [sgi_stl]. -

    - -

    - The & (bit-mask) implementation (4) - has the advantage of relying on the fast bitwise and operation. It has the - disadvantage that for g(r, m) is affected only by the low order bits of r. - This method is hard-wired into Dinkumware's implementation [dinkumware_stl]. -

    - - - - -

    Ranged-Hash Functions

    - -

    - Although rarer, there are cases where it is beneficial to allow the client to -directly specify a ranged-hash hash function. It is true, that the writer of -the ranged-hash function cannot rely on the values of m having specific -numerical properties suitable for hashing (in the sense used in [knuth98sorting]), -since the values of m are determined by a resize policy with possibly -orthogonal considerations [austern98segmented]. -The values of m can be used in some cases, though, to estimate the -"general" number of distinct values required. -

    - -

    - Let -

    - -

    - s = [ s0,..., st - 1] -

    - -

    - be a string of t characters, each of which is from domain S. -Consider the following ranged-hash function: -

    - -

    - - - f1(s, m) = - ∑ i = - 0t - 1 si ai mod m - (5) , -

    - -

    - where a is some non-negative integral value. This is the standard -string-hashing function used in SGI's implementation (with a = 5) [sgi_stl]. -Its advantage is that it takes into account all of the characters of the -string. -

    - -

    - Now assume that s is the string representation of a of a long DNA -sequence (and so S = {'A', 'C', 'G', 'T'}). In this case, scanning the -entire string might be prohibitively expensive. A possible alternative might be -to use only the first k characters of the string, where -

    - -

    - k |S| ≥ m , -

    -

    - i.e., using the hash function -

    -

    - f2(s, m) = ∑ i = 0k - - 1 si ai mod m , (6) -

    -

    - requiring scanning over only -

    -

    - k = log4( m ) -

    -

    - characters. -

    -

    - Other more elaborate hash-functions might scan k characters starting at - a random position (determined at each resize), or scanning k random - positions (determined at each resize), i.e., using -

    -

    - f3(s, m) = ∑ i = r0r0 + k - 1 - si ai mod m , -

    -

    - or -

    -

    - f4(s, m) = ∑ i = 0k - 1 sri - ari mod m , -

    -

    -

    - respectively, for r0,..., rk-1 each in the - (inclusive) range [0,...,t-1]. -

    - - -

    Implementation in pb_assoc

    - -

    - Containers based on collision-chaining hash tables in pb_assoc -are parameterized by the functors Hash_Fn, and Comb_Hash_Fn. -

    - -

    - If such a container is instantiated with any hash functor and -range-hashing functor, the container will synthesize a ranged-hash functor -automatically. For example, Figure - -Insert hash sequence diagram - -shows an insert sequence diagram. The user inserts an element (point A), -the container transforms the key into a non-negative integral using the hash -functor (points B and C), and transforms the result into a position -using the combining functor (points D and E). -

    - -
    - -no image - -
    -
    -Insert hash sequence diagram. -
    - - -

    - If such a container is instantiated with the -null policy -hash functor, -null_hash_fn, -and a combining-hash functor, the container treats -the combining hash functor as a ranged-hash function. For example, Figure - -Insert hash sequence diagram with a null combination policy - -shows an insert sequence diagram. The user inserts an element (point A), -the container transforms the key into a position -using the combining functor (points B and C). -

    - - -
    - -no image - -
    -
    -Insert hash sequence diagram with a null combination policy. -
    - -

    - pb_assoc contains the following hash-related policies: -

    - -
      -
    1. -direct_mask_range_hashing -and -direct_mod_range_hashing -are range-hashing functions based on a bit-mask and a modulo operation, respectively. -
    2. -
    3. -linear_probe_fn and -quadratic_probe_fn are probe -classes based on linear and quadratic increment, respectively. -
    4. -
    5. -null_hash_fn -and -null_probe_fn -are -null policy classes for creating -ranged-hash and ranged-probe functions directly (i.e., not through -composition). -
    6. -
    - -

    - pb_assoc does not provide any hash functions (it relies on those -of the STL). -

    - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_policy_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_policy_cd.jpg deleted file mode 100644 index c5d2290351358fbab1a2c67ef6d4d3e255a65d89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59739 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%0DDnVi) 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 - - - - -hash_prime_size_policy Interface - - - - - -

    -hash_prime_size_policy - - - Interface - - -

    - -

    A size policy whose sequence of sizes form a nearly-exponential sequence of primes. -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    4. - -
    5. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      - -
    6. - -
    7. -Protected Methods: - - -
        -
      1. -Size methods - - -
      2. - -
      - -
    8. - -
    - - -

    -General definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    size_t
    - - -
    -

    Size type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  swap
    -  (hash_prime_size_policy &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Size methods - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  get_init_size
    -  (size_type suggested_size) const
    - - -
    -

    Given suggested_size, a suggested size, returns an initial size of the container related to the initial size.

    - - -
    -
    inline size_type
    -  get_nearest_larger_size
    -  (size_type cur_size) const
    - - -
    -

    Given cur_size, the current size, returns a size that is larger.

    - - -
    -
    inline size_type
    -  get_nearest_smaller_size
    -  (size_type cur_size) const
    - - -
    -

    Given cur_size, the current size, returns a size that is smaller.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram.jpg deleted file mode 100644 index f675cea6302f830ba9c90cc0c027489c08c832a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30271 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram2.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram2.jpg deleted file mode 100644 index a292d5aaaa163ec96e2def097549ef1b885f580b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20756 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_standard_resize_policy.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_standard_resize_policy.html deleted file mode 100644 index 151ecfc1b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/hash_standard_resize_policy.html +++ /dev/null @@ -1,986 +0,0 @@ - - - - - - -hash_standard_resize_policy Interface - - - - - -

    -hash_standard_resize_policy - - - Interface - - -

    - -

    A resize policy which delegates operations to size and trigger policies. -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      3. -Policy definitions. - - -
      4. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      5. -Size access methods. - - -
      6. - -
      - -
    10. - -
    11. -Protected Methods: - - -
        -
      1. -Insert search notifications. - - -
      2. - -
      3. -Find search notifications. - - -
      4. - -
      5. -Erase search notifications. - - -
      6. - -
      7. -Content change notifications. - - -
      8. - -
      9. -Size change notifications. - - -
      10. - -
      11. -Queries. - - -
      12. - -
      - -
    12. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Size_Policy
    - - -
    -

    Size policy type.

    - - -
    -hash_exponential_size_policy<> - - -
    -
    Trigger_Policy
    - - -
    -

    Trigger policy type.

    - - -
    -hash_load_check_resize_trigger<> - - -
    -
    External_Size_Access
    - - -
    -

    Indicates whether physical sizes can be accessed externally.

    - - -
    -false - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Size_Policy
    - - -
    -

    public

    - - -
    -
    Trigger_Policy
    - - -
    -

    public

    - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    trigger_policy
    - - -
    -
    Trigger_Policy
    - - -
    -

    Trigger policy type.

    - - -
    -
    size_policy
    - - -
    -
    Size_Policy
    - - -
    -

    Size policy type.

    - - -
    -
    external_size_access
    - - -
    -
    External_Size_Access
    - - -
    -

    Indicates whether sizes can be accessed externally.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      hash_standard_resize_policy
    -  (size_type suggested_size = 8)
    - - -
    -

    Default constructor, or constructor taking suggested_size, a suggested size (the actual size will be determined by the Size_Policy object).

    - - -
    -
      hash_standard_resize_policy
    -  (const Size_Policy &r_size_policy,
    -    size_type suggested_size = 8)
    - - -
    -

    constructor taking some policies and suggested_size, a suggested size (the actual size will be determined by the Size_Policy object). r_size_policy will be copied by the Size_Policy object of this object.

    - - -
    -
      hash_standard_resize_policy
    -  (const Size_Policy &r_size_policy,
    -    const Trigger_Policy &r_trigger_policy,
    -    size_type suggested_size = 8)
    - - -
    -

    constructor taking some policies and suggested_size, a suggested size (the actual size will be determined by the Size_Policy object). 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.

    - - -
    -
    virtual
    -  ~hash_standard_resize_policy
    -  ()
    - - -
    -

    Destructor.

    - - -
    -
    inline void
    -  swap
    -  (hash_standard_resize_policy &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    Size_Policy &
    -  get_size_policy
    -  ()
    - - -
    -

    Access to the Size_Policy object used.

    - - -
    -
    const Size_Policy &
    -  get_size_policy
    -  () const
    - - -
    -

    Const access to the Size_Policy object used.

    - - -
    -
    Trigger_Policy &
    -  get_trigger_policy
    -  ()
    - - -
    -

    Access to the Trigger_Policy object used.

    - - -
    -
    const Trigger_Policy &
    -  get_trigger_policy
    -  () const
    - - -
    -

    Access to the Trigger_Policy object used.

    - - -
    - -

    -Size access methods. - - -

    - -

    These methods are available only if the external size parameter indicates that external size access is allowed.

    - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  get_actual_size
    -  () const
    - - -
    -

    Returns the actual size of the container.

    - - -

    This method returns the number of entries (used and unused) in the container. It is different from the container's size method, which returns the number of used entries. Calling this method will not compile when External_Size_Access == false.

    - - -
    -
    void
    -  resize
    -  (size_type suggested_new_size)
    - - -
    -

    Resizes the container to suggested_new_size, a suggested size (the actual size will be determined by the Size_Policy object).

    - - -

    Calling this method will not compile when External_Size_Access == false.

    - - -
    - -

    -Insert search notifications. - - -

    - -

    Notifications called during an insert operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_insert_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_insert_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_insert_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Find search notifications. - - -

    - -

    Notifications called during a find operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_find_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_find_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_find_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Erase search notifications. - - -

    - -

    Notifications called during an insert operation.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_erase_search_start
    -  ()
    - - -
    -

    Notifies a search started.

    - - -
    -
    inline void
    -  notify_erase_search_collision
    -  ()
    - - -
    -

    Notifies a search encountered a collision.

    - - -
    -
    inline void
    -  notify_erase_search_end
    -  ()
    - - -
    -

    Notifies a search ended.

    - - -
    - -

    -Content change notifications. - - -

    - -

    Notifications called when the content of the table changes in a way that can affect the resize policy.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    inline void
    -  notify_inserted
    -  (size_type num_e)
    - - -
    -

    Notifies an element was inserted.

    - - -
    -
    inline void
    -  notify_erased
    -  (size_type num_e)
    - - -
    -

    Notifies an element was erased.

    - - -
    -
    void
    -  notify_cleared
    -  ()
    - - -
    -

    Notifies the table was cleared.

    - - -
    - -

    -Size change notifications. - - -

    - -

    Notifications called when the table changes size.

    - - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  notify_resized
    -  (size_type new_size)
    - - -
    -

    Notifies the table was resized to new_size.

    - - -
    - -

    -Queries. - - -

    - -

    Called to query whether/how to resize.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    size_type
    -  get_init_size
    -  () const
    - - -
    -

    Queries initial size.

    - - -
    -
    inline bool
    -  is_resize_needed
    -  () const
    - - -
    -

    Queries whether a resize is needed.

    - - -
    -
    size_type
    -  get_new_size
    -  (size_type size, size_type num_used_e) const
    - - -
    -

    Queries what the new size should be.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/home.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/home.html deleted file mode 100644 index 79b806620..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/home.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -pb_assoc - - - -

    - pb_assoc - - Policy Based Associative Containers -

    - -
    Ami Tavory and Vladimir Dreizin, IBM Haifa Research Laboratories, - and Benjamin Kosnik, Red Hat -
    - -
    - pbassoc@gmail.com -
    - -

    -

    - -

    - The pb_assoc library is a library of policy-based associative -containers, designed for high-performance, flexibility, and semantic safety. -

    - -

    The documentation is organized as follows. -

    -
      -
    1. The Introduction Section describes the problems which this library tries to address.
    2. -
    3. The Motivation Section describes and motivates -the main differences between this library and the STL's associative containers.
    4. -
    5. The Design Section describes the design. -
        -
      1. Overview describes an overview.
      2. -
      3. Data-Structure Genericity discusses generic manipulation of containers based on different underlying data-structures.
      4. -
      5. Mapping-Semantic Genericity discusses generic manipulation of containers with different mapping semantics.
      6. -
      7. Hash-Based Containers describes the design and policies of hash-based containers.
      8. -
      9. Tree-Based Containers describes the design and policies of tree-based containers.
      10. -
      11. List-Based Containers describes the design and policies of list-based containers with update policies.
      12. -
      -
    6. -
    7. The Interface -Section provides links to the interfaces of the classes. -
    8. -
    9. The -Examples Section shows examples of using and extending -the library. -
    10. -
    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/index.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/index.html deleted file mode 100644 index 1e0864126..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - -pb_assoc - - - - - - - - - \ No newline at end of file diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_resize_sequence_diagram1.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_resize_sequence_diagram1.jpg deleted file mode 100644 index 6e8a94d3d0040178dddb460dd48280943c08cf99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66060 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_resize_sequence_diagram2.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/insert_resize_sequence_diagram2.jpg deleted file mode 100644 index 4aa2c6cb8ce8d0225a023b2c66ddcc0ff859f576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43557 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 mVX9=i3vzb=XZ2KPVBLAfa4gqVRy}SU`9A=QT - - -Insert-type Methods - - - - -

    Insert-Type Methods

    - - - - - - - - - - - - - -
    MethodDescriptionComplexity GuaranteeException Guarantee
    -
    inline std::pair<find_iterator, bool>
    -  insert
    -  (const_mapped_reference r_value)
    -
    -
    Inserts r_value into the table. Writes only if an entry with an equivalent key does not exist. If the entry was written, returns -
    std::make_pair(it, true)
    -
    where it corresponds to the new entry; - Otherwise, returns -
    std::make_pair(find_end(), false)
    -
    .
    O(1) average

    O(m) worst

    (m = #entries)

    [1]

    1,2
    - -

    -[1] Note that for multimap types, the mapped data part is a collection, and so the average and worst case complexities -need to be multiplied by the corresponding complexities of copying collections. -

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/interface.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/interface.html deleted file mode 100644 index d5b5eb66f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/interface.html +++ /dev/null @@ -1,342 +0,0 @@ - - - - Interface - - - - -

    Interface

    -

    - Following is the library's interface: -

    -
      -
    1. Short Tutorial is a short tutorial.
    2. -
    3. Containers describes the containers of -the library. -
    4. -
    5. - Data-Type Policies describes data-type policies. -
    6. -
    7. - Data-Structure Tags and Traits describes - tags and traits identifying the underlying data-structure and its behaviour. -
    8. -
    9. - Mapping-Semantics Tags and Traits describes - tags and traits identifying the mapping-semantics. -
    10. -
    11. - Data-Structure Policy Classes describes - policies for configuring underlying data-structures. -
    12. -
    13. - Exceptions Subsection desribes exception classes. -
    14. -
    - - -
    - - - -

    Containers

    - -

    -Overview and -Data-Structure Genericity discuss relevant design -points. -

    - -
    - -no image -
    - -
    -class hierarchy. -
    - -
      -
    1. - Basic Associative-Containers: -
        -
      1. basic_assoc_cntnr - basic associative-container for the "map" case
      2. -
      3. basic_assoc_cntnr - basic associative-container for the "set" case
      4. -
      5. basic_assoc_cntnr - basic associative-container for the "multimap" case
      6. -
      -
    2. -
    3. - Hash-Based Associative-Containers: -
        -
      1. basic_hash_assoc_cntnr - basic hash-based associative-container
      2. -
      3. cc_hash_assoc_cntnr - collision-chaining hash-based associative-container
      4. -
      5. gp_hash_assoc_cntnr - (general) probing hash-based associative-container
      6. -
      -
    4. -
    5. - Tree-Based Associative-Containers: -
        -
      1. basic_tree_assoc_cntnr - basic tree-based associative-container
      2. -
      3. basic_tree_assoc_cntnr - basic tree-based associative-container with reverse iteration
      4. -
      5. tree_assoc_cntnr - tree-based associative-container
      6. -
      -
    6. -
    7. - List-Based Associative-Contaiers: -
        -
      1. lu_assoc_cntnr - list-based update-policy associative container
      2. -
      -
    8. -
    - - -
    - - -

    Data-Type Policies

    - -

    -Overview and -Mapping-Semantic Genericity discuss relevant design -points. -

    - -
      -
    1. null_data_type -
    2. -
    3. compound_data_type -
    4. -
    - -
    - - - - -

    Data-Structure Tags and Traits

    - -

    - -

    - -

    Data-Structure Tags

    - -
    - -no image -
    - -
    -Data-Structure Tag class hierarchy. -
    - -
      -
    1. basic_ds_tag
    2. -
    3. basic_hash_ds_tag
    4. -
    5. cc_hash_ds_tag
    6. -
    7. gp_hash_ds_tag
    8. -
    9. basic_tree_ds_tag
    10. -
    11. rb_tree_ds_tag
    12. -
    13. splay_tree_ds_tag
    14. -
    15. ov_tree_ds_tag
    16. -
    17. lu_ds_tag
    18. -
    19. compound_ds_tag
    20. -
    - - -

    Invalidation-Guarantee Tags

    - -
    - -no image -
    - -
    -Invalidation guarantees class hierarchy. -
    - -
      -
    1. basic_invalidation_guarantee
    2. -
    3. find_invalidation_guarantee
    4. -
    5. range_invalidation_guarantee
    6. -
    - -

    Data-Structure Traits

    - -
      -
    1. ds_traits
    2. -
    - - -
    - - -

    Mapping-Semantics Tags and Traits

    - -

    - -

    - -

    Mapping-Semantics Tags

    - -
    - -no image -
    - -
    -Mapping-Semantics Tag class hierarchy. -
    - -
      -
    1. basic_ms_tag
    2. -
    3. data_enabled_ms_tag
    4. -
    5. compound_data_enabled_ms_tag
    6. -
    - - -

    Mapping-Semantics Traits

    - -
      -
    1. ms_traits
    2. -
    - - -
    - - -

    Data-Structure Policy Classes

    - - -

    Hash-Related Policies

    - -

    -

    Hash-Based Containers describes -relevant design points. -

    - -

    Hash and Probe Policies

    -
      -
    1. Hash Functions: -
        -
      1. null_hash_fn
      2. -
      -
    2. -
    3. Range-Hashing Functions: -
        -
      1. Interface of a Range-Hashing Function
      2. -
      3. direct_mask_range_hashing
      4. -
      5. direct_mod_range_hashing
      6. -
      -
    4. -
    5. Probe Functions: -
        -
      1. Interface of a Probe Function
      2. -
      3. linear_probe_fn
      4. -
      5. quadratic_probe_fn
      6. -
      7. null_probe_fn
      8. -
      -
    6. -
    7. Ranged-Hash Functions: -
        -
      1. Interface of a Ranged-Hash Function
      2. -
      -
    8. -
    9. Ranged-Probe Functions: -
        -
      1. Interface of a Ranged-Probe function
      2. -
      -
    10. -
    - - - -

    Resize Policies

    - -
    - -no image - -
    -
    -Resize policy class diagram. -
    - -
      -
    1. Resize Policies: -
        -
      1. Interface of a Resize Policy -
      2. hash_standard_resize_policy
      3. -
      -
    2. -
    3. Size Policies: -
        -
      1. Interface of a Size Policy
      2. -
      3. hash_exponential_size_policy
      4. -
      5. hash_prime_size_policy
      6. -
      -
    4. -
    5. Trigger Policies: -
        -
      1. Interface of a Trigger Policy
      2. -
      3. hash_load_check_resize_trigger
      4. -
      5. cc_hash_max_collision_check_resize_trigger
      6. -
      -
    6. -
    - - - -

    Tree Node-Update Policies

    -
      -
    1. Design of Node Update Policies
    2. -
    3. Interface of a Node Updator Policy
    4. -
    5. Order-Statistics (Finding Entries by Key Order): -
        -
      1. order_statistics_key
      2. -
      3. order_statistics_key_cmp
      4. -
      5. order_statistics_node_updator
      6. -
      7. find_by_order
      8. -
      9. order_by_key
      10. -
      -
    6. -
    7. null_node_updator
    8. -
    - - -

    List Update Policies

    -
      -
    1. Design of List Update Policies
    2. -
    3. Interface of a List Update Policy
    4. -
    5. Move-to-Front: -
        -
      1. move_to_front_update_metadata
      2. -
      3. move_to_front_update_policy
      4. -
      -
    6. -
    7. Counter: -
        -
      1. counter_update_metadata
      2. -
      3. counter_update_policy
      4. -
      -
    8. -
    - - -
    - - - - -

    Exceptions

    -
      -
    1. pb_assoc_ex
    2. -
    3. cannot_insert
    4. -
    5. cannot_join
    6. -
    7. cannot_resize
    8. -
    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/interval_node_invariants.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/interval_node_invariants.jpg deleted file mode 100644 index 0f4db9671a3034a18ff88a0e5d44bd26129c0d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31555 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

    F{S*RSMDqpPjtG2YN z6;;r25_lth36XR%O__|-ydOHPL{h1}-m z=JkSlslzp{&}t<~Q|%&?c*GWay6cNZ*!n+w z{ydeW%p?wVUC}i5S(9*J3AU;f?8&Jrvcx&W`018X@{M%2-%!-hnnGWWdPerRvBY7( zvo_9&udgWc-b_4ZBzGl=WXY6bysndw<7?NwF5R1{C~U5%$K)y$NXx^fV z1!SQUUCbn#klPe6AefVEU}g@&n?SDlGtv(EY{*^rEE;4-f7H;KJpOj*2Q_{aNQZvzsh$F<=k_{5rGB0htHF|YYI&L=&f_CE|r&R`M z8&Tk9W;%@_TRi}%to6$b;kiae_!Da$Q0Rhpl4E1&O~kZV#s?n5KED#fyQTx4lvoXO zqOEEC_|J}w;bM;d3Z?Ki;4g|AZnLUgPKkozStsHlng6j#{=1HVgxhkq$vlcbz>&hS zlJ(lP9>s!yEQBR+0fBQITCX>DTjb~29&4fWu6L$IMPm&T#%)Y@c1geN4 zhWg5Fnl{SP6RSEaB(JrRPk0Tjn_MHR4PiueuzZ9e?kuWLMHfb7WA>j?51&rjkv1^s zzjX5Bk}VH$At%zR8RwmMQ}Z{ii9&&cDh+t=Lfypf=6ERw-)k|-8CIFIUzsTKH#wQs zPL>zY?2@M2V_xbIL;m?YNwJn*I+q;pVB>QqP$}%c?!ow1L^HHFYI#l^`nCt8+07aGvoC3khtxcZ|j`)1LhcM$xVc{vmwh* zL;1&05IDIpQl14=CNC5P71oL@Ksw*S=A_x6&Ai&~ z%D<5R?p0u`q_4wTYFb+tZW{O)B`iDmkw1&Bm80(RvJo-|+dQKx5QQsUgl*z3Fg^Tc zXf;=-EUI)MVr7YMKYM>|Ne&EW2CQ`JlOPwFrUKhp7Z0*TIcFP^_Z za?Dr>L=o#ms$rqhs%i+?o?tR4g#99^7_bR$@<8cX@R05P5=TB{Gn}v z8GT5^S9(NWsi6Dgvt~mT3SVz3X(2)}0#H=Wl8U_xls}usyCL2Ozn;qay@}le;Ohhi zEd+I#APuWd*K`&_3lyIdtG1`vI%G3E0XhT^Q0Q?N@I)qEqMpNW6e*5T;5p1tQ;^Wy z+=$dciIBzurGpdzmiuE8@sE11ay688{lq&gU^Vr|a6ZMtc6|gRT7t9qR(_5P4+i~I z5iMA{hQGXkmo)Z7f6V+NdQB;()mXFQlZ+F$U+i`$ow0YJ7GQr7&~lvQ zoKlC9Xee~l8)`a4tUeOHl<`j_eoRtWolsr9_PRp2!AKDIFV`ep z{u4@m^ta5&KTn4ZcZVTwbTda+>S*f0vrP`Mi_vR;xFvX1w8>%k1rr?&hZ|e2+-yoiUU$U5*z~f;p$+ynn zs-1=PLk;j=WpVSoFtd0C<^pxs&T=CYab9>W{-6`jsIQ{Ku%n(u(r5|4>#7c|>Z@ zzOTj4-RJPypQ?I5)STes8wQ5A2(ET$b($%Km^)em71qMOwP)3b^^M`L!&^1|sqf|B z4i1+u>SARNR%c8f{4D)@mWAh85*L4c(#;LkNgj{7_=^Zgrf$*$W^|IVR1?%$l zg~n?sdaF8|JB&!TEb;lU(K?&>qp!wG`ntpU`d|t!l>I{vsgtiV7wIo?UMG&|rr-n# zYQ5!O!RmW9nHQqyiYZx=n%Dsv{9N(`O8)?uyGwLC`2tga(H>LkXJ%iht7PRA{Pm-A zP#}sB0%cYp2*C*jsrqzS&eF)1N5gcsZlL8E@xAz02)(MvxdjBfn%xZ!*dN!GRNYlA zz8j}teO&Khc6V32j=VW~XlCcm)MfJ7POt-6-pU>EE`d0y3YBdu$|Af^PKy-zgpbeB z81ro2S3|kIA{1qYnDr~<2Um7n=evmcF>~;H3bcL8zqt|kpA(FW$jb6~w{hfgGY;HN z_DefE6R*$qvdrV>z_Yo4gxWOgX__P7-WuQQxd_mk*!HFfZrxUYhN@dQ?*MD(D^ayP z&(B`$+cMxhn=2s{tJ1kH*wH++J8ehlXxa)tBNWgOtS4q*U=FT&>PQ=?`OdhoV?fmO z`x4*Leq8`kqj+Ad)ht2@w?cF&4Td(_dpkzD$>m&t@s>7LWhA?JSD?)6=h+Gzdx1ht z*XLr&tebqqjuy15mU?X5Aq!b73-SdECGW9<9O5NPtu2k{$8VLaFUZ7B-PL;M>7i&< zRC4Mds<6^$0Q})d6@26pY0r)^*Zd~Q&xjo}3kBohPczECdAF-1A}VWHH-6q;|9C&< z=IRRGJsaTDzE8Hz9GTjdk@{Uv#Nf*mLwKIP1FAin0%Eivm>$b9V+!P|Ybf&sQK6su zNS4hB)6aHw*v=ar*{wE&u&HtKw(bFt4-cn&i%i0dBJ%MKL>qb2u1*NgGEOJmNC1>L zwZSQdBGv;4|671$`FLy}<1&i1Jipz0Ogqh>FMd9JXod{pC|GD z?40Jf7K7r!41+&dNms3)AE91dp_FyB50ge#L{1nBzIhT(|1g5Wv{aXL4dfkdxeuas zQn)M55LA)qGcYF0vdyR1&ums!Lh)fdh;PpZ>6rc2YliGW+gkhsh!HR%$6n6BWsOG3 z>@g4n*ZxG49{jnW_x-c1LX)oRjwBC264_^3wNpHX87i%1^?8r?kH5R=^%Psx$MN@H z@Lw|6D{OWkJOEXl`gf_V`PS!Tl}$H@g9hljQ7zy7SIq&u#%%|boz$&c#r09d9RZE) zru)LTaS4>RHI*WPCEPs0bh&_QjW%+g$FgG8M074?(RFCZ`!;Fgl*J6_^GJCbI@Wg1 zuCqNwM!u!LU)%P_G*3Z6leHT_QWPtM%<#T(LyJItZRU?$SSJ5+YVUxzu(s7}1?uq{ z5AA7x-#+z6a6dr*h5i*+|7L?AK*ng?Fpa8$1!bFXZ~vT7M|F@<1?TPMmd}G3&yjLH ze_6NDG}~XBIdj{;43zEngcuMHy-XI37l-BC@oHwvkWa;+@Z&Y|E|5-pFM;GyI?S&NHaV zZQbJm6cChvh=9@r6s32N-it^_LJ?4DBE1trl`2(Wg9y?@dapr>bOH#{K|&|=5)!&V z;J(f|`^-Lj&fK%l+;i@|ANHp;$t0P~nzf#_p6CC6elLxiV~TwDfKdg|=>CD%HSZO& zKOrXh3v|@K<=$-FVJDC-5lOFl#XkB`Y7QUgQr54D?XJ__tVk|8oiErY%6Vl|Uy@Wp zpl&UUiLO+zWXHmfOf*O`Uf|`<+TQZZfLU6*yHrfishHPBUaF45GY=34k*Ut>n^qk1 zY@goeLPsYxNpO!3|4{g}mdr($mV9lpOa5y7CoLjHMeB93jKe5?&LJpu?e_BYR6+(9 zF4mppEi6|4t>9l$r+f$Wb}^SleM7n^7htMqeO8z~ol;P`nc^9`4~sT_lF?liaBZi$ zVkrOwy6&Pv)nn*YCet*W&{@AyK<81>zdQvL;0hd$*KS1haDzGV2;MgJfM(A}#@+pY z5KJO$?2&sq(Us@x#Oxig3e9KAg8pp+LKFRkw#bsNj0^A&NTx%4`jQ_NQU_9ji~Xb> z>jE#4QJzYaZ^#LiH4Dp$7>-L)Kr1ZAz6<$fcN=1c*SW3mEE3&G1HKVGPCHx712RV| zTeDQPi5g=o#&+k24f0zGQ>nYpd^a--A!1D-={eSUnl5jk-Ui0)uMH0iUO0(?@RqPL zv>8b6Z$ON?6Df+`4l|w+7VbT5WUazO=iplC#>aAIYH-D#`Uwch#-Im3g#;Ldp8F1k zjTFtuIN;)MQd84^tH5gcf|Oi^4&R&L2ZY5O#dvL_egqzL@Upb#fxMd3hl=`~LG7;= z`B(0ViO9FuVe|+F^NahzW+P{c)?DAxIO^pEjC(7Ux`(=(p@s(d#NB_D)_!F_{iE?e z(R6yrN>2{m`b0^U4Mft4IjPOzoV}B#;ZT|Ms2yig>-Utb6We%7MT8z&JhZ8{7#@tf zS0rW-#o!_Q_!BHVN&Z-WxA0?#7Jgs=Xr2T#?_+1Ig9T#zzG4C~++{_x72IBb-$4f)i-pBTfxl26EZe1?eHE&?=87kG-YdU5hW5WYAq< z9APf7@t!zi@}3JX7V;I)j&nSC$g^c#RSiv=SB;%{ogI1!FDP)p2-J`(dI1XAEX`@A zh`u$qeaD;DGwsvqmUN=`W$0|s;T-8psXN%_@M5&F_NWE5&ZLY;BX9oHjc48=4<&Hk z5U9BuPxYy7#qAEZH%V!QqguVNuRm^!kyiV3bI=>Ut~4yu8!9-)WB2u8ak9o>j1MbJuug z1DV#jsmyNYt}~@aF%<&nv&tpn$TJ&ERY!*}T(be5><^{1EjyPqu6I0Bb)R%|-JLXf zP*+a>Huj(bEW=L+R(d9Cw7Qk(qlk?G_LZ99vERTJ$33N6EApRPP{&#UzWr`eJi262 z^@aEr!+B~8F%8trT9SS0On}+RFGBHIFRcnYAkePA#Lq3r2P*Xma~ibqce@p7tzS45 zW;gIL;cX~Fo7-V(sb%4Qd}BLHdk%}dhT=hqV7Oa;-f7{K9_)T8!X%E{9mm|Jgiq=( zp!1n6(;#$|=$vpN4CgA;=OYrUo4SymUG%-t`pFpDVP{_8YFToh9KlHJFMe)#u8<}S zKy8~5KG`+qlH1xy`06Si-Z+eQ-fh58K~c^KBRB@GTsP!HWOJ=Gn08j}Qv@|x9BY)} z69XqDur@*{%oR&$J4d4WNqu44)R9v2m3>b6DdlDU%55v2=)i~HT!(8KC0UNavY6PA z(rt7ZHy}}3g~-ORff^iG_dy@LLj>`rA#5mL=2N}$xKxw65x192P)Fu!t$TG^S2$J} z>v+YrRQq=1Tipw?Q zr@2J9T5*5uU`^jkh$*k}4#nnS`c;wFM_Sg>ju}0PnNjx9EYYDZgixT1Ou+O*iu<>; zg}WnyJyZ_c#fnYUQTznOFf9N|LDgyGqdJ<BGJtp1<~(;2iB4&6v>bmsbJGgME9l3SPFGezz!^_SI2)lg`Fo+qk}WB)S=14d7jh z%ew=!{rxsHJ(NlzPlg>DxiAg`ZS2^dl8v3iy9VE6ldQS!tR6p6bKNhkx1~7~&-b!Y zQ9YH=2Cn)lh|{RdF2p&}t^5m6DIg~o{%Udl7srP<-E%gvQ8DH{Yy8MG`60wvRWLx( zk$oXupUeV&y3;Agg9w!n6NuI|2!52^$ae;y{VFFE7r^^z?Di&K4ojSlB79$n8Z_@- zM?A&-5GzB_Gk;f2-uGpvDkAm<1L;tA)g9d`V;w$7wnyG>F!oGV zW>wMZYL#V5&)hF?BX+-XP~wR|)`UzmAya+DTHhUgwP$!5pO*IB0*uWB%N9;xXTIi5 zE1QeSdSDYHY$(0EI-ELTs8aDUUm|^Vm|W%9M|jGtcwKM-T?^3@Nr6}gTcrRAe>uzu z^2}YSe$3&(c#7*msY7Y0D1%*;w)PFD2=aKM3C!C09dYDwLJPdS!Z5Uwt7;=Yn~3pk zfdrK$lqbr^ret=i2aM#2AD-(|&&duEMl%$;P9QTU5`C1h#xlc;I+!)>FF9TS6hjn`%9sl&DRkHR``_C8MXF=3CftR48qH=XMlb4D(OE$MJe5{efliz487(9N{Z z{6U84H9uI(mY|JwYF*cc)6bWEVXH-YukSf8Nk8fHC=B}4C7t4VG}#80Ux8%WrU)k^)8KD* zP@n5kRYH|s(~NfGu_PI^^!R~j4ok%l8V|6#?M5OQE7u4V;#aH~5fYzR_>LstD5E1& z{x6t`H}2w&*9~Xrx#h}oO(rKB^C67&1EQrucQ2{W& zOj;z>bP8K%^G!K2!J?v6+53{rbxE8>FhZt+1FJ{CEJ_o<99Xoc>`XybDfp;5^;`Av z>fG<@Hv9fs#1Aw9&3a{qJfVuo)HNRl8NQsqgjP#Y0YayAhmQuy|D=TkSyZ>aPt@LLCDW8W_2vVd1Ui z#r0XnQAdLX`)!L~fOJPMV_k;oj6;0JOIo4s?ecPY;P=zy(eWnhHDUWaFVDvn&Y`u{ z5!WThK<9~BGIWXCk(&(nuy-Q{mIUj$nkv=cp6^y9yREvEym|b_Y+KXmnlQC*7!uu! zqLqlL%xgOf+n1SW5SP$wrRq|Q(>`*IM1jzp7TxJ~&W7fF7r#URK&-bs!nHc~Y}9gg z&p69K58gv7A%KTlB;$uU@g=1G^0(xWkj{_MMneB&8`qMy7}--EeDCI@=A1)ggBx26 zh@pltTFUHNb@qbAek5x%BzQl62N`*49d)ixyy1gNFb=@UOnixX+dL9 z@*)Z>bAx2n9OIDXh{fOQI6T2baI{|6v_8CRKh#x6!paqw(8HuZ7wXV?6jGg<$+t4u zvE+R{h-CvzRU~s6(p;r3*JZ5Ank2e>+a$|38eVtFgW`LsZ*J&M4=D&lXBN;pA_y4Yl@1bE%q>g*qNf@J zcS1>4Z5y1^VNTZctKM5t8$~bWE*|b!jR=MfdT8BC1qN=y)JeYrik%b4lfpig*W(0 z5xi6~Ed-bXj_yV?Y~_Ro_GU)*vF%n$q-0yCr&DW+;8zen6$@LLLA0Jp743+Vqw0PDhI3aL zhE9WX)}h>q{e|3;h1%-(EsftlLtpIN`f%1zPdRXDyz>Sg9l4^tBOSR?Mf>$&1?_-B zLJ+|SRoMIm=$&d~ua6V8}UOiJk4-$S~N_M@?1F`!%qPq zW2(;I3X>nP7_p;yTL0D8ndPZTZxe&kX6&IJC>xh}126B_D%QU^5=k!%?2|S@6#U<9 zO>j9ofW7YBZDnZfE7&fFL1Yb(GihxDwng8SEE+4PZ&A$;ked6L&xHWCIUAXIN+W&G zq?3>j5Rb|$Oo^T>WYQX$hfKTIK$^gxAPPKtg;|MRC?RSeM@k0k$MqCYzs>xrGUZ*x zpn5X#1wx6v-NNs+JMlPFQqe9taUfkyvDu#np&hZE|FdF_PrBJHxJep0l{b00(VjJW zEz@G$Gh}PEYVf&j$0W>Uz}+RUu!n`311KGToBJ411_ioba7N<9=k`)vmhnLLA8H8s zCD?m@+vDW^Dkl-ZZIy*tlVv@3wRCF8tb6k@&KKxG^Ha(LTs@6EP@(a_OP==iCnLge z=;jJyw*olBpYa|(v$ZN00=Y>(ugR1i z|9yNOy^_?Wu0lhDxg?I(Yz`w z5h!~<%1xuvyxe}2=8f74%Up8%Z5^(_Z?1dkI707uLID|u3dI|4w1RlCz-d?_NIN`K z;p-l0{MdcZY*}~zX_8d0tz6ePdU4I#%370hN zKzB%n?gDfOJTRfzy|{bC28A=tfuq5yEi`5)>uu?$8X^vzoUR@5oyG37+t#609du;OKXCAEX$I&^IqKK$RwGX_I@5q45ZzzYX+{y)je4e zi`1cB@dh8L+}y7g1EPj4={ZF~F?8?%mL^FwQ}dQI(s_&GizP#M?|p*IkHE<+-8p_H zobhosaBO(j*u^j0+!-L{`Q3}HJ+9QClplU^VB@YVdU81^qfd)S*3dhq!6xrpZRD3t zE$8H|?XGni@3A6hwA%csutKS%}U@*PAzc_EEm!^@W9ssHiVoBIP8VrbdOvPRM& za1PD9w$7?zZgbaNWzh0HaE<*m4n9mngiE`Bd^BW`agdTeOXDp=+|GFTLwm}(n=G~s z)6d*rY&yNM`(V1jO;0Ybg5o~0%9g=(Nn7s#rpih{`bJgP#C{Fs3!!B_0NQv|S>sg! zXmY{YUnY<|pchb+qsUCXs|aYEH-d6 ze;z(ipqCmhvt?WCrq>*0IssP8PtJ`a)@l;PX(%vv~Lg2<7JAwtf85Sp_~< zHNF60>+fe0oKrh?NT1O7?>?Hl07Va7fJotsjJT`PKkhnSfVzNv3_dn#CI=pC1vub) zIQ-8=l+U>5!u|JoFF;F)%@?5Cz!H~U@HhjKhb-WyS%KE4;~B<3|I45A^5=T_b07T~ tU;d1{|C94*%(gk4fejnM71LCJD@C%bGD9hp!|1H - - -Introduction - - - - -

    Introduction

    - -

    - There are (at least) three orthogonal challenges to designing generic associative containers: -

    - -
      -
    1. The choice of underlying data-structure affects not only the performance of containers, but their semantics as well. E.g., containers based on trees store elements by a given order, while containers based on hash tables store elements in a meaningless (and probably time-varying) order; containers based on node-based trees can guarantee exception-free element erasing, while containers based on vector-based trees cannot. This complicates generic manipulation of associative containers based on different underlying data-structures. -
    2. -
    3. - Underlying data-structures can act very differently given different policies. E.g., the policy by which a hash table translates a hash value into a position within a table affects performance dramatically; certain policies can make containers based on trees support order statistics (i.e., queries on the order of stored elements) or other useful queries. This complicates the policy design of an associative container based on a given data-structure. -
    4. -
    5. - Various mapping semantics are appropriate in different settings. E.g., in some cases a unique mapping between each key and a datum is appropriate (such as the STL's std::map guarantees); in other cases, unique storage of keys is required (such as the STL's std::set guarantees); in other cases, more complex mapping semantics are required. This complicates generic manipulation of associative containers with different mapping semantics. -
    6. -
    - -

    - pb_assoc attempts to address these problems safely and efficiently. -

    - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/invalidation_guarantee_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/invalidation_guarantee_cd.jpg deleted file mode 100644 index dde670039b775bb752ce9a0c91f80eca2f4c5969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23162 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 W|M+LMK*<9sT2wu<5qR2P2mT)_x?X?) diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lib_download.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lib_download.html deleted file mode 100644 index 20076319a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lib_download.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -Library Download and Install - - - - -

    Library Download and Install

    - -
      -
    1. Requirements
    2. -
    3. Download
    4. -
    5. Install
    6. -
    7. Use
    8. -
    - -

    Requirements

    - -

    - The library compiles and runs on the newer versions of -g++, icc and Visual C++ .net. The -Portability Section describes the known -compilers with which it works. -

    - -

    - Unfortunately, we do not have access to other compilers, and so do not -know how to define some standard policies whose namespaces and declarations -we know only on -g++, icc, and Visual C++ .net. -We would appreciate help on this point. -

    - -

    Download

    - -

    - The following link contains a zip -file of the library. -

    - - -

    Install

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/linear_probe_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/linear_probe_fn.html deleted file mode 100644 index 65943f270..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/linear_probe_fn.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - -linear_probe_fn Interface - - - - - -

    -linear_probe_fn - - - Interface - - -

    - -

    A probe sequence policy using fixed increments. -

    - -
      -
    1. -hash_policy.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Public Types and Constants: - - -
        -
      1. -General definitions. - - -
      2. - -
      - -
    6. - -
    7. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      - -
    8. - -
    9. -Protected Methods: - - -
        -
      1. -Offset methods. - - -
      2. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Const_Key_Ref
    - - -
    -

    Const key reference type.

    - - -
    -- - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    -size_t - - -
    - -

    -General definitions. - - -

    - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    size_type
    - - -
    -
    Size_Type
    - - -
    -

    Size type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    void
    -  swap
    -  (linear_probe_fn &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Offset methods. - - -

    - - - - - - - - - - - - -
    MethodDescription
    -
    inline size_type
    -  operator()
    -  (Const_Key_Ref r_key,
    -    size_type i) const
    - - -
    -

    Returns the i-th offset from the hash value.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/list_updates.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/list_updates.html deleted file mode 100644 index d0086d171..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/list_updates.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - List Updates - - - - - - -

    List-Update Containers

    - -

    - This section describes policies for list updates. It is organized as follows: -

    - -
      -
    1. The General Terms Subsection describes general - terms. -
    2. -
    3. The Implementation in pb_assoc - Subsection describes the implementation of these concepts in pb_assoc. -
    4. -
    - - -

    General Terms

    - -

    - Associative containers use some attributes of the keys of which they store: tree-based -containers use the ability to compare keys; hash-based containers use the ability to map -keys into numbers. -

    - -

    - In the (rare) case where keys can only be checked for equivalence, these -types of containers cannot be used. In such a case, storing the entries in a list is a reasonable solution. -Clearly, the order of the elements within the list affects performance; ideally, frequently accessed elements -should be at the front of the list. -

    - -

    - Many remarkable (online competitive -[motwani95random]) -algorithms exist for reordering lists to reflect access prediction -[andrew04mtf]. Some of these algorithms require storing -metadata with each key, while others do not. Some of these algorithms require only the ability to -move an element to the front of the list, while others require the ability to interchange an element and -its predecessor. -

    - -

    - For example, Figure --A -The counter algorithm - -shows the counter algorithm. Each node contains both a key and a count metadata (shown in bold). -When an element is accessed (e.g. 6) -its count is incremented, as shown in -Figure - -The counter algorithm --B. -If the count reaches some predetermined value, say 10, as shown in -Figure - -The counter algorithm --C, -the count is set to 0 -and the node is moved to the front of the list, as in -Figure - -The counter algorithm --D. - - -

    - -
    - - - -
    -
    -The counter algorithm. -
    - - - -

    Implementation in pb_assoc

    - -

    - The pb_assoc library allows instantiating lists with policies -implementing any algorithm moving nodes to the front of the list (policies implementing -algorithms interchanging nodes are currently unsupported). -

    - -

    - Associative containers based on lists are parameterized by a Update_Policy parameter. -This parameter defines the type of metadata each node contains, how to create the metadata, and how to -decide, using this metadata, whether to move a node to the front of the list. - A list-based associative container object derives (publicly) from its update policy. -

    - -

    - An instantiation of Update_Policy must define internally update_metadata as the metadata -it requires. Internally, each node of the list contains, besides the usual key and data, an instance -of typename Update_Policy::update_metadata. -

    - -

    - An instantiation of Update_Policy must define internally two operators: -

    -
    -update_metadata
    -  operator()
    -  ();
    -
    -bool
    -  operator()
    -  (update_metadata &);
    -
    - -

    - The first is called by the container object, when creating a new node, to create the node's metadata. The -second is called by the container object, when a node is accessed (e.g., when a find operation's key -is equivalent to the key of the node), to determine whether to move the node to the front of the list. -

    - -

    - Additionally, the library contains implementations of the move-to-front and counter policies. These -are described in -Policy Classes. -

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_assoc_cntnr.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_assoc_cntnr.html deleted file mode 100644 index c9d0c75f1..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_assoc_cntnr.html +++ /dev/null @@ -1,570 +0,0 @@ - - - - - - -lu_assoc_cntnr Interface - - - - - -

    -lu_assoc_cntnr - - - Interface - - -

    - -

    A list-update based associative container. -

    - -
      -
    1. -assoc_cntnr.hpp - - -
    2. - -
    3. -Template parameters. - - -
    4. - -
    5. -Base classes. - - -
    6. - -
    7. -Public Types and Constants: - - -
        -
      1. -Policy definitions. - - -
      2. - -
      - -
    8. - -
    9. -Public Methods: - - -
        -
      1. -Constructors, destructor, and related. - - -
      2. - -
      3. -Policy access methods. - - -
      4. - -
      - -
    10. - -
    - - -

    -Template parameters. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    ParameterDescriptionDefault Value
    -
    Key
    - - -
    -

    Key type.

    - - -
    -- - - -
    -
    Data
    - - -
    -

    Data type.

    - - -
    -- - - -
    -
    Eq_Fn
    - - -
    -

    Equivalence functor.

    - - -
    -
    std::equal_to<Key>
    - - -
    -
    Update_Policy
    - - -
    -

    Update policy (determines when an element will be moved to the front of the list.

    - - -
    -move_to_front_update_policy - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -
    std::allocator<char>
    - - -
    - -

    -Base classes. - - -

    - - - - - - - - - - - - -
    ClassDerivation Type
    -
    Update_Policy
    - - -
    -

    public

    - - -
    - -

    -Policy definitions. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    TypeDefinitionDescription
    -
    eq_fn
    - - -
    -
    Eq_Fn
    - - -
    -

    Equivalence functor type.

    - - -
    -
    allocator
    - - -
    -
    Allocator
    - - -
    -

    Allocator type.

    - - -
    -
    update_policy
    - - -
    -
    Update_Policy
    - - -
    -

    List update policy type.

    - - -
    - -

    -Constructors, destructor, and related. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
      lu_assoc_cntnr
    -  ()
    - - -
    -

    Default constructor.

    - - -
    -
      lu_assoc_cntnr
    -  (const Eq_Fn &r_eq_fn)
    - - -
    -

    Constructor taking some policy objects. r_eq_fn will be copied by the Eq_Fn object of the container object.

    - - -
    -
      lu_assoc_cntnr
    -  (const Eq_Fn &r_eq_fn,
    -    const Update_Policy &r_update_policy)
    - - -
    -

    Constructor taking some policy objects. r_eq_fn will be copied by the Eq_Fn object of the container object, and r_update_policy will be copied by the Update_Policy object of the container object.

    - - -
    -
    template<class It>
    -  lu_assoc_cntnr
    -  (It first_it, It last_it)
    - - -
    -

    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<class It>
    -  lu_assoc_cntnr
    -  (It first_it, It last_it,
    -    const Eq_Fn &r_eq_fn)
    - - -
    -

    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<class It>
    -  lu_assoc_cntnr
    -  (It first_it, It last_it,
    -    const Eq_Fn &r_eq_fn,
    -    const Update_Policy &r_update_policy)
    - - -
    -

    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.

    - - -
    -
      lu_assoc_cntnr
    -  (const lu_assoc_cntnr &r_other)
    - - -
    -

    Copy constructor.

    - - -
    -
    virtual
    -  ~lu_assoc_cntnr
    -  ()
    - - -
    -

    Destructor.

    - - -
    -
    lu_assoc_cntnr &
    -  operator=
    -  (const lu_assoc_cntnr &r_other)
    - - -
    -

    Assignment operator.

    - - -
    -
    void
    -  swap
    -  (lu_assoc_cntnr &r_other)
    - - -
    -

    Swaps content.

    - - -
    - -

    -Policy access methods. - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MethodDescription
    -
    eq_fn &
    -  get_eq_fn
    -  ()
    - - -
    -

    Access to the eq_fn object.

    - - -
    -
    const eq_fn &
    -  get_eq_fn
    -  () const
    - - -
    -

    Const access to the eq_fn object.

    - - -
    -
    update_policy &
    -  get_update_policy
    -  ()
    - - -
    -

    Access to the update_policy object.

    - - -
    -
    const update_policy &
    -  get_update_policy
    -  () const
    - - -
    -

    Const access to the update_policy object.

    - - -
    - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_based_containers.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_based_containers.html deleted file mode 100644 index 30dc90f61..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_based_containers.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - List Updates - - - - - - -

    List-Update Containers

    - - -

    - This section describes list-based containers. It is organized as follows. -

    - -
      -
    1. Overview is an overview.
    2. -
    3. List Updates describes updating lists -as elements are accessed.
    4. -
    - - -

    Overview

    - -

    - Associative containers typically use some attributes of the keys of which they store: tree-based -containers use the ability to compare keys; hash-based containers use the ability to map -keys into numbers. -

    - -

    - In some cases it is better to avoid this: -

    - -
      -
    1. - Hash-based and tree-based containers typically require additional memory - for time efficiency. -
    2. -
    3. - Hash-based and tree-based containers require extra information - about keys: hash-based containers need hash functors, tree-based containers need - comparison functors. In some (rare) cases, a key might be encapsulated to the extent that it is not possible to supply these functors. -
    4. -
    - -

    - In such cases, storing the entries in a unique-key list is a reasonable solution. -This uses the minimal amount of memory, and requires only an equivalence functor. -Clearly, the order of the elements within the list affects performance; ideally, frequently accessed elements -should be at the front of the list. -

    - -

    - Many remarkable (online competitive -[motwani95random]) -algorithms exist for reordering lists to reflect access prediction -[andrew04mtf]. -

    - -

    - Figure -List-update containers - shows the container-hierarchy; the list-based container is circled. -

    - -
    - -no image -
    -
    - -List-update containers. -
    - - -

    - The list-based container has the following declaration: -

    - -
    -template<
    -	typename Key,
    -	typename Data,
    -	class Eq_Fn = std::equal_to<Key>,
    -	class Update_Policy =
    -		move_to_front_lu_policy<>,
    -	class Allocator =
    -		std::allocator<char> >
    -class lu_assoc_cntnr;
    -
    - - -

    - The parameters have the following meaning: -

    -
      -
    1. Key is the key type. -
    2. -
    3. Data is the data-policy, and is explained in -Mapping-Semantics Genericity::Data Types as a Policy. -
    4. -
    5. Eq_Fn is a key equivalence functor.
    6. -
    7. Update_Policy is a policy updating - positions in the list based on access patterns. It is described in - the following subsection. -
    8. -
    9. Allocator is (surprisingly) an allocator type. -
    10. -
    - - - - - -

    List Updates

    - -

    - This subsection describes list-update policies. It is organized as follows. -

    - -
      -
    1. General Terms describes general - terms. -
    2. -
    3. Implementation in pb_assoc - describes the implementation of these concepts in pb_assoc. -
    4. -
    - - - - -

    General Terms

    - - -

    - For example, Figure --A -The counter algorithm - -shows the counter algorithm. Each node contains both a key and a count metadata (shown in bold). -When an element is accessed (e.g. 6) -its count is incremented, as shown in -Figure - -The counter algorithm --B. -If the count reaches some predetermined value, say 10, as shown in -Figure - -The counter algorithm --C, -the count is set to 0 -and the node is moved to the front of the list, as in -Figure - -The counter algorithm --D. - - -

    - -
    - - - -
    -
    -The counter algorithm. -
    - - - -

    Implementation in pb_assoc

    - -

    - The pb_assoc library allows instantiating lists with policies -implementing any algorithm moving nodes to the front of the list (policies implementing -algorithms interchanging nodes are currently unsupported). -

    - -

    - Associative containers based on lists are parameterized by a Update_Policy parameter. -This parameter defines the type of metadata each node contains, how to create the metadata, and how to -decide, using this metadata, whether to move a node to the front of the list. - A list-based associative container object derives (publicly) from its update policy. -

    - -

    - An instantiation of Update_Policy must define internally update_metadata as the metadata -it requires. Internally, each node of the list contains, besides the usual key and data, an instance -of typename Update_Policy::update_metadata. -

    - -

    - An instantiation of Update_Policy must define internally two operators: -

    -
    -update_metadata
    -  operator()
    -  ();
    -
    -bool
    -  operator()
    -  (update_metadata &);
    -
    - -

    - The first is called by the container object, when creating a new node, to create the node's metadata. The -second is called by the container object, when a node is accessed (e.g., when a find operation's key -is equivalent to the key of the node), to determine whether to move the node to the front of the list. -

    - -

    - Additionally, the library contains implementations of the move-to-front and counter policies. These -are described in -Policy Classes. -

    - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_cd.jpg deleted file mode 100644 index c69cdc5348e30a3df9a7939ada0082db88584633..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60906 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¨#RCAx$5ytHzrzA3L}2c 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 g#ZAm!;bCD+1&qb6i;QxOU0C7EJ1poj5 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_ds_tag.html deleted file mode 100644 index e906de7e5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -lu_ds_tag Interface - - - - - -

      -lu_ds_tag - - - Interface - - -

      - -

      List-update data-structure tag. -

      - -
        -
      1. -ds_trait.hpp - - -
      2. - -
      3. -Base classes. - - -
      4. - -
      - - -

      -Base classes. - - -

      - - - - - - - - - - - - -
      ClassDerivation Type
      -
      basic_ds_tag
      - - -
      -

      public

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_ops.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/lu_ops.jpg deleted file mode 100644 index fa26e84d9878c9b474ce197b25008e84c8217dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36112 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/mmap_value_utils.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/mmap_value_utils.html deleted file mode 100644 index dd0846ea6..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/mmap_value_utils.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - Multimap Value-Type Utilities - - - - -

      Multimap Value-Type Utilities

      - -

      - In pb_assoc, associative containers have a unique-key design. -Multimaps, consequently are maps of sets, e.g., -a cc_ht_multimap<int, char> -object maps ints to sets of chars. - It is often convenient to perform -value-type operations on multimaps, e.g., in this case, to find a specific -std::pair<int, char> object (say, std::make_pair(2, 'b')) -in a multimap object. These types of operations involve typically two steps: in the -first step, some operation is performed on the multimap object itself, and in the second -step, some operation is performed on the multimap's pertinent set object. -(This is true for the STL's multimaps as well, except that the "set" is an implicit -list.) -

      - -

      - Coding these two-step operations is repetitious and error prone. - pb_assoc containers already maintain the invariant that they support -a value-type method for any mapped-value-type method they support -(hence any multimap of the above type supporsts a method for inserting - std::make_pair(2, 'b')). Following are some utility functions for - other common operations. -

      - - -
      -template<
      -  class MMap_Cntnr>
      -inline std::pair<
      -    typename MMap_Cntnr::mapped_data_type::find_iterator,
      -    bool>
      -  mmap_value_find
      -  (const MMap_Cntnr &r_mmap_cntnr,
      -    typename MMap_Cntnr::const_reference r_val);
      -
      - -

      - Finds the (const reference to a) value-type -r_val in -the multimap object -r_mmap_cntnr. -

      -

      - It -returns a pair whose first entry is a find-type iterator -of the multimap's set type, and whose second entry is a boolean -indicating whether the value type was found (only in this -case is the first entry in the pair valid). -

      - -
      -template<
      -  class MMap_Cntnr<
      -inline typename MMap_Cntnr::size_type
      -  mmap_value_erase
      -  (MMap_Cntnr &r_mmap_cntnr,
      -    typename MMap_Cntnr::const_reference r_val,
      -    bool erase_entry_if_last);
      -
      - -

      - Transactionally erases the (const reference to the) value-type -r_val from -the multimap object -r_mmap_cntnr, and -erases the mapped value type -with -r_val's key -if there are no more value types with this given key -and -erase_entry_if_last = true. -

      -

      - It -returns 1 if a value type was actually erased, or 0 otherwise. -

      - -
      -template<
      -  class MMap_Cntnr>
      -inline std::pair<
      -    typename MMap_Cntnr::mapped_data_type::find_iterator,
      -    bool>
      -  mmap_value_replace
      -  (MMap_Cntnr &r_mmap_cntnr,
      -    typename MMap_Cntnr::const_reference r_val,
      -    typename MMap_Cntnr::const_data_reference r_data);
      -
      - -

      - Transactionally erases -r_val -from -r_mmap_cntnr -(if it such a value type exists) and -inserts instead a value type whose key is -r_val.first -and whose data is -r_data. -

      -

      -

      - It -returns a pair whose first entry is a find-type iterator -of the multimap's set type, and whose second entry is a boolean -indicating whether the new value type was inserted -(it might have -existed previously). -

      - -

      -(If the multimap type or its set type do not guarantee exception free -erases, mmap_value_erase and mmap_value_replace will -invalidate pointers, references, and iterators). -

      - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/motivation.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/motivation.html deleted file mode 100644 index 11eca4a42..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/motivation.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - Motivation - - - - -

      Motivation

      - -

      - The Introduction Section described some challenges -in designing associative containers. This section describes the STL's solution and motivation for an alternative solution. It is organized as follows. -

      - -
        -
      1. The STL's Associative-Container Design - briefly describes the STL's solution. -
      2. -
      3. Choice of Policies discusses possible additional policies by which to parameterize data structures. -
      4. -
      5. Data-Structure Genericity discusses possible problems with generic manipulation of containers based on different underlying data-structures. -
      6. -
      7. Mapping Semantics discusses scalability issues with the STL's non-unique-mapping associative containers. -
      8. -
      9. Choice of Methods discusses some reservations with the choice of methods in the STL. -
      10. -
      - -

      The STL's Associative-Container Design

      - -

      - The STL (or its extensions) currently offer associative containers based on underlying red-black trees or collision-chaining hash tables. For association, containers based on trees are parameterized by a comparison functor, and containers based on hash tables are parameterized by a hash functor and an equivalence functor. -

      - -

      - For each underlying data-structure, the STL offers four containers with different mapping semantics. A map-type uniquely maps each key to some datum, a set-type stores uniquely keys, a multimap-type non-uniquely maps each key to some datum, and a multiset-type non-uniquely stores keys. -

      - -

      - Containers contain various iterator-based methods. E.g., all containers have constructors taking a pair of iterators, and transactionally construct an object containing all elements in the iterators' range. Additionally, it is possible to (non-transactionally) insert a range given by iterators, or erase such a range. Other methods are implicitly range-based, e.g., it is possible to test the equivalence of two associative container objects via operator==. -

      - -

      Choice of Policies

      - -

      - In order to function efficiently in various settings, associative containers require -a wide variety of policies. -

      - -

      - For example, a hash policy instructs how to transform a key object into some non-negative integral type; e.g., a hash functor might transform "hello" into 1123002298. A hash table, though, requires transforming each key object into some non-negative integral type in some specific domain; e.g., a hash table with 128 entries might transform the "hello" into position 63. The policy by which the hash value is transformed into a position within the table can dramatically affect performance. -

      - -

      - Additionally, most hash-table algorithms encounter collisions. To mitigate the cost of these collisions, it sometimes is beneficial to store the hash value along with each element -[clrs2001, austern01htprop]. While this improves performance for complex keys, it hampers performance for simple keys, and is best left as a policy. -

      - -

      - Tree-based containers allow reasonable access while maintaining order between elements. In some cases, however, tree-based containers can be used for additional purposes. E.g.,consider Figure - -Sets of line intervals --A, -which shows -an example of a tree-based set storing -half-open geometric line intervals. An std::set with this -structure can efficiently answer whether [20, 101) is in the -set, but it cannot efficiently answer whether any interval in the -set overlaps [20, 101), nor can it efficiently enumerate all -intervals overlapping [20, 101). A well-known augmentation to -balanced trees can support efficient answers to such questions -[clrs2001]. Namely, -an invariant should be maintained whereby -each node should contain also the -maximal endpoint of any interval within its subtree, as in Figure - -Sets of line intervals --B. In order to maintain this ivariant, though, an invariant-restoring policy is -required. -

      - -
      - -no image - -
      -
      -Sets of line intervals. -
      - - -

      Data-Structure Genericity

      - -

      - Consider a generic function manipulating an associative container, e.g., -

      - -
      -template<
      -	class Cntnr>
      -int some_op_sequence
      -    (Cntnr &r_cnt)
      -{
      -	...
      -}
      -
      - -

      - The underlying data structure affects what the function can do with the container object. -

      - -

      - For example, if Cntnr is std::map, then the function can -use std::for_each(r_cnt.find(foo), r_cnt.find(bar), foobar) -in order to apply foobar to all elements between foo -and bar. If Cntnr is a hash-based container, then this call's results are undefined. -

      - -

      - Also, if Cntnr is tree-based, the type and object of the comparison functor -can be accessed. If Cntnr is hash based, these queries are nonsensical

      - -

      - These types of problems are excaberated when considering the wide variety of useful underlying data-structures. Figure -Different underlying data structures -shows different underlying data-structures (the ones -currently supported in pb_assoc). A shows a collision-chaining hash-table; B shows a probing hash-table; C shows a red-black tree; D shows a splay tree; E shows a tree based on an ordered vector (the tree is implicit in the order of the elements); E shows a list-based container with update policies. -

      - -
      - -no image - -
      -
      -Different underlying data structures. -
      - -

      - These underlying data structures display different behavior. For one, they can be queried for different policies. Furthermore: -

      -
        -
      1. - Containers based on C, D, and E store eleents in a meaningful order; the others store elements in a meaningless (and probably time-varying) order. As a futher consequence, containers based on C, D, and E can support erase operations taking an iterator and returning an iterator to the following element; the others cannot. -
      2. -
      3. - Containers based on C, D, and E can be split and joined efficiently, while the others cannot. Containers based on C and D, futhermore, can guarantee that this is exception-free; containers based on E cannot guarantee this. -
      4. -
      5. - Containers based on all but E can guarantee that erasing an element is exception free; containers based on E cannot guarantee this. Containers based on all but B and E can guarantee that modifying an object of their type does not invalidate iterators or references to their elements, while contianers based on B and E cannot. Containers based on C, D, and E can futhermore make a stronger guarantee, namely that modifiying an object of their type does not affect the relation of iterators. -
      6. -
      - -

      - A unified tag and traits system (as used for the STL's iterators, for example) can ease generic manipulation of associative containers based on different underlying data-structures. -

      - -

      Mapping Semantics

      - -

      - In some cases, map and set semantics are inappropriate. E.g., consider -an application monitoring user activity. Such an application might be designed to track a user, the machine(s) to which the user is logged, application(s) the user is running on the machine, and the start time of the application. In this case, since a user might run more than a single application, there can be no unique mapping from a user to specific datum. -

      - -

      - The STL's non-unique mapping containers (e.g., -std::multimap and std::multiset) can be used -in this case. These types of containers can store store two or more equivalent, non-identical keys [kleft00sets]. Figure -Non-unique mapping containers in the STL's design shows possible structures of STL tree-based and hash-based containers, multisets, respectively; in this figure, equivalent-key nodes share the same shading. -

      - -
      - -no image - -
      -
      -Non-unique mapping containers in the STL's design. -
      - -

      - This design has several advantages. Foremost, it allows maps and multimaps, and sets and multisets, to share the same value_type, easing generic manipulation of containers with different mapping semantics. -

      - - -

      - Conversely, this design has possible scalability drawbacks, due to an implicit "embedding" of linked lists. -Figure - -Embedded lists in STL multimaps --A shows a tree with shaded nodes sharing equivalent keys; -Figure - -Embedded lists in STL multimaps --A explicitly shows the linked lists implicit in Figure -Non-unique mapping containers in the STL's design. The drawbacks are the following. -

      - -
        -
      1. As mentioned before, there are several underlying data-structures, each with its set of tradeoffs. -The STL's design uses an associative linked-list to store all elements with equivalent primary -key (e.g., users). Searching for a secondary key (e.g., -a process) is inherently linear. While this works reasonably well when the number of distinct secondary -keys is small, it does not scale well. -
      2. -
      3. Embedding linked lists can cause the entire structure to be inefficient. -E.g., Figure - -Effect of embedded lists in STL multimaps --A - shows a tree with several shaded nodes containing equivalent keys; note how unbalanced -this tree would seem when considering all shaded nodes to be a single node. -Figure - -Effect of embedded lists in STL multimaps --B shows a hash table with several shaded nodes containing equivalent keys; note -that this can lengthen the search for other nodes as well. -
      4. -
      5. Embdedding linked lists is only possible for some data structures. -Some data structures, e.g., probing-hash tables, linear hash tables, -and extendible hash tables, cannot support it. -
      6. -
      7. The embedded linked list design forgoes the abilitiy to treat -all elements with the same primary key as a single entity. The ability to -efficiently simultaneously insert (or erase) a larger number of elements with -the same primary key is lost; the ability to utilize segmented iterators is lost -[austern98segmented]. -
      8. -
      9. The linked-list design uses much space. For one, in the above example, the data identifying will must be duplicated for each application run by the user. Furthermore, the "links" in the linked list are supplied by the underlying data structure. In the case of tree-based containers, for example, the linked list utilizes the fact that each tree node contains pointers to its parent and its children; given that the order of equivalent keys is meaningless, the number of pointers exceeds the functionality supplied by a linked list. -
      10. -
      - -
      - -no image - -
      -
      -Embedded lists in STL multimaps. -
      - - -

      Choice of Methods

      - -

      - [meyers02both] points out -that a class's methods should comprise only operations which depend on the class's internal structure; other operations are best designed as external functions. Possibly, therefore, the STL's associative containers lack some useful methods, and provide some redundant methods. -

      - -
        -
      1. - Possibly missing methods: -
      2. -
          -
        1. - It is well-known that tree-based container objects can be efficiently split or joined - [clrs2001]. Externally splitting or joining trees is super-linear, and, furthermore, can throw exceptions. Split and join methods, consequently, seem good choices for tree-based container methods. -
        2. -
        3. - Suppose all elements which match a certain criteria need to be erased from an -unordered container object, e.g., all elements whos keys are in a given range. Externally erasing them from the container object is super-linear, since erasing an element might reorder all iterators. Conditional erasing, therefore, seems a good choice for associative containers. -
        4. -
        -
      3. Possibly redundant methods:
      4. -
          -
        1. - STL associative containers provide methods for inserting a range of elements given by a pair of iterators. At best, this can be implemented as an external function, or, even more efficiently, as a join operation (for the case of tree-based containers). Moreover, these methods seem similar to constructors taking a range given by a pair of iterators; the constructors, however, are transactional, whereas the insert methods are not; this is possibly confusing. -
        2. -
        3. - STL associative containers provide methods for erasing a range of elements given by a pair of iterators. At best, this can be implemented as an external function, or, even more efficiently, as a (small) sequence of split and join operations (for the case of tree-based containers). Moreover, the results of erasing a range is undefined for the case of containers based on unordered data-structures. -
        4. -
        5. - Associative containers are parameterized by policies allowing to test keys, but not data, for equivalence. When comparing two associative container objects, it is at least as reasonable to expect that they are equivalent if both keys and data are equivalent, as it is reasonable to expect that they are equivalent if their keys only are equivalent. Furthermore, in different settings it makes sense that two objects are equivalent if they store keys in the same order, whereas in other settings order does not matter. The operators operator== and operator!= are not descriptive enough for these considerations. -
        6. -
        -
      - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_metadata.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_metadata.html deleted file mode 100644 index 8a7340801..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_metadata.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - -move_to_front_update_metadata Interface - - - - - -

      -move_to_front_update_metadata - - - Interface - - -

      - -

      A list-update metadata type that unconditionally moves elements to the front of the list. -

      - -
        -
      1. -move_to_front_update_policy.hpp - - -
      2. - -
      - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_policy.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_policy.html deleted file mode 100644 index f9a47e3b2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/move_to_front_update_policy.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - -move_to_front_update_policy Interface - - - - - -

      -move_to_front_update_policy - - - Interface - - -

      - -

      A list-update policy that unconditionally moves elements to the front of the list. -

      - -
        -
      1. -move_to_front_update_policy.hpp - - -
      2. - -
      3. -Template parameters. - - -
      4. - -
      5. -Public Methods: - - -
          -
        1. -Constructors, destructor, and related. - - -
        2. - -
        - -
      6. - -
      7. -Protected Types and Constants: - - -
          -
        1. -Metadata definitions. - - -
        2. - -
        - -
      8. - -
      9. -Protected Methods: - - -
          -
        1. -Metadata operations. - - -
        2. - -
        - -
      10. - -
      - - -

      -Template parameters. - - -

      - - - - - - - - - - - - - - -
      ParameterDescriptionDefault Value
      -
      Metadata_Reference
      - - -
      -

      Metadata reference type.

      - - -
      -
      std::allocator<
      -  move_to_front_update_metadata>::
      -    reference
      -
      -
      -
      - -

      -Constructors, destructor, and related. - - -

      - - - - - - - - - - - - -
      MethodDescription
      -
      void
      -  swap
      -  (move_to_front_update_policy &r_other)
      - - -
      -

      Swaps content.

      - - -
      - -

      -Metadata definitions. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      metadata_type
      - - -
      -
      move_to_front_update_metadata
      - - -
      -

      Metadata on which this functor operates.

      - - -
      -
      metadata_reference
      - - -
      -
      Metadata_Reference
      - - -
      -

      Reference to metadata on which this functor operates.

      - - -
      - -

      -Metadata operations. - - -

      - - - - - - - - - - - - - - - - - - - -
      MethodDescription
      -
      metadata_type
      -  operator()
      -  () const
      - - -
      -

      Creates a metadata object.

      - - -
      -
      bool
      -  operator()
      -  (metadata_reference r_data) const
      - - -
      -

      Decides whether a metadata object should be moved to the front of the list.

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_cd.jpg deleted file mode 100644 index 885319daac8ed13aaca608c47107872a0ba9f8ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61973 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

      e5|)V~(?ARdvU@ePxQxf! zPh^TL$eqL?$#i5IeqN(%SB`>oN zvTMY}TZ@Ws*7tiX=as`al-(IzEl*)!m z8bwoWNmijV+^BC*`T8x|DKI$JhlSmZRdNzK9|JS;;|S|ZT-brGBl?EFknFAWhDL<@ zM<<~?Q#)tAev0@wAYNfx!_o1@dZT;})Ok->YVe7&qf8E*Gwnus#920Z`Thix?_#o! zUM-@ubC6|EJ<7c?fK$o+J~WkXE$i0PI~{m2$m3jnA4pZ8Ugbm;pSkXo)tBc}cKPbe zPq~o(go2A;bx{anK%){y4&6Q8S+xtEE&)Ff7vN6JMCSP6=hPPzgvl8y0FO*|&NMRG zWDM(|%qI-&U&niKSxd-0T9!1h$_0tGfDDoElA|fbao_7I;KvA>i}tiC8bf_RG^yq(uS= z)#z�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 - - - Mapping-Semantics Genericity - - - - - - -

      Mapping-Semantics

      - -

      - This section describes genericity over different mapping-semantics. It is organized as follows. -

      -
        -
      1. Introduction
      2. -
      3. Data Types as a Policy
      4. -
      5. The Basic Problem
      6. -
      7. Mapping Levels
      8. -
      9. Tags and Traits
      10. -
      11. Drawbacks
      12. -
      - - -

      Introduction

      - -

      -Motivation::Mapping Semantics discussed scalability issues with the STL's non-unique-mapping associative containers; non-unique association inherently embeds linked-lists in associative containers resulting in scalability problems and other problems. -

      - -

      - In pb_assoc, all containers have unique-key semantics. Each key is uniquely mapped to "something". -

      - - -

      Data Types as a Policy

      - -

      - All associative-containers in pb_assoc are parameterized by a data type. -E.g., cc_hash_assoc_cntnr is parameterized as -

      -
      -template<
      -	typename Key,
      -	typename Data,
      -	...>
      -class cc_hash_assoc_cntnr;
      -
      - -

      - There are no separate classes for maps, sets, multimaps, and multisets (as the STL has). Rather, the mapping-semantic is set by specifying the Key parameter. -

      - -
        -
      1. If Data is any type (e.g., int or -std::string), then the container is a "map" - it maps each Key object to a Data object. -
      2. -
      3. If Data is -null_data_type, -then the container is a "set" - it stores each Key object. In this case, each Key object is not really mapped to anything (except, implicitly, to the fact that it is stored in the container object). -
      4. -
      5. - If Data is -compound_data_type<Cntnr>, -then the container is a "multimap" - it maps each Key object into a Cntnr object. This structure is recursive - Cntnr itself can be a "map", "set", "multimap", and so forth. -
      6. -
      - -

      - Each container derives from one of the three containers -in the oval of Figure - -Data-types as a policy -. -

      - -
        -
      1. basic_assoc_cntnr -is the base for most instantiations of a container's Data paramter. This -base includes the definition of data_type, and supports -operator[]. -
      2. -
      3. basic_assoc_cntnr is the base for a -null_data_type instantiation of a container's Data paramter. This -base lacks the definition of data_type, and does not support -operator[]. -
      4. basic_assoc_cntnr is the base for a -compound_data_type<Cntnr> instantiation of a container's Data paramter. This -base includes the definition of data_type, and supports -operator[]. It further supports some advanced functionality described in the remainder of this section. -
      - - -
      - -no image -
      - -
      -Data-types as a policy. -
      - - -

      The Basic Problem

      - -

      - Consider a pb_assoc "multimap" mapping integers to characters. -Since a pb_assoc "multimap" is a "map" of "sets", -if m is an object of this type, it is not possible to directly use -m.insert(std::make_pair(2, 'b') (however, it is possible to directly use -m[2].insert('b')). In would be nice if this method whould be supported. -

      - -

      - Put differently, while the pb_assoc "multimap" can be viewed logically as the collection -

      -

      - { int → {char} }, -

      -

      - It would be nice if it could simultaneously be viewed as the collection -

      -

      - { (int, char) }, -

      -

      i.e., a "set" of pairs.

      - -

      - In more general terms, it would be nice to be able to simultaneously -view a collection -

      -

      -{ key_type_0 → { key_type_1 → { key_type_2 → { key_type_3 → { ... }}}}} -

      -

      -as each of the following: -

      -

      -{ (key_type_0, key_type_1) → { key_type_2 &rarr { key_type_e → { ... }}}}, -

      -

      -{ (key_type_0, key_type_1, key_type_2) &rarr { key_type_3 → { ... }}} -

      -

      -{ (key_type_0, key_type_1, key_type_2, key_type_3 ) &rarr { }} -

      -

      -... -

      - - -

      -Mapping_Levels discusses the mechanism -for these multiple views in pb_assoc -

      - - - -

      Mapping Levels

      - -

      - Each associative container in pb_assoc has -a mapping level. The mapping level is defined by -the instantiation of a container's Data -parameter: -

      - -
        -
      1. If the Data parameter is instantiated -by -null_data_type (i.e., -the container is a "set"), then the mapping level is 1. -
      2. -
      3. If the Data parameter is instantiated -by -compound_data_type<Cntnr> -(i.e., the container is a "multimap"), then the mapping level -is 1 + the mapping level of Cntnr. -
      4. -
      5. If the Data parameter is instantiated -by any other type, e.g., char (i.e., -the container is a "map"), then the mapping level is 1. -
      6. -
      - -

      - Containers can be rebound, at compile time, to different mapping levels. -The compound data-type specialization basic_assoc_cntnr -defines internally -

      -
      -template<
      -	int Mapping_Level>
      -struct rebind
      -{
      -	typedef
      -		...
      -		other;
      -};
      -
      - -

      -(which is similar to the STL's allocator rebind mechanism). -the type other is the view of the container with mapping -level Mapping_Level. The container can be safely cast -to other. -

      - -

      - As an example, consider the type -

      - -
      -typedef
      -	cc_hash_assoc_cntnr<
      -		int,
      -		compound_data_type<
      -			tree_assoc_cntnr<
      -				char,
      -				null_data_type> > >
      -	cntnr_t;
      -
      -

      - which is a "map" mapping each int to -a "set" of chars. In this case, cntnr_t has mapping level 2. -

      - -

      - An object of type cntnr_t cannot support insert(std::make_pair(2, 'b'));. On the other hand, the following code snippet shows how to do so: -

      - -
      -cntnr_t c;
      -
      -typedef
      -	t::rebind<1>::other
      -	t_;
      -
      -((t_ &)c).insert(std::make_pair(2, 'b'));
      -
      - - -

      -mapping_level_example.cpp shows a more detailed example. -

      - - - -

      Tags and Traits

      - -

      - It is, of course, beneficial to query types for their mapping semantics. -

      - -

      - Each container defines internally the type ms_category -as its mapping-semantics tag (hopefully this name is not copyrighted -by some major corporation). The possible tags, shown in Figure - -are the following: -

      - -
        -
      1. - basic_ms_tag -is a basic mapping-semantics tag. It is the type defined by "set"s. -
      2. -
      3. - data_enabled_ms_tag -is a mapping-semantics tag of types that have data. It is the type defined by "map"s. -
      4. -
      5. - compound_data_enabled_ms_tag -is a mapping-semantics tag of types that have compound data. It is the type defined by "multimap"s. -
      6. -
      - -

      - Additionally, a container's mapping semantics can be queried by traits. For any -container Cntnr, -

      - -
      -ms_traits<Cntnr>::mapping_level
      -
      - -

      - indicates the mapping level of the container, for example. -

      - - - -

      Drawbacks

      - -pb_assoc's mapping-semantics design has some drawbacks compared to that of the STL. - - -

      Equivalent, Non-Identical Keys

      - -

      - The STL's multimaps and multisets allow storing equivalent, non-identical keys -[kleft00sets]. For example, assume a bank maintains a data structure monitoring the accounts opened by each person. This could be modeled as the following: -

      - -
      -// Name type.
      -typedef
      -	std::string
      -	name;
      -
      -// Account-id type.
      -typedef
      -	unsigned long
      -	account_id;
      -
      -// Association between a name and an account id.
      -class opened_info
      -{
      -public:
      -	...
      -
      -	// Comparison operator.
      -	bool
      -	 	operator<
      -	 	(const opened_info &r_other)
      -	{
      -		Comparison is defined as the comparison of the names.
      -	 	return m_name < r_other.m_name;
      -	}
      -
      -
      -private:
      -	name m_name;
      -
      -	account_id m_acc_id;
      -};
      -
      -// A multiset of opened accounts.
      -typedef
      -	std::multiset<
      -		opened_info>
      -	all_opened_info;
      -
      - -

      - std::multiset can accomodate multiple equivalent, non-identical opened_info - those with the same name but different account id. -

      - -

      - In pb_assoc, however, non-unique mapping is unsupported. The equivalent to the above could be -

      - -
      -typedef
      -	tree_assoc_cntnr<
      -		name,
      -		compound_data_type<
      -			cc_hash_assoc_cntnr<
      -				account_id> > >
      -	all_opened_info;
      -
      - -

      - The drawback lies in the fact that the data stored in -all_opened_info is less encapsulated - an opened_info -object needs to be constructed when a specific name and account are found, and -an opened_info object needs to be decomposed into name and -account_id objects when it is inserted into a all_opened_info -object. -

      - -

      - It should be noticed however, that the above drawbacks - construction and decomposition are constant-time additive drawbacks. The drawbacks of the -STL's associative containers are in terms of orders of growth. -

      - -

      Definition of value_type

      - -

      - The STL's associative containers contain a pleasingly uniform definition of -the value_type of a container. -If a container is parameterized by key as its Key, and data as its Data, then its value_type is -std::pair<const key, data>; -for example, the value_type of std::map<int, char> is -std::pair<const int, char>. Futhermore, the value_type of a container and the value_type of the container's iterators are identical. -

      - -

      - In pb_assoc, conversely, the rules are more complex. -

      - -

      For one, a container's -value_type is, in general -std::pair<const Key, Data>, -but if Data is null_data_type, then the value_type -is -Key, -and if -Data is -compound_data_type<Cntnr>, then the value_type is -std::pair<const Key, Cntnr>. -

      - -

      - Futhermore, assume that Cntnr is an associative container with more than a single mapping level, and let Cntnr_ be defined as -

      - -
      -typedef
      -	typename Cntnr::template rebind<i>::other
      -	Cntnr_;
      -
      -

      -i.e., the container rebound to a different mapping level. -In this case, the value_type of the rebound container is not the value_type -of the rebound container's iterators. I.e., it is not true that -typename Cntnr_::value_type is the same as -typename Cntnr_::iterator::value_type. This complication never exists for the STL's container. -

      - -
      - -no image -
      - -
      -Iterator of a rebound type. -
      - - -

      Multisets

      - -

      - pb_assoc does not contain a "multiset" type. The closest equivalent is mapping keys to non-negative integral types, e.g., size_t. -

      - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_tag_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_tag_cd.jpg deleted file mode 100644 index b114d9357985d443f6b180b5aa3d0a2239d7725e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21009 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 YWvKUZs@S>a8-)wWuSbEAAMD6~0P%K;(f|Me diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_traits.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_traits.html deleted file mode 100644 index 933699307..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ms_traits.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - -ms_traits Interface - - - - - -

      -ms_traits - - - Interface - - -

      - -

      Traits of a container based on its mapping semantics. -

      - -
        -
      1. -ms_trait.hpp - - -
      2. - -
      3. -Public Types and Constants: - - -
          -
        1. -Container attribues. - - -
        2. - -
        - -
      4. - -
      - - -

      -Container attribues. - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      has_data
      - - -
      -
      True only if the container is not a "set" type.
      - - -
      -

      Data indicator.

      - - -
      -
      has_compound_data
      - - -
      -
      True only if the container is not a "set" type or "map" type.
      - - -
      -

      Compound-data indicator.

      - - -
      -
      mapping_level
      - - -
      -
      The number of mapping-levels the container supports (1 for "set" types or "map" types).
      - - -
      -

      Mapping-level indicator.

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/node_invariant_invalidations.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/node_invariant_invalidations.jpg deleted file mode 100644 index ea03b42be4d66dd538f87cf3eff2806f3c89db0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43521 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%0D{`X_;ua|I}@h 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 - - - Node Invariants - - - - -

      Node Invariants

      - -

      - Figure -Some node invariants -shows some node invariants. A shows -a tree whose each node contains, asides from an double key, the number -of nodes at the subtree rooted at the node; B shows a tree whose each node -contains, asides from a line-interval key, the maximal endpoint of the interval -of any node in the subtree rooted at the node. - The first tree allows querying efficiently what is the order statistic -of any element; the second tree allows querying efficiently if any, or which, -intervals overlap a given interval. -

      - -
      - -no image - -
      -
      -Some node invariants. -
      - - -

      - Maintaining such trees is difficult, for two reasons: -

      -
        -
      1. Various operations can invalidate node invariants. -E.g., Figure -Invalidation of node invariants -shows how a right rotation, performed on A, results in B, with nodes x -and y having corrupted invariants (the greyed nodes in C); -Figure -Invalidation of node invariants -shows how an insert, performed on D, results in E, with nodes x -and y having corrupted invariants (the greyed nodes in F). - It is not feasible to know outside the tree the effect of an operation on the -nodes of the tree. -
      2. -
      3. - Even if node invariants are maintained, it is not possible to know -in advance which search paths are required (e.g., searching for all -line intervals overlapping some interval might require several search paths). -
      4. -
      - - -
      - -no image - -
      -
      -Invalidation of node invariants. -
      - -

      - These problems are solved by a combination of two means: -

      - -
        -
      1. - The tree-based containers are parameterized by a Node_Updator -parameter. When a tree operation might invalidate some node invariant, -a Node_Updator object is invoked to restore the invariant. This object is -always invoked with three nodes: some node, say x in -Figure -Invalidation of node invariants-A -has an invalid invariant, but its children, y and z hav valid invariants. -After the invocation, all three nodes have valid invariants, as -in -Figure -Invalidation of node invariants-B. -It is well known that any insert, erase, -split or join, can restore -all node invariants by a small number of node invariant updates -[clrs2001]. -For example, Figure - -Insert update sequence diagram - -shows an insert operation (point A); the tree performs some operations, and -calls the update functor three times (points B, C, and D). -
      2. -
      3. - The tree based containers all define internally node_iterator - and const_node_iterator, iterators which can be used to traverse - from a node to any of its children or parent. -
      4. -
      - -
      - -no image - -
      -
      -Invalidation of node invariants. -
      - -
      - -no image - -
      -
      -Insert update sequence diagram. -
      - - -

      - In -Null Policy Classes -a distinction was made between redundant policies -and null policies. -

      - -

      - Seemingly, in this case a redundant policy - a policy which doesn't -affect nodes' contents would suffice in this case. This, however, would -lead to performance loss. -Figure - -Rationale for null node-invariant functors - -shows a typical case where invariants are restored (in this case, to the -shaded node). In most cases, tree operations such as rotations affect only -the lower levels of the tree. A null policy allows to know that there -is no need to traverse the tree to the root. -

      - -
      - -no image - -
      -
      -Rationale for null node-invariant functors. -
      - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/node_invariants.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/node_invariants.jpg deleted file mode 100644 index d9b96ddecb0a4b7ba18a296b3aeee7aacc6f9f2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32622 zcmeFZ1yr0{mNxtrg*ycIAc5fS8iIwO32q7Q?gR=*aEAa11PSgE+}(p)aCi3#`qk~* zJ#+8vuY0EF@9BSiYjv^CDyr%&sC~}XXFt0hempD#*e|5zqyZ2J1iXR$01tD3B!G;F zh=hoMjD&=Qf`W{Sj)#GchK5dz`v?n;wik6k0ikg{*jEsTrDKk3cC`Izi6=RbUVXa#VPK|jE(U=TF`hXVrRfF3#l zN&o;Mz&`CSANbEV5F8jD0TBrq1r-f;K@~Ot2LglP;K2w8@bIv!yY(vtEy{i>+0J(I=i}idi(mv#wRAHrhm-LuB@)DZ)|RD@9dtOo}FJ@UO|6e{~{L% z0RJl1e@ONRxo}`|!NJ3W;gNok3k2r|TVNb`gvT6+xDqNzZyg>{bNV6UJ&XBT-iAWM zrFx8S=s1c>K+C;Cck+v9f0FFKCz${LNV5MB>_6q21<=7D*x`Y305Ra)02wOQLAZ!B zR&pdPkfp0TXj{rWuGx9G@0nm&M|+(#`v81+)b;?JGnzx7tU(VzNM`HODUEr{#dcbM zJu0yE0Ia|tL+((MDDTm}J^-ucfAxkE|ImM5_S+r&_lEpIrT)Dk|K5;)`;cGV>%VQ` z-?s2Sum!8ZW^O1%YUCY@kyGXl0g3aGCyj;mK`epEk1Y#E5DgWX7wTowDI{v?^vTZB zCAPsG!8vH&o%H^>4dH#$qn{cQx(|R~%ewR^WN%a~-Wd;2k@|msX~f<7JOD9#iVr}U z{{ygHQ>s}?550Q;sBKdofVT(_z^I)#dCza;#vg|MW>3Ts@KpZaUmjvTM?W7qAKf6c z-G_Nzg#KF#{%uY|luPa_`n7cSL0|mNG4VBSZp^8SRipvfWJ=xN;l-=$V_0XE<@gI$)r&}cYNujehT{yc*wpAA7B{f+usTyRXdhf*F_8sPm)O$|5=*u6gTA_sqOS(BZZ*>v6 z>D%VpFpH`L#rYOalxWpmqhoUIz5X9LvVWQ5AZ~s<_2&30sPw|?i-&qNcNWCmul=4L zd{RmaH9H=cK9LE~>GWY4zhB7Pt>M%|^3X$mX3wuG7_GA{<;AlRpOa~MSu<5OKiAAB zCH!`@%#jm|TuK!Aag{$m%c|_xh-b78d1`9p0N9rS+~Y&@j^=nXZ8`Zssl(IY#|0C> z8o!nx!<;{W&V@5he-G9VT2{hk3lk>HvE2AL$Sh$C^x&3aweIu|kA!X;N62HMzRl6JQ069aiKzO*Jonx8gxOLDFhfP+2d7yARZ@7$AX!;8=1u@nPNX0* zw@@;t$XsQs;ZqDkktXL08C^49L}|@s%*~2!Ki<4{JM1CWk6$80MOln4-%hQ__c^RwUMB&g5q#h+TI_v3JV75qbd z;P7RiXZcu&P+hVpjP2zIU^?93Rsrxx>zE5Xfpm*Nx&@uNq%yoeY4_0Nj0&wFL9XO3 z*F>ylcA`7*8=s=%(5g_iXE3O#Yy&$=>2RTpfw=`8Ia!t}TlJsf{im3T>1ak=!3|`f z`B0!yR#}b;)c2$;t?T+#gH&$iby0!6hGOvd^lM_I-rT!Qy!YbCYSh0R_3Kk^=nzZX zOpumR!);T0=)!Z^QB@wbUk?vxyPun;-DE>qNPhrw!+P-^fVIeTh}~}VnahgaONQOc z(>8X>pie~is0z+_%7_X)Mj;G>tT3#&y#Ekekb8UXhbO9jVJNM_LLy(ht8m z(xNmP)#C?X7`{d@^^@p1E+ywGXg6X?T&#Y^?wPwPXhcPMR&Q=;w#UVaQvv=x!?q)a z!hf9z{3`>kn#e1aAi43J#?N|_02&E;WuziLo*Qj6Qe9#E@E}Yh42Wbb=Vx~~SOzc$ zg_Gk!4}c4p%(Fgq0^}q+p5vF@(qbH^S_d995zzeT{Uh!!zHh6J_T&qum*!Meu~Apl zN)*OIm!ZvLtqXFgm9v*p&Fkj58_Y8FB29Z$rJ_(h!eqX%i>DGdYC|m!q;WGetrAc; zh#)X>TvAa`8d4R7w&&)sq^H?~-^mx#PR-f5eB93uk26=|U8vNpPp5uHI(wrEMu*oXXw<$we=Q#^duM_V5@%wpO>Z<$4=J~6XXem5A z$jo-B?u&g}_V~Hd^M#Q=+la`nw(vm1meb7w$AKY~AyqbxL-)vfBoDw#9i9jka{n|| zae3T2a(CgWmf(v6!?VsQef;Bz<2k)So6EU|pGLT7=6p7!%E#Y(BHi!5h;@1$5nI*s z#;**@y!ghgF`Q@}yx$ScKl}!bgrc;>LZ90X73zOau5>^Uc-sGy3cC)~wb454^kf2O?tHrW z0SI-xxZsD5vl>&{MpY_yf&{NI{d#f-yGh;9RwN4d9srUHn^$T&E+h*6vqi4MO;jG3 zN6a-R?4&gmoonPwlezv($sR0Q5ypXP4BH)#KZav_my6@7X!;PPs#VmD9nxCRk8SY= z%x|QM6pWUO^hxWcu9M8e?3v-8vM||J-GX`8u-vtYojpiIo*iD2YHAs2kup0zE3}sb zd`0%~W}vf6s^jOicJBrauW5KQO9qTdm^2d)+i-ocs~tV|zNBVioe1w0-{+?28Q(89P@OJyWIl&R5;y4$A5$GFeLd#~`bJ%f z-Q-S=j}sd5qzb~4A9>lhC$tml@{UCop02(3XC!5L)!8i2*it{j6YOk*JLXnhle`~h ze-&Aa{s3^arwf3|k__GLlt*sGRt@m22s5@iuSl#r2MC_K=H-1ae=Y*r5*gkrT#hkW zNedu(KK=rCY)(PvvoU?n#u?GQwK?3hpRkn6su)%u%e8cUK*~h5hQ9J+64^O~M3LaO zTdSNB(iOUht{Ok;rUni92=z@HiOFu{Gg6u}<=m5!O~K1=g3X;HtvK@VwU+xL4Po2)uukFPAQgqa?ey;|8-8OiD3&RUWG#lp8CGF3MWMAfO|5QVO(;=`<)vf#*A6@YL92S|muK?R7b4UwQnv#) zUeA(EtpP20IF;aCDOYD@BoT+@8!@P4P@wZ%VH4v7W5J-=lNk+kqLd!tSOF151-Vrv zR4r(tbYT0c*C&eE=Sfq$#2n0=xeN9^EoXzalOmGpD28!!EsM>qL@TalzpGPBWPv4d+vvBC{;QlwRU2A$cw%F;1YYBFrd_od#RBwY9x7 zWv^(`hxkeMYVt64$EvrJQe(YTL~{=#6>>U|xiQ2)JXL*5*b~Hir8CzlrsBjPmRI8M zD{zDb)jHR)8t@vldo`6=57M+$4S_2`rb5TW^teXt2wQRa)>^MSdsrwIq|%WSeb{V( zQTy1QkJAk5w6mjkK*O1lUk`qLE*jeOq4cb43up&KcP(h}2 zKLq?n0H+BJB`sbGh7lh5sc&Udl{baid+2-&2S34sx)VG?7}TRB7o>Au@-FXm5o@{siP#uQYW1(u`Qq3Tb$=OEa7 z1osp%pOfW6rI10iA2qr!B-0www0lmT#Ml%;PsiKpoq908Tq?^Kw5GuG9(`J)2x#m= zY97JxEOweM5L*!)edbHLPgv54ndx1-bw(KvI0Fc2ar?aq__w8S4~nP5n7LTHPem}HwNZ5p!rDqkDw=N`y$Y4reHFDptu0Ig(OGg{l=^k0gC zQZRJD`TD5S8%tb|@k*_tEO=g5TkGr6W1ko6&Og;W4r-^HH9lHW5|rH1ui0q4IB`un zw%9wfsF)T1ZmRpmIH8U9jYBxT2m>e$Y4!MZO?~(^W`tXo74Oca*MLs`!VF%ud*4?4 zIbxG#W6<(_gtx~k77ldva!7~aB1C6DTK+2BWPm^nx{cH#QaGIlLkThqcjdAyob&~` zi+q_K*cKC{AFCiWZ~)%sVBU^9p>EG&Slysug07AXnGrOHa-V5q3&Anr5xOP1vV4>!!yXDt3exf+B>o;t;21(_evfy&T03DI(z zBMs6VMOBxjvb%g&wV+SPvH`koN2&fi(?Ug}OO-O_272dhoxm^|n`rzlqnZD)85{U}rE;J(JeDT3!44+0gR&F5f%el%pl}3v) zNcS%B+AX4rsrV-I?deyhR9H^R z+k)0frU~Wqf_-jGl~<~4((yx^J!SOZAE?0ie^u-L73Qj6uCH`*bN_rn=)N880mxYN z6^i<;O){nZ)?oj>?f>8Wf>nk*sSGt!CR|YwC$fkH-Yx?;t?CQZ(RsX-yrn|Ve@0KB zH;NvP7|YroKT0J)jGeR|)p(@K0j-1Ef>!mZhKz0@cmmrqwEYING~+D0p9c+Rtb6B# z)@V$?D@y9!1JH;7IO9!6&;o)?fFmFJ@)U`C%L^IJDuQIWPhYGjjM(!<{UvXz#SY7h z^H{0sgXQeF9lJfbt%-aLeQ7iDmn`dDKLs2e9oXQZ#|ihprwl1-fy&)4oSJ*uET;GP z2|f0o_xenR(Xjv?L7beNAmII`yYMo)jcEQqE0x7PH+eS);w5yPoL(wBwO6r&_v4TD37=H|V)XyG+xr{u z0g)3tH+DfUVt*a(&jdGXw30uqRBw9U?}}#TI3Fx0{A{ai9~N&ng#8-QbL7$8up7Cg zW1sJ;jZWad@$|=15y#4adE_$7Yc|2x8TVbDnhT<|;hs`#xf#vgdk zpF_GAq-jvMM&#~`qi%}K!45_d#Gi3qmk(fbq!lwU*2kNm=jPE+jZ@Y7?>?q$933Fu z9xZ$OGt~b^ZM?FR4Fa*U^fj(LV?_6P;>*HVz@VmFAPBG{$hf#5#8)Qry`p88Zb+4} zW{h&uOgsLFwiG8hZhJu>^2C^3C(4P&uhuIak}YqOF|VuJ<5j%CGJjGHwOLb0IOfZH z75iPRv1gm`i7)ODN>wuSLcTYZNfXoBCR?vKmfh4vgvkHd`+k49^%b}Oo3{S(xqodm z`}J6@zxALiF_)BghiWYh!TC+Z{ZK}QmLt4H6ML zB5s01c3atXIVust`uywER&&jr@*l%q_T=kHr*^zD@63GhUwZ=SSl=(6_zKswc|N}< zp0PlPOr-04#Z5|IqdCx@qGqZ#Um{J0gwdpltr6W^VZoh9P(Hv?nJ~saAo*0a*BeDu zW?exgS)!u0u_;w~kbGYyYh(*m3uTU~=W#2QG1+b5HY1bJK!o6-2-mCVzD+W1efFNT z`;JRo5R{#mycL-F8+!i#$!3ZcOb-udf3OsPa1-jV^Vrl}4iR7PRa6uW^>m7?`bryu zXG0sA7mUWm(F(ZGPLVmZgwSejNh^>eo4q7XAGScUPWi&Pt_Z)-? zs%nA(uo8{7HcPegh7lFkCq(P`Ma>ve%0w!)7DV%Ls9r!8ucywuq>#=*>VnY{<5`ud z8gt}8kn+uYCUpEZ@I;aGkA1VITFg@g558oYX0BG$0udNJ3!0iW!L_aK##fVw>)+>r zDkV&RSpMuqOWxZr#$?AW3wR*cF$-1}qXa7pmaMmDf8KYATMPxwsYIupM3tTTk2zA& z2bGO>Kdt_+k07dVv~#MGhrA%d@5qjjZ^#oyp>(ynf_JTBR zphSOMl)VI*KPECww6v7z%%ZNvw8Ku)mp~=<)v=R6;RoQ7vMd^_&A0auKpgyM_Ahzm za2aOh$W^cjOpSbjUAc@uJTBs2gW$?m4235NVvn?UAZ|xSuHB@xU+ucLro-_sb;dHE zWj=}gz|CIPR!@^zd%tDhbe+o1{Tw+&DApgNCc(OQJ_@_1UgujH*oUa0)z+B$(Xn?86AtS-f$v54F z_7Xn?Pt`s2bzPlwl$AzM%KBO`fLqSWg(#L7 ziBVCc4c-x%pDI#<7+(Yr6k+D!kgL~|W9djN+z}?!mZW9RRUBsxj<5HB;N^bnDBOA=2r}KW_H`)?L)D;c{ZQia8!UM;#Q7& zSdi0vTT&7YoisyGDC*D+Z7F{Zt|ssIwddo8O8@&Qd7Zou(Y@^bkY`xR66-jM^7eaSM@W2WcAod%SP!9)(=^v-Xddc%e-E?Jr)ukd?Jv?#!(X!_ z9lwE)011DiW`g_W`Np)htJ{!zx4RF74}esYXV>qW6TqSH?*Oh6$ZyfF|CXQrlg}=C z`tG^yrk4%k$SxNRp2yXGb#NrI1-l#0-2}SKyH{f6Rmq1gB0jRw55NEh=VQ2g*10ct z5(e3T<*sK$bxihxC7<25#n~qbl1qSD)T?c#p+>PhU8{2La!t8B;qm0ptLii0?+#Id zsvO_g@$vDv-uZp@1WoF>BZ*J2BrPdNDL03l)Uj3xeO4=T8qI25Hv@N6zsTkQc*~$#L%=BHeissgtcE&^$?*$P}LT zG{uuZoeqsvt-~LyU;Mm&qg0gAoFvOKsbH5R_*E@hll002rE^SI$%wX|h zh4n&Xlj_PxNUPoq`P$SRf0kDvxI0xnbk5D-L0Jh+WiD8?s+T<^s4NG|+0M=P*!N5c$ zT4zSTU=i_jjM>8cUEXWO&rW%I&2wJnvobU#zz|aYK7#QBU}U8+zw3D$^B87UB*xG1 zuL*62e9}wDzSbXO`sL~HG=HV|>iuZVQP0wiGrw(EI*wf09S_vMEf{{i&pN8vmsdHS zoE#ie-A3C(bY?EX}$BCv;_{)=gu(XmVR7t18m z>>^EgA_?-_*aFN}+O82SYr~X=&RK&&`kAW2w-eH7W_92nxJFLUo_i{C1boStQ`S`` zar@u+l5yb7=_JWuN)uBiQ)4v8GF;AT#$g69P?>U&k}VPCFEWxuT4ieYcLKL@)HuRxbSt zp3_WfC{Mg5Z`Ir7s(-)x$Y;d66%RC_0^@?+KEA{`v+^p^t}&v>w{L~ClEZXHbYN9a zDB1hjocagI0Mn07E}R2qBMZ@Pjte|k%T&wLwaE%%Z@uuOVglcdCuQs)4xF!xThb(I zLhCeD^?$E8|0USKRt0@1d3*n;xn-9V@#9k2y}$!PTLFk(i^ug|^H&d>bn$(JUe3jD zU+}8QrM(EP>Bl|DLg$~$W@@fUJy*t8lLo-)aK5+;%>5^(T1i7D79i5OQlOL=>{weTr1 zJkA7(w|yFtz6{hThtN9Rqf_SobBKYhNVyIL(}~1LM$Naf>KoTOpKc*iDxZ_Xqq`r| z`P`t~Cp9@eC6XCcvk(jUM=ulB=&CV`97eo7$1FXc88o`F_fOS-pbEClBxb}?dwVPE zm46+MjeMpQd?yEXQfV0V=T1G|d3!doi(iJZR-c z(vhcwO&_8tfpl0;vHgSpoa%iqPqt?BLM= zv$H1%r|cKzWWTj>qR_Z(_e)Dq2EYR0p8%{)^KzLYk*TG8qh}q74r7Y6qh27@X})LMGG<-5{d` zLl5Sj23$G%I@%GqA3x?Sszaf4Ch=RX9dtYI)dP9i?m47kHT4`069k{tr zg^W;E6Uj*&uC*}-CNj{z)CPLSOAp^P-}gu*_jc||u!^LSTYKtAhk_-N1Lg^B8N>fWqfs!@K!&R`OqAN!kZ;ukWO19M>uSgDo!^CoU zzv#>T+gk3w`ke_*jMUxL04EKrC!cB8Uy`^+^GkHAEe(H%~(O+EpR@8@O13pP%5@kSrVpw1I=83o9E{P1Q}Pwt2-oOA(zM zR^AIm-h8s)vu>Hiwsp3}9SV67*4Bnf-UQd3K3Zz&_ve5{j1E-w5-Wm&OhNv2;_JGq zvZT{j8^P%{5;wI|3_Yk|uQRBI)Ed4W?yWeCF!F&myg3=qreK$8R!Xv(R&?$<@>Us1 z;VX2YqnR#MmfKr?VC^?k5HO6xI0N za(K#L`YatTf49CkFeGO%Z`Vy_PWu_>Y27j;nj2`3vK>JTdlFZ;dDQ z`&H;tbHC0m89N&iWu)D#PiOqv-qXD=UV~todvNZfAVOdBg0~&`Atdi%ZRAM626%GA)yf@vl1)Ij8lfA*!J!|zFonP zwo_?NnwKY=*iK8fGVo>HRbRAy60`DaX6%fEP0V6~TW`7+lD}Ng)`-ZJlAKKYmrmc~ z+>qXR>U?ONT&t-r3vulX*805eG$qH;XA~*NvnR@UJTJ;LvLstqpNeK-ES=a(MU1cL zN*4LSF9|5jc7FiclNQsNxepwtyyDua=-eKFdRb5l`m~(B!3n+%k5CF)+bsIiyDE%% zK8|E(z~VT6^O?;2TKdsXvk3;E#7+HVE1**3xy5xtjg_5C_x4Q4Olop3JpC;iepQ}4 zH;K(e^(rFyT`6p;v$Z-o-cMzmv>KFd;FcV(N4iS^jgZVelA?OtJ>Ht>a{o8A;Wj$i zV;fgamr8<)L}z}ddDo~rKAZ}<7O4cI z#n#VxufHv|-Fk5eAKhL2x|SFXvyr2h??ALyIK{=zUl)jf)xiJfQ@d5U;8lCliMc_3 zE2Zai#Rgi!VGWt+^!J}SKJ_f?zUa8S-ev-~?#lR{Bigmlec)_q;6${WNLorq$0FS! zB)RhENnssF+}xZTqf!J}8)J2b`|xz}MNqyzwx%E+sk|9o)v{6V*U@50hqOci`WDa9f?J`ANnr(t zRfMUF0j8Z*O}UDC&Gzo}cbOZs=;1M`ISnKX;QnSDcT?xUv(6fg>(+$RYgZkwkg{*x zm|Y%(K*h1g9n+*atg_v@<+=}IEzV3uh+h+?x&JhHGucyS>P&eE8w$9kY=8#5Lz1g( za9nzwU=7)ZWWzciDpJ5N%jt6Ig#Dyxqeru{!K6~@dXJSh?o& z#9HVOw^tV2v+e7H59{FT5_Tqg@aVLlnp?mSHkZO4?hVi^bufWVPniJz;;1;WDAfr( z1$jkHZPM83-f*qFapV})QC)?<1PwT{s_&h=zm>N^d(wG=)54Cn+TMT{8H2I$d^&Bi zjB?hagQRmo2Jpaz$P2OHRF>ljAIeY*=esAzmV};RttZq6L^x01pqL(Vj3YKZgMm&Z zKI8Xv_q@&3I|RA5H8D2>6x4|i06Du))rf{zvCmPLDDg*oeUD}OAFW4GLmWSqktF_- zpZquOkp$N6UYj=q({_DS*~tai4rgUQS_)CSpi0?cY-lWP;a^?kjgj(XrMqu8&XTuR ztA*WGl1mBQ4HYP+m31C5mpAl|dicfbxXv59flsrb?s26Z3n+)CS~*Fhti+Qr8!94g z?a9ON_ewPf({#8Vd7l_`)pv$4L@qLUi_WAVBZx0N8K1W+xIXyq^9Y&?BgOG=kw|UE zUlP=Z62!cTH(mq>!25OpWG!qQYf358u(46=dBfbDX5Pvp3R_=l}RgRuEZXyX7II#<0ZZyioV7*^GBz55Y?(=;` z9)AebOBEjN5Sgy=#c~m`wjTQVs|Ah03HN37<+mky7oNqMKPo(o^5V~Id5tgM{YhKVc_#yt{FUa+tT zzvW>A;>Jh3|)Hj5#clnGIc3~y(c9A(?a(YRNF#=IK zRcUI_u9dv-mp0smq+wHzEl=G#ExC3%l9WRAnJ3-}WX@{ua162WprAu6BNuXRn2ku& z%y;L*v5reFLjhR6Kf4uReMmEUo-FdV^oTfh_4>MR@{kO!D=YdA6G=iZA!1cW0Y(to zXGyP@M6h8azHYi3=my+C9Dx_$pN+Mtj53!YNTU0iOfLNdp;shrjE-u zKwCn(PSi)`t7z{z-J~K;;Z@pWvs{X3KFfX0FmcP9$HK!|UQuaL6XJ?~(m9^Pf|{JHt_KUC{wBoeVspFs7$jl>;S!5Z;V4VMh}QIgqo{azV+7 z^N4TlrSbC%6wReQH3v`q0;MsfRl=sSqN?PO7HY;1z7F45pH^TEyuG#ZSoj6j^{4j# z{v9^|B3C4ak~xqwZyB4f#Ur2C(1DIa+}@QYxk3BRRUjQ>_s^YF0T_?TXLrk>Qp}TF zRr)#vhYkrw2EdwHCgM0;zIDBWC&{F&s3F80X1Me;Zx zX!fFT`=A57(KRI}yI&w6)@y7Wx+zNXPO=I5-m7@{lE}unK_-GF5G6j$OeoUzavKRU ztkmPl`+>XR2+xw2eO`a38aEj>))RxQPJ?pgs2S;y8bACFJT}|2Qsm|cYEiCF@LuSD zUuJx#oYw6tBK-?$TX&~(wa9*aQM-p-*C5)aEOWbw4+}<_4?t&6r)PEX6jA@q<=~It zK2CNR&n5gdjKjnT1M>a=M*h9WFlvQZ-*PeIkGnltpYD#)uTQAOxOrgzBMZ{m&{^O7 zX^Gj5nFsCdk3f(Kczey^0Vv7v75qi9+20wh7P28iP4~2#etwX&RsnziMp>V^cMT|6 zc0sk)eiI7pmD1Kmf@Ad_c7EoAhuvp=+#H+DjG9k4+%!j1elRi&aFGEb3cwqk`v;)s>QF#Oj~BTQmYJ@{2VeUZ zK$f4?qqZGqa8D5mR)#)L${tw2=zy1MmpZ?jecY4J)AVao&*`4zZt?*LF2-66d&Md; zC7T&dnWGs6MS=0me!{*EL1)d%EADh|H(|-t^jthoWr*=@Fuu^tU_FlEsrgg+= zEE{pR+`hzew8St`(E~sVwK5p@p|waAK0ZvU&kw|+J{h|&K^Tj$)k>I+p9bgZ|q zwmUctwv~|8BTSvhm(rX2HwaPv_fDuVQr(!?s?n;Rj@ll&kn@e{zN<<0+Y8qp-m5U; z<^K;ZmtLX)_pgckhhXp`g>R8C#V0Pbb=!Lmwn*~}&k5Z1j`jL8?UICv=(YL=%y<*W8IEzE9u~+CaHn}{VX2Fz0N^t4o*n{hq*sCpJ#dqCk`pUHJ=2rUEb zhzKx74U~I8!VYmQf%Q~ipm%-abCjdf1E2#At@@8S89bg8cFS4a>I_NrM&U=GIJ^Qk zny5^`VJX+sHYPvi*}|B6C*jn=#)8C`{dZT9<|%rp%%}9Tvj=$EElJ)D*yVLL zfZ6+Beje&Wa!CE)m=!A+EzZMGR4k@n(@=MV(4WkrAgw)S)YqdfIVN>w&%x_09T2c+>l4$|hjk;xWi*=5Nf+z!TxpKBgMK3D+4B5i%-iVs^Sbs_D zuF8Y47MV!S^d+6IT|b6-=RfVpNL!e@>0b+Y0Njo!I*6%2vm56-Bs)n?p!`K9FXjFFFT)3FdLtxtJ>2Nb#yCbKBXBU z&#kgj5y$_F_6=CS^DkoWZC#1~v-VB?N&DPj+9y4g@RBr{Pe^qOOzL+}3;HY0`$bX7bUZyz?!h#vX-zxk-Oth9)v0q zk)>H;be-F!&zMLwluk>q2l2O5ho?Dt@vi3P0)o5o~&z}ZIa^vJ5%h#CV zh-gJQLRdRs zStmg&@CN-q_A#@_qOj1yNt+m5@rQekN*rFOBu$jd8>|(Lyma&hN>wW;1=FWa!GLm{ z1#v7?=x%e~!s~07Hh2ui?-S>Btn`uh?QefkM|EjpxmN*UiSSZczNSp*i>7fqAB zW%UN-mcF=Cv8kGv#iaJM1`gx3NK}B6s2~*Lv8rICI9;h=t3a<+rW!L)PXlsK`H}iUnF;_U8%!SO}YP6AMrH~RC>Nzbv-gf$itii}R+=JP>uQ-VTC`z%t zcaPyd;Ey^GDtk^F9;^Y)wlnFyjz#h`*=$U+^cH#{)jaWWW$o2X1H?nuzUA<4?S~8X z(C6&C4+9Ruo16D*6y9xm4dq|{Q*UYEyan4a*c58YtKlW>h$7s`Vu4*HN6)zV$s|}7 z^T)pQzor*GJaMjrp)+9hDL9qwLIZ~*QnO{jrHxWCsM$*FMy%77@?@j1E$_LYRK8>t zY&gRZ@G)0vf{kOiXYg-EE}~GZx_$Z>rVy&c!fG%j4R%Y&q^s-3dK?J?)-Hy_+>-D| zszfQPCrnk}jptfoFiIo3;dW#5xApEzV>oLo1-mTa&aez6Vurxe1HD&{irccogV+)5 z4)6Ut1PYR{0&Q52ssihuCxO5g0h4gd0lsI|Y*G@Z(uH#awpp=G&NgEE_HzR~oz<~L z#U^y;L>P9CMX!U99)JCK+op+~4eeg31Q$^dTaBkUy{em-&aY-H*MTfmZ3I0VKbL{^9y4x>z#lZE!( zcTW`wj9pA8aEvXziW(+5$9<|nsm=zA7@*<1hAxNO(ytbdX-858{7A><(qh`8Gpl{g zuSY8jAsUG)Zat&w6cCO-UHkyN+2wlxPKl@K6S%I5iyrNl<7~^az#>RJd6&Hx{*bHXpKWCxw=9*lsZ2wH+cRk&^A8r0 z$o$Nln3k{}D-DaMQ^~FyNm6Qc!*kvxNs`l!nVA4bZP72xhJkXq2~(PzR>W*yTfM9T ztlupkj|@bwXkr)B6V3Bpzv)$pi;I-S17f;kq+ztp;B*8vBES=*_=j465q9P?met*h z*Rw*w--wvP58jUY?IQ2XP#3F+lflShycKVU5=$CmA``B^_;~tl(;^t07@m7KbjAGf z%(ofRF(C)3%!wNcgfHGtZcL<{oT~+;eOI}ApKtI0^cv}<$__79mnnVg^bUhF7JKjO z&6J+uOI7i$YP?u=s(+Em%b7@XRlGn9^lJ211o1CO;$QCnFuAce^?Nel2$I9H-A|lK zgX?pp4OlgIj|lsA4^k-@@&Ea~+JARG2p?l%o`5%YLGMMm1a5+xZM!e^L=}ROj=A?uSwJOp8)HX$Rco;$C?L^wD@Hv27IVX2iiddf4 zIojvX!lHAp7k$C<04NZ-+;9JsIU$%$hs&s~_CK7}@d}QWHC2tJK@Ws~^B(%TQW^0{ zq62S=JGcCfwq#{h{J@vbYvgKCx99o~z#@^|k&$h_Wsyul>ORtg|&PC8^Gl6SYZFv^=dri&oDR# zOU&ly17t@`*8j9Msf;>>dCWF+^>y)v{&cK|3jls%uJ&-AKI<>rQ3kIy+oIzv*4c6I z$-Z|t;u^Ke3}TJX9g367w-nM*NpX#T6<-r2fJ0y72njwLVIZkg5yw%o!}9s>u-SI!*hVQM^fR%^Ok~&N&KNNE-01i$bT-hugeubASc^JFGV^Qy zx0q;&Lk<{~|DQBhkY)N>^?TcE^jJjzuWA@J9f{8}H^+ACS3F;IFncI5#j!_{)^xYZ zdyb9_H(Tf)ddTw3ght-4W~Q^_&I>b+{hYE@Y+29sU@0@b^*_T4=S75|RTSfOTdc^7 z=_dq60WnI8ArHWeHP%;9T{mO*=e&*rEtbv~+m5QTSw!w%?0Y*VC_8FR_R3|QsVzC1^^%j5gD zY__^Gc6OxlG-)ep#Pp~510DGWRwVCu-JDp`Kve>hjV-iw{c|)B2ztSH0dOue^7oUR zud51n&veKMI|RR&%B}I?&U2$x(+NdRo}n1Z>T`sfahvzZjZQ7T%=}N*AVb2>xnPW z`HSyDaJn>qpJmqZ)sj4~NvL;OXEL%sK(|GPu~%!P-p&vQQ&EIFj0Or?6*gEgxz;w+ zhA!f5WW~2L-pQ@j4q6^bPEW~k@7cUK+*srAE>)~#At~^`i_h*GPsw+3K7{$i6EnUKvzeMXI;3F$-8RebZ_? zpQG2BfKW$I7e(KqDr}Vfyv+rx%EI^y;snbq9{u=tnzy2Jd0?MVYsVgLD_X@;QuM;7 zy)-|@^ZuB#{R5AsO`fyv@@z}Keyd15T$LchmL8Mc$|wkr`-$2U*G(c3 zlld*yMp26YZLat~ZvF{D@kI zG=zkuUot}Q;M$fv=CfbhcF*X&UNM@gU~`DYyS|M9YD3t!lWu(}aIJ^5YO>!leVVd! zW_c%^0lroA~^tzv_g|@DzUImpCPiOI_t}g%2 z&FBlGTijGxAz5*%3R5Vuj!~nYU^$1e7%4=sm zRTd}7vdK59<@!2VyTy}|4E$m*r`$qrjWVH%$a5+wNvqa(sbdIi+*_mAjy_Eca9+b0 zn!37G8)Y_P%3`NK&4SnMuAm)JX7I1=EfYO$I$b??!f@GT*;Z9!UMNY~%bm_&Zdtif zrBo#!?{)Dta~|(sFKm39li`^Uvq9c6mJa|@x9qKxc1u`R>T6;bS7{T7@n8{@vGoF8 z8UCX>MY3?c-u1RyEO&7K@LT(>C(rfE%MbTr`fdh>X?bjaO+GYhw2KE9CX#%D%Y{!; zDi-?DByAxLzS36@fH6+wx;;w4!myhsw}Pm8=*k-I{5+eEyBrnH{Tz0iH~ZiZaITq| z-CGO%>>_zQ9M%b`Z3Mtn8*19eN^qvklD|~S+$aZJza zM%kM6{XgxUXIPWlw(o-=AYJJ-Gzro~F!TV*k|F{E(wp=Wx^$#Vl_DUhbdg@ALkK9n zOAAGMQ+f$P2rb^%b1G0i;_t2(a?QJPrE7du5(B z<-?Y!`j5?%bH#i+`k`sz>JPS7CDMd5K068&uGc31Hgo*zTE#zn%`dKxT4?7ruaC3& z)EvY&!y|F^qlyhIMV>p`kwTdO4=QN3Q&S$7AqPk0ne>4i2~5-1T$VHf3kg7K+GgaW zC)7R>OAhY%DGj&kCq;MZ)K_4}RYzUsSOidKZEK}#Fkzf@a?wUTtv`P@on1A zTp2%y0Y5~=x7;VK{d-UQWP`5Zo2b3Sy_-n?XEb!FOG}dSDi9gGEH#j~=D+L#Kai9N zgD^B(t9Mzw4QtUavS`s{liuFs)|hShfPSpeh-|m+eRX1POQL))50EZwKLTI}q#{EM zJN{)#$nCpDvV9@Ol#_06n~3zoXSbtvcg;=4RQa#!uzhcYF|R22l&+AsCgjfa-;LVM zL!@Es`Y-d9dRz5j^ln?e5*yONo>W`jX~yUocsVt9><#k!++UfKKN}Egq^{?z!`a?) z3p(rFD&0z+#hyGIb)J;0jkD-qk-IsnOsy2by=E2qBG#jH#&OJ^elyoZc}#)bW_G4DvpyER>J5I$V#UvqWhcSH zu|GlMce|&5f|j@-P0%4av~CelCSiR)|Y`(B6PD|1?u!3z&Sb8+9$n z;rhnP*IugB*ZRK`g2a{@U$oKW$b|RF97~knW`ds$#TUNc2xK{@$5a#xI)YAl~a#<5#!sm*m1o#p= zMgNYJ_RmRYd=X7WK~@_~srkWyeQ*IR3{&i~DbF}_`$En0<)zc9@|r*Cov)UPopHzZ zGzoe3CRc6kq=GQIA?8n21PO@adrHM*Edu)bF5rs661QWufZYZO#$O_e@N8>gBAWZ@ z-7uK!+Y6vv(@EMZ13MVdz0OzilFQx&Tq#VOIa(u=9%9Ty6X`!Ru|9h}FlE0ueZkZLV z_WHVDd4{G0L{3T2P)fsL^zMUU+`xZaG=BdGaT(tkdlenBd~jqW+E3`G-ugT z08x6#4lo6CiYlBrYwOa!dtW2tweo_|%J<2or~(dy*r0&iu0jmTd8yWIn_1!q(JF(R z{0*$>g4s?-@%($E-A6BrQOB`VVoEJg~wSLPE@hl$FQVa3pDOMQ8E zBwL(kcE{Id6u6AP6uu*6Q&*JOH4QgNBMdWNE~i_3IBt2%2`DAbzMIadxwEIz2QB=>8gvwGo`{L_BS_z-G15=yQw1p) z;AoI(fMOM4-8JCcB+RECU}cu_6NFx}!?*Z{`S2gq`2XL1O_yLC4`LoyebIy868?6l zBre)$YfNY{Pj%nWa5Cp^CaES${f@m8_r=jEO~X;qg4#iCY~J}QUA#J!crh3V3Z&hD_9l=kExX`5 zr20KM847Ssl6g}UVf3zo#d2^JTdhcm=a&IebFmY9qbmy@-*u_rZbZh+)A{BF3?5!( zj)t8MfsB5Y0|`UF6Mqk{LP$Oq$zX{M+rz7%Y{!Gj#jxF-Xa@_S+6v_7Bf18IgFaW8 zh5>UV{6eagX8ibS`eShoPk-pekKSgGZ5!+hs0;Me2N{jKa566D3u1hql}0)5Zq9egXrTO&CeOfVWeU%W&JN3!R`<)u{einfn7OdJJ;5M1n%Z zy$f>*7^N1kBRmZil*Po+OPC@pKP!r#S9hy9!Zn~r;RqlKV$Cku)ZmX;Zl>nq^p8|@ zAQvGi!Do8+Jh{TGP#$6=q}5Z;Q9#) z1`#zo!-l+DMR-i`cR=W(xi+iSNl9*<LUFt{28l) zNrSL63PIH1DG)`SYstv&mb_~uo<;O2%;eL=bMX~P4_lNzY>sDCh|3q$eM}ygce0%p zp>gd~#B;{-f_MIa{}2&%TPUZ<)VGj}M4p9rN9rmO@FYVNRS1^vEep@J(Tv_;$SY!W zr?}U4#Lg6^QlB-fSY3z6tPtV|;Yzi!coa`VXrWQuSNa-n9Y;*0i9U&k7DPG-&KWui zhKY0T|N#Jv>hWe&pBjqOxTdze7l!=xEXTo^Ag{o+XyeTayfyx zE!RizE@>(~`CS*xrrdgMlI@^eyz-evu#_P`eY>8vsgJgL(sIKbx9OvyZO$99K~U&l z6axPyUi)v&s{eIlwVvE+a_kNqsx&(xdM1j2_iGb!B6Mgi%6j1dr*b31|Bd{ z0Jqi(Yjb)G2KI`N?#R97$_#4ed!9tumJ+#ai2B{79KX#Z+I&@q5h#kV)zOyE*Bw_I z&lo>&!(Vr-lJIn7aaAHpG`)&Weu7?0dvMgys-CjESkJ7?9`_UE@6+Tcx|DH?G{aSr zg$biUU~l>0KsLH?XL{soPm6{v7tlaRpq6Jo0<_h%!yCrflA_O_ zDK$V=zcMr=X@EM?71mD(jsv-9swo+88C(zJ0_lYGvY!QN98ax%>?DqN>4_b>e>5;yR1g|97;_xfl$gwkIlQ;KHBF1ThyU zA0@K%E&e}2zzFa3im0@#Bs{u&) zI`H!Q{awqd%>({knf1Tje9e*ALJvtEzNg)5U}^JU?(+?L)S2E;t8hK~1yD;cty0K*1Bg&FzLNS&YtVq5?nVeM(I&O?l#| zs@z{J-r$_4c$=!f_<0*h?1#=yj~`1!+iQ^j8zK-~GQ0=~5&lgf>IEn%jqQfkO&2V! z2XHs`L-buvAVe&NFAtXj^K=pRlXvEs^J*H5LRCb{9)cmoUqlT8g`MRqb~SPZhH=8N}lV(8vef^DHvZN8a-G zb#WfA?|o7ILPR`w?a+6F&!8{{aCrM_@lNeae|#*PH#LO&<8g@02^^71tj0PxrS!tL z8<*L=HQ&gUkbsVSj^l(3=p>H$#l0kS3{Xh{pdpjW3>?`06KNsZIW_eS({6ngX>Afh_We5pHAsjc3dhSUXr64FM&x_Np63*Y05NSR>(f5bmg?uLxc_J zeX{Y?{av^H?<%+dEUT;JIiRidNm^HT7WAa^AJE;oxjK}9mP4|BS>LG}(Gk>EOL$Uy z_-^Kw=8ISA*?x>fie`hc9_+7tcyh)(brH5ztq;PU1P7jRysD78#x?vzuE5oo=68!X z(aYy>h#}fL6v-DC^341Dpy$|F*sRx6Kp|C+9R~bE+RVJ^IcUe$OcGv@$c}PNBAgCDs}-o@SxCK- z=36xlCQ*9e@jHF$9wUL)s62x#gI9Hg3*}(vK>n`s+bpYk$;0%;;Kx}zvHp|C)(&SL z<1&U3SvsElPoKB+kcxm?sIwJ9!Y;V+huNpcp{fD8(*qRWJfwLd?$s-sAsTmr?h7m4 zBMcUr)QGM-cOk{PpBpyo+BtFEuF??l<4Y)J4}_L$4ikvqVW{AY*Pks>ejjo{4tn04 z>$BJaoShYGh1Td~ZYoTo>xxgOAv@?K;(|r7We!8eTHn`aI+vR_KJYZqH0F;LCa@*& zg6f@9D*puK=p^9q3$Z$9z-ZQZnizN-D|005GQBvZn=ElPKCuW2CsZ_QXkw=#ks7{G zJAMfxmy8g3GgUZxz2-)M;e+Axs*n4?CU;ZH7UMxNHn6@hC;sl4tD;O#w*>2J3eXPG zvm_7Rzl+X4YTZ=?4&bZu+C{jj|7aoc_e@H$Hj3)0z&?bn)XwYaWv zWXfKMP{g-h`fS`|U%SD3WtTQ3Z>!RM*F3P4qWB69!||&6wuXqzu>y7}gYALC2%aen zU5Ha0j?Bi;$epo3cc5gGsZ%$UxH0I5XqN6TAu-^`8tP$(IoEzw8Tgqyy_37FS;Lce zKB0_frhxF4lxjzyePIzzbWjqDcS@2K!;42u zmal(>xQ(dgDb^|z201v&+aJFlbqyzNGyFOTL<07JG?t$YOdM?%+Ewn56y!Tlz8-X~ zzSX^veVO`sy$XbB1EF$@?bGs@%A1nd0WjHDnHyv(q^l|B)3_H;L+=q*j1VO}w+FNg zHOuRl;gq;Ya!)zx=PKZEU@?AwyF(K$cHgz;?pw~;0_Lkmm0U8<5)5|=YU>-5Bq0qk zdQsoSJjfoOh5C7bQsnLS!m7`)pq(y^6Zvr+fHU^`8>3Tc0WIibkj=2Bu_ z#aM3@PKOxMW*6HTDpu8;Ydoq!-a29O(doau#t69C?R5NS&tYO;D_km;>OumKYI?6L zp|beFII3*QBRVYr{)tF=aw+c!?k+R%(Uu?I)BQfHRHK@5Uh_6gS#HTz@NDF25LN}O zdASf`F1RUo_(P z^ce)`LI3~y+Iq`SZl=&^mOsq8m~+=CT&->DJn1&`)GT|vtD>62?@FKxZh9%(z2i$+ zWzeRtT>`AxKZAVqe2)RV04+B!*59gMS=DH1XpWTl!TwrmeT#3xY7uLBAGJq5^gYp5 z@XMX`xAJdr=V0+|d8P>^tx1m|R@!6cbN|N|?5Xnk!@2Q!=Ojab1`E=0NuCkz&w+Sd zbSAVz(o%r+R~((s8?P;uHefN&i=fqWDaA|1j$8%r#%buC-Zi2NrJg+34F8~sTZ2%n zZ-4Zo9;>}O#3Lv@_`3ImKKbder+qq?$N4u&SJ#Ww`< zSJQYFuXZXqzG^sm4H(AUiI+kp%7%9Z%@j{PjTArCvEKH;zLWqTjp3zUXnO@A>P9r> z8PA-X^BulTw&Sj?X&fi=;|}FcUS0GD=IDk$M%BU~`qwTC3k()$&Le)05SBn%;0z*S zjmRESYtGxAs_%3(P=sw4cK9}jXXEPi@bv8>!5p&|fkT2{ZBBqC^dhAWJikFFvRL&K z^yZz;`+BpWJCOh;3`CCgETs#iKDZ3;pPSvlz}-K2c}2;DZLABPO?H8-rtJ=uJfP(2 zYo=Qus(7xiETH4-1?qDr+^MpSpP5j9i4w-N)OewFqgmB3>!R*vt#349-?po!K2$ak z*s_NWY2g+TV}KC4a`W&vBGp;m1s~?QVA7ubMkgRZfS*t62#|+$7k8OFcU$HpyRkPZ z@Q!--bxZkvf;yP!irp|T=Xt)sGc1Sgl-|n5%bK4~XkhO@mmA-4r`?Iz()utbw1dAd z&*T?hRj_%zEG_P`rKGCeckHTA01cZ8hW6cMO|iowPqfA8eZNJAJ2G~1b5YBS=;_v2 z2TbPjF0*oC{_i2AZ=N6XD}*c|XlOq0pV%bQWmvt-_fP*?wLY&FcW9Zj8m^ff&VUc# zAU1$~*1sjh`Rn)pCsb+wJ!I?ukhbfOv|oSy`Tv0Q>90rpf8+HZMFHXd3mHq`SR`V5 z-G)H!(WSs)CplJe9VNkm_pyxVcI+D9! z0NOlVnt$H)=Sch+6MxQ*Kc5qSJ`4ZM3jfLcsF!vDN3%ti`{;HrKAiN}K2183R)TvZ VRaf*da;Ql3v77^q - - - Non-Unique Mapping Containers - - - - - -

      Non-Unique Mapping Containers

      - -

      - This section describes the design of non-unique mapping containers -(multimaps and multisets). It is organized as follows: -

      -
        -
      1. The Main Points Section describes the main points. -
      2. -
      3. - The Mapped Data Types and Mapped Value Types Section - describes some additional types that each associative container defines. -
      4. -
      5. The Generics Section describes some classes for - generic programming. -
      6. -
      7. The Compound Keys Section describes an - alternative to the STL's design of using equivalent, non-identical, keys. -
      8. -
      - -

      Main Points

      - -

      - In pb_assoc, all associative containers have a unique-key design; -each container can have at most one entry for any given key. Multimaps -are designed as maps from keys to sets; multisets are designed as maps from -keys to non-negative integral types. -

      - - - -

      Mapped Data Types and Mapped Value Types

      - -

      - The STL's design of associative containers elegantly allows -generic manipulation of containers: each container defines -data_type as the domain of its data; -value_type as the domain of its relationship. This is not -directly applicable in pb_assoc. Consider -a multimap mapping Key objects to -Data_Coll objects, where -Data_Coll is some set-type of Data. -Then should the multimap's value_type should be -std::pair<Key, Data> or -std::pair<Key, Data_Coll>, for example?. -

      - -

      - pb_assoc addresses this by differentiating -between the domain and the type of relationship. -All associative containers define value_type as -the relationship's domain, and mapped_value_type as its -type. E.g., both -map types and multimap types may share the same value_type, -if they map from the same key domain to -the same data domain. In this case, however, they will not share -the same mapped_value_type, since the multimap type maps from the -key domain to the domain of collections of data. The same -differentiation exists between the domain and type of mapped data. -

      - -

      - In general, the following types describe the relationships -of each associative container: -

      -
        -
      1. - key_type- This describes the domain of the keys of the container. All - associative containers define this type. -
      2. -
      3. - data_type- This describes the domain of the data mapped by a - key. It is identical to the data_type defined by std::map, std::set, - std::multimap, and std::multiset. Sets and multisets do not - define this type, since they map each key to the abstract fact that the key is - stored by them. -
      4. -
      5. - mapped_data_type- This describes the type of the data mapped by - a key. For maps, this is the same as data_type. For multimaps, this is - not the same as data_type; The mapped_data_type describes the - collection of data_types used. Sets do not define this type. For - multisets, the mapped_data_type describes the unsigned integral type - used to indicate the number of occurrences of a key. -
      6. -
      7. - value_type- This describes the domain of relationships store in - a container. It is identical to the value_type defined by std::map, - std::set, std::multimap, and std::multiset. -
      8. -
      9. - mapped_value_type- This describes the type of relationships - store in a container. It consists of information on the key_type and mapped_data_type - (except for sets). -
      10. -
      - -

      - The following table defines the above types for a map -mapping from Key types to Data types: -

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      typeDescription / Definition
      key_type
      -
      Key
      -
      data_type
      -
      Data
      -
      mapped_data_type
      -
      Data
      -
      value_type
      -
      std::pair<const Key, Data>
      -
      mapped_value_type
      -
      std::pair<const Key, Data>
      -
      - - -

      The following table defines the above types for a -set storing Key types:

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      typeDescription / Definition
      key_type
      -
      Key
      -
      data_type
      -
      -
      mapped_data_type
      -
      -
      value_type
      -
      const Key
      -
      mapped_value_type
      -
      const Key
      -
      - -

      The following table defines the above types for a multimap -mapping from Key types to Data_Coll<Data> -types, where Data_Coll<Data> -is a set of Data types:

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      typeDescription / Definition
      key_type
      -
      Key
      -
      data_type
      -
      Data
      -
      mapped_data_type
      -
      Data_Coll<Data>
      -
      value_type
      -
      std::pair<const Key, Data>
      -
      mapped_value_type
      -
      std::pair<const Key, Data_Coll<Data> >
      -
      - -

      The following table defines the above types for a multiset -storing Key types:

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      typeDescription / Definition
      key_type
      -
      Key
      -
      data_type
      -
      -
      mapped_data_type
      -
      size_type
      -
      value_type
      -
      std::pair<const Key, size_type>
      -
      mapped_value_type
      -
      const Key
      -
      - -

      - The above types allow to define simple invariants on the interfaces of -containers. For example, each container defines both an insert method -which takes a const reference to a value_type, and an insert method -which takes a const reference to a mapped_value_type. Containers for -which both these types are synonymous (i.e., maps and sets), consequently -have a -single insert method. Containers for which these types are distinct (i.e., -multimaps and multisets), use overloading. -

      - - - - - -

      Generics

      -

      - pb_assoc contains a number of utility classes to ease generic -programming. -

      - -

      - There are four container-type identifiers, is_map_type, -is_set_type, - is_multimap_type, and is_multiset_type. -Given a container T, for example, it is possible to query at compile -time whether it is a a multimap type by writing is_multimap_type<T>::value. -(This is probably very similar to [boost_concept_check] -and [boost_type_traits].) -

      - -

      - In some cases, it is necessary, given a container and an iterator, to query the -iterator' value_type to the container's value_type and mapped_value_type. -The classes -is_mapped_value_iterator -and iterator_key can be used for this. -

      - -

      - The STL's std::multimap and std::multiset allow iterating -over all value_types stored in them, which is convenient. The library -provides a value_iterator for this. -This is an iterator adapter over the containers' native iterators. -

      - - - - -

      Compound Keys

      - -

      - The STL allows using equivalent, non-identical, keys. -For example, let interval be a line-interval class, -color be a -color type, thickness be a thickness type, and colored_interval -be a class composed of an interval and a color. -

      - -

      - Suppose one wants to store colored_interval -objects using a comparison predicate ignoring colors. Then -in the STL's design, one would use -multiset<colored_interval>; in pb_assoc's design, -one would use one of the following: -

      -
        -
      1. - A map mapping interval objects to -color objects. This, however, assumes that -colored_interval is decomposable to, and constructible from, -interval and color. -
      2. -
      3. - A map mapping colored_interval objects to -color objects. In this (less efficient) case, a colored_interval object -is a "representative" of all colored intervals with the same endpoints. -
      4. -
      - -

      - Suppose one wants to map colored_interval -objects to thickness objects -using a comparison predicate ignoring colors. Then -in the STL's design, one would use -multimap<colored_interval, thickness>; in pb_assoc's design, -one would use one of the following: -

      -
        -
      1. A map mapping interval objects to -std::pair<color, thickness> objects. This, however, assumes that -colored_interval is decomposable to, and constructible from, -interval and color. -
      2. -
      3. A map mapping colored_interval objects to -std::pair<color, thickness> objects. In this (less efficient) case, a colored_interval object -is a "representative" of all colored intervals with the same endpoints. -
      4. -
      - -

      -(From the above, it is apparent that the STL's design has an advantage -over pb_assoc's design in terms of convenience. Nonethless, there -are efficiency limitation in the STL's design (see -Unique-Key Design for Multimaps and Multisets).) -

      - -

      - The above example, using intervals, colors and thicknesses, can be generalized. -Let -key_unique_part be a unique part of some key -(e.g., interval in the above), -key_non_unique_part be a non-unique part of some key -(e.g., color in the above), -key be some key composed of unique and non-uniqe parts -(e.g., colored_interval in the above), -and -data be some data -(e.g., thickness in the above). -Then the -figure shows some -STL containers and the pb_assoc counterparts. - - -

      - - -
      - -no-image - -
      -
      -STL containers and pb_assoc counterparts. -
      - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/non_unique_mapping_containers.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/non_unique_mapping_containers.jpg deleted file mode 100644 index 3bdacd005fae1ff45af2e020600588628e708b49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19257 zcmeHOcT|+ilK;j5ha?D+(;zt`QF2hCh$P7%C>aDKX9iJn20;sjz+f<3TpTn=%)D$2jNDALwCtBT zxG(Vw2?@d3#H2(8BzXme1ilRd!NtWTz$c(QcaBovBJD+i|Mm;>8X(4jFhF^s5Jun( zF$78s!L$N!0DxeFv;8*Vf4m@Ppjg;vVK}&W_+W>s^S~Jh6nX{=ij9qh1@`s_zX!00 zu}LoS%bmTTc^k&)Oe%0cJ`0EGO8FZyt-dX0!8ZXl`L?Wo=_?=j!I};pye=^Wb4{NN8AiL_*@Dq~ym>Ql4h# z`dggL0k0!h&MKzR3kS;|Vq>F&6ek{<9=7Z?TZS$U_sy^yW0B;!!7kp~0F(!fvl*tag9hN1Yr`mpVk1_g>? zfM0%x0Upx4o!WzxV}Rx>^?2;ij9+~c`-{F@nc08;`bUlaN=JWd?LYU=-@D~x@9$Ic zlim6Il>DEwsg1Lh0s|;C z`MmoJwm~B!UwHkA*SdRkBkYZq-J&Y)eDs4kK-q|S7gtAKa8^hG3}*S}b4uTKVwKjlhNQ*S+B z^B<%RK;oRd?V?5*BVLwn6#GZ=ja0db2V^-Ej^z#Irq0}rk<-ehB{TEJIxh!{vpLiC zhqL&d8IsMz$%QchiM|)|t_bG8#& zCFfU9nS?JR=Dr-ZpdV1f(Ri#FVD9PVUp)b`R3&kq_8=-8n}*%9o(Khs{Y9exGPlw%qOxQ&eg`kZc+-%{T`LCa4_px@$S zfb7XYiC8G&eRMVk7|BL(E^%f2DkjEb&kp>)iB3fXuz()SX!;<}C%SsU;)JK!_$W3$ ze&g%{1_&I%6$zcr+M+$Q6)xeZBC9#khugz=xj9B$5_Lq9LZejE^b z-*u2F1|$fO&X&`_P6;Zhe^*c`?mR=~iNb-JOoy2!b%2QP1E1g5p9I{E>>FDcjnqMH6r( znH9%;?^24B?bbS!f8>+h6$stRy3V#SAMQX^u2v`VdfR76;+%Mr2Ye$f#y_cHrnrbJ zyZ(~p?YP%-#IpDX)r5B??>Y>G2}>xYjg&oQjrR06UL2|G5U4F{NH?tlHiTTpU@`Y8G2h!> zH$LciXZy*kXQsEt72dLHVJ1NNsc05`2F_Z67ML2hMG#9u5WegY!>HxFpnDXaR)YrXQ`-<(t9>Lv`p zlzbm_l_MG5)GPMMBh7Ozy)vt)-J=#+YEn%F;QL0FJhdYQdeddk)9I3HolZyem8Qpg z4d{ElFr(j?f$z=2Kc2ta=uLONv*my%{aMhT(I{Ym7xHMGUOk!5PDjMw{zrY@1p7Br z`Zh(KNVT${1EbNqB{>aG?x^&$5YA2nb}Y$oRwl;EgX4;1BpE%E}F?06N z6DkffF=bq<`OP{jxVk%8L)G0SHRPKtlHL}assXABt{7k|#a58kwrx?zacb;fQviNq z151`6C-rY`9ckWP%^ugkh?Y`Z5{x~uCjX4sESIIj{_RM25Vu#p_^sSxu0#2}Ltd$V zkGSwk?ohPQp^+(b{6-DzM$F8-kMS)*<7?8f7p>rFfVEu!Tg70eex=k6wCz>vkNw5( zK9ue8elUlB>0LHH*VG(6U?_5nI)y|Su@`AS6rEGUmhnX1z#IcO!zJhVv~P8|I?zoN zC-+m4i&5Bny9kI#r6@CP2_<`Yp!|zHs_!Xb5l1mQ7wEtPGl`hDnWbea2PK=-H7a5i z6CX&Yhn)8(O9|)Ca9NRXTqGN^@p-w#&u!RYnRE=iPm64N+J3qQ7upfLHI}TaOKmwx8?U`P|-cbWl~4eyP+1 zn;C@kYU*$ctI6nub`QKLDV;%oZ7gCqeN*K2UmbSHH4LCMAbcfMW1xihqc@HtgMr9m zsQ{rk-t%;_tu;qFp>sU?v_agnSOG~d6adEO*})oT?gs*&@eF?_&MI?XCp^&_i1t_fa9zZtI<}O(jnn1k@&_Tc3 zHvI~#G(El0i2*uZTetRWr6Nv`3Ugm^+m7LBZT4mH6lKeY=;hy*99@a zl;atWgV8BNKWUPF`3`4a+WNE)&x%nGLtKzUH%|*O07O%k*1x;1n5QvO-`>YDkJhZB z%OU$cgN8)PRqPpSG59uO=UE6#{?Ia9*ZlK ztnX1=mY6s4qs%lv$-5VTo?IWmTBMwXi8ag8>mgUsOtm!vQ}Udd{u=L0E2_t&2GN&Pu(CTdJ+FXchC+In=oq%t}sAGd?-@ z1@=(Qc`&gFzi8yoHT{%|tUNynKk}{e2y%MY8^Sc2zz)59Lh%lJgV*}6=M?)8 zt9>#_Ze%@&G-!DT3Ut$jBR#o432wiIl|Kf!Y332a+#8D!*|`K?ytnAS5#ielw&c~r z$<`Ytc92eGDP1y#;2#5A5hp%}$`if%#@ZMhCMsKIv&;Zt!zulm$LjVc!3k}n{CHn7 zuht=&f?P6pTg#G;KoI zzeydukd*hyjF@hqOStQ8t*E7wl;=e(+Ne3=2w)hDfjU*5%-*;xUgUx9sqv1(0OPWf z<%eZC>u6Tc<;9wiquvm0uUwXUh8P#Efnosvh$V4?Z>dCd%h1NrV55p_<$mOiV23y~ zo8N;iXRUEBCAsP}N5V9^cOUj@8?9;|`O{zdC?h_e9Z2}#kMI;h5e7JC^Yq!I|73~- zOS^sGeM`6!cC$8W!vmw*^9v^+?Asf_V}eZz$sn(?^hI`f=c$wD7u4Zf z3y3+Hc|tM@Nxxp!tr*JotbEKvHO_q_&mz3Je#u*VO~Jw|Rj#7`;beR6vcSYe?k|@e z&1`zlsE}kQ(=|lwaHaUExEEdZ&#|-WU^p_bOHg66rRepp^H8^Dpl|S@29D20>>BaW ztsX=*qjZxEA2Nm73)`?92U}U1uh#`M6*UjIOQ_v?D>2UD_nx_%5QiZKhhYat^1P1* zcKz=Ju0I8`Tri_oLx~0hLS3A`T%PqY-nWd3te-*XKLSOJ?o%UD_1XdLvqZ;)ONc|( zRPaa^Kr^%JFhKb?WKa)BO-b9x^p?e~0I=Own@6eu4^q8k4Di-`mgwlX z7mSjOE`x^i+g6Q@l38563i_|RQ>XE=^mz*2PN%HWmoPv^2`C131!6}5zV!rLxPVHT zQ}Qm*Gm%0jro7CRo9iyC+gxmv+4*9(jx`mTMW9s9tmCwX0f=o+NA3FThzaBDoYxVV zPcQKw=D>Ys5!3wJp{HMM5QjY9wgfwP_}kmyyZhg8WwjGpIg_vxP2%}-*07(i^3*-; z!uolC&-R3zi6J``NzFS&WS?9VoO8ubQNfkj`ZIU;65;O7v8i!l-IK`h?}sY(Jt;BQ zsI@Pokc(KapD@x_$7)|$cA<>Dqnt@(tE;E+K~75mN0M0e7R&VNCb^djhgr=Cw&(l3#10~MYKL`s>fpTTSMoi`C$C?47-J0Z3-9x%Knv1y z82a_{&Av*H1^kqB-(d8qGw)~QXoFIQ29A_{W-**N$I#fe9#v?wca*x$K#*~9u&4|J zxUIRal}wS<$Gl{$zhrSc$x;lPiLz z40{Z4!IYw-K&h)V)rsYiqqqv!OQG6*{Q2y~!Ll_Q(9HaExE>mI81FSRpw^!h7IWZX zivdtE!V@*ycT)DL=vL!PduHfUdD>EJpUVc1-+0o&S&K_D_%)Or`(>yx+|Pv2fnvZb&`e;y(O{-VJ`d*NDD1^7|10 zEjkCpiQNxCocI{TiC`{b5HaW7i&*UkaUzJw$QCn*LCY&KjRB75-7!FAQSWMxG!ytg zo-G()|HCQ3-fTo7@q#*1&Q3qk4M8+bS^>Apg%v`_#=>EGGkKW1B7kxj# z{{WEu0q<%_6x(#Kk&#-a!~pd9W$IybgDSBt!w3{KtI=a;U2o}-Rs9gSJsK}dEnYG) zl!Q#RwcwqS5vW`x$^M-1F4ieic)p~>D_iOcrQbydYg#>C`FlJq#s-UrDXNMO*h}Dxas6B~Ii6^gIuz1I8i?H6FOgEZ5voh;XcQY!2;jF~n_!Ad5? z{0{F-y)TbJ;O-0VM~ZAtdQtPHXe?a1u*`ESTp8$*A)(mEM&-Nf?WfJl+Z6?0yz1OQ zzq3i#K~`byYhPfPHz9w;T-0vPdCP-o(KR;c982RSq5(<|W{tBkMV{`KwhJf&{Fr8{Ngk8)z9IN7*w6)JXa>156thpDcxtW zaa?ytf>^I|g4;l{MzHfBa=DB-)v=eGEmcBi=P8<;qS8d#osYZ*IqaFG|8ox!5wu65ADV zH}RyJM1BiPvu#zXme$!Ejy0t@IfgkBF8)(N8e&hffib&}urzOrY<>x!Mr%&ck1{B) zDF9BIpt(GFRha8nKM|YZC^L@%)T7gs8s2pxPhnmg$|b21<0e;zc#BK#)YimVvV^yA z`Qv2bF8x7`6F!ymvxdl8|q8azSm|>PT7r4yCgm$ z2WEWq_-3Z?j1OaG)oUvUvtK5Eyw==QCCC*zo(|2&K}n2&2_^5IQ?4dYbcmV+7_9Jp zi%t-48%7XI76Z*&S{UFo{#Nw=ekZG<&wS+LwmWM1b||&=4?7GAZ>B#OU_tAx3u`XaoJY*KEG;t$twgYjNEsH*(dyo~M@p!|R#wcnPUosiZxwIvU~3gHKb%Qh`C#a_ z7LKWhrS!xS^s4Sq&H$svh3@*t(${IKH`;a0PuazjrKCE5`SHVuO^uou9{ORaYyO!k zeuC%X9OsSaYWGGdJ-E5z2TyTlY^zeLOs?vg+!3QB51GUY&e7~Mk1!PwL3u-ZU~FP+ zQq7?bGa?wkAyjWr7(4E+j6G)qjwsWe=fP%jSZ2gg8qfc_O|Zh_pa*K}Z_|EF>*7xiw7$IA(+{iv7A^$(skz01O1fFIjDBuiX*9X}c| z_5)RC-CtYz$h`qB{Rz>D&Y%&G^^AP1en`0eDPC)-{?zaRzPD9Pf|b@*kK=e&eH6Sg zlr8?XWe2Cf9M-3yb*+`w6k+^GtgxdJNs_P+frKu~Oms(-GmZ7TZ|h%G72toR&}(?9 zHgj{3cP5-ADO71EM}DFml6zF9+(yJe|3<;(-ikE)z>wOUE_LO#v%7ZD4*Xy6K7ME) zcfkPHmiE408P~2*EmFDMIz}6mr!30(dIyIgh=`#V`|0q?9k8$(H8M>-Xfc!$eGR z`=N$Aw~ucEq_bw5Y%Sd*Z?Nd)U_nIJ0I(GBT@~|R zd{&mV7r z5(6X~Ce`XmPu?|>J=HAw2Ww5)Y3*>RQN|Z9rosS`uXKoYM*TEYx5Q5+-%j(oP(v*r zZ_bq|3xg}FapGim$z(LR3>zC}*}^P)v-+7rRr>k522>LZ##21*jt4z4lRK(k2$aIV zKD6#GA9v-J*vv)i>J*Po+&xRQyajz`e3$8q#Qbe!xZ&~SM*jv4m03^n?OjU-gd3HG z3&qzsk7tBj&rPEzFX;epviYId(YbZfr>e5>t9`drw^nDYnrE8H==iiBsOg`p_&|-K zB7VT3Ih1=lM%`}z`Og;MFD5P!B3fmZ>+`{~$0g&ByPx>J%!YenOTR-&9tX;;nqZq9 zMpO6CstpgRDj`2k*#Z_vgn1^RCrI-QOUJ{KLHBsFz6VSMMI7&$1~tx%NXyKa&c>7a zU43rQArv{PhOgN0syG2atUf6Xsyi_~e0umw?TWO6+qgG(j&r|?Nqk;=fhiA#bY7@A zSnT;OsHN?Rcs6ls=~xT{XuAt`-D{qTVd)-NGj0d5>!zOFi->8j8)+qs$tL1fmx1q) ztEGVnI594Q5Eui9Tf53!Z_k=LK9eg%Np3Vf>=UwYSm|JZq3a_0i@&l87J8MMsEAdS z)g*LZUS}?S-)}z1mmHa))l!~GnExHmgAhKWu=+LQdcV#$aO(XUEjmjzzQ?OAok=`d z$GP^3(e`Ce{@6-cmTUfpTb59^4ol8Cf5Ktu5B5>I1X+)QaxI7_1IerXh`d=cBJ<0& z(Xj}-fuuE-sO-fRoh`&C!?u!5$nuWKVaTjLr$R~bIok^!35u3{v0pscdx|ctoCAEm z2LrT9tIPaPi>%X?N-sG|p+OV^ttNqY+3ZyHB?AkOcNISO^EX<_lA+}c!h6jg#B z6~#%t(mm!V_xPl^#8WS5BX6W7?qz3kUzBk_g?(;Sxw#iRyzYeWAQmGet z>c2YOQ_`~&6Da8jt_YFbAsA1x5FkdPrjAMU`rLPsZxBc9=IBN+aOzEX75Ota=exS- zzsYe?vXr;-z{|8qxCgx8*(M5Wd*C?W#p}JOXI}j&)0f1xCt1DglQS_#0*s(V>YzcY zpwftAZFZ2gUNofRH6zGAsg{G>{G7}bBc1^HpiX40S~}L@h1GGMLQn8Bc7l#*1gY_9 zIr8Hndh2R}N+zM|jcvX#zADwG%WbT_EHy3(O4)55mjK!d%e?Ur?MF+5`US$vKE_Yo zo?5_Ee67pz!_>;pO68Qblf@PRvz~Gcrmv`Gt;VzBFx)9# zCdn(=JGksId~o~-*=3s*#W;EY{sPfKDCB+ztve+%^qZo8m6osVvR3xL81EZ{7trB&}OY?LO>%>8#iFp^<&+!>IN35&JBQ2$#`8*s^IzJ|gb?xSZ z!nKBveQ6r(ef_U#FI4un5j)Ag-i4i9 z4SYQpBOXNp`QAaFk>F$!EYpE9CkA4BwMWG~wx*fzlK<4f{BTAzPB`(|ZdtmzhKy%Y z2LQ^g{qM_N|AX9yzaw|X6LzCM;}mXj+#fb5AU(ok8p3^ zj(-2hn}X;9wpVqCO}>_I4!N->$+IBQB60abdw;3uiK?boc^tcjHs&}rnP%P(zGl5P zb5WvG#0AE`Tkk(2&-~M$mvYTe1k$u~A-#Pv%j}shb{cuVX<1)ya*nP-^~ut+fl%-4 zDmtVVv89hV+=p*vIyNuagE;|gu*K?CYs%6)eMSUp9m=#S={`1Ao%$rn$Wp=YKZ6w8 zr8#NhpKN0MMY8la^~Zmi=#;O@eecTd^;KHULTgV^JQ#E0s0MU3VYsS|o+YGvA`SgE zL@$_mZ1H;MP7!@yHpzxM)XiT7nE0~_Wu1}w89VVCNbkZGdssMnfInTo+l*7Cr}F~2 zQoGrDnKI=`JeFPbZ(F{P(MKtR9QR z)-xr&(fS4qZtmoQJiYjc3R!F``@XU27wUBWU`92Xd4D#Fr&wXJPUav3efwA5=HD4c?FM* zy4TLimL4oQApM9M$x`B<96M^B7C>{ei}X#$S9BxY?dEgtC~@i}-G8GCi<84T?~SGN z6b#*doS#tSuhhO0f-EcvYA4mCi5%-N@^u&GRnk)5DtO=N@r4;0$=Xo7qT~^6>)>GX z4YN{$nDve^-K(_^{tZK1Ofz(hJ2S@{Ts)QwGK~q?_TEV_c?By=PQkYu#yg-sfn~QY z{t{}{qC$nXEKz#5(bs^RJpAngNuokA=BItnQGdjWwCe)Mv^58^21^=KBAK{g5>q zY;;uWcVrlGVGQxQ%fExk0INTpap;-Os8J^6Rt!}hzTjpdF{*tV_m2uL6Bd1vV<6tgk(>$#p1G#op^LW})tqP~~C2Dmqjw74~qqHUYZ1R`=wuG3}8P*_?CUmKcX zAS;OH2EK_Fd!Ocf%~`5(=%#~}rImDw=H9X_eVW3}KPo@#)Poy3mAkyjVmKfPmC9A^_(MZduZ<5(LC596`Q3c z25T47b=;feGia`Ig!@H&;TgrZtnC*W*&a~#Y$bMsS$(4+_3MMh`wr4vomBG48<#}i zXo+&l&7JpR*eiMj=vp<=rP?~NY^E3DyA-|F^-HWX`} zaM!E*`A;Us1?=QL1~@ONKROE!Qe0TXx*zD>-zzO@S8b0)y^w*u#{N9k`R;X>X9VP& ztwk4>li)WVK{iQsc-VByM}*$H(}_=8S3R*bcHYNw2P;{^9=~C!{#5M$ccbiYzyDRK zaetL;4g3SEB1T?wo3PNDxu5U05D)dn@k?b01}MD)7TnemGxjq_!Z=4&0}gX9quW(j zJQN?(XZckcA1BjAyMg&>nHl)rgtlVe_!C|$?~QLX*oL5tJL~lRvJCsBL1li5(YDU{ zt9E%g0}D=-fdYP^TBR*t2g-Y1*7#|h-6suOW#q~^t4O7*9j8=~mr3Y{Xl-t1WIqhO zS&?8%QTCMlXF9A2w(CLjw(z#!(}#Yj5jaP=e{;Gs+;GGGsKVjvr z=9jv@yVuBeV>n)wH%*Wx@T_{=iq0sa-b3s_cQXR0Qeb>p4^Bpxihxj#v=WkPw$Ren zHX-^zyV85Y7dQLoD(uh*&z})oB1pJbVw^m^uHo_ld-QVJPqJ@5wP7{02q4{CZ?{*pJKxKt4R`Gx8Wu`TipmdR$<;?I%x zHuT-(>r53~%1Q+$V4+vvLwIQr&?DYv+t?8=Pj|39bl8j5rxP zwMvN?MGFkvypLa<#-E_0nQ$A#^h8ccuOe)qQQ7f7V`v`W&oK0I(jxtzg6KUTfa}jn z-!-L||G4xm1ZmS$E-w8c!*JeQ$h+^ z$$+|tf8M4$h|*6rN_BOikmL^2agl!h2?Nw~O>(tL!@PW^t7xW(uSHdN;#So#J2R1E zzdxXn?J1N_THpJLkoQmW$p2gY|5B14<+T4!eU*?9YzV^bK2-6%6G-i9tJ@3g(SW18WmZD^=t`6!(fzVcql1ZbGnwLx|lZ@xb zoatGpm(M~+r;TBb?RH|uOI4ioPw)fni-}9c6sW`#3WKI2VF!d8Z1XD8$p4Y(9=FLS zqAv#O&2~%dnK&gSnHAMBC=_W3&LF2^WU%HEw(5^8ZAe$ww1LB%b?^S=f%q7;qPMIy zu%Um9`Xrrdh&N`!=$63MQ;p?=DN8~rdMmhNz`!MKux1Kw3EJ2Ix| zd(UBJod2Nb5;{8JbviLghZeqi7Ukk_i&(f;`gsaLhJx9v!Pc$rLN|{U)OG@VCRDxp zgxz^bzo8bsQ3k32`MnBg?SnNWAX|O|_33r?*rL ztJ14HbYfB_EGboSrSQ7@`9z?(+@X6E1GwM+QhE>pM4(Xk5;p54S;}VNS8_piwuS`o z(`5Oy4?P`(dPHIotWS*R-pu2g^%Pu@GtDleA2J-6Zj5FSude;V?-|lfQ~^8SsT=<` z*Zs*pSz;q2IZJ!Gs$vcTV)mOc!fy-c0t;<^yhI|}q&_`SIUt0RI#~|xHY8$KJ?nqP zg6xWS4;d++Dx9$M9EW?*FIwB)@Zy z;`@6Q|5u*Bi=bAAe|_1o7v}uSyBMzMv%kEk@z>N({;JjdSI7Bp?*ja3BFe)%?Qf}d zN~Xg0B7MUghL|Iamg4(DHRSF-ST{1=N;{N6hcppkfU{t&Z2Km76~P$f5U>S+pJctb z3KrC(WKMP9e|P&^A%E|Xzt6(o#^G;k`L|#ApKz4Fflj5f=nKs-u - - - - -null_data_type Interface - - - - - -

      -null_data_type - - - Interface - - -

      - -

      A data-policy indicating that an associative container is a "set" -

      - -
        -
      1. -data_type.hpp - - -
      2. - -
      - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_hash_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_hash_fn.html deleted file mode 100644 index 083de7efb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_hash_fn.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -null_hash_fn Interface - - - - - -

      -null_hash_fn - - - Interface - - -

      - -

      A "null" hash function, indicating that the combining hash function is actually a ranged-hash function. -

      - -

      Null Policy Classes explains the concept ofa null policy. -

      - -
        -
      1. -hash_policy.hpp - - -
      2. - -
      - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_probe_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_probe_fn.html deleted file mode 100644 index 1088b6bfd..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/null_probe_fn.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -null_probe_fn Interface - - - - - -

      -null_probe_fn - - - Interface - - -

      - -

      A "null" probe function, indicating that the combining probe function is actually a ranged probe function. -

      - -

      Null Policy Classes explains the concept ofa null policy. -

      - -
        -
      1. -hash_policy.hpp - - -
      2. - -
      - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_by_key.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_by_key.html deleted file mode 100644 index 0b37f5399..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_by_key.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - -order_by_key Interface - - - - - -

      -order_by_key - - - Interface - - -

      - -

      Finds an order corresponding to an entry within the sequence. -

      - -
        -
      1. -order_statistics_key.hpp - - -
      2. - -
      3. -Template parameters. - - -
      4. - -
      5. -Public Types and Constants: - - -
          -
        1. -Key-type definitions. - - -
        2. - -
        3. -Container definitions. - - -
        4. - -
        - -
      6. - -
      7. -Public Methods: - - -
          -
        1. -Operators. - - -
        2. - -
        - -
      8. - -
      - - -

      -Template parameters. - - -

      - - - - - - - - - - - - - - -
      ParameterDescriptionDefault Value
      -
      Cntnr
      - - -
      -

      Container type.

      - - -
      -- - - -
      - -

      -Key-type definitions. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      order_statistics_key_type
      - - -
      -
      typename Cntnr::key_type
      - - -
      -

      Order-statistics key type.

      - - -
      -
      underlying_key_type
      - - -
      -
      typename order_statistics_key_type::key_type
      - - -
      -

      Underlying key type.

      - - -
      - -

      -Container definitions. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      cntnr
      - - -
      -
      Cntnr
      - - -
      -

      Container type.

      - - -
      -
      size_type
      - - -
      -
      typename cntnr::size_type
      - - -
      -

      Container's size type.

      - - -
      - -

      -Operators. - - -

      - - - - - - - - - - - - -
      MethodDescription
      -
      inline size_type
      -  operator()
      -  (const Cntnr &r_c,
      -    const underlying_key_type &r_key) const
      - - -
      -

      Returns the order of a key within a sequence. For exapmle, if r_key is the smallest key in r_c, this method will return 0; if r_key is a key between the smallest and next key in r_c, this method will return 1; if r_key is a key larger than the largest key in r_c, this method will return the size of r_c.

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key.html deleted file mode 100644 index 74179105d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - -order_statistics_key Interface - - - - - -

      -order_statistics_key - - - Interface - - -

      - -

      A "key" type using rank metadata for order statistics. -

      - -

      The class is composed of the logical key and the rank of the element (the number of elements in its subtree). -

      - -
        -
      1. -order_statistics_key.hpp - - -
      2. - -
      3. -Template parameters. - - -
      4. - -
      5. -Public Types and Constants: - - -
          -
        1. -Policy definitions. - - -
        2. - -
        3. -Key-type definitions. - - -
        4. - -
        5. -Misc. - - -
        6. - -
        - -
      6. - -
      7. -Public Methods: - - -
          -
        1. -Constructors, destructor, and related. - - -
        2. - -
        3. -Conversions. - - -
        4. - -
        - -
      8. - -
      - - -

      -Template parameters. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      ParameterDescriptionDefault Value
      -
      Key
      - - -
      -

      Key type.

      - - -
      -- - - -
      -
      Allocator
      - - -
      -

      Allocator type.

      - - -

      The allocator is only used for definitions, e.g., size_type, pointer, and reference.

      - - -
      -
      std::allocator<char>
      - - -
      - -

      -Policy definitions. - - -

      - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      allocator
      - - -
      -
      Allocator
      - - -
      -

      Allocator type.

      - - -
      - -

      -Key-type definitions. - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      key_type
      - - -
      -
      Key
      - - -
      -

      Key type.

      - - -
      -
      const_key_reference
      - - -
      -
      typename Allocator::template rebind<
      -  Key >::other::const_reference
      - - -
      -

      Const key reference type.

      - - -
      -
      key_reference
      - - -
      -
      typename Allocator::template rebind<
      -  Key >::other::reference
      - - -
      -

      Key reference type.

      - - -
      - -

      -Misc. - - -

      - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      size_type
      - - -
      -
      typename allocator::size_type
      - - -
      -

      Size type.

      - - -
      - -

      -Constructors, destructor, and related. - - -

      - - - - - - - - - - - - -
      MethodDescription
      -
      inline explicit
      -  order_statistics_key
      -  (const_key_reference r_key = Key())
      - - -
      -

      Constructor which takes a logical key.

      - - -
      - -

      -Conversions. - - -

      - - - - - - - - - - - - - - - - - - - -
      MethodDescription
      -
      inline
      -  operator key_reference
      -  ()
      - - -
      -

      Conversion to logical key.

      - - -
      -
         inline
      -  operator key_type
      -  () const
      - - -
      -

      Conversion to logical key.

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key_cmp.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key_cmp.html deleted file mode 100644 index d85f4fa99..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_key_cmp.html +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - -order_statistics_key_cmp Interface - - - - - -

      -order_statistics_key_cmp - - - Interface - - -

      - -

      A comparison functor. Transforms any comparison functor operating on logical keys to a comparison functor operating on order statistics keys. -

      - -
        -
      1. -order_statistics_key.hpp - - -
      2. - -
      3. -Template parameters. - - -
      4. - -
      5. -Base classes. - - -
      6. - -
      7. -Public Types and Constants: - - -
          -
        1. -Policy definitions. - - -
        2. - -
        3. -Key-type definitions. - - -
        4. - -
        - -
      8. - -
      9. -Public Methods: - - -
          -
        1. -Constructors, destructor, and related. - - -
        2. - -
        3. -Operators. - - -
        4. - -
        5. -Policy access methods. - - -
        6. - -
        - -
      10. - -
      - - -

      -Template parameters. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      ParameterDescriptionDefault Value
      -
      Cmp_Fn
      - - -
      -

      Comparison functor.

      - - -
      -
      std::less<Key>
      - - -
      -
      Allocator
      - - -
      -

      Allocator type.

      - - -

      The allocator is only used for definitions, e.g., size_type, pointer, and reference.

      - - -
      -
      std::allocator<char>
      - - -
      - -

      -Base classes. - - -

      - - - - - - - - - - - - -
      ClassDerivation Type
      -
      std::binary_function<
      -  order_statistics_key<
      -    typename Cmp_Fn::first_argument_type, Allocator>,
      -  order_statistics_key<
      -    typename Cmp_Fn::second_argument_type, Allocator>,
      -  bool>
      - - -
      -

      public

      - - -
      - -

      -Policy definitions. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      allocator
      - - -
      -
      Allocator
      - - -
      -

      Allocator type.

      - - -
      -
      cmp_fn
      - - -
      -
      Cmp_Fn
      - - -
      -

      Comparison functor type.

      - - -
      - -

      -Key-type definitions. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      key_type
      - - -
      -
      order_statistics_key<
      -    typename Cmp_Fn::first_argument_type, Allocator>
      - - -
      -

      Key type.

      - - -
      -
      const_key_reference
      - - -
      -
      typename allocator::template rebind<
      -    key_type>::other::const_reference
      - - -
      -

      Const key reference type.

      - - -
      - -

      -Constructors, destructor, and related. - - -

      - - - - - - - - - - - - - - - - - - - -
      MethodDescription
      -
      inline
      -  order_statistics_key_cmp
      -  ()
      - - -
      -

      Default constructor.

      - - -
      -
      inline
      -  order_statistics_key_cmp
      -  (const Cmp_Fn &r_cmp_fn)
      - - -
      -

      Constructor taking a comparison functor.

      - - -
      - -

      -Operators. - - -

      - - - - - - - - - - - - -
      MethodDescription
      -
      inline bool
      -  operator()
      -  (const_key_reference r_lhs_key,
      -    const_key_reference r_rhs_key) const
      - - -
      -

      Compares two keys.

      - - -
      - -

      -Policy access methods. - - -

      - - - - - - - - - - - - - - - - - - - -
      MethodDescription
      -
      inline cmp_fn &
      -  get_cmp_fn
      -  ()
      - - -
      -

      Access to the comparison functor object used.

      - - -
      -
      inline const cmp_fn &
      -  get_cmp_fn
      -  () const
      - - -
      -

      Const access to the comparison functor object used.

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_node_updator.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_node_updator.html deleted file mode 100644 index a9acbb408..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/order_statistics_node_updator.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - -order_statistics_node_updator Interface - - - - - -

      -order_statistics_node_updator - - - Interface - - -

      - -

      Functor updating ranks of entries. -

      - -
        -
      1. -order_statistics_key.hpp - - -
      2. - -
      3. -Template parameters. - - -
      4. - -
      5. -Public Types and Constants: - - -
          -
        1. -Policy definitions. - - -
        2. - -
        3. -Key-type definitions. - - -
        4. - -
        - -
      6. - -
      7. -Public Methods: - - -
          -
        1. -Constructors, destructor, and related. - - -
        2. - -
        - -
      8. - -
      - - -

      -Template parameters. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      ParameterDescriptionDefault Value
      -
      Key
      - - -
      -

      Key type.

      - - -
      -- - - -
      -
      Allocator
      - - -
      -

      Allocator type.

      - - -

      The allocator is only used for definitions, e.g., size_type, pointer, and reference.

      - - -
      -
      std::allocator<char>
      - - -
      - -

      -Policy definitions. - - -

      - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      allocator
      - - -
      -
      Allocator
      - - -
      -

      Allocator type.

      - - -
      - -

      -Key-type definitions. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      key_type
      - - -
      -
      order_statistics_key<
      -    Key,
      -    Allocator>
      - - -
      -

      Key-type on which this functor operates.

      - - -
      -
      const_key_pointer
      - - -
      -
      typename Allocator::template rebind<
      -    key_type>::other::const_pointer
      - - -
      -

      Key pointer-type on which this functor operates.

      - - -
      - -

      -Constructors, destructor, and related. - - -

      - - - - - - - - - - - - - - - - - - - -
      MethodDescription
      -
      inline void
      -  swap
      -  (order_statistics_node_updator &r_other)
      - - -
      -

      Swaps content.

      - - -
      -
      inline void
      -  operator()
      -  (const_key_pointer p_key,
      -    const_key_pointer p_l_child_key,
      -    const_key_pointer p_r_child_key)
      - - -
      -

      Updates the rank of a key given its child keys.

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ov_tree_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ov_tree_ds_tag.html deleted file mode 100644 index 38878b6e0..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/ov_tree_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -ov_tree_ds_tag Interface - - - - - -

      -ov_tree_ds_tag - - - Interface - - -

      - -

      Ordered-vector tree data-structure tag. -

      - -
        -
      1. -ds_trait.hpp - - -
      2. - -
      3. -Base classes. - - -
      4. - -
      - - -

      -Base classes. - - -

      - - - - - - - - - - - - -
      ClassDerivation Type
      -
      basic_tree_ds_tag
      - - -
      -

      public

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/overview.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/overview.html deleted file mode 100644 index 0caa3708f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/overview.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - Overview - - - - - - -

      Overview

      - -

      - The Introduction Section described some challenges -in designing associative containers. This section describes the pb_assoc's solution. -

      - - -

      -Figure -Class hierarchy -shows a class diagram of pb_assoc's associative containers. -Associative container classes subclass other associative container classes such that -base classes capture common types and methods -[stroustrup97cpp]. The type hash_fn is defined in basic_hash_assoc_cntnr, for example, since all hash-based containers employ a hash function; -cc_hash_assoc_cntnr -and -gp_hash_assoc_cntnr, -subclasses encapsulating a collision-chaining and (general) probing hash table, respectively, each define other types specific for their underlying data-structure. -This is described further in -Data-Structure Genericity. -

      - -
      - -no image -
      - -
      -Class hierarchy. -
      - -

      - It is sometimes useful to know the underlying data-structure. -Associative containers internally define ds_category as a class describing this. Two classes might be different instantiations -of -tree_assoc_cntnr, but one might be based on a red-black tree while another might be based on a splay tree. (This might affect the way tree objects should be manipulated.) typename Cntnr::ds_category -yields a "tag" class for the underlying data-structure of some type -Cntnr. -This is described further in -Data-Structure Genericity. -

      - -

      - When manipulating generic containers, it is useful to know which types, methods, and guarantees they support. For example, tree-based containers can support split and join operations, while containers based on most other underlying data-structures cannot. -These questions can be answered in compile time through a traits mechanism. -ds_traits<Cntnr>::split_join, for example, answers the above question. -This is described further in -Data-Structure Genericity; -ds_traits_example.cpp- -shows an example. -

      - -

      - pb_assoc does not contain separate containers for different mapping semantics, -as the STL does (e.g., std::map and std::multimap). Rather, containers are parameterized by a Data parameter, and this parameter is a policy for the mapping semantics. -

      -
        -
      1. - Instantiating a container's Data parameter by all but two distingished types, will make a "map". Thus -
        -cc_hash_assoc_cntnr<
        -	int,
        -	char>
        -
        is a type mapping each int value to a char - value. - basic_map_example.cpp - shows an example. -
      2. -
      3. - Instantiating a container's Data parameter by null_data_type will make a "set". Thus -
        -cc_hash_assoc_cntnr<
        -	int,
        -	null_data_type>
        -
        -is a type storing unique int values. -basic_set_example.cpp shows an example. -
      4. -
      5. - Instantiating a container's Data parameter by compound_data_type<Cntnr>, where Cntnr is a different associative container, will make a "(multi)+map". Thus -
        -cc_hash_assoc_cntnr<
        -	int,
        -	compound_data_type<
        -		cc_hash_assoc_cntnr<
        -			char,
        -			null_data_type> > >
        -
        - is a type -mapping each int value to a "set" of char -values. -basic_multimap_example.cpp shows an example. -This composition is recursive, however, and more complex relationships can be built. -mapping_level_example.cpp shows an example. -
      6. -
      - -

      - The associative-container classes derive each from one of the three -basic_assoc_cntnr classes, depending -on the data policy. These three base classes define different types and methods. For example, the "map" specialization of -basic_assoc_cntnr -defines operator[], wherase the "set" specialization does not. -This is described further in -Mapping-Semantic Genericity. -

      - -

      - pb_assoc's design contains the concept of a mapping level. "Map" and "set" types have a single mapping level; A container -mapping integers to "maps" mapping characters to floats has two mapping levels, since it can be viewed as a type mapping each integer to a "map", or as a type mapping each pair of integer and character to a float. pb_assoc contains traits and rebind mechanisms for querying and altering the mapping levels. -This is described further in -Mapping-Semantic Genericity. -

      - -

      - The leaf classes in Figure -Class hierarchy -are each parameterized by policies, easing configuring containers for different settings. -Hash-Based Containers describes the design and policies of hash-based containers, - Tree-Based Containers describes the design and policies of tree-based containers, and - List-Based Containers describes the design and policies of list-based containers with update policies. - -

      - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/pb_assoc_ex.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/pb_assoc_ex.html deleted file mode 100644 index 8895bc263..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/pb_assoc_ex.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -pb_assoc_ex Interface - - - - - -

      -pb_assoc_ex - - - Interface - - -

      - -

      Base class for pb_assoc's exceptions. -

      - -
        -
      1. -pb_assoc_ex.hpp - - -
      2. - -
      3. -Base classes. - - -
      4. - -
      - - -

      -Base classes. - - -

      - - - - - - - - - - - - -
      ClassDerivation Type
      -
      std::logic_error
      - - -
      -

      public

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/portability.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/portability.html deleted file mode 100644 index ab7e9c85e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/portability.html +++ /dev/null @@ -1,26 +0,0 @@ - - - -Portability - - - - -

      Portability

      - -

      Sucessfully Tested Compilers

      -
        -
      1. g++ 3.3.1
      2. -
      3. g++ 3.4.4
      4. -
      5. g++ 4
      6. -
      7. icc 8.1
      8. -
      9. Visual C++ .Net 7.1
      10. -
      - -

      Unsucessfully Tested Compilers

      -
        -
      1. g++ 2.9.6
      2. -
      3. Visual C++ 6
      4. -
      - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/quadratic_probe_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/quadratic_probe_fn.html deleted file mode 100644 index 1e3dea17c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/quadratic_probe_fn.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - -quadratic_probe_fn Interface - - - - - -

      -quadratic_probe_fn - - - Interface - - -

      - -

      A probe sequence policy using square increments. -

      - -
        -
      1. -hash_policy.hpp - - -
      2. - -
      3. -Template parameters. - - -
      4. - -
      5. -Public Types and Constants: - - -
          -
        1. -General definitions. - - -
        2. - -
        - -
      6. - -
      7. -Public Methods: - - -
          -
        1. -Constructors, destructor, and related. - - -
        2. - -
        - -
      8. - -
      9. -Protected Methods: - - -
          -
        1. -Offset methods. - - -
        2. - -
        - -
      10. - -
      - - -

      -Template parameters. - - -

      - - - - - - - - - - - - - - - - - - - - - - - -
      ParameterDescriptionDefault Value
      -
      Const_Key_Ref
      - - -
      -

      Const key reference type.

      - - -
      -- - - -
      -
      Size_Type
      - - -
      -

      Size type.

      - - -
      -size_t - - -
      - -

      -General definitions. - - -

      - - - - - - - - - - - - - - -
      TypeDefinitionDescription
      -
      size_type
      - - -
      -
      Size_Type
      - - -
      -

      Size type.

      - - -
      - -

      -Constructors, destructor, and related. - - -

      - - - - - - - - - - - - -
      MethodDescription
      -
      void
      -  swap
      -  (quadratic_probe_fn &r_other)
      - - -
      -

      Swaps content.

      - - -
      - -

      -Offset methods. - - -

      - - - - - - - - - - - - -
      MethodDescription
      -
      inline size_type
      -  operator()
      -  (Const_Key_Ref r_key,
      -    size_type i) const
      - - -
      -

      Returns the i-th offset from the hash value.

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/range_invalidation_guarantee.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/range_invalidation_guarantee.html deleted file mode 100644 index f91e45227..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/range_invalidation_guarantee.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -range_invalidation_guarantee Interface - - - - - -

      -range_invalidation_guarantee - - - Interface - - -

      - -

      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. -

      - -
        -
      1. -ds_trait.hpp - - -
      2. - -
      3. -Base classes. - - -
      4. - -
      - - -

      -Base classes. - - -

      - - - - - - - - - - - - -
      ClassDerivation Type
      -
      find_invalidation_guarantee
      - - -
      -

      public

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rank_node_invariants.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rank_node_invariants.jpg deleted file mode 100644 index ea01b0a0794cd8a7a8cdc74eb86fa08348aa9c6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28798 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 KSwN}3`{|!t8ffYO diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rationale_null_node_updator.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rationale_null_node_updator.jpg deleted file mode 100644 index c798ec1451b5607829105c1ada295607750ddae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27057 zcmeHv1z1(W6rcn72i(j6LI5H> zJOVr%A_4*e5)vXZDmEG_3JNOTZ7g(bB772JB78zZQgQ}L())B|goIQa)O3tYtgNgg zlw5qA%)AUNtju5j2ow?$5-JKRE*csx^F6|Q%>VMwO%s5L2yF$!00VU&fX0M^!GyYL z14sY>3J!9$UoQB^A1G)TSU7kDL?mPs$Op5e4y+tH@T+)mqKeR{AqG#iSgnZ{NE*|~^3Q8(!8df%T4o)s^Az=|w zF>wh=g=dON$||aA`UZwZ#?MVmZSCwG9G#q9d|&$c2LuKMN5{O1je8ycCLui|Gb=kM zH}75PhqCgD%Bt#`me#iRj?S*`p5c+vvGIw?sp-Wf(DKUX)wT7F{e#1!;v7nDw(||6~^?#4c!9SQuD@FLpseJ3}dRx+r zM8+b&hofgRgnWmbb@9Re7t_94_TMwi=ijpIXTyH6YZ^d>fr8vT7)*d4II=`?l4`vO zcv)84+joE1^-bZ}a-8@*GpAV5HJc|^6xaTPfI@Y;p)pvcFI>jwDt z+zs%Opk?6*s^kV}d|ZP}1(W&@??im_S=zMpzrX#1NB_Y`e|znx`1w0pE|30RB|qn# zzgNkBTu!Y6f!Kqx&s zT!0;3v>V_)d&mu-6?B!KR^-{Va6tCF@pvt@rv@3IN)P^j{-Es!^LutB=6FsDdLF4y z6e!1BdE5X|98Yh6_dYkkT4mZT(6>gfUj2hd(x8K>{^WzYXcM2M7ET0@t`k58>~X>< zL+aSDTkv>AGBa~HMe9R3h@9rs;!c%LBZCTaf}JA7f?BDsL;xufY+0y3>(G+fzXS`< z@qk-UZh-XpdcC?-(CJlBjpOypyElMHJ>W% z2?t=yiTsI&>h$MqyJQOWT+r=)$#zRj&cg=|h`};Cs{S&%G1Ff6N7;CM9qjsOSmSPh z=O)AgZuy3Mc>CRy2#B|2atX)m_L5)jeAt9L4vDm_IYq-yJ<+=i3Gc)^rYK&!&>1c} z^3G(@U^--Az}3xub-l{3)%qT|1>_$=!8$0FJk|}L#tsBgm3YDA&khog{NXP5=+*(g19L9%91nFMn zpI3!?utE(!vl+k!@C?P9*XzCd+&uTy1*-Q_!!2LjK2W9G5u4V5mv0kYzRF2y!yJ%> z+STA?lCWmAY6&ARWfX?2MHv8UQ-H*!)z!qBMF?$_xyP3-h*U3Q7CEI#+s^|!qG|rF z_^JqZ;rxTTNL$}&M)$k?LFA`J8(zq(JN!dnQWfUChpbb>GAE((!U_ksrOqb=HLgh4r)B!+>4pYiDLJNlsF$m5d7bGM?uU6#hD2& zg$KMRL0sz!ZW?FrE|4ry&#b4VZQRI9J2(ie=5X8%xNwgKifAlf-T+9iTd8VJ8hqSc zbgMD@7fsQ%T&s6n?TEU8!~BQ73H^U?#jBQBq=$D}p1eWP;n+pmP_?;B2s65j z!3KtQ<6(Ua(+l2{wIq}f#Dt~U2o2KtlyeRAUE(sRAvuj3;EGZUhma$X z^~m#lm3$-I^Alz2aKxG9V(mGrE6TRS02IhC{iVC1)m`FRM-qJj{L|C%3-i!QM>-{{ zPEI^Ji6%vu=(b3JFk0XpH(XeI9mn0up1ZP*G5yJc1940*LrG4a0oKjto%QSk5;ZA1 zd_rmoTt)g^KJ$d4*5LoPT>_`oP4>(i!JC(TxUK7=aFA)L&AEAJ z+0)+UQ4Vx1!RCxPd&|4CFa{gN{? zdCfN5(Vl*yqUx2^q`2m+I`1{=kFs57+NiC$Z^vtpMDr4+hbHN)@+5(9H$-!>mrq{bqsl z>^yH{<4f!)d7i2y*)97pil?D*)6za2HM+|`l@R}|L6I(+szoCW%z8u?);o$di}AGZ zPuu!&mTv%(#%1Y|#x2su3;NCRf2{5X5v;$hLTthRP@?=v#S)IXY(wSn(Mp4 zmNcykO=#+%EJBEz$G&u1fXv?0IMpJ{H{{jAyzl7)L02lq#J!tZ$)9A9)X!*J91?_i z)C`FYKc;yWyt)P*ZSi>( z9}z%3y|nCmU;cA4*neP+i?f_sh92Zu>V`=ig|b~WW;oeI?3UTevH9K|saU-@$xTC{ zbD@krJBkc`#BN+Ad)7lX%9p(QsJmx%U4Zz*UPi0-UdR>ih`E9EYh{#^d@s>kr_If$ zDCM5WQ^XJaT@hD5R7RT=8AS7N+CU|d;T*E`lYw|5^thv;R(V}P*CbMdYQvq1Z z_R01+m_UfKZ6##0H3vgheu$W*@^G^X5k+_9B0Oa_KJ z`%-wVZJ-S5EwN=m(&gJUVHNqd2#NZhx2{F062xB$(9Ba2>328rLCJf_yCYH>RX1X+ zCnU8J;U2KJkMnZ-ps$P^eHoiym7h{!z*7#j7LkTfc z#Pqk7XnU`)Ky&O1N@J{iN+;tTB9XK0tCE2)ORkslP?dMx&QPs1y%ue?UR&B*IwK}b zJLLo(IVCZtw#mYl{lSgRe_BSvNiH%qmKZjy31^~PE>POXieOgO3Cui!i#IsIAAmS8 z0~BaUm_?gGWYp&qiu?YboRk;oYMhdKUGw^*WUNH-jrn=QJ!+Z4y)X~}WsyBcQE>a2 zZYCMSgBl?RFj%+e1^^{Khbas18K-)}H1jx$(C`l9-S8wO&CZucCfOVqQ-!e$W{FtK z65G*Lb4M>COlQ))7~eKD46TMwsKi>(uUHe}`=rUlC&9*wA-8>k$CZD|m;>yLDzgvH zt4o>N-tL8cCogOr+2ceyE)!5>6gszdYExFpZR@A1v6AIos%PVx1f6+mpg-@$zV0X;kVWko|({t2ZwpR&Xsyx zSU}NFZ($Io%5uG1U*tiWGag6Tyi2-jzk|=lztw(vmnfWNLt1<2s5#4I9Y)-!O8>Kl z24kx<^<}?DeSi)?2&KFRjkr~)_p+6!j2g2;P9Mr?z1?uuNk%k5-x@7pO7o<;ISAS6*0zYPIoe8D z#RL=Gd&w+vF+9{9A2fqAm(S1p<|71V4m3w9{4P&$7yvM zJV96|_?GiNFrwP47Oqm8WfmVNxf9^_(( zjt9ymJ=B8Wut;d*$(QxElGPzZ76ln*@dOJi1QQE3pFEw8({A|$uigNQTzk2Tb%Hq= zH^2ZFCE_X=+WDFag2fjRG{%U%Zx~J5Bj!}25*t^Bvfiw;K4FC__H?(*p6qqBY1a$2 z^^R^!f|KQ*I<;g3(X_f$+|(>&T0v#JnBQ zC|h1e!e^Fv`o)1L%N>^9M)T!c+;H9feLolaI8sU@`eR4cTZRsy;!vtsyP}``#kB2p za9zEXpQoYrVaZ2djHTC!gveL4Ia(D9oL%;AgpJAMAVdm`6wFCUTpHv#n{kzm>S>nD z((J&wY(bpjYJfS4;rxz&FLKUgp>~2bKfYvqqldlPyB;i8?|#aFa2lZo3Ed)3FjgvZ zI6)h}3;)$&wAKGFefED?b&3O8C^O19v4l~X%xl$Lpe7rWQ%M~ybVYN!ycFpGu8AspdK}7-tvq@k^G_lnz?(;0mNrO^DAe zb2PhgDWT+`=Ez^}Ve8m%^+Qbsllx-_Grbf+&KN{)DTlN{Aqvuh)x(8^*I}+2lAJ8A zxyzKr^aDN5VN&)Of*ALoRu*a3jcECW54i0R4MvjNb%DHwd@BJ)9Y#ikv@vO(rvXnY zo|7^(e~vab<}z}$*^*i6+-riAEx(d3pgOK3htfx{*obCog)hu|G?5}Bhp5gqn_)>} zRT^R4n-$I+6~+cbc-E%3L@1+Je0VpFJ4E+8-{8UGMCyDB>pcy#n_%D9obEN}M({Ua zs!0jW)QRXRdB|E_mRrb%#?e<*UFxlqz)o7fjLc2!)x~A_C^H=9OAgL8XZY0k!GC95 zkPeH~&UzL<;U9|SZwu#t>-T?1rpKHARC%t!RDH`MsJ;PUJiEfuZ-9w(PntCd&>+*SQueC4R;=5}NmwFW>rAH1&ad zu0b1jVWO#EW{*`#lpD;E$EI`v_P5N0*r7*(#2-P$R@J@6y?0q z>;Oe+TImSM5_LO=*zSj{1E<-M2mSNQU_b`~>6iUl2>kRO)Ij5vLc-fu)|uK;m(A1D zixKlDVw9<(T;Tg+f^v|w>1a-0-)2U~{8oYtQag$w-Y+>y3@W>9eY+q&%uVge6TrpN z!hd3FsM=2;})0J?BDz>uW?QRg>1B+kIu zH@oK_w`YId{}pMs^`DF|om`9dkC2gVV-+}G^#RZ7_tDDzv#iaTqj1X8s#9cbD{W)L zpuOXaXwG1ga&fteQP1@0YI3$wisxmJ{GVN_mkImmUw?XXo0GGjMbpB&fIqZOGjDcs zeyZK_WMo;2F1Wn{ot}uSUmLiiu_z?ocZdP3Jc4^`89YxJJC$jT+SE1o)L0{C$6A0y zc<6U(0YxrJ z$xz)ZcLszO%{vzkL+ifpb8CC6wRZ4I{q31g&#)_ze7^*Po+>PgRkjGZv5Ceq=3s;= zF!M((wEq$gS|$IqrFii~e7nYJQ@>3Be_ZbI-`PPyk+3Mr!W6u{>n@4IooiqqITkr_CQ< zoD4>4&n*tGlc0Dt2=CAS5eueN@z7&uv4@!R1)(E+Lu_%1r}5mvUZPW~=lsF>#ks#1 z-|Cam#nDfW!qL=vo(xV8aGkV)ZQUbMA7(^SAHn?cfz2CWpQ?A3 z=RC9H>Sb-G%lES-G(l|@o%w^Bnpi!b2Xs4getOrhqjq6>^PBa@Od9dgt<} zA|43)Gcl(Tbq2cwr;g!AP=kL&a{JFoYPMk1>(zkUTL-7Fv1UIw@~r6bKbU^x^|kBp zZM037(3zFccjWu%0V{V%mSgecJ9d`1S2*tczWNM<6u@~q{K*whwM9^gll znc{!mh~1jx9O07Y62Z%O4F|YhZ)Yl>+`VI)``qIG^Gt;~6%4UuGmaKzn*}Exk(w&K zk#0j2$f<}$8ZFw*~twh}@#SNfn2J>-21oj4y%wJ4IvMWYjXUDn$iYh(?Q}Zt% z!gy4tp{acXvi)HE)TT_m z9z?>6ITRH-n-KhAvk-JO!MXNpPujpI2uz^HK2?InJjYLYXZm{IL{0khTaJr-6=I_c zD#{C4I1(hyUiVMicQzJ7WFEYtrzPHfZ*gs_&KCRY7hI_Je@!#_$3ehfNb{(^EIx}e z+s-3q-4-BsG%jO7k0pQfk@4lpbaJVf;FCD2RlmgqwrFbX{EX0im}XewbT1MS$ig%l zvm<6b>(9y#k1M8NxJMjSOUQjeiy?Lz*o1IJkwDI?Ju8*n#hrD94$uGT343ZTxh#U9 zHgC3_%yfBxc+oO{#2d@hYxHyF51uWSiChmT95vW-T6+n&ORkb$t2P z38zma{2IvL$QiWs2wE{uf^cV9I?0Fx_-39#Qu61#J7IVGOf2t9=T=%U4z(WZm&beB z>0Iw?!YRFfUom2SXL_73%17cs2n*Bl2d0(y6bash58tgO2(K5e#LGXA4&d9LJ*(q; z8?P&`u%(RHSuwiCY?hYYO=v5;FB!aF6KkLw*>nu+h~s-=t}FnO3Ekka~Mcmf7ddx>GDFe z<+6$x@ejOgeO>U20oN=Mk&V0jWS0SjW|J!FCKVy(X2f01-|ifYKMG|Qg!=g(^HxoHgnC+ z9C0bK2Wj?N22o_NpIKo7Y}z5^oWh|)LEn-wQ-|bQu+`2jv~}>>4Unysb9RCLde^il z)wITE0db$Z`NWQE5sQoTmM=N##Wt~z7w=ph9WU)t@7r{?zS#PYo~FUHWc~1W1abvc zk)sRCd?c$UpB4ADyE&CL)a{-47R^c-a|S#5@YLRKHd2<|Xn*Q}Ay+j!=WNmoRyxBor6RcWZ7YKq%?B z|I@9@*6H~1I<~A09p95$m2A!}RY9^twk$3Ey}PR5(K8dce0IZ;oaourqG8A4#emL5 zt>o_p{Z~lLIcy-nVDAP9dzdr)xwc&DlcmozvC1-%)k~bnJenDC@&F#>*z;h7b5m*E-J5j!mkaaSOB;_Y>kG|oA;_*H`*6YguD4Nx%Z#j0 z^nV0g_n!dMDZ#Kfz4>SzU2{K)$Jf`zvxa~DbsqSU@5*KCZ=IOwc^8cHjKne8h85kT+t{bN z2AvBp4m$Fnu=99#JcV<=_s?EtJKXJ{HMzRGuOPBtn1DsNRY*nBw!f(AUMVVYwK?_b zItojDsJVKi7+Z#~Oz43x>iH1*E{2WrSxrRZE?~#{Olg8~UR})AoTe8w7?0?d5RClq z4?tC3vyVKVU^c~flcp~S)!ONUe=4J@PcjcaxB>3U9lCGVP(jn0#aq&6R9D0r`ir23 z2i)_{Gy4l7=&y|)`G#@UdKQvt{Mh7dQL$-Cl^fs~^_Oh!Yazk;0g zW*|KjDpd)l-sl5IP*NuzZ8~*p6(>i|Wd`_-ODbsXk#>Dk^OEJ6w3~h|#p@H-#Ap2a zf!#JGVsxf9vj^=&-sGe_Eu;@b9bFt^O#aFN{6ZsQ;r8hwP+q3P@N$qb<4Pvf`PyI}6n zrr-B}n|me*YOIzLeO?4NTwdUI4T`hf zwpNcVH-h-E{ll()6b9u_a$SuT48dNK5_ME;fwBdPD; z{@@AkAl!5NTAq+gGnM$7IrYR4=T|<_xulE;qZSGgLR;1uT2df1A-O%@PEVV-&>;HE~KP_2PO{sE;fk54$O*ZAPm1=9r!+ycy&cjmh&6wNmCn7ZO2jh)?{DEjPJ`FJD+UsD3-rFFN)eGi4h!0!i8+tErG_$EK-pcBT zA;!y07bX67Xmpu5DpK$$4Y~5Sz4a@N{DhzgAV0#!Y0pVC1aVesZwitq@!cjK6?a6^ zP#;9nNYm|aeI*!J+yv&a@!0wTy6_snB@8cI1=SguE#AyJTa14OO{Wr==n6*rU*$gC6*@^Ke7eHK2GItFKl4fRHU zvG1;QciHgveH)u$L~n;j1)b6E-Fd}jVJr%wQrC}$*VS`VaNNLpMMDCFH^2$bc+}+_ z^m;T?ugR%AOAENClOFTJ&~u6{C)?C&!-^+e0=tC&HSg_E-iKZe?=LU}@nA6oNynyF zk0HXiR~kY~xDC&IF}1y~9G0&^yLdc@*K?qH!0z8Atp5{={y)h`gS0^q0fX~me9^!| zXV!@)3-gB$j7Z)Bu27I^Eg0>3{N*@(TO5bN4CfIF8P3(<+ly}|y*?+yw3jF$T%)WU zn5^>DI|Ybj2W*LpwAGe%MCo%HOeV{vep&i+Cuj>rrYCuxcVaW=O|d-Rm3x1-O!x83 zQrzo%S)=S{mxu%z5U8uRW2f%Eglg0ngfIN5zWmn_6x8BiEmUp%Gv=jXas=6mk0<5} zPLMqf(ZJoxRr%f?dPi8^n$4NEtj)u+=6IOv&%T^919rUb$l+sKv4^ScM8t=Sm2Ix* zgwIQshBwR)(iVjqI|8OAC^u^%Y`mdYifDILK1>{`^QpDSFpqECyH5<_6FfyAjgU3H z27VRW=-Z2(t(?C#WKo1$cA)xrxMb%Nes_Y+^;u(x%@Aph{YGouzw z+Ljt=2q$^7uwW@z=ClP^D0&W~^c|kWEzjoEy1gaM6s?0L*Eow+w*s-{TCqXoH3$&v zxML?lM-W73v07nx1TAWCH53VE8~lO6D62Is;;CzG%LL=h~)H|7oNA)50pA?r#_ zDaJWh8vJe?;Y~v@68IIA*sp>~<9&uszk0o9O8*|}``1mDiaa*Kd!F+iVy8TV zQ13k34i!SgLOz#OMj4H2*nvi z?MzYdOUbYCF9Imoz()JNvHv!&`eNeTox_(^PsroD!#ZhN*Q~GJk$f<%LBMx2mK(X7 zl_62#B$jE>d8;9~4fA?S2L_BKefwb?*tu*9;aQ{ir_L)R|B++ZU|=7TYEsB*_d0{h z(F3N}nK<9{z1MH)d34~r)?`5319He{~p}(RX8) z>#`97%k|}@ux{?fj29u#!hRpl6!*dbX1uPmBS&Q)F7x6=>Gd0pPAtgW zCywKlUl_UW>Ff@K*r_NWL!L3=S+F5L)rnIcO_vZmMQu*tJ`_<;=J`Ht`C<=&j)vCq zmYN`rPg!*DgUoF^13ebjj|Eu^;WGVgw*U|!louKSEhp!+s=y(@neXplvz4F6nGv`wCDGR7+O|dy8PiDSNpDgU;rbtei0JY@P zmWANE#COM|wzupNRKO0f@RXn537dQ>-Up3Wi2D2RwbQ=~pwsr!9bGmepVg{pa&K;p56=~JaM=t(q>!%| z8e0m$2ClE+BpDo`1&+A~s)q`8cIS8O7!1qJB=lck$1&Ub6YU@BUw=MMLn^z>+u3%U zo$5B>E>RAeWbE20;56imApS(?ZTkLu^KXkEcCUXYT>rvQ#Zd!aEJ&Bc9jy1XVstlk zQ>Fp-NZaMjAVlu&b&u*~OH8W0hPI*`83r87hTx7ttF zqM$|34lcXicJ>J4+Heo4?61e(f61+wY>BaZX&Ofz{yV3CqnccBGDtUt( zt_AJ!;s&Vku+*&`uhD+lK=+7Y4=1^8pyp)c`pzn4bPqhizC8K_E7a`o4bCAQE|ie+ z$X$gGh^4p|de-#iEurxSLh#)cZ!n4NXB zjTs?lGq%DuJ#h-raA6Awd&&0<|9oUIJ8c22f!?$Mb2N+A*pV_innN1&*>50w<%PS7 zi}Ene;p#S8277YR^AwuOAOgn=-saad9|LSGhz?ND(+3f1Ot=#^;tm^M=|-ajnJ&U)m+zaYE~StSEm`$=VhY^;?*!{_^LRwVWAcjfEP2jF@kp!U=Eb|al|;$-A2YU2 z`8}Jk({&}R#MDG_enLU5q}wq6{JclB zu*pNYVNsd6)OiDVb04OD+`v-|BvQbo90#ZV>vfy_eBJ*IJolgTgdboCJ!R9a7t4`&qzyn7ooa$p4rN8*2I{oJ*mVLeNe6Uex~gy%*QQEs3U^F?k#3l zg`+SwyL>p`k1S6+KUO6N^sxr)a$Q_F08mZXP$?-`BdhkQDhv5@Fv+J?1`0C<+Sb;S z-l_63Y(;SnKZ~q$q4!6EQ-XoEs=bsj){Z30D zY;dXdh2Uqp{6hnc$LD7wQ28ldD|Us2Wr_OHGp zjQJW!zpaJHv;Uruf=6rwJ~k&4?OwuS#2ag?Ry5WeNFbdMc>z{%fUFGCWcp(yRR@wuVcn+;bi`6>8B5HBuTCJv@%+*p*WHa0}#l*$e5AjSX)2{lj(oBDo@AsEL zz=YsRh-d)I>5FK2a^3_ut!@ZGPyowJ`tdzR@%GyCpgNt`D@a176*;y}jjWs?ho6yuT<;hD3gxkmo) z@uP~+m!7pJKK{@>eJaC)t{D}{a#qFfRdi6L9VCl+C&Ue*8*M6R;8ZxU$rIF!01_a~ zg5XWWnpXU!9?Zg^m(}*52^aGlU@(8wv|!piw*83XgIe1uW2hJ{6V17?+QGwDkX%dacm*9*+xel9}{EO3nGk(4uKl~-J zgkA2=#^%o8O6d?Q+LiR0WS$t?xt4Xa>=vlP)rHA9PlzoUhGbaMP(iW17#}gNq|h;Q0~X0n+@sFmlmW>f6!me`78zd^_3X3yWW2SXqUyXm z1**9K2XB3AOSty!1HaLSD~CC0HM`W(0uuC^pjtE%eRH=jAjXJyDLy7ZG~sY^$#?97-~{G^M1HGe`~&jly`J@Oj8pyPpCO*9c$^ zsphodb5~4^Zp+;ORR?~Sm&=FB1>mW7?=@+q>+0r)yJEHlU`OaM@kp%k z0GiMbx2*t}JaR7t8?&K0ytMB0b+iZ5-nm-*sWwpk{fs5P;2tkNma5ZtDFl1QCwA+( z8^dC@9(C=6I_F9^z|Lx%L>AtfkVVcAT#JR!%B#(xaK`7UsJA~ zrli!SQt= z&jJ!Qa^Y6YDluN~5FP}P0$k+Ysw8`H>Y7&xY_U7Js~N3G;vU(`E&A8Pos;_tQ|rpg zcda+@M@yt^@jl)eTiNKJ|YjuQ8H;cyAVZN1!zW%pjzc#mC4fjTd0MpP*v%#-Qmf4=LZCg`)>f6bPOsT8n zr!GWs$M0W|sv7Ajd#_Q}#}RL%(erU2^>QsD8xGJrb9^>7VV-p*ZATWAksgOySe)>nS@6TT~GFgpG)FmPyIF60Jq}aP@=FZ@@>x z#Hus1sZFR~3VaLBVcck{D0x=dckdXnZ+RixL!MQoaSjpl*ecGAh&R4Yl``|^bB})P ziNL>|WQT*(SH=-nI-}86+DwBT&5nl(X*(g!ol1hp$8lxzw+lVP()gBTRkktKh@hCc z2~v(C#l}GI%HM5g|1f3ZuWbH5P`v)(d1`;IVo^zCH_*I*jUdG2Rp53Z+{Xjoq49Ci`XFTlyObA}ZkdN`Ge)7~(r)u(Djr&U% z`{L;6K59DEm6XRjTQ1R_X-z}`OmO+nw*c>=A)bv#L}lfG;VlFcYQkd@=O%Q7y^Xko zM6~gem;&xa^ykTT>jw*yMI)Y9u2SzyPgYd?ke&LEFO=rmFz3{}Eg31eurq+R+vo^U zkd~&`gH*_UaTAYW_=2`DFiXuu(Sk9Ym=6@eq3@*_&^IQ|6XJ!glwMLMgS}RB9b4EQ zo@GKdD_n}GWY19R?+}YX8V;JSc>aegm;M#n=l>+V^ImPOPs^}+ex9(baBcE{?zKm3 z$cd&5grG4yfo}mJXpCc(I*S!V-;yQS$;O2!3%nqsskY(#FVqgIFA5A8gNwk?ye|q2 z9|&8bw{&klC}(+kT`6#RCG)_SheS!g`_b}fWer7a9<};5bN@1jHaDE-XPRqlsDT?m zPjj85e$XPdM@wC%HYziyGo7nf*qsR?EikS(HK}>Uom?w{-%S`*`I;3noM+&oX`P6) z`6{P?FH+_&x&hi!c1SQp4m$jFN3rdkkeX~E)A3r3X-1@iw)jl>`5SS98j!^&n zei%=*e^?U(!cGy*62AdV1|Y?<`)h??gcWn;FSk2;jLdA8-PA?gDeWG$)OGa=EsJVHT|dUgd%T3&g0q8&<~UB(P*f^!tIWx~=v})b zI&=Q^F<;=1Aqko8BR(|0KT5~&B1d*`R(MD}r{+CrMAx|G%c7OWJ%!7)G2sPY##3Nr{6fgpD@ zkjHa`FTJk|Qx{z7U>`ji8lK8*ZzCJR3n$kWfXuH!O+N|b*#^^>F1E`ih!kY~w)fAf zfCww`Q%I>FfyRGly1jn$L<-tMwIKvo?^|&|#8=tFKyIaeL;|Pn#?x`K%M66w;71dM zX4(&u%MzsDK&JbzoVWPblid6uyqj~9S+?Tenntri8GT`XR9~h-rp~*$B(J4M9kNCo zg01}|&_6I>q_itkh_6w{h!C|g3$dD!%TtSq;VCIJ!#ZLE7qqDdY~~0dxHAePVp2vi zcQGP_jX0y+VIW$N2|c)#k;gGY#GTK66dF-_K;C&-g#5i0et5v^ z-)rITwea^^_+!_?f7#oMKwzv!1jtlx;_VIase=SeQ#S$94m{#BYpGzrQ2LOg{qgnN YX&&{=*jNY7Ze)oL@zr@R{+p@)13bkt@Bjb+ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rb_tree_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rb_tree_ds_tag.html deleted file mode 100644 index 5c5941449..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/rb_tree_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -rb_tree_ds_tag Interface - - - - - -

      -rb_tree_ds_tag - - - Interface - - -

      - -

      Red-black tree data-structure tag. -

      - -
        -
      1. -ds_trait.hpp - - -
      2. - -
      3. -Base classes. - - -
      4. - -
      - - -

      -Base classes. - - -

      - - - - - - - - - - - - -
      ClassDerivation Type
      -
      basic_tree_ds_tag
      - - -
      -

      public

      - - -
      - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/reference_iterator.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/reference_iterator.jpg deleted file mode 100644 index a9cc63e5d2068bcc98c91dffdd5f7d1fdf2f312f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32467 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
        !7h3+hj9!+n( z&!(%c?A^*>K0yaHcUC1svdfS;5v+OM2YX|+Pqo~D<%`WC!nHIM0P z;c=)XbiBlSWBN3eA_D4{Df;Kg^}j3Q)rSYZX&?bDN#}9iC~Q*z^yDV(aDj%M+&q=$ zEJDPW-;39(-wmM;N(|{GlGAxTfwE?S(xZvyR`$t-XYu@~H8C1|2fJ2|up;A{>0-HL zPmGq|F4t}`nL9u8flcGky~g9us8{xekbo{Q5;H}uO=sW(8R;%`g*ug#2P? zrwo)3lG&>TuT@U+a#cj_j*l-6NqR#Yk_$G9!mJ&N?QHv91G<*>m>V&a$iDU>fXLnH#ZL6A(~T)6d%7N)i@k2=oHi_AH*|vghFhV8ICrhHNmt z)vF-^Yzek&D$F(TZ zBqOx3=q!jzdd05!P(=P6sqff=G<|W^ubP9;`pahoT?a#L)eeYOH+8`_Z~tvFaEXo< z+!qLjkP8EME=c&MpJ#|7*q4o`ZmtLr5jmt%L9phYs84!AZfx}K?uMsJJELL+-;TMF zj!6TL@)Gm^2^U}^p01C&p7kY`11@t|*y=*^%?0_mYT0$o;i-YxbP5>U6cO!x!~ zUi{b%J>7UpAM3fg6NkTb)msrDP!#ZG4k%~{kMFKH)t$VF=kD~_LVcmjo+{SdM465# zxAfAk-& ?xQ;z{WEv_$I4LrEMe0gSy;n0W?g*WQ&7Nl_YcnCgWp{` z`gd^FpYHjtWhaHtDM_!r;_imJp@Lw+Hd}Up!;u@yL`C?MZ-R9xSN3 zzaCcrpN=)z(7nJ40oTbzPQANATo)rS@9(e!)iVx!>;Aw_%b9Gy^iBk8c8~V($+*EO z5zEF|u*(danXCz^r^6~ohw#G=jHR-1QRaYkme-4n- zxU~fFB9%?!;D-vW@&?(=vV!iA<=Hq6_@g_eaEc|}vG_?2rIjP$yuz)Imf5p(CX^5t z#&(2wi)RX2MTSQ^i6xmUhXto{@6v8zzFdsj?rrpx{riOO*`V3fR2~*qYVNDGYoi^W zC$!@fx20>-En;7>;a@f@$}RLB!Z^;Ap^$}03CH2VirgYWQ->={4qtx?uBtGQK3RmV z_uPZLeY2N@ zK&ei(_(z1J?|kn2QBJcZ4*E0N6CUyO;1@g>$r|O5Nv%PFe>qGs0eL`LM4NU}(RDEV zT`@h2A*I*1_3Hw9{b^oG?5$0C35a97*FAt$AISz~Sj8?hGbR!k%Bkx3tv8?KsvqQk zayJUx5$tll{j%ENu9ly78E;IQg77p$@>OfD$yopU73ve7q8<;!vuq|5IN!H_q4DQw z+7WI#>fD4h61h>=DnF!nZgX8rdzC{!Y>r3#E!ta@7|#b{9aw6nmUOYn!#da6I*03W z*%XFfKck?OXs5NRzty?MWm}-f7Ib}-Birnmp~d-7hC94ku{XnAym0@n|Gi6p|MPFA z(A3G!$(|+P$E;dqRb@F{)27}ki#5CkE=l--NGy^~4Qt{96ReyszKBpa4bdW{a`IqgdO3e(GT z+=qw4tg&W%AJTnZkw^!Bt&MfSGJ;B@DkOPuc&PsEtLNNavFgFeV|kD4LBQG&1dH^m z_Ds$=h#;RNgbM^dvW$+o|DBBW_xuFT?`-pZ`4rogrW517>${2q%Dl^}9ocu=_PZ}{ z_4+NjOv9`F!=w&m;w**=+$&eVAo5chy~C{d9zLNyt~Sl?7g+dPP`K?3Ew@AhMm$JB zwDRjWK;=(<9el<5){|vfH;ixLb;DNpOn#^-DE-XH`Q`ZkfF}R!>i&eX-dB(Hhr`-; z4N*V;;t{FJt!|TE4#{@@u!i{B=icUiHMHC<(xeVQFdQd|3c)Pp0~i8)bikP{m>qp{ z;)l{Nf{5Da2-iCHKmeR4fyvA--k#OS!TQa&H~zyLt*dRA91;=N)-TnUls|UUy)w98Sz6DIrU30SW$o`Rg>K@XYikU+x%xS`MRCL!WE8=QfKS0MrFg#SI)|HkWo`t?71{GXrrpI`ldF%I>A`%9+T q6yF3sXPS=^n?gZ6CSW0TH6r)%;f1DPap7qZS*!$b=O-v~@c#pT%%Ot- diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/references.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/references.html deleted file mode 100644 index 17e6790f1..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/references.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - References - - - -

        References

        -
          -
        1. [abrahams97exception] Dave Abrahams, - STL Exception Handling Contract, - http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/1997/N1075.pdf - -
        2. [alexandrescu01modern] Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied, Addison-Wesley Publishing Company, 2001
        3. - -
        4. [andrew04mtf] K. Andrew and D. Gleich, "MTF, Bit, and COMB: A Guide to Deterministic and Randomized Algorithms for the List Update Problem"
        5. - -
        6. [austern00noset] Matthew Austern, "Why You shouldn't use set - and What You Should Use Instead", C++ Report, April, 2000
        7. - -
        8. [austern01htprop] Matthew Austern, "A Proposal to Add Hashtables to the Standard Library", http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2001/n1326l.html
        9. - -
        10. [austern98segmented] Matthew Austern, "Segmented iterators and hierarchical algorithms", Generic Programming, April 1998, pp. 80-90
        11. - -
        12. [boost_timer], "Boost timer library", http://www.boost.org by Beman Dawes
        13. - -
        14. [boost_type_traits], "Boost type_traits library", http://www.boost.org by John Maddock, Steve Cleary, et. al.
        15. - -
        16. [bulka99efficient] D. Bulka, and D. Mayhew, "Efficient C++ Programming Techniques.", Addison-Wesley Publishing Company, Addison-Wesley, 1997
        17. - -
        18. [clrs2001] T. H. Cormen, C. E., Leiserson, R. L. Rivest, C. and Stein, "Introduction to Algorithms, 2nd ed.", MIT Press, 2001
        19. - -
        20. [dinkumware_stl], "Dinkumware C++ Library Reference", http://www.dinkumware.com/htm_cpl/index.html
        21. - -
        22. [dubhashi98neg] D. Dubashi, and D. Ranjan, "Balls and bins: A study in negative dependence.", Random Structures and Algorithms 13, 2 (1998), 99-124
        23. - -
        24. [fagin79extendible] R. Fagin, J. Nievergelt, N. Pippenger, and H. R. Strong, "Extendible hashing — a fast access method for dynamic files", ACM Trans. Database Syst. 4, 3 (1979), 315-344
        25. - -
        26. [gamma95designpatterns] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, "Design Patterns - Elements of Reusable Object-Oriented Software", Addison-Wesley Publishing Company, Addison-Wesley, 1995
        27. - -
        28. [garg86order] A. K. Garg and C. C. Gotlieb, "Order-preserving key transformations", Trans. Database Syst. 11, 2 (1986), 213-234
        29. - -
        30. [genome_dna], "Whole Genome Shotgun entries", ftp://ftp.ebi.ac.uk/pub/databases/embl/wgs/wgs/_aady01.dat.gz
        31. - -
        32. [hyslop02making] J. Hyslop, and H. Sutter, "Making a real hash of things", C++ Report, May 2002
        33. - -
        34. [jossutis01stl] N. M. Jossutis, "The C++ Standard Library - A Tutorial and Reference", Addison-Wesley Publishing Company, Addison-Wesley, 2001
        35. - -
        36. [kleft00sets] Klaus Kleft and Angelika Langer, "Are Set Iterators Mutable or Immutable?", C/C++ Users Jornal, October 2000
        37. - -
        38. [knuth98sorting] D. E. Knuth, "The Art of Computer Programming - Sorting and Searching", Addison-Wesley Publishing Company, Addison-Wesley, 1998
        39. - -
        40. [liskov98data] B. Liskov, "Data abstraction and hierarchy", SIGPLAN Notices 23, 5 (May 1998)
        41. - -
        42. [litwin80lh] W. Litwin, "Linear hashing: A new tool for file and table addressing", Proceedings of International Conference on Very Large Data Bases (June 1980), pp. 212-223
        43. - -
        44. [metrowerks_stl], "Metrowerks CodeWarrior Pro 7 MSL C++ Reference Manual",
        45. - -
        46. [meyers96more] S. Meyers, "More Effective C++: 35 New Ways to Improve Your Programs and Designs - 2nd ed.", Addison-Wesley Publishing Company, Addison-Wesley, 1996
        47. - -
        48. [meyers00nonmember] S. Meyers, "How Non-Member Functions Improve Encapsulation", C/C++ Users Journal, 2000
        49. - -
        50. [meyers01stl] S. Meyers, "Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library", Addison-Wesley Publishing Company, Addison-Wesley, 2001
        51. - -
        52. [meyers02both] S. Meyers, "Class Template, Member Template - or Both?", C/C++ Users Journal, 2003
        53. - -
        54. [motwani95random] R. Motwani, and P. Raghavan, "Randomized Algorithms", Cambridge University Press
        55. - -
        56. [mscom] COM: Component Model Object Technologies
        57. - -
        58. [musser95rationale], David R. Musser, "Rationale for Adding Hash Tables to the C++ Standard Template Library"
        59. - -
        60. [musser96stltutorial] D. R. Musser and A. Saini, "STL Tutorial and Reference Guide", Addison-Wesley Publishing Company, Addison-Wesley, 1996
        61. - -
        62. [sgi_stl] SGI, "Standard Template Library Programmer's Guide", http://www.sgi.com/tech/stl
        63. - -
        64. [sleator84amortized] D. D. Sleator and R. E. Tarjan, "Amortized Efficiency of List Update Problems", ACM Symposium on Theory of Computing, 1984
        65. - -
        66. [sleator85self] D. D. Sleator and R. E. Tarjan, "Self-Adjusting Binary Search Trees", ACM Symposium on Theory of Computing, 1985
        67. - -
        68. [stepanov94standard] A. A. Stepanov and M. Lee", "The Standard Template Library"
        69. - -
        70. [stroustrup97cpp] Bjarne Stroustrup, The C++ Programming Langugage -3rd ed., Addison-Wesley Publishing Company,Reading, MA, USA, 1997
        71. - -
        72. [vandevoorde2002cpptemplates] D. Vandevoorde, and N. M. Josuttis, "C++ Templates: The Complete Guide", Addison-Wesley Publishing Company, Addison-Wesley, 2002
        73. - -
        74. [wickland96thirty] C. A. Wickland, "Thirty Years Among the Dead", National Psychological Institute, Los Angeles, 1996,http://myweb.wvnet.edu/gsa00121/books/amongdead30.zip
        75. - -
        - -
        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/regression_tests.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/regression_tests.html deleted file mode 100644 index 491be1ffc..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/regression_tests.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Regression Tests - - - - -

        Regression Tests

        - - -

        Basic Regression

        - - -

        Tree-Based Regression Tests

        - -

        Order-Statistics

        - -

        -Source code: -tree_order_statistics_regression_test.cpp. -

        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_general.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_general.html deleted file mode 100644 index 118e07529..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_general.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Resize Policies - - - - -

        Resize Policies

        - -

        - A resize policy, say res_pol, should support the types and -methods below. -

          -
        1. Types
        2. -
        3. Methods: -
            -
          1. Constructors, destructor, and related
          2. -
          3. Notification methods
          4. -
          5. Size methods
          6. -
          7. Trigger methods
          8. -
          -
        4. -
        -

        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_policies.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_policies.html deleted file mode 100644 index 63819dc70..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_policies.html +++ /dev/null @@ -1,487 +0,0 @@ - - - - Resize Policies - - - - -

        Hash-Based Continers' Resize Policies

        - -

        - This subsection describes resize policies. It is organized as follows: -

        - -
          -
        1. The General Terms Subsection describes general - terms. -
        2. -
        3. The Size Policies Subsection describes size - policies. -
        4. -
        5. The Trigger Policies Subsection describes trigger - policies. -
        6. The Implementation in pb_assoc - Subsection describes the implementation of these concepts in pb_assoc. -
        7. -
        - - -

        General Terms

        - -

        - Hash-tables, as opposed to trees, do not naturally grow or shrink. It -is necessary to specify policies to determine how and when a hash table should change -its size. -

        - -

        - In general, resize policies can be decomposed into (probably orthogonal) -policies: -

        -
          -
        1. A size policy indicating how a hash table should -grow (e.g., it should multiply by powers of 2). -
        2. -
        3. A trigger policy indicating when a hash table should -grow (e.g., a load factor is exceeded). -
        4. -
        - - - -

        Size Policies

        - -

        - Size policies determine how a hash table -changes size. These policies are simple, and there are relatively -few sensible options. An exponential-size policy (with the initial -size and growth factors both powers of 2) works well with a -mask-based range-hashing function (see the Range-Hashing Policies subsection), -and is the -hard-wired policy used by Dinkumware -[dinkumware_stl]. A -prime-list based policy works well with a modulo-prime range -hashing function (see the Range-Hashing Policies subsection), -and is the -hard-wired policy used by SGI's implementation -[sgi_stl]. -

        - - - - -

        Trigger Policies

        - -

        - Trigger policies determine when a hash table changes size. -Following is a description of two polcies: load-check -policies, and a collision-check policies. -

        - -

        - Load-check policies are straightforward. The user -specifies two factors, αmin and αmax, and -the hash table maintains the invariant that -

        -

        - - - αmin - ≤ - (number of stored elements) / (hash-table size) - ≤ - αmax - - - (1) - . -

        - -

        - Collision-check policies work in the opposite direction of -load-check policies. They focus on keeping the number of -collisions moderate and hoping -that the size of the table will not grow very large, -instead of keeping a moderate load-factor and -hoping that the number of collisions will be small. -A -maximal collision-check policy resizes when the shortest -probe-sequence grows too large. -

        - - -

        - Consider Figure -Balls and bins. - Let the size of the hash table be denoted by m, the -length of a probe sequence be denoted by k, and some load -factor be denoted by α. We would like to calculate the -minimal length of k, such that if there were α m elements -in the hash table, a probe sequence of length k would be found -with probability at most 1/m. -

        - -
        - -no image - -Balls and bins. -
        - - -

        - Denote the probability that a probe sequence of length k -appears in bin i by pi, the length of the probe sequence -of bin i by li, and assume uniform distribution. -Then -

        -

        - - p1 - = (3) - -

        -

        - - P(l1 ≥ k) - = - -

        -

        - P(l1 ≥ α ( 1 + k / α - 1 ) - ≤ (a) -

        -

        - - e - ^ - ( - - - ( - α ( k / α - 1 )2 - ) - /2 - ) - - , -

        -

        - where (a) follows from the Chernoff bound -[motwani95random]. -To -calculate the probability that some bin contains a probe -sequence greater than k, we note that the li are -negatively-dependent -[dubhashi98neg]. -Let I(.) -denote the indicator function. Then -

        - - P( existsi li ≥ k ) - = (3) - -

        -

        - - P - ( - ∑ i = 1m - I(li ≥ k) ≥ 1 - ) - = - -

        -

        - - P - ( - ∑ i = 1m - I - ( - li ≥ k - ) - ≥ - m p1 ( 1 + 1 / (m p1) - 1 ) - ) - ≤ (a) -

        -

        - - e - ^ - ( - ( - - - m p1 - ( - 1 / (m p1) - 1 - ) - 2 - ) - / - 2 - ) - , - -

        -

        -where (a) follows from the fact that the Chernoff bound can be -applied to negatively-dependent variables -[dubhashi98neg]. -Inserting (2) into -(3), and equating with 1/m, -we obtain -

        -

        - - k - ~ - √ - ( - 2 α ln 2 m ln(m) ) - ) - - . -

        - - - - - - - - - -

        Implementation in pb_assoc

        - -

        - The resize policies in the previous subsection are conceptually straightforward. The design -of hash-based containers' size-related interface is complicated by some factors. -

        -
          -
        1. Most containers, i.e. lists, trees, and vectors, have a single "size" concept. There is no -distinction between the number of entries the container holds and the number of entries it is using. This, -of course, is not the case for hash-based containers. Moreover, even describing the -"actual" size of a hash-based container (as opposed to its logical size) is difficult - a probing-based container -holds entries to elements, even those it does not use, while a chaining-based container holds pointers to entries. -
        2. -
        3. - The policies mentioned above operate in terms of invariants. E.g. a load-check trigger policy -maintains an invariant concerning the load factor of a container object. This is sometimes too rigid: -
            -
          1. In some cases it is desirable to allow controlled override of an entire policy, e.g. by externally resizing a container object (or giving it an initial size, which is a special case of externally resizing the container). -
          2. -
          3. - In other cases it is desirable to allow changing the specifics of a policy in runtime, e.g., changing the load factors of a load-check policy. -
          4. -
          -
        4. -
        5. - Resize policies interact strongly with hash policies. Performance-wise, for example, it is undesirable to use an exponential size policy of powers of two with a modulo range-hashing function, and it is undesirable to use a prime size policy with a mask range-hashing function. In other cases, the effects are more dramatic. For example, using a quadratic probe function with an exponential size policy will probably cause cases where the container object has available entries which are never reached by the probe function. (Hash Policies -discusses the previous concepts.) -
        6. -
        - -

        - Clearly, the more of these points an interface addresses, the greater its flexibility but the lower its encapsulation and uniformity between associative containers. -

        - - - -

        - This library attempts to address these types of problems by delegating all size-related functionality to -policy classes. Hash-based containers -are parameterized by a resize-policy class (among others), and derive publicly from -the resize-policy class -[alexandrescu01modern] - E.g., a collision-chaining -hash table is defined as follows: -

        -
        -cc_ht_map<
        -  class Key,
        -  class Data,
        -  ...
        -  class Resize_Policy
        -  ...> :
        -    public Resize_Policy
        -
        - -

        - The containers themselves lack any functionality or public interface for manipulating sizes. A container -object merely forwards events to its resize policy object and queries it for needed actions. -

        - -

        - Figure - -Insert resize sequence diagram - -shows a (possible) sequence diagram of an insert operation. -The user inserts an element; the hash table -notifies its resize policy that a search has started (point A); -in this case, a single collision is encountered - the table -notifies its resize policy of this (point B); the container -finally notifies its resize policy that the search has ended (point C); -it then queries its resize policy whether a resize is needed, and if so, -what is the new size (points D to G); following the resize, it notifies -the policy that a resize has completed (point H); finally, the element -is inserted, and the policy notified (point I). -

        - -
        - -no image - -
        -
        -Insert resize sequence diagram. -
        - -

        - This addresses, to some extent, the problems mentioned above: -

        -
          -
        1. - Different instantiations of range-hashing policies can be met with different instantiations of - resize policies. -
        2. -
        3. - Questions on size-related interface are avoided, since the containers have no size-related methods. Thus - a container has no method for querying its actual size. It merely continuously forwards enough information to - its resize policy to answer such queries; the designer of the resize policy can decide whether, or how, to design the appropriate method. Also, a container has no methods for setting its size. It merely queries its -resize policy for an initial size, queries it on a new size (if the resize policy indicates a resize is needed), and -supports a protected virtual function for external resize. -
        4. -
        - -

        - The library contains a single class for instantiating a resize policy, -pb_assoc contains -a standard resize policy, -hash_standard_resize_policy (the name is explained shortly). -In terms of interface, it is parameterized by a boolean constant indicating whether its public interface supports -queries of actual size and external resize operations (the inclusion and exclusion of these methods in the interface have obvious tradeoffs in terms of encapsulation and flexibility). -([alexandrescu01modern] shows many techniques for -changing between alternative interfaces at compile time.) -

        - -

        -As noted before, - size and trigger policies are usually orthogonal. -hash_standard_resize_policy -is parameterized by size and trigger policies. For example, -a collision-chaining hash table -is typically be defined as follows: -

        -
        -cc_ht_map<
        -  key,
        -  data,
        -  ...
        -  hash_standard_resize_policy<
        -    some_trigger_policy,
        -    some_size_policy,
        -    ...> >
        -
        - -

        - The sole function of -hash_standard_resize_policy - is to -act as a standard delegator -[gamma95designpatterns] for these -policies. - -

        - Figures -Standard resize policy trigger sequence diagram - and -Standard resize policy size sequence diagram - show sequence diagrams illustrating the interaction between - the standard resize policy and its trigger and size policies, respectively. -

        - -
        - -no image - -
        -
        -Standard resize policy trigger sequence diagram. -
        - -
        - -no image - -
        -
        -Standard resize policy size sequence diagram. -
        - -

        - The library (currently) supports the following instantiations of size -and trigger policies: -

        - -
          -
        1. - hash_load_check_resize_trigger implements - a load check trigger policy. -
        2. -
        3. - cc_hash_max_collision_check_resize_trigger - implements a collision check trigger policy. -
        4. -
        5. -hash_exponential_size_policy implemens -an exponential-size policy (which should be used with mask range hashing). -
        6. -
        7. -hash_prime_size_policy implementing -a size policy based on a sequence of primes -[sgi_stl] (which should be used with mod range hashing -
        8. -
        - -

        - The trigger policies also support interfaces for changing their specifics which depend on compile time constants. -

        - - -

        - Figure -Resize policy class diagram gives an overall picture -of the resize-related classes. -Container (which stands for any of the hash-based containers) is parameterized -by Resize_Policy, from which it subclasses publicly -[alexandrescu01modern]. -This class is currently instantiated only by -hash_standard_resize_policy. -hash_standard_resize_policy itself -is parameterized by Trigger_Policy and Size_Policy. -Currently, Trigger_Policy is instantiated by -hash_load_check_resize_trigger, -or -cc_hash_max_collision_check_resize_trigger; Size_Policy is instantiated by -hash_exponential_size_policy, -or -hash_prime_size_policy. -

        - - -
        - -no image - -
        -
        -Resize policy class diagram. -
        - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_policy_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/resize_policy_cd.jpg deleted file mode 100644 index 1d85438a174ce7ceee6a00fb16db8f82e1d54f8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58948 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

        Uqfy zxep3koE)Yy8wRT5R~%D1%}&K?b!30AZP*_glZZ7~t9-E~saCn3M1-w7{id3AkYViu zm6lAK<^9GEz{V%*KwD zaws!DCU0v-79JyG%*fol%H0<@TXUpDKd9j{-deR)#sFI9x@k}MS;jwu(rvBvL8m3d zl6Y;ojJO$tnsh~$g^MW`zcRYrd>aE%q;fPi5S3q9Cj&~N%)^)(rkmqsrU7KuWz9t( zerVAL$VUM{dhwoga*V_bgb+4;$piqmO`i1$mHh~j6SIb53G7Zif-ivR!s diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/restoring_node_invariants.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/restoring_node_invariants.jpg deleted file mode 100644 index 626b730c1aa4670b7a19995b216b53037eb6d9ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26335 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 -**/ -class sample_node_updator -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_node_updator - (); - /** **/ - - /* - * - **/ - sample_node_updator - (const sample_node_updator &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_node_updator &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /** - * - **/ - void - operator() - (const_key_pointer p_key, - const_key_pointer p_l_child_key, - const_key_pointer p_r_child_key); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -}; -/** -* -**/ - - -#endif // #ifndef SAMPLE_NODE_UPDATOR_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.hpp deleted file mode 100644 index 1117418e2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.hpp +++ /dev/null @@ -1,121 +0,0 @@ -/** -* @file sample_probe_fn.hpp -* Contains a sample probe policy. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation. -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_PROBE_FN_HPP -#define SAMPLE_PROBE_FN_HPP - - -/** -* -**/ -class sample_probe_fn -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_probe_fn - (); - /** **/ - - /* - * - **/ - sample_probe_fn - (const sample_probe_fn &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_probe_fn &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -protected: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - inline size_type - operator() - (const_key_reference r_key, - size_type i) const; - /** **/ - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ -}; -/** -* -**/ - - -#endif // #ifndef SAMPLE_PROBE_FN_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.html deleted file mode 100644 index 360ab6037..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_probe_fn.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - -sample_probe_fn Interface - - - - - -

        -sample_probe_fn - - - Interface - - -

        - -

        A sample probe policy. -

        - -

        This class serves to show the interface a probe functor needs to support. -

        - -
          -
        1. -sample_probe_fn.hpp - - -
        2. - -
        3. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          - -
        4. - -
        5. -Protected Methods: - - -
            -
          1. -Offset methods. - - -
          2. - -
          - -
        6. - -
        - - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
          sample_probe_fn
        -  ()
        - - -
        -

        Default constructor.

        - - -

        Must be default constructible.

        - - -
        -
          sample_probe_fn
        -  (const sample_probe_fn &r_other)
        - - -
        -

        Copy constructor.

        - - -

        Must be copy constructible.

        - - -
        -
        inline void
        -  swap
        -  (sample_probe_fn &r_other)
        - - -
        -

        Swaps content.

        - - -

        Must be swappable (if there is such a word).

        - - -
        - -

        -Offset methods. - - -

        - - - - - - - - - - - - -
        MethodDescription
        -
        inline size_type
        -  operator()
        -  (const_key_reference r_key,
        -    size_type i) const
        - - -
        -

        Returns the i-th offset from the hash value of some key r_key.

        - - -

        size_type is the size type on which the functor operates.

        - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.hpp deleted file mode 100644 index d22f8e23d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/** -* @file sample_range_hashing.hpp -* Contains a range hashing policy. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation. -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_RANGE_HASHING_HPP -#define SAMPLE_RANGE_HASHING_HPP - - -/** -* -**/ -class sample_range_hashing -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_range_hashing - (); - /** **/ - - /* - * - **/ - sample_range_hashing - (const sample_range_hashing &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_range_hashing &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -protected: - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - void - notify_resized - (size_type size); - /** **/ - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - * comment = "@@sample_range_hashing_size_type_comment"> - **/ - inline size_type - operator() - (size_type hash) const; - /** **/ - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -}; -/** -* -**/ - - -#endif // #ifndef SAMPLE_RANGE_HASHING_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.html deleted file mode 100644 index 86d179e8f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_range_hashing.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - -sample_range_hashing Interface - - - - - -

        -sample_range_hashing - - - Interface - - -

        - -

        A sample range-hashing functor. -

        - -

        This class serves to show the interface a range-hashing functor needs to support. -

        - -
          -
        1. -sample_range_hashing.hpp - - -
        2. - -
        3. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          - -
        4. - -
        5. -Protected Methods: - - -
            -
          1. -Notification methods. - - -
          2. - -
          3. -Operators. - - -
          4. - -
          - -
        6. - -
        - - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
          sample_range_hashing
        -  ()
        - - -
        -

        Default constructor.

        - - -

        Must be default constructible.

        - - -
        -
          sample_range_hashing
        -  (const sample_range_hashing &r_other)
        - - -
        -

        Copy constructor.

        - - -

        Must be copy constructible.

        - - -
        -
        inline void
        -  swap
        -  (sample_range_hashing &r_other)
        - - -
        -

        Swaps content.

        - - -

        Must be swappable (if there is such a word).

        - - -
        - -

        -Notification methods. - - -

        - - - - - - - - - - - - -
        MethodDescription
        -
        void
        -  notify_resized
        -  (size_type size)
        - - -
        -

        Notifies the policy object that the container's size has changed to size.

        - - -

        size_type is the size type on which the functor operates.

        - - -
        - -

        -Operators. - - -

        - - - - - - - - - - - - -
        MethodDescription
        -
        *  comment = "@@sample_range_hashing_size_type_comment">
        -**/
        -inline size_type
        -  operator()
        -  (size_type hash) const
        - - -
        -

        Transforms the hash value hash into a ranged-hash value.

        - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.hpp deleted file mode 100644 index 32c5a4985..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.hpp +++ /dev/null @@ -1,141 +0,0 @@ -/** -* @file sample_ranged_hash_fn.hpp -* Contains a ranged hash policy. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation. -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_RANGED_HASH_FN_HPP -#define SAMPLE_RANGED_HASH_FN_HPP - - -/** -* -**/ -class sample_ranged_hash_fn -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_ranged_hash_fn - (); - /** **/ - - /* - * - **/ - sample_ranged_hash_fn - (const sample_ranged_hash_fn &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_ranged_hash_fn &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -protected: - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - void - notify_resized - (size_type size); - /** **/ - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - * comment = "@@sample_ranged_hash_fn_size_type_comment"> - **/ - inline size_type - operator() - (const_key_reference r_key) const; - /** **/ - - /** - *************************************************************************** - *************************************************************************** - ** - **/ -}; -/** -* -**/ - - -#endif // #ifndef SAMPLE_RANGED_HASH_FN_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.html deleted file mode 100644 index f43c30066..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_hash_fn.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - -sample_ranged_hash_fn Interface - - - - - -

        -sample_ranged_hash_fn - - - Interface - - -

        - -

        A sample ranged-hash functor. -

        - -

        This class serves to show the interface a ranged-hash functor needs to support. -

        - -
          -
        1. -sample_ranged_hash_fn.hpp - - -
        2. - -
        3. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          - -
        4. - -
        - - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
          sample_ranged_hash_fn
        -  ()
        - - -
        -

        Default constructor.

        - - -

        Must be default constructible.

        - - -
        -
          sample_ranged_hash_fn
        -  (const sample_ranged_hash_fn &r_other)
        - - -
        -

        Copy constructor.

        - - -

        Must be copy constructible.

        - - -
        -
        inline void
        -  swap
        -  (sample_ranged_hash_fn &r_other)
        - - -
        -

        Swaps content.

        - - -

        Must be swappable (if there is such a word).

        - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.hpp deleted file mode 100644 index 2aaab0e3d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.hpp +++ /dev/null @@ -1,143 +0,0 @@ -/** -* @file sample_ranged_probe_fn.hpp -* Contains a ranged probe policy. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation. -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_RANGED_PROBE_FN_HPP -#define SAMPLE_RANGED_PROBE_FN_HPP - - -/** -* -**/ -class sample_ranged_probe_fn -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_ranged_probe_fn - (); - /** **/ - - /* - * - **/ - sample_ranged_probe_fn - (const sample_ranged_probe_fn &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_ranged_probe_fn &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -protected: - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - void - notify_resized - (size_type size); - /** **/ - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - * comment = "@@sample_ranged_probe_fn_size_type_comment"> - **/ - inline size_type - operator() - (const_key_reference r_key, - size_type i) const; - /** **/ - - /** - *************************************************************************** - *************************************************************************** - ** - **/ -}; -/** -* -**/ - - -#endif // #ifndef SAMPLE_RANGED_PROBE_FN_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.html deleted file mode 100644 index 5ce7ef20e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_ranged_probe_fn.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - -sample_ranged_probe_fn Interface - - - - - -

        -sample_ranged_probe_fn - - - Interface - - -

        - -

        A sample ranged-probe functor. -

        - -

        This class serves to show the interface a ranged-probe functor needs to support. -

        - -
          -
        1. -sample_ranged_probe_fn.hpp - - -
        2. - -
        3. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          - -
        4. - -
        - - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
          sample_ranged_probe_fn
        -  ()
        - - -
        -

        Default constructor.

        - - -

        Must be default constructible.

        - - -
        -
          sample_ranged_probe_fn
        -  (const sample_ranged_probe_fn &r_other)
        - - -
        -

        Copy constructor.

        - - -

        Must be copy constructible.

        - - -
        -
        inline void
        -  swap
        -  (sample_ranged_probe_fn &r_other)
        - - -
        -

        Swaps content.

        - - -

        Must be swappable (if there is such a word).

        - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.hpp deleted file mode 100644 index 4101a70fb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.hpp +++ /dev/null @@ -1,310 +0,0 @@ -/** -* @file sample_resize_policy.hpp -* Contains a sample resize policy for hash tables. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation, -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_RESIZE_POLICY_HPP -#define SAMPLE_RESIZE_POLICY_HPP - - -/** -* -**/ -class sample_resize_policy -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_resize_policy - (); - /** **/ - - /* - * - **/ - sample_range_hashing - (const sample_resize_policy &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_resize_policy &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -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); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - size_type - get_init_size - () const; - /** **/ - - /* - * - **/ - inline bool - is_resize_needed - () const; - /** **/ - - /* - * - **/ - size_type - get_new_size - (size_type size, size_type num_used_e) const; - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ -}; -/** -* -**/ - - -#endif // #ifndef SAMPLE_RESIZE_POLICY_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.html deleted file mode 100644 index b1e3794c4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_policy.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - -sample_resize_policy Interface - - - - - -

        -sample_resize_policy - - - Interface - - -

        - -

        A sample resize policy. -

        - -

        This class serves to show the interface a resize policy needs to support. -

        - -
          -
        1. -sample_resize_policy.hpp - - -
        2. - -
        3. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          - -
        4. - -
        5. -Protected Methods: - - -
            -
          1. -Insert search notifications. - - -
          2. - -
          3. -Find search notifications. - - -
          4. - -
          5. -Erase search notifications. - - -
          6. - -
          7. -Content change notifications. - - -
          8. - -
          9. -Size change notifications. - - -
          10. - -
          11. -Queries. - - -
          12. - -
          - -
        6. - -
        - - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
          sample_resize_policy
        -  ()
        - - -
        -

        Default constructor.

        - - -

        Must be default constructible.

        - - -
        -
          sample_range_hashing
        -  (const sample_resize_policy &r_other)
        - - -
        -

        Copy constructor.

        - - -

        Must be copy constructible.

        - - -
        -
        inline void
        -  swap
        -  (sample_resize_policy &r_other)
        - - -
        -

        Swaps content.

        - - -

        Must be swappable (if there is such a word).

        - - -
        - -

        -Insert search notifications. - - -

        - -

        Notifications called during an insert operation.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
        inline void
        -  notify_insert_search_start
        -  ()
        - - -
        -

        Notifies a search started.

        - - -
        -
        inline void
        -  notify_insert_search_collision
        -  ()
        - - -
        -

        Notifies a search encountered a collision.

        - - -
        -
        inline void
        -  notify_insert_search_end
        -  ()
        - - -
        -

        Notifies a search ended.

        - - -
        - -

        -Find search notifications. - - -

        - -

        Notifications called during a find operation.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
        inline void
        -  notify_find_search_start
        -  ()
        - - -
        -

        Notifies a search started.

        - - -
        -
        inline void
        -  notify_find_search_collision
        -  ()
        - - -
        -

        Notifies a search encountered a collision.

        - - -
        -
        inline void
        -  notify_find_search_end
        -  ()
        - - -
        -

        Notifies a search ended.

        - - -
        - -

        -Erase search notifications. - - -

        - -

        Notifications called during an insert operation.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
        inline void
        -  notify_erase_search_start
        -  ()
        - - -
        -

        Notifies a search started.

        - - -
        -
        inline void
        -  notify_erase_search_collision
        -  ()
        - - -
        -

        Notifies a search encountered a collision.

        - - -
        -
        inline void
        -  notify_erase_search_end
        -  ()
        - - -
        -

        Notifies a search ended.

        - - -
        - -

        -Content change notifications. - - -

        - -

        Notifications called when the content of the table changes in a way that can affect the resize policy.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
        inline void
        -  notify_inserted
        -  (size_type num_e)
        - - -
        -

        Notifies an element was inserted.

        - - -
        -
        inline void
        -  notify_erased
        -  (size_type num_e)
        - - -
        -

        Notifies an element was erased.

        - - -
        -
        void
        -  notify_cleared
        -  ()
        - - -
        -

        Notifies the table was cleared.

        - - -
        - -

        -Size change notifications. - - -

        - -

        Notifications called when the table changes size.

        - - - - - - - - - - - - - -
        MethodDescription
        -
        void
        -  notify_resized
        -  (size_type new_size)
        - - -
        -

        Notifies the table was resized to new_size.

        - - -
        - -

        -Queries. - - -

        - -

        Called to query whether/how to resize.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
        size_type
        -  get_init_size
        -  () const
        - - -
        -

        Queries initial size.

        - - -
        -
        inline bool
        -  is_resize_needed
        -  () const
        - - -
        -

        Queries whether a resize is needed.

        - - -
        -
        size_type
        -  get_new_size
        -  (size_type size, size_type num_used_e) const
        - - -
        -

        Queries what the new size should be.

        - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_trigger.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_trigger.hpp deleted file mode 100644 index b2799cfb7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_resize_trigger.hpp +++ /dev/null @@ -1,341 +0,0 @@ -/** -* @file sample_resize_trigger.hpp -* Contains a sample resize trigger policy class. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation. -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_RESIZE_TRIGGER_HPP -#define SAMPLE_RESIZE_TRIGGER_HPP - - -/** -* -**/ -class sample_resize_trigger -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_resize_trigger - (); - /** **/ - - /* - * - **/ - sample_range_hashing - (const sample_resize_trigger &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_resize_trigger &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -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 - (); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - 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; - /** **/ - - /* - * - **/ - inline bool - is_shrink_needed - (size_type size, - size_type num_entries) const; - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -}; -/** -* -**/ - - -/* -**************************************************************************** -**************************************************************************** -*/ -} // namespace pb_assoc - - -#endif // #ifndef SAMPLE_RESIZE_TRIGGER_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_size_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_size_policy.hpp deleted file mode 100644 index a8642700b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_size_policy.hpp +++ /dev/null @@ -1,140 +0,0 @@ -/** -* @file sample_size_policy.hpp -* Contains a sample size resize-policy. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation. -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_SIZE_POLICY_HPP -#define SAMPLE_SIZE_POLICY_HPP - - -/** -* -**/ -class sample_size_policy -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_size_policy - (); - /** **/ - - /* - * - **/ - sample_range_hashing - (const sample_size_policy &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_size_policy &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -protected: - - /** - ************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - inline size_type - get_init_size - (size_type suggested_size) const; - /** **/ - - /* - * - **/ - inline size_type - get_nearest_larger_size - (size_type cur_size) const; - /** **/ - - /* - * - **/ - inline size_type - get_nearest_smaller_size - (size_type cur_size) const; - /** **/ - - /** - ************************************************************************** - *************************************************************************** - ** - **/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -}; -/* -** -**/ - - -#endif // #ifndef SAMPLE_SIZE_POLICY_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_update_policy.hpp b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_update_policy.hpp deleted file mode 100644 index 70a1bd438..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/sample_update_policy.hpp +++ /dev/null @@ -1,171 +0,0 @@ -/** -* @file sample_update_policy.hpp -* Contains a sample policy for list update containers. -* -* Copyright Ami Tavory, IBM-HRL, 2004. -* -* Permission to use, copy, modify, sell, and distribute this software -* is hereby granted without fee, provided that the above copyright notice -* appears in all copies, and that both that copyright notice and this -* permission notice appear in supporting documentation. -* -* None of the above authors, nor IBM Haifa Research Laboratories, make any -* representation about the suitability of this software for any -* purpose. It is provided "as is" without express or implied warranty. -**/ - - -#ifndef SAMPLE_UPDATE_POLICY_HPP -#define SAMPLE_UPDATE_POLICY_HPP - - -/** -* -**/ -class sample_update_policy -{ -/** -******************************************************************************* -******************************************************************************* -* -**/ -public: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - sample_update_policy - (); - /** **/ - - /* - * - **/ - sample_update_policy - (const sample_update_policy &r_other); - /** **/ - - /* - * - **/ - inline void - swap - (sample_update_policy &r_other); - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -protected: - - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /** - * - **/ - typedef - some_metadata_type - metadata_type; - /** **/ - - - /* - *************************************************************************** - *************************************************************************** - * - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ - - -/** -******************************************************************************* -******************************************************************************* -* -**/ -protected: - /** - *************************************************************************** - *************************************************************************** - ** - **/ - - /* - * - **/ - metadata_type - operator() - () const; - /** **/ - - /* - * - **/ - bool - operator() - (metadata_reference r_data) const; - /** **/ - - /* - *************************************************************************** - *************************************************************************** - * - **/ - -/** -******************************************************************************* -******************************************************************************* -* -**/ -}; -/** -* -**/ - - -#endif // #ifndef SAMPLE_UPDATE_POLICY_HPP diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/size_policies_general.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/size_policies_general.html deleted file mode 100644 index d79d68af9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/size_policies_general.html +++ /dev/null @@ -1,22 +0,0 @@ - - - -Size Policies - - - - -

        Size Policies

        - -

        - A size policy, say size_pol, should support -the types and -methods below. -

          -
        1. Types
        2. -
        3. Methods
        4. -
        -

        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/splay_tree_ds_tag.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/splay_tree_ds_tag.html deleted file mode 100644 index 71d8e3f78..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/splay_tree_ds_tag.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -splay_tree_ds_tag Interface - - - - - -

        -splay_tree_ds_tag - - - Interface - - -

        - -

        Splay tree data-structure tag. -

        - -
          -
        1. -ds_trait.hpp - - -
        2. - -
        3. -Base classes. - - -
        4. - -
        - - -

        -Base classes. - - -

        - - - - - - - - - - - - -
        ClassDerivation Type
        -
        basic_tree_ds_tag
        - - -
        -

        public

        - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/timing_tests.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/timing_tests.html deleted file mode 100644 index 8fd034ccd..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/timing_tests.html +++ /dev/null @@ -1,60 +0,0 @@ - - - -Timing Tests - - - - -

        Timing Tests

        - -

        - This section describes timing tests and their results. The tests were -performed on two systems: -

        -
          -
        1. -
        2. Intel
        3. -
        - -

        - The tests are organized as follows: -

        -
          -
        1. Hash-Based Container Tests - shows tests pertaining to hash-based containers. -
        2. -
        3. Tree-Based Container Tests - shows tests pertaining to tree-based containers. -
        4. -
        - -

        Hash-Based Container Tests

        - -

        Random-Integer Find Test

        - -

        - This test measurs the average time to find an entry -in a "set" as a function of the "set"'s -size.

        -_ -

        - The test's purpose is to find the effect of -different range-hashing functions. See -Hash-Based Containers::Resize Policies -

        - -

        -Source code: -hash_random_int_find_timing_test.cpp. -

        - -

        -Execution: hash_random_int_find_timing_test -

        - - -

        Tree-Based Container Tests

        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/toc.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/toc.html deleted file mode 100644 index c46f16094..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/toc.html +++ /dev/null @@ -1,35 +0,0 @@ - - - -Table of Contents - - - - -

        Contents

        - - -Main Page - -
          -
        1. Introduction
        2. -
        3. Motivation
        4. -
        5. Design -
            -
          1. Overview
          2. -
          -
        6. -
        7. Interface -
            -
          1. Short Tutorial
          2. -
          -
        8. Examples
        9. -
        10. Regression Tests
        11. -
        12. Timing Tests
        13. -
        14. Contact
        15. -
        16. Acknowledgements
        17. -
        18. Disclaimer and Copyright
        19. -
        20. References
        21. -
        - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr.html deleted file mode 100644 index f524f96eb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - - - -tree_assoc_cntnr Interface - - - - - -

        -tree_assoc_cntnr - - - Interface - - -

        - -

        A tree-based associative container. -

        - -
          -
        1. -assoc_cntnr.hpp - - -
        2. - -
        3. -Template parameters. - - -
        4. - -
        5. -Base classes. - - -
        6. - -
        7. -Public Types and Constants: - - -
            -
          1. -Policy definitions. - - -
          2. - -
          - -
        8. - -
        9. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          - -
        10. - -
        - - -

        -Template parameters. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        ParameterDescriptionDefault Value
        -
        Key
        - - -
        -

        Key type.

        - - -
        -- - - -
        -
        Data
        - - -
        -

        Data type.

        - - -
        -- - - -
        -
        Cmp_Fn
        - - -
        -

        Comparison functor.

        - - -
        -
        std::less<Key>
        - - -
        -
        DS_Tag
        - - -
        -

        Data-structure tag.

        - - -
        -- - - -
        -
        Node_Updator
        - - -
        -

        Node updator type.

        - - -

        Node Invariants explains this concept.

        - - -
        -null_node_updator - - -
        -
        Allocator
        - - -
        -

        Allocator type.

        - - -
        -
        std::allocator<char>
        - - -
        - -

        -Base classes. - - -

        - - - - - - - - - - - - -
        ClassDerivation Type
        -
        Depending on whether DS_Tag is a type supporting reverse iteration,
        1. basic_tree_assoc_cntnr no reverse-iteration specialization
        2. basic_tree_assoc_cntnr reverse-iteration specialization
        - - -
        -

        public

        - - -
        - -

        -Policy definitions. - - -

        - - - - - - - - - - - - - - - - - - - - - - - -
        TypeDefinitionDescription
        -
        cmp_fn
        - - -
        -
        Cmp_Fn
        - - -
        -

        Comparison functor type.

        - - -
        -
        node_updator
        - - -
        -
        Node_Updator
        - - -
        -

        Node updator type.

        - - -
        - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescription
        -
          tree_assoc_cntnr
        -  ()
        - - -
        -

        Default constructor.

        - - -
        -
          tree_assoc_cntnr
        -  (const cmp_fn &r_cmp_fn)
        - - -
        -

        Constructor taking some policy objects. r_cmp_fn will be copied by the Cmp_Fn object of the container object.

        - - -
        -
          tree_assoc_cntnr
        -  (const cmp_fn &r_cmp_fn,
        -    const Node_Updator &r_node_updator)
        - - -
        -

        Constructor taking some policy objects. r_cmp_fn will be copied by the Cmp_Fn object of the container object, and r_node_updator will be copied by the Node_Updator object of the container object.

        - - -
        -
        template<
        -    class It>
        -  tree_assoc_cntnr
        -  (It first_it,
        -    It last_it)
        - - -
        -

        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<
        -    class It>
        -  tree_assoc_cntnr
        -  (It first_it,
        -    It last_it,
        -    const cmp_fn &r_cmp_fn)
        - - -
        -

        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<
        -    class It>
        -  tree_assoc_cntnr
        -  (It first_it,
        -    It last_it,
        -    const cmp_fn &r_cmp_fn,
        -    const Node_Updator &r_node_updator)
        - - -
        -

        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, and r_node_updator will be copied by the Node_Updator object of the container object.

        - - -
        -
          tree_assoc_cntnr
        -  (const tree_assoc_cntnr &r_other)
        - - -
        -

        Copy constructor.

        - - -
        -
        virtual
        -  ~tree_assoc_cntnr
        -  ()
        - - -
        -

        Destructor.

        - - -
        -
        tree_assoc_cntnr &
        -  operator=
        -  (const tree_assoc_cntnr &r_other)
        - - -
        -

        Assignment operator.

        - - -
        -
        void
        -  swap
        -  (tree_assoc_cntnr &r_other)
        - - -
        -

        Swaps content.

        - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_const_node_iterator.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_const_node_iterator.html deleted file mode 100644 index aa0954c65..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_const_node_iterator.html +++ /dev/null @@ -1,488 +0,0 @@ - - - - - - -tree_assoc_cntnr::const_node_iterator Interface - - - - - -

        -tree_assoc_cntnr::const_node_iterator - - - Interface - - -

        - -

        Const node iterator. -

        - -

        This is an -

        - -
          -
        1. -Public Types and Constants: - - -
            -
          1. -Iterator definitions. - - -
          2. - -
          3. -Value-type definitions. - - -
          4. - -
          - -
        2. - -
        3. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          3. -Access methods. - - -
          4. - -
          5. -Movement methods. - - -
          6. - -
          7. -Comparison methods. - - -
          8. - -
          - -
        4. - -
        - - -

        -Iterator definitions. - - -

        - - - - - - - - - - - - - - - - - - - - - - - -
        TypeDefinitionDescription
        -
        iterator_category
        - - -
        -
        trivial_iterator_tag
        - - -
        -

        Category. comment =

        - - -
        -
        difference_type
        - - -
        -
        void
        - - -
        -

        Difference type.

        - - -
        - -

        -Value-type definitions. - - -

        - -

        Note that a node iterator's value type is actually a tree iterator.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        TypeDefinitionDescription
        -
        value_type
        - - -
        -
        const_iterator
        - - -
        -

        Iterator's value type.

        - - -
        -
        pointer
        - - -
        -
        const_iterator *
        - - -
        -

        Iterator's pointer type.

        - - -
        -
        const_pointer
        - - -
        -
        const_iterator *
        - - -
        -

        Iterator's const pointer type.

        - - -
        -
        reference
        - - -
        -
        const_iterator &
        - - -
        -

        Iterator's reference type.

        - - -
        -
        const_reference
        - - -
        -
        const iterator &
        - - -
        -

        Iterator's const reference type.

        - - -
        - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - -
        MethodDescriptionComplexity GuaranteeException Guarantee
        -
        inline
        -  const_node_iterator
        -  (const node_pointer p_nd = NULL)
        - - -
        -

        Default constructor.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        - -

        -Access methods. - - -

        - - - - - - - - - - - - - - - - -
        MethodDescriptionComplexity GuaranteeException Guarantee
        -
        inline const_iterator
        -  operator*
        -  () const
        - - -
        -

        Access.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        - -

        -Movement methods. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescriptionComplexity GuaranteeException Guarantee
        -
        inline const_node_iterator
        -  l_child
        -  () const
        - - -
        -

        Returns the const node iterator associated with the left node.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        -
        inline const_node_iterator
        -  r_child
        -  () const
        - - -
        -

        Returns the const node iterator associated with the right node.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        - -

        -Comparison methods. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescriptionComplexity GuaranteeException Guarantee
        -
        inline bool
        -  operator==
        -  (const const_node_iterator &r_other) const
        - - -
        -

        Compares content to a different iterator object.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        -
        inline bool
        -  operator!=
        -  (const const_node_iterator &r_other) const
        - - -
        -

        Compares content (negatively) to a different iterator object.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html deleted file mode 100644 index edcdd0f2d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html +++ /dev/null @@ -1,250 +0,0 @@ - - - - - - -tree_assoc_cntnr::node_iterator Interface - - - - - -

        -tree_assoc_cntnr::node_iterator - - - Interface - - -

        - -

        Node iterator. -

        - -

        This is an -

        - -
          -
        1. -Base classes. - - -
        2. - -
        3. -Public Methods: - - -
            -
          1. -Constructors, destructor, and related. - - -
          2. - -
          3. -Access methods. - - -
          4. - -
          5. -Movement methods. - - -
          6. - -
          - -
        4. - -
        - - -

        -Base classes. - - -

        - - - - - - - - - - - - -
        ClassDerivation Type
        -
        const_node_iterator
        - - -
        -

        public

        - - -
        - -

        -Constructors, destructor, and related. - - -

        - - - - - - - - - - - - - - - - -
        MethodDescriptionComplexity GuaranteeException Guarantee
        -
        inline
        -  node_iterator
        -  (const node_pointer p_nd = NULL)
        - - -
        -

        Default constructor.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        - -

        -Access methods. - - -

        - - - - - - - - - - - - - - - - -
        MethodDescriptionComplexity GuaranteeException Guarantee
        -
        inline iterator
        -  operator*
        -  () const
        - - -
        -

        Access.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        - -

        -Movement methods. - - -

        - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        MethodDescriptionComplexity GuaranteeException Guarantee
        -
        inline node_iterator
        -  l_child
        -  ()
        - - -
        -

        Returns the node iterator associated with the left node.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        -
        inline node_iterator
        -  r_child
        -  ()
        - - -
        -

        Returns the node iterator associated with the right node.

        - - -
        -

        O(1) worst.

        - - -
        -3 - - -
        - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_based_containers.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_based_containers.html deleted file mode 100644 index 08ee428ec..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_based_containers.html +++ /dev/null @@ -1,246 +0,0 @@ - - - - Tree-Based Containers - - - - -

        Tree-Based Containers

        - -

        - This section describes tree-based containers. It is organized as follows. -

        - -
          -
        1. Overview describes an overview.
        2. -
        3. Node Invariants describes node invariants.
        4. -
        5. Additional Types and Methods describes additional methods -that tree-based containers support.
        6. -
        - -

        Overview

        - -

        - Figure -Tree-based containers - shows the container-hierarchy; the tree-based container is circled. -

        - -
        - -no image -
        -
        - -Tree-based containers. -
        - - -

        - The tree-based container has the following declaration: -

        -
        -template<
        -	typename Key,
        -	typename Data,
        -	class Cmp_Fn = std::less<Key>,
        -	class DS_Tag = rb_tree_ds_tag,
        -	class Node_Updator = null_node_updator,
        -	class Allocator =
        -		std::allocator<char> >
        -class tree_assoc_cntnr;
        -
        - - -

        - The parameters have the following meaning: -

        -
          -
        1. Key is the key type. -
        2. -
        3. Data is the data-policy, and is explained in -Mapping-Semantics Genericity::Data Types as a Policy. -
        4. -
        5. Cmp_Fn is a key comparison functor
        6. -
        7. DS_Tag specifies which underlying data-structure to use, and is described shortly. -
        8. Node_Updator is a policy for updating node invariants. -This is described in Node Invariants. -
        9. -
        10. Allocator is (surprisingly) an allocator type. -
        11. -
        - -

        - The DS_Tag specifies which underlying data-structure to use. -Instantiating it by -rb_tree_ds_tag, -splay_tree_ds_tag, -or -ov_tree_ds_tag, -specifies an undelying -red-black tree, -splay tree, -or -ordered-vector tree. - any other tag is illegal. Note that containers based on the former two contain more types and methods than the latter (e.g., reverse_iterator and rbegin), and different exception and invalidation guarantees. -

        - - - - -

        Node Invariants

        - -

        - Figure -Some node invariants -shows some node invariants. A shows -a tree whose each node contains, asides from an double key, the number -of nodes at the subtree rooted at the node; B shows a tree whose each node -contains, asides from a line-interval key, the maximal endpoint of the interval -of any node in the subtree rooted at the node. - The first tree allows querying efficiently what is the order statistic -of any element; the second tree allows querying efficiently if any, or which, -intervals overlap a given interval. -

        - -
        - -no image - -
        -
        -Some node invariants. -
        - - -

        - Maintaining such trees is difficult, for two reasons: -

        -
          -
        1. Various operations can invalidate node invariants. -E.g., Figure -Invalidation of node invariants -shows how a right rotation, performed on A, results in B, with nodes x -and y having corrupted invariants (the greyed nodes in C); -Figure -Invalidation of node invariants -shows how an insert, performed on D, results in E, with nodes x -and y having corrupted invariants (the greyed nodes in F). - It is not feasible to know outside the tree the effect of an operation on the -nodes of the tree. -
        2. -
        3. - Even if node invariants are maintained, it is not possible to know -in advance which search paths are required (e.g., searching for all -line intervals overlapping some interval might require several search paths). -
        4. -
        - - -
        - -no image - -
        -
        -Invalidation of node invariants. -
        - -

        - These problems are solved by a combination of two means: -

        - -
          -
        1. - The tree-based containers are parameterized by a Node_Updator -parameter. When a tree operation might invalidate some node invariant, -a Node_Updator object is invoked to restore the invariant. This object is -always invoked with three nodes: some node, say x in -Figure -Invalidation of node invariants-A -has an invalid invariant, but its children, y and z hav valid invariants. -After the invocation, all three nodes have valid invariants, as -in -Figure -Invalidation of node invariants-B. -It is well known that any insert, erase, -split or join, can restore -all node invariants by a small number of node invariant updates -[clrs2001]. -For example, Figure - -Insert update sequence diagram - -shows an insert operation (point A); the tree performs some operations, and -calls the update functor three times (points B, C, and D). -
        2. -
        3. - The tree based containers all define internally node_iterator - and const_node_iterator, iterators which can be used to traverse - from a node to any of its children or parent. -
        4. -
        - -
        - -no image - -
        -
        -Invalidation of node invariants. -
        - -
        - -no image - -
        -
        -Insert update sequence diagram. -
        - - -

        - In -Null Policy Classes -a distinction was made between redundant policies -and null policies. -

        - -

        - Seemingly, in this case a redundant policy - a policy which doesn't -affect nodes' contents would suffice in this case. This, however, would -lead to performance loss. -Figure - -Rationale for null node-invariant functors - -shows a typical case where invariants are restored (in this case, to the -shaded node). In most cases, tree operations such as rotations affect only -the lower levels of the tree. A null policy allows to know that there -is no need to traverse the tree to the root. -

        - -
        - -no image - -
        -
        -Rationale for null node-invariant functors. -
        - - - -

        Addtional Methods

        - - - - - - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_cd.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tree_cd.jpg deleted file mode 100644 index 95afe317c5d948018ff8213fad0d54ffdfe71a29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60672 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

        8t%u)@g_=DszBp8|RJ^1#yn6sfZK~I8Y zz8glM(9Xq0F{Y($SXI}-!HtQwwCmH3BN3Bq1zOTPRI1o23hfd&+Nk)rn5TND8Mb-B ztY2CF(oLB&?l)})WIuY*9F(Y}%)GKDNJTG4x)HLEC1yUvoc}Fq^RuDs6@(j(A1B@$|`zyeM$UfH{1Bt}n6jS!BW?U`%A` z;ZsCZMqfVtEqY=7XrwF~PsV!|1y9~pz!542G{OoHL9nW)Da{Wjn}3k62=^Cwm$Wv&P51$*#{gT)bDFb zc9!gua#DVKn^G?5DV^R+HrT~Tc`*yUibB9fs zes@g~kQUGIt&@k}tAy`1tgsiFM{oo!zGv3K?TA=RJ}rzE8KjD4kJ1uA(|+`rogSbM ze0&KsYp0z0!5R@*Af}iG`kH5cn<>A4NG0?SS+VuD#yHA%6PnDyL3SfUxKy_IQtuaLO?k0FJ zeY-;L{Bl~or=iq$S!B>y-U1k()gKeUCJ>Ent_er4Ukfr4tse^u^N_+gEAt1`G`zo3 zYs~wtVjk~xoMVU}PkUyh*q~)+7Es{s#-qEV% z-hR-c_+aq*%3zN@%ljP`k}Vd(1{0^g48Scz=5Z@Qi=V@wUoL+j#Gz}kz#}lS6-s4O zL*8DQiIAFERSoq}_MI&2%~s+Jd30Swq!;I~FjRibTcyZqG@&3iF2uGl?fR|r>Hz#> z=C5-BZ$TBG#uoJCLmQZ_k5-DLJhmR{NxO#|wSqOBcy308ggIzy%4VZUe*s=#JocCY zbFnG(pjn380`W@i9(}}6yI96?hJ6OY;OmB@l#@McQv+`YOTf+@I}J6-7Z`viIz_)B zCdIBIv03#iD@wNE#d=1I%7gUy&d_gfZQZ`}we%++t-M7(7)@ywt9)Z80K?NOdp|P) z!dqDf(b{)}=5Er(0ZuxF5|)cFk+RbtbvK{Kos=qKM{~5?e$yzs5uzrkghht7RxADV z3qgm!!|2-%T7`jkTH#4w6|p3pOuT3K_l%O+>vu0AUS`f1e{Z9!qN(%IsFX!^ zOos>`={(P@2&Bvt?r?kSbnAqq(a(6}E!M85R?R_tyv`bV{-OeCGa0$XmC@@r6E;{G z8}|KL%%ZEijLx1VaTV0_u%bd4q#4rPI`7rCkJn4Zb%W{>RZ>=)_z4pagj z?Pg>odWLP<)2$#nqdI3@Ol_j8JB&!A=^L_OIS+E3^Ck^Nl`j^1te(w?6Vf}Jje2{+ zL*nH5+yhjd(J3@DcsdXJlG+@O8A&Ac^EPWLqB7leMmK!8p9QVRcxv&;d}-keTg8G* zCTdN3%kK%U1mxRjARIe-23DduCWY!bIK3#H7;DSIJn0e{*deu}`GRjh?1>OrEBJ_xj!os4J*`~&5vyl(>Zbi-0 zLa*CM(U$rT?(0QUwXJ(ln;U;cXiJz?IBh?iMO*@HXCgxuBS08cqh5cL%Yau^A_?=`!LyzSM{l_87%%b7bXzV_bHV2_Q zZx}c#_Pmp+%68i_P-%2{FXZdzv58MOH-HXE^3u~9FIXeBI*jbIwSfTP8ucfyalD(% z;%dyy%vtE5Z*5ihP2JpFdCCq8C-M$YKF<3= z_fGF#0yL?FL7=~VH4SxDCUWhGtS18BC6te596xc$Ho*&z>;3iyo%bH5-Zk|fr9<_A z?O&C;73uv|B1@XS<7MNL!T@}802=!<^+b!hXG@8yCp`u0WauugM%}C1jY}Ul;K#US zU=FNOuwMf!#>m}Nb?ybp%P+&EI-mbRioU+BS!>2}?FIph?|%6B8%^1|`% zUz=2J98^7@2)dZ!%m0AKjv`jn5JBc17tHxQRi`sTl-?UlE3Nag+8)IzsOwBpaAaIT z4``xlLf5XxYjPtt-SF&qBX~1=<1D;!+;}1KYXmlQH4zrm?!j_`bVU1NecV7ae0bhk zvD;9-NShaIejxa|442hW&GqY+(91-Jb+th*!9G$X&Hz){%W{f}dZ=}&R{*W?WCuqi zdxekC9;(Mh?CwjX?kB6w`EFA(gN{!M`B7ivpzAha$~T0zQ}=zJ(|KxrNAktBGzl4y zSCs7T^0tzF-;&ONTQreztgWT9wG zT6&qqN)rw)7g!Ie459@7L^#Gdp+sr97nkz!hnHK@Po0dvnGo(_78R@;M23{-iN86_ zsXO;F#Cv$XuIh{1v#0KdRODRoE#2AyZ51`KeG>%|a?S^znV$0m^h08z39&^s#56G2 z5UTTi2u0iZGSlLXx4HKdzCBQF?&ML~=@V^Q6j=>9#BSlVDV+Qc;F(cNRTW8m_%g#W z>>RuMBWEGc!ul!k*V{^7l->m<$B`~SwPD{5Tu8%(sPrLZ|!0@`u)MOBk=w^>Y%|GS5 z1{PPk0W6sfLHbGF8e+p`>*+i6>;zM&wlYGOLG$^U?czm3{d`^uj@+UxS9@TNJJi73 zJ#JubKefJ(RvAJNk-9foL|$#S`_+&LecVcCVyMY2bEbSbe9OUSsIFL7_PawDy18o} zue*3FO+#gdjntjd{2$DNnFrh3&$%Al-(N(VejmKp|5yWyG1po-!#&0%rELbIW^DUz zp?Ms=*0^u~fJ|hZWc9ZviXRyx$+cx6hrR8Wfc`{|(tH*e zNnpgrFd9FlWXDg~Ps2U*7PUOxSP~O`ociH*){KYbC17PNnEj^#=8+CGh=2vkK;&)D zo{Ja>rx|0}&*bMaGW*PCxdG9N@aBqq35;|rUyjOA0lAB~Ov<2z_9={z)$@GaRF1J5 zPROy=WctW9+bo+Jq2f5t!uK441zR_tX;wX1bm_aJz{js)?MpK9LqZ+4z({6ud{QaI zTj#1X8n?p!gqx@D;JOM)M>*ioh*yU*e+gXomI&D~C^lSQiFS`#Vfjr%Nm}pp)B}CV zDH?`(Mpd3N-ltkOtYI{*H;w1zk-_?&bo(Z6%89gTYSEKjXb^1^io9|ldCgcrOKC;p z1KP}TNm%mxLLVt=9)!*efvxWK(@gVPJ$Idhx`F+e&h1e@zB<@^j}Vj`DY<)*4z(Df zfel+dewzAG{@H_ox3q6xc#>+_&|t>T?Sv!~z=_5)lWX4ARMduC(`LOF#<%Qg&fv6Z zjI$e8kZt2jHX;~qfKybaTjepq;gbjbtyTfk*9hMSCTFzU0%N$dyYiX)l}cKdc$qw( z#Q`xle=={RCveb+jS!dLQx8Sja#z~eUmr7w=?q@7(EEO|0+4h~q@f@tJw{`JNcI`} z5eYf>F@N|rY^4^Pd2$(o6z%F83t6{{*_Lv!R+R8qer|8l*o!Kww(^pf7Z+WW7f5wS8t_X2_&zdF-P6l>Q@8 z5&AyzH5a;KIjKG|mYD7r>-91dEgz}ZeAXb{4NUFA=D*psy;Er$cbWNeVH9>VNV){pAp+0hqK9Y)Y(Igg@ zv3|_oEtwHmP&atM5+$46cXY!^*(-g0BDDQv!lz(J@dST2FZRsbL7G8s4(GY2 z&)gMTXLsYQoopPwciCDVzh^4*puM%gDsuhhOFxgru^o~ur1Eu>STj1|Kq zePYq^Z3Y%O&ql@AKYG`HxtNhcLhjZF$>UNh0f`Q-Z<&^LE!npD-|=xU6zw=hCsiv) zo^P8P4sKc0$m0)u#)%W|xT*inZRe#f#ppDvz7}?zygHZB4Rp2>nZx5$A}qz-_V@G3 zNSQgX0CEQ5xglV!7RvSY>nBh^Il~BgRp=~}s|zDrA6j`1x~oBHn_SXubcJNC%B`NA zi}*WIIvX~=N?eV4c{-L!PkA4<=R0BXz7C6N?n}cnA2&0>r$2f}QPTxGTpz0fYdZL_ z9wI=0w@bjI95!v%Dn&9>r-ou3OdrVL@VKojG*opb>b)Y-TPGBiVBQ>@!QDv_;bm!^ zXTxJXHlbQoQTMsZHikLttF&Af8}%GR`C5gmP=fb0JPtjsk62PhyswNdu*mVxq~cv% zE8S>p6UR7Co<(C=GAb|&pv{lg82<>Li^O+NI39ge7SPI-Yb4#-RsOW=K+txh!xSbvCC>D`Dot@ zB=LQvjhB^<5PYLF9l#g1D7k9|k*#J7p)npU*&Q?d{P|VSi~hWPv%D=AN35LYn-%frt)7;J?2ta^zEcrNd(@XG z_!`W}E+$v6>m2I-TFLOYOQ6h_Vr|MGCYTxXsSL-k3;7TK8H_5}OZ=y<#+lM-4h-)% zLtdYAs2yZ|*rI5#{nFaERJe|1#M=Q42VVGsF?Ni1JnG9^u)zaI|1G?8b2kn31*}_I z=hMwCuOqTQb`25=u$$$~=7@aY+{QM})zZ8$!_`kvLLa~zW`?)kL8pN}43+~rp+NX2 z>aGe{-)VZz`+K<)n8xUg&j3N8yBEKWflm5P$g5J-kNO!SJ#}uLk+J-S4+g~9{Vm&< zm%P7b?dES55YqFvCDX)-_b51y@pDh+b=}fLMY2h^`uS|Cx5D?ycN;GP)ltz?nuYMr z?)k{GbFd0qc_|g53BGw%1_bg|`c?@*RlM;>AjnUmv14K+?&aRYCWDAi?c(=B_E_F= z-}8!n#Cu51%vKIH8sU^M-n-lEDn|c}a(3LY+sn(zuK8Y|(33~Si=19wxQD^EwyQ24 zsUZp)+WP(1(Wq`%4!dOMmrc_1F_QVM zRCjQ)EyG}1(WZ-r0f)uj(PMr6FxMBWdWdba}xMK_`F-oZ1z)Os}9I8&&1_jZ)S5Wa%Ee#8uwd9>2UaE6EPsUKZi9Zo((o3C`E zkfI#Qw@0Ea=6x7Ta9<3NOK@;5wR=vE6Fx9!S(K##^IhpxRa|5Yeg5Qziqm`%E6&z8 zX~y3ATa)sG`9Bgi#vXk3pD(S^OVxHtuDVcP+$*?b?+qUM+*$c%W?o6TLz;}~_(=$ocmhV3b@u<9 zqlI%e3=*AvuMc^|7q!7OOxP&$Z}SguUw!$*xf2Ol?6Pz2-d0zoNh~~$vE#2}eTaW5 zUK;sZaviD0^pqaLRIQ|O7b~LB-o$z_f`HJvZLp`h_|Yw4#h1wqNis!_f3*%rI)9s& zeiEx~Iy1z>-d+xvIdHG}Bu83jD?yP$)Hm+_fPu)bu2B&$yqw7c`4IuFU>sd%o!*wy zwSea%W`z;BuUJy(&*MSL{F1rK5_eNL95CQtnVZbWzdEC z^M&?UG;cJg+mJugoNOQh4UTKZbo7BxxEOE z#In+uFP3(wj z4C7RVxuvY7VhS;Q?p_Z{^!I7ReYqCQqN4BTbWm@3>fAkk9SL7E=?D8zU~Hg;OU2&_ ziK?S<4Jh!?>b6bWBsMYTRMLMXck=^eh^cTEGyoXAF_s@yFe|-s)JnkWF@Lc01vCKS zvJpxm&{*5G(#=XdkuiZy+6T7#fdxZqbWVxOl=StUBYB{{9m(%ezw`89d4(4fFm@*dZmVNexuJDbIXIj%6tdU92c6@;igWuFQ08r2jJ zJ-eOvln8MWdeMZ;WBi+c&c1g4XQApoJaTsb*81!*vFQcH(dIAR9BYuOKh_3=FwY+g zhuI+?BHSM%0&_e*r+W+*@YehF?bvZRZ6CuAPOvVJQQz5n5t1rPG zhii)W^T3cQB?vS&rh|>UxX|5H0;0-sux)9I@nl!?_#AqA9)LpOf`zBA)LY<(ch^l3 z7>o!|zyB||Nk^atD3kaA+JRu*{@*>K(P&`6dmj{)?W0`Vk$FN2J0)W$v|$5HcoC`0;@lW&Ji3?6bY07 z1bG`X;B#c~c||0XFDU0H{#0;PfZ`Y&8$|6h0$1|x;>q)O)ZbT<-ldYu;BLYzw=^0&>* z{3;2-)Je6Nrcc%-sy~IPEc|z23NUyF{A}RS5e{}f-SVF zuIo#olAJY9QGX$AlD2#$^Qhoi=?oA4NCtc_Fb!l3fyKj&xMQatF1rebi%gcvlAN7`UD|qI#m9#+KDn7-| zn|%&8R03dtNY?}Uy5)pm_GitPd6ZKN%a&rhVb+>ml=$oF$$;ZHP`QJNDdl=tnDF!D zk_z`0l%D}3ityPbuw)=L4mK5{S-}yapgS7{`;Ws-{*{LC)d^-9Su@a;6xZ<5zA>9* zd)F2(+SPR9y67Q!o;=tqj)+9bHc*1~Fkso+pkat$-zl{>?c;^R6w-7 z&4}_Jg(8Sk78Q?=BQF6N7$Xu}eJ>R(PP$6szrt)q?~)=GO?H#&%g!PK(?3r=V7^9g zqQfp;3wbW3-PuJg5kUxhVS=cB$G7H5f^JTd-`$70KgL@){oTYAZf#;R&WLzFJ~4UE zj-+BTztgxEr~SAKy7kGj-dT!%c*}W`T3|9~+5O)5mlY1|6}{*MDSh+8<@59}_+)0a_txE-(j;#Sh=-V!ZOG@{d=A z>8h-tr5yKB!Ta&#!2X$Uv&c}zU!G<4i!fc06~OZ1DwzXUA7=1JVT$~Nut-z?pPa9p zTP~ua_p4Wq06lR!Z&?_nemo0WOyr@d&FGcM3d$Lc3B>mcvKni3mXyB(xJg;Ir4G?z zeb_=Jl;>d|tPX7{u#Y%yg&UV!>!n6vqeqrHD*SklgnbUbfA5WF?#oBcjHi@keP@SY ziKaC9$NxA9!Q;xoA4efqoYX_KDfd4l{y=E<4@trQXkz_o2mi)});%?DxIV+QTc4Eg zYed5J_0v+y=`*pIF3B#57-Njs*oG9_V=p~qm0ayB^tX7tW?_faY!Lye3nfSJQ(7db zwe6v2oPX-c|Mkd*|MF)ilsMQp?y+Ecj$sU6%lsWCp$EG%CHC%K_!l-FKGeXH`A1#R z;CEQOi+Gd9Vyi9j@nbv_6K%OG%2{ujZU_y%jFTW#Vhrc%3zH!5po-XR^`%cj>(sYT zeN0q{r>iOtIDqvRjfBuOj(K$?Ht1u~Kr4Oe;QhMIDF_mKl;C&plmqzjPD|t&F5)4m zD7iq)Gje4L zNUHlk#l{Tff1a}k0i6GGa7^9R;&{)tt6TAZa0bun)jgzd(D0g}NH85d zyP~!7@Z$S!<@J>kDdg`e104iI|0DrJnnNJT2)=a40^ znc=FKDgG)Jko-^8&|jqNr_f&!R$!C;-&BDWXaB;ys$SSZ>3Y`v8aOE|KDVYIb)S1VIPLkjdf9fOO_P^@byCz{xgA#(_Wv>8>CgTYS}Rid640JE zJ*Vb`A2J)4J3z0)N8EK$?JA5H*kiW;oWQ?v+!fe*@jv#7{^3b7KYb?XFPvUQ8eako zV)hq-&%w~n5zJ2g6)%4!^?$@$O%*3}7My1hd>&}uaV`H7d%D&}Zu)1)l+35059JFQ zi$;GxPEBpp-$4A>|F?~YL?L2OdCiT-d|dG?T^kvGU zaO^KrM0*-i^f$0WX$tmS(7^_su9Pb1&Rp8R#`r|yuhdF6!u-YiuMPYXbm&4C8&BDi zSwYN0dkhs~1D><7H;atvyAB=*ac2{3Jro3-e?36uzx&w<#SNl@^uk~T3j9nI2A+x7 zHoLc&3BExG#LpGEod0GV^yj_&`|tmG;br=SPExM7Y$Huj3e1&xu)x*l6M2lCMO7~! zp&0HEXb=AY<7<1_pR#+VT=*A24{dv#$&_PaJn%Am#8>$m-7}^1&8e@1GWxNEF=>#BFS$2aDBJr zdDwfFw@IIPl2n#RBJI_zuC4wG)JG!jAwhgW78MINp@Akl&|*D>*m?8f*`#vqP`T}` z{Vm=KRkfimQer;Y#Hd79k?cBNw=^PB_o@kF(+_XBiD!LE#=72YKb2^dZ+A)n#;`9>;ilQNK>7q<;lTC@JY@@lYp*w8R^+#17^`vpDR)>Hxr`l(Q4QhHdIY@uN zlm@2yKPC9NZU|BU@scop?ld*I+i;}tMorQxO#E3&r)-Da3Jcm73H&{21~99Cg^*uX zPNQW}5)+PH6e7Q0_||OZ*<%IKiANE&l@5^xt&C)4+3DqCL6P9WewAAJnkFXSf1Br= zbz@@*I}ZWY{y{S3PIB#{3IX23P!$T#h_vi3%9LYOvDuy|=3e2-8)(U5qqei5`4TE~ zP}1(K4}Qls3z~n<-KZd|wY3l7B0K^&pLDoWBlCr~q z8!Y$~^H-MqWE~iH#?cw(Xc$W^9-sW>uuo3k0r_yC)Rt@XL&5j;6SX|TG#7KN=@Xx! zT2bJ*GnFvlpX`R5%?5$u{&JDB63grjv9O=rkmf@L$nonEi(ZZZ^D7X^^slC-~H5kiPX?Udqq-lK-c!~rouQ9q2z~9mYKq&f`+%W)+0Ji;l*TN7O0?wDJ5<7Z1t?MY^%&Hkgj68VQT#JSptOZK71 z;f3z~#sq#A;tkhKQohLg;w68@EQ5_~2;)DQc;SX;Qe1eZk&PI5AjkM*=Bb5m2$WF0 z-=)xCY~fjy;7FpIfon;YjOT(ltb3E6jIY$EpO%e!`z<@f>7P8hq^N;q?bvhqIFvj& z$17*NCU0Wg;Iy#mozQ&1i8M2qK5Vx#Wz^g7y*_fJ%7=I0k`)vJ zK4z4YriK1P4zwXu7C2oS@wtxbeF=0gsG0PCWWK&OpYDwr77bx%vCQOn+uKQ+dGtABvrhHaZ`RFy=cxv0y4iVMj%CW z0qFiLu6zk!lG(ikE&@Q;ryt|5?IKuOxr0((4Tf+1jKe>HEn=%kw@ZNKptbS%XCO78 z`iGMMfA!k_i=XK(fzZaq4%MGMyD6v$gP->L7bNJPnde`!=bQh%vkW)zmd&7rD_tNy2`>DB95`7PPpGu$Hp*>0;y%k~~VL&mlzz~JeOO!1*vdQrOvG<+r4E#x1K2T(5eQLUug);Tnbw$Pgjz5YbZ$kwWCZmR@RLzw|Ct8wIFc#z9-nA=hfi)ES>9E&}# zG(_K8Orosy(-A+Ux?lqO_hYpXxh#QM6dJ z&C#NZ({0J=abjdmeHu`-88b1rkq0FSgSLa6QV8gvJ)}tG=D16MY^x-ha7=%OBcrra z@>=z?*TycY4YWKmUTOUPeR}tkDHe)mmWw&jX^6$jCL!!2=_@nf6OI%sTzKXxQHxWM z8nY|i1MmHb+EB=qp%1-#Q#?nggYKcnm4h_$Fowq-t(2gIB$1?7Xg!v0VF4Q`;<0JH zcvn8ny%LgZgi%+H!kMf&d z^|FxE)jImZW3p(gvf+twWe&~cHR<-Ml8ZcdWqhk`eo1Q!&{rI&{z&VH=Q!I2p(3PZiPa zHgPv+epM*U!n8=U+mO5BMd8AObHk7C=Dp9U6dg>VAJGX&-@MS5T)7K+j0}){`3M=f z>*CPdZ-HX-X;8OFn)nZZw`-+LrLy8l1?uUNa7RXgfJwg3qJU~lm=!LJK zmoD^`AWN>jWiHB3;6QaP+6e8GZA>IAXVF5hTWdq`*hRzx{Q2WwDp*8chYCe3sA2eB zI#YjT7Vs4g?#~dpR5v>%QBp~~v^8@4pf@FNximT1j`l4O6AuPT7y)uVmjO(3j|CYI z5E%f6y@gj*0p4P4^SCn`*3x$#x{ADuD6e@k>1Y=W7z_!oO42#c#SWMz&xdbg<-&0B zq)5N)5n8ij+T?x;BoIixzt@pNzCLez$%O+Z#J|DTJWc9DF~$L-_6+Sad2*#mG;o1( zZ#8aj3es3b7R5X;Y8kHcGCPJcO)7Besv&x^bEd4)ev~buzQL*7(t*quE)iR!~-#r_(%zTTnK6!+P5W~ zadB=-q8{XMTpoV1hg^y|R(x=&k?2!}*d`86+X#BCpaB9NaH53h$hC~n?F3yHcIFZB zop>5H#7r3tCJon9=wZ^jgbj03e74(=Ht@~Ma8z+a>Ly&Wp7 z#~H^T0T3#IxJvNXO?BCq7)xHRYHbhLQu2+J5YGN544nMpjM6t&uQ49p@BjQsc+_8JLE;T% zCg7Y0IlYVm7_%QO0Ecssv4@%Z8Q?dqp#i-K6Sd^J4e*!&op=+t>O z6t=lbao22dUYPO9eHM7~ut98DBAPQfmn-o8fnXBt;D(_^=y%WtwM+9;0zVhC9{uNT zLwa0uJPaVv#6WP5trJ<7a^HB$Aa6h%BXnIgT$YC8LT74i>70!L*wl8kD5*Bs_bN-9WF)J#+ z{o41;-EUQ<>g0EwLUO{Dgs^E;utV1`85|f4$Vh`ZM*%yXoyjZfD89E@jT6mxujGh- zP{RO$`9;(x=?OfTp;`K?y%v2LiR)=SI5CR3DlxhqlZKHlEl<{|1d-h)ZO;>lglUTy=%S} zdMXz0=r~Q9)4Hx|tbhQw|N0#UBplU%0AAv=`5za^;erDIw+?!2l=sauC&j=H&8+e_)5?GK@9!WaVDLY`hB$vp7ft8IUy+INr&tpmW(`VKk* zyn}w+-0%I_>HNoE$^N+UmujMIZHCBkgFw`Lu%!0!l#RKLOK?nsw5TIZd0`$Hd9QvA zBOg9X4-}lJ0cs$qU!LF4pPv85g!<&GS>Cs?AZ)-3^kI6t&^|5&WUs3h+Us%6-Blv| zK;(_tU`af)RGSB2945P$|k8JYk9G8=SpKs6m09MQt| z+g*UTNj3oT6=DkHEk_Lg7{&g3@zDPS0R93#`}YVU7duloIV{h-YGBVE%4FX|S7^y( z%}S=%fNaO4@#1&r07Qa-r5_xL4ZwZ0XGSN>C&?7>o-@&qw*!28T>~1 zfT!|D=)~FQ4k*&^pw}~}en7f$>?~ikFNl%k`>q=)Uo)L&4mq_Gx!#AmYac}0-4_B6SnUl?)u|1r9;uh z?BnmA__&ownZEY-DETrnGZyIpIH`;(` zbl~JB=p1?PBC8eh!4ZChISP5e4(Aq^GtRexafOwW?^6x3rI(_mr-C_IC7sJ;lB#s-3OMo2ZuoV@YkY0=Xai^ zna=&lVr_gnHf7v1M}3gvYsw0pE4q&-mRqusd^$8vz25R5k42@d_Bjo?kK}}MYMb;| zfMI>%#2|C{{eaqK9SD*dHnxD=dxnG{qG)Yq%)FV(uC{xIZ38!PW~$ph*`~Dqtk}}Y zwJL*?Q)n_$ycWPw2H}m=K+36SxDudTP0XOg^)9)_KC5FMlb@5@tkEeL15B7F`%d>(dFJXT?jwici7&B%6)pY}2Gg~WO<-SWVH zJBdl6klRkwlz(cow_(&9+}S`^%5tHNj7+GAS*amcN$0V9wQj^x6N4!x3^Vk(8&!Al zcAH-*zVflafWg30%~Z*qsCVq1*pIzlfs+5=>Czppk$;PHVv5on;&>7x{d_kaRNf1N z_-PLC>p`@Nbh>yBaI4LPh$ZJ@B@&#MGeE#%_n%+uASBd-HLl=5$HiBPymI0TwcqTK zxlm8J_GoQg$$&LebzPPJ_&9fLj5$uu{*9mgWiLFQ0Dte?i&gv04+sdc%j-|v!jRIA_1}&FcTsnDAa=}glPA78E>Ej^ zmCVf88?+{$s|aaLq8uu{F;H^qtXx^6FP5G4K<9L3%ZoAv>*Aw+@it1N&TkQ{8d#Da z4TV%|7o~SHeWIlFmt@SBTc&%}aiReX`Hft#f^jQ#htVc#B9YH{?$x)%L**#eyFkF) zaQ?-kKlkv=geKva58LjGOI-HJnjkervz{9Ddl=Oqjs<n$M_>=Q|~TP5*jdiE}hRtDVf^lvU1mv1DP{!~B(&XH>4= z59?f>FTwS%*O4Ufnn2y7%Q{2OluxN009);YnH`mV$nhnhXvRd`uT_J(#;0kG7n--N zRAt57Y=R@l?y{PyCEe%qrsJJ}DBlyaHcvx79cZB{3**s7`Y+2GGuJ%0#6cmnTT|FQ zmteCImgnfjh_EiJ&(^jIH<-4Jt9|>*|Dey?Iv_GQov<^>&Ptr*AGYm*K+f zHEvgO4UOlf0IHs3^&X^la1|{v11a0MdvdFIAph&e!~0Q6p_ZBBSAC4}Oeft0)jNQC zNvj5?sP^Jx(zbDHOq^@UpJ$eC^!ZQCFeV)4v!F-E-n!;<_$X)+RDr zKGtAQ{XiZuFfm=t1`qTiuBr^0#&;T8if+6feDYZdw7RZd!!qZtjAKzh=JZgRPv4=d z>M^cqsN5_8V6@>O?3~_)5V*-dT43|_JE$}X@Q~>HFalnRjDS}uDT&u#ac-^-ft~Q0 z!kp*W@Cn!y)*WnbR?C}dOnsCL0#VTHPGmU0L)6PDV}l8BtLLsd`yWwzuqbq=T2}}H=#Q8s{tFC&UNNl z2_?0T3%yeEdYWQL@+{O|lGfVQXH8(aE$$?V3Xwj(lpY#BGXvCSQoa4rP?pk83A6@U zgHWx)=S*D$QU18fC+;V#QAm6Pjp|`XFtL@$eYZ6BLscD|Dds1h`_oyLjLEIuLNixZ zw_se&r#H60?ioNjv@QV`SMGYw@lh3v&lAVgcM7f!_Br}%fsD0PwG1WM zXw)FkC0&w_DR>)@#v~dDuHiseNY*I5k`~qNmy!2ffvTp5!d-S$SBqVOCgzlq^P4l5V+iy$_y36DyXFZkqsLVjB}umA5pkNpbQ?W+me_idWP-ms7s(0GvQATYb~4~$ z7~!I3RrlsMYB-=N2JlAZc?jXOmBVOr=hegb2cj^W%Q)V6NpB8w3=l;%Kv*n&DGMbI z__{}Ihgy<1*lAzJa~c^Bsm+@R-o_Q|YG3WWGO|tYU&D6#(gH?W-oL^3Z6RiQ>4qjA z0mY@JgANAwrKIsNKQ9K$@+x+XLW9QbFyZTuDP>#?-3cYH7e7YY-AL+#B@?Yx)g_xV z#7uu$$?WPpR0vP$0Bo#2A(Enu-M8J_V$0S0diZO~UR;il#+)LP2a<~x%j54?$OK}J z0MAHq32KYTF0nUcm!t}{Qp}jRq`L8)$2I)(9K#5qZq2;+cdfQaK8MN-a=%k8#}M&lL>cE_nf?F_tkER_Z`VH}|Nr*+f4Kc_4D*oCBL=*opo1_In4MTuv^T_FBH*UgZNorBh^3f#4GT^)w}@iqbMM~ySc z?nikez^(q_M*a6Yo6hkj_Y9Zr)`rrT>l4sCi8XVD0`?7;#qujsj~)m`1Jy6r0N;^| zAu;fEgs$nW$XXUl_gG*&>_`ZK7I51vmiR!FxPzpcP0a8y@d zYYb!3rDuM@Ub&F~M4T(7d8~6cTwtQNh{hN1iQtEj3owBj#~_A4ieLQ_?1jC#CKx2vp)c zI4q1Vi?G6HLOK*y?(llih#SLg&yY8P4w(X0EU782FV}e~`r782P2}ylK@?+9T+ML* zr;)~bDu#hQmj~lbS_AsfcsZHTVaU(4o4A~h|tAus}j#l(xAKwb#f6tGDC#Z@i_jGd8CNJq*3Rt_UrmXN;R&|B{H0e51H<9eT3&3Y0 z(+;MCg-nvGnp4k)i!2W?j3gub4G171xerx84Aw|xH&|%n(~Vz>yZOv^zdO$lbFYIX z)4q2Y@?1gd#4HXMj$a;NT~J~ys_h!+T=WSP^_V!@E!b1p4YV&0^Aw=|QWUFF61q_s zNM%Y4tk{YZMnvc9NenEK*bqr?tUgfiL*HGi;JL+4`iQ6maBVv*;G?>Yw7px`?_oYG zyfq)O6lp-X`o5g_1G`*!)NU#bOuP!#9q=-x-$NGCcnsC4+;WV6k;KhgNvuF|2a}sZ zSm;`na|&3$c!=**YEgmhSSL1k{;t32(|{T5pmP0(^NJ)2i1OwF^qy2roz)&^vEg!h zGf5xKMotX0hNJxg^%V4MiSqO|4|an`MLI=x4AAGqB&+4ZX}U?%6H;TbhsKP7&Jzr-j|x`{Ex z$;nXiY`HQ{$Ve(CQU+L)cdV+8&1kI=ejC=X(``wx^_N^v&Mvq$$Twx%EO7-vR*n@* zP)!?M)a9C~EYR@u{yow<8_H*xyGhE@UAhQBisv8S_8^eYTDeJNqw9_Azzy%an4hvl zd(nJ85~R_X`vUb=`Ks#T@pr})vbANMMw{_@UJ$^?x~&GPWT{0zJW^5Mr2%0(=o9k! zA*Nq?rXzbkI?S{%b}`jm8&I=hHq?x`#vYYIM~*KXM!Nx5)%>Y&g~?L#}3K5z1W#R5j?66pa@!+tU`&fy(TYet= zMsrSsxqA~GbmKZEd8*<$1o4V0PYk^VfX?#D(g&|6{L_P~GH6%-= zAEP(BTkc3*FzCbp>~B*7HPh5rltGEA^V}ovkm)vItZ0lFHLDPZG)T}T&)OdNb;skk zrW^@ZADj5{UM9QV8L)BMuAeIPj1;8TKIs=ft zU5FKdRl)gS^7lNbze8F1l^9Ts5_6n6zA^@6qrd#@C~_V`{^JGm|6`fNKf^t^IQ#uw z5eI4VKeg6L)rB{=^cgg4#vM*D7C{38#`DOzEWUj+?J)#D>@jd#IcKKBqh~Ii#1f>Z zpcEZx{hhReE~X?c<_~G_K2q}c zty8I|zB_S^E~(WjnV7IfGYK`gc`xkEy=X_FPYKJ}4WNVk`4$iAjBc}m5vh__!IT`$ z+=X;+C~}M+AP}{JK8FhAcg2b!@pLR-_zEa*K15U=`7*UE%(!4|Q$DT2tjsaNJ4?*FiE=+@S^$x<9plZH zStH=BOfzj52A>pe-+btSnjRl$E~@*Gnkg+O5DqdwyRJ9A%27zM5;QB$tHf?<*3l|rWXb#qCzayeOZ zU9VUg<&B*XI!ODeg^(!MWIM`^_J(d{>ESAaf7mWw50Q%+tjoRWs966r`IyQ%xpU|6 zvNPx>C7J0&*Bm$^22ca|)3N||md1clN5Xm)FFHYvq13FeUGjn!y&;1Bsckt$1kN~U?|W|J5VQJ3Wf7bwsd6QsL6S;*YV z-szKZtD~zosNLtDP@3GXzE@+igVP2#&@Rk$;oLuwCaay-GlJ=ia!gN83*|j0Y%VzL z=20LPS{%9iPv4!^2_$Z_o9Xi^frte(+qXin&|6Q)$sztqeWUG_;O#1S{6TE1QcUW>6XLbJ`VTJL~8sn78Q!zzSieM!SYBZEGHUJPQoP>J5V>TcKwAr8;V+JtV#*C zBC!~GEcW$S`tFU%{Z@xi-<|jHb2k~QV6L!W&B^N~V!A3u`;}d3MU@}fJau4^Qk(9a zx6LfV0V!oW%l0N#yJi?xRzI{aiv58c9TYKf=aUTaPo7H3Vk1(3zpGp87)KtE7VP{LyDD1@9P+hYJURue>ah90>8QRHe{ifvl8siB`c zrR&jz>P%gpiy1!rI@jPbn9Y2-mB3RG_7ABw_iAL|MjBzKg0CB#NWphk`|%X_Y5zW z2S+?GOZCj-?FU*`*jHM5)H4AHk|23b`>F~S{D2?~z{BF{Pq38{=a^aQfFoD(c`6vH z0eIb3NPzLrdlf~RdKU!TFT)k!?YmqEs9PM*yjy>ygIWCV!GB}J{Tp?=`h?<#qVNu= zsWnD~Pv4#Qa(nHhRzd&spqM`c*ZeErSv~>K*6ZLv$X9v@%KMB*+hzc$lYCJPyTD6@ z^=o;UKhxrW2MN)iVYvK9e@FNt_V@42m_h%I@A;qjm*C<t_$b3qQKB`B!QK^gF1Y!&r7( zzc@{QHOfka^{z8U7dp+bP4J5SGq!BvH6GXanyHTo3mCNG>uCklfOp07ht0`^Cl1W} zr+aQ5&MWn%r4<%;3W`M&-eGRgV%Y<(2V*x2L=Y`Y8JTNzT!=KQ9>~Fc)h;7XuZduJ zc2n<&uxT9GhZFowYtD4!2KbYc6E02qLt+mx@mVImW>ms}4}RSi16aC~>ts$AT8W4DBkT8I{^T_bvD zo35rFXX8OX%4u+4(Q!3m>eG^}pI#3`c?u@@{MvzO+Hx+H zJl6j5DV4xQH91<@PKduBng3~huKams{Qcp5_xO#+JGff;n_qZKn9Io{`7rz$=&;<4 zGeB-#q_b82#px>o5mreggD0vI#h8KpEzXw)BW5^d_U+b7XiR*#gC@7jU(D5P?|IP= zZow2d2*x{XY#0X?UUfP!CP&k>;<7&Lsl1A|KBy7t!mA%N(1utUr)@2DP0`m8eKKeq ze@blH>5+GR8H%@^RJ!g6Qq`2;b*m{f0Ua5a@+sSMC>3ZPVq= zbulUiXd!F^`HvIT$LDWEI>*e*nLU{O=~cy;Z<22w$P@dnE2LSWylgwM+9d>*ItMQF z&dcNr@>y{0c%6#xT`PPdGBiV=E0zS_W^;kG$m*dBh&Q9=6jISbg0$tK1H2UQfoYOLI0) zvvj&8KByk~I%!D@eC4z7DES9*xFlHaZB75c2HhoONal+A;bE*cU7n>_#KhEnGpOZt z>h4w>r-)YG!6C?H7bk;2I$8r#s9Wp%*zzsLapt^<7TQQ`)>J|olAXnBgt3Jmn#t1o(aeoqn;bw){CjnmCw_jlr)RcDYMwb5XoVa z@lvTlfaY^u;+tZ|!&;}VnbZtEK2}QR%QdWaIk-9w(xrbz^HdZ_&A73BV&{9AOy+TK zJ1;af*GfKptkb%ze|mKRuZzr;Ve#g;3q^VJHR_(hwumyv^g;L4*K*2)M#RFgAI|Lar}fsrV6$b2 z7sY*!)h5NqlyyN)4%e;6om#J2vx`K!bO_z36$k?Du6PK~Z_qdCQ=mGk%Z{BQo^WiI zteP3wI#oL@+fm|iM?{3Wu6C9b;H_6Bhgo}Q<&Uk7L$xNvh;+2tO(WH9aOI9A83=r; zk8WagmdyBzcq5^wzA)EIb?7SZ=D^p?*h;M5@)I=UOM~-P(`Lx|B z^l^+^TUM%x$f&&Xlt_sBYEmWB-jN1e?i1y`gxO#k8Wr?G^5Gfl50#}e#oaH`rh*q3 zf)}>)0oi4nAE15e-ue#05`>&Q&09^v?JaRfZavA%C!YW5cJZ_#10@B7O_&y(0kQ+n zLdd62_>?c}WxfhCvd11X4|Tq7(f8u$wTk^RYw2*R`O|&{o?9J6`F+Jgn{Hle=FN0e z!y7e5;Flgh0VU?*4T|(frwZ>@1k=3J0Bsn;W0xoTBxyo@jprwNi0X;~G?d-?0r&hi-Pi-sLdY_H*$!2uiWeupG({0%yIYtD3H^7&vK-8ann*vtU zt;;}mO9jL0x{LN!%QQI|8Lu?$XF=}C*5c()uTqc0f)NfYZdaCS)KXlwT2W+C3Q0Y( z{X}%aWK5No_rGWoru(6h*UJcl?De`s<~&&>ZeoND zTZIsbgtFg3I&5+Xi9+U)7qIxTjXmp!TF+l4xv$9RF|vg( z)Ar<9t<_x}b}S&#Mus(pK>0dN$^>IH@>O(O)2$5wx)yiv0_ikB>=cNYt95v|{oL#3 zwq)_M4eO-oPUTXE>#g)##f2D5p+XcV@BO3Sx=b|0JXq1juZzyMye$i*ewpJRvY|Fw zHlmW{f|+0#wyGa-7i8?BBU{y5BW`W%nXQd1&K(iZ;N|0>`Dj>GhQqMWNE)B(LefID?8{%lwSV)*FuzU(3!!Vz0rXMGtLI@1 z2iPnaEcDuYqi^M|$)#alzo~{9X(vRJq$uGntQ2^|kVL0F73^DcJp}rz`h44F zd3L?=*6KRWo&ca<{Qe7sob?$IYBb#e3Gx5K2ajoh&m1Qt{S@3NvOxYuWeuItbww=c>oJGS;0VUWKyhHm{9XdM1 zMl>q!!Opr4m0!C5_*c$qH|)5IZ{E8VcvmV8jMP1#nN9S5C#vtroGaoLBDr1%UuWfR zJTfU{83~ip!_7T^Lv2mcAlB??<;fojR^k#&tFoSfhKFB7}p0kM{=q!VQllEF_U^v z^Yu~&Y0uC~HMCBNkXH%sNvIe?XpC!FPMD|?0Kxw9oV8+rC8vr1rIVL{O8+-7lDFkh zoMTT1ZM39+ioW?$uvdKu{g^&uJW4`Lkw(A%@jxV`^Rwld?^z{KJ@M|eGV*AfpwiCM ztN#PASkJfznZxbVIej`a2_Nasau7rXTuZ?}goWT%Us4^6@@7q_YJG!-t|!yaBV)Il zjVet@!a=+ja+vGlm~?ctRvqLeo)UG8{pUA1V3S2OQfHLc;AsQxaqYY3)wx%-+GnIp}V z0OH31F1YRer2dUwGp4(Ft3^a3rjzFMd6wan_dZ|}`GDQtaYkh+fnt?Q!wKT&9)|UM zGX))Wd)6rq65AYCGhsvSs|B^iHtJI+J15SavMSEFd%iM<=mr%4q-&re{i#xjwe{+O ziecM;5yjbR09d-tfd>Xo?=BT%m$;R7sP3shP1^w|*;6uH$o*~geBYvbWjh5+eVf2} zW&d(R3SIKS``W{Ao~9vf_?Fcn2&PwP-$5RI2j4+gb$}|>y}358;G~J)@ZhsN*Pj8T zeX3vh_{6E$C(rrBt=gS$3~YeBexelm4!V&$=8`5gXtu)va~G`GLVLxYwibW~VFiu+ z%7*?C75~ejhd1B8t*G?rp4#Lz3&mlibY(VtpEelvG3ByFJ{(1io2UGxmv5<3`a6iL zT+4sbJzr*3yeuT^xG@YV%V~?UcF?G(emFcnA<*k}&-ufFIperD`;1Gn?1xIIMh%HR zmyXUO%O(0plA4}!=s9ppq(4B{6XUy69Q+;BX{}^Oy~Y@350NqDFEGv;vyADqHnO~w zi`y^6h?9mOH9OO4f925MO;l)h7FE`CTu~nb&pUT~6MAi&_gAa8;EmVD(a z_{T-|nLHa+Nu2lDsgFP@h9DvI7{LDT!Y%y2BFVoWse*-OfTQ51wlMNTmKS>P>#SYB zO!TywQr&NumtIZzg>=gJqQ+?2zU9#yZ{LkQaknbder1g0$~$=n9+s;E{64(af2li( zls7A0(CV}O>b)*@`5+sH)t^Q7M?f zQafRO$z3JZ(8y-i7;jA+Gf>)iLMR1an=Sd6C9tH@!b|X1$B5&iXIdQSXC}0Y`p62akdw`{rX-8mL zhN6|XA>P%h5J{Y;?fdqkj6(U8_hmTvSk?hv8p*=ie@LS_Tp;TzSH?P7QHS-CKY^4CLz?jmMu~tC zMr9hNZgSSbaFSE`!9x372BM%vdGNr-d3#NsbC@imRyh}qehkSdKx zbI-8k1Ox~{Q!YZ{Z#u4kb!`}<^IjVTjpNMv@Q2w+(8o<)CRrM|N*Xp?G z#0F}Z)2+(dcP%=_TfPo|auR7*%ecH|hc!8CbC6wXa24uQH5Blix;f4|WKY0n`N6Qw zIF)x&z$$NR7MhZHs>-&*5#3q&t4Ci21-cw8v&UK4&}(X*vJ$6x%Q1cj z4TWX8G-+>J*R~d7hwK>;jEjYq2@t3Aw6~{w50D!^iWDIjL|fm};F_f;m7m|jkM9h8 z8@e++50IX5ZGzjMo1}Jp3YVhSUIQlKN@e2mARB%Q4!-zmJ$iY~`{g3J?U7|CvohIj zp~CDk5Kg<3Tl1c(9-hu~FTaBbHIY6f#s}@3d1-eX4d=84ah!a+J>A@TvD5nWg;S9^ z%_xq6O|HEeN=v7>3RkfLu)HPRqZ~k^Zd?w3hkPVf&}fVUrKP%~D<=pwPK6=?4h+voZ@bA2hq(e8uF4}Km} z&}>@fJPdk{{BjUDf0B0Q8ReEXv9`yZzVT0cR>R{6%LtpjFD0Rqtb)@Pi|s77$9fhR zwQqyEM@j?5ASniGhYTg^c6^`Hat!StB+rn&SRtfKF>UjAxBQK^IqC{c4jpcnt6KPU zh-E(XC;FCAZc^Z}pS4Z}2;6Pz7*^|O`WMRw?kgXIl?l0$Ptw4yG|XoTSYPGy70cryr1sjL14_j%a z@pzWA84Iy}M2XaMk`XgU;;8y8@V?X0v&d^J#nV(3#FDjc;7d5$Crbn`l+305g`RZ#UwU| z&QD#WpNV=fUot(o>F6komu^Dn9t3I}f-E`$X{ghu)qrEe13-gvk)7~2s?(g;4Q+!O zeVV~s$K&|zOeo=$@}>8-uUawC)!g?*ua z`cj|vY)}nMx&qERky0j6m@Ayezp>e?qc@RJrOZ(i^t6cer$wSRI@HkWpbB;((rV`T zVe?Lp`E0x%?p^<}sGjP9NZiVdCq5*W-yUIfFf4y_(5D+PLO8|V@GUqIj@76raV8u0 zi+Mx)X{uG8RV$2jav^E7z!I>JD!|Y-7)RRcJm}}!xH0dVWLr3Tn^AKRk&2Mx^5&8K zu%X9cvMyqiRtcm~o47cX3q>?@72dn+{2k=8Zi~7Bfccb` zk@d|k`}lyKBD8*P&X9O`x|>9#N#dl?rGZw~A)U( z^Yu;q8i7?cf~yHM=u#g^*Qj8%U3t${ru9oV8hz{L(jIYjph!Q`*tcb9r+_Jj<^r?_ zHuGv!5yL1r(Ypxst@|a-56VSp?o%^(PHuK{Bh^R7P88+e(W(izY?@{Ml}9RQT6C;^@Hs|AepcEGOlxPGKDMNwW;^9Fd#z+dC^8Kd5MO^n zt^?oZhbs2L))jBx+Vaq__q3^;u{ltYp=Wru%j)x!oy%Sdfzn7z(v4z7t_YJp;jnCA zYPrsxSIv3QCA1PbGZvd^LC1r`oS1R-56NVE)yJbru&}0N^U7MeZ4%|BFWy2QdsyhA zR{)(Fkwm=P47D|k8_Hd%cPRxL5?~nB-95S2E!^Tz#ZmUoG}UFd$(ia#dO10dm7vqe zb#%i-6W!}MhsH^-_Y1V%dJDb87dU|U$Y+Y@c6#uU`F{OE@Eye4!Du70EcUoEx)){y zZuEAX$X#tZo(NFxah+;O!RX`1>-eHEgN_!I?hD=k8Zj8@{AwGKJrE>L@AOg&J*g?3Qd1 zm}!Xl;-{p%6y6d=ny6wwg>iIpu495dBEU0;R$F9VrEWk!oG?F za;u506U;Kes{-~*dg1&rAs_bZkEm_y5yTTfIpq;4K=A=c9o%M4@ylnBmw^ztbp_P~ zsN+_w>i~6vf-Oq$S0fptb@-mZ41AUuxB}|5V=w@&rIsB7Znqru$SFtQ35Wde$@~?1 z<`H@9a1|_PN`JD&7Tt4|+3r1rM3Q3W+#|BaW){|@QuYRO*Q%;?ut@itb*X0TlUUC* zq7?D%2@uJ%2dCBQ!zeu-vVmM>opr#U(rp3t=8hY@_6B6qNZZXO+A`yI-^8^kM%x%I zijv6k!^AMA@1ScRKT@RN>~*n^i^V!W^vqICK;t{M1JM#;DGgEz(Z67dgv$H{X`8HU zFDbV?@sP&<-Xj) zvp78Da6EWS-MS95+Q4jETal(uWm2>K+Cw-BZ}TsUjR^Z@{O%*JCuYP3|^sFF8IR4y`lkQNSmkqQoBT9%TDs~HvnrhwW4F}FX?D0Ih5MM`82Nc zF3yauP8)snu$2|4cK=X+H+NlQBxT=+{Ft2)g+WIVW@eVB2T>T^(-vzSiw z9P=mvCb5SWeNazim7uNJl0K3A&DP^ivGF*QsO(TOW7R>lKR@d zZxQ_gIhrvr60;7s{2%5Qpglj&@BjCn0WZ#!q%^(K4n#pNk(v|lMf|Z5{LEL;yr*${ zNnehSCW?1-Z-|(e3hzs(s=#TMfjk`JQ3Cz;@_eGAti`6WKkVcaHjv24`2`H;YB`wV zMJoZuSrNO7^24uVV@T(r~;q_4{A4)02<5jelc8+>C@Ej}V)cHt_W^GoUOX z=N?coDvj%CAsd*NM!MfP5T1;4pUqr8b%KbTpQPtGI0eNpV^$fBk=$5$cjpza7~a<& zPGq2U(!18SuKgrvO>K}T35StkNZv6-;3-}eEd9CT%#{SMS7>}1F$3Y(D*SKDNXlX} zBHrbY8Q{2>+1;6@?PtPV3@8d-M6sy=pzP&Yz<-vM4{|~-{TekNY)SKYOL;D}rnzNfo$3XpzcR?>O@^8^Q!tO2Whi zKc_+R%)sc#yP7;m4QWgoA3kIS&|g-Q`c%D!J<)G13zzddA5os(M5pvHnhQkZbqSLT z#_-WUy4Ev41U_M*qq5x>DG`)NHpLh4ibv~qcN-p5kLe{eDi7kpLc4wKTvb{s8=7$IOUR znX^*?@DSGnUQkSp`V+G-B7$6{p#nr@ppUwUD^U&sJLK< zy1vbvaheyYqq!d1XGJz3glejxxD%}v#_a?eZaV=Gnv&*W`Tge_5MVLGcmRZZhR5`$1WN#d_Z7bA1;mD5>48sDCx4;hpN&138iMKv>OBrH zF%>C_&Q3NzHM;bqOCq<7ldi^5lF6m3w68p+pp(Lck#?Ls{0@pVn5RG5vt43M3Ym8r zNdA~aN0vIG)_+*?1!26CqTb5g?Nx#{)u+4p4*0mnI>p6BJ3voeG{CZRw(Se&S7Vyx zbv;thRW(}kM*(;GHuu?{$H;9ga6Y)ozP0im`+*Ynf-Yy;0-SP{>e@Dt5`F%4K<s|s$9I|r#9uOl^RNDIq>I%hX)FXL9(B@+_mI6u9 zM@ND|{OZXMOSb9!ZX^mMgDRk}DLSo13?o$$!W73@aiF!80>Sd_t)K!&zHR>G=c$#w zQ_kt!`Y|;o-GZ37}jZdhuey!<`l~xs&ig zuvZ$SnaDQv(rx~%fEu-QDI=Ii=&*)*Io%VIXiAes^jz!$?H4De1?yC0Y0x=wtm&Nz z#e|7TeSJMwdG_}b77J+dOpYD%-lFf>z>P^jD*1W5j9^&Sq~#&e{ewfY;?tFMX@5%8 zwJn`jAXQzj^7&IKv3nl;bG4k}(vL#X?4KTzxT;KC6VhwLjPwKn*(w!yp!0zUd0_fb z38Qt+iamRgWU-Au%xI@bKJ2qGW7tQG`gA5dlV?fMOXYCF6GiJ(mLTx+1vrbnbU5Pj!sw<6XP>#6q%YPkm2Fqv%TQJlKKF<5@qNl4CthB^_K&WNmCEgDkKVp# z3p`f5v2YqggH@^erM*J%p=V2A4N!k#Auv7X+J8v~XTm1?CjlG(Gi(DkH&+99%u#l) z3~X!OK+)RsfnJ&T8`vn`P}~2n9el%p{U`hE`fvO|i3{&QRUM>%#ysK2a^OYZ`;XXv zeR2Oxxb%uR$Aww(+`zN^cD8#r`&U=4~ckDB%u=7;|Ua6DM`^xl6rQzloomy)zb}$I{{Cya= zK6J_UPdTS<9L(EvT$;Ny^;Xx72L%?Aue+Y_IS<_Sa(;PR{Rg%Bf94Lt6~9BTeDP;` z^=n$+?Dr4aOXAi3?l)lFc%NbNkMM~V3-?%8KCnKi@Ud^>Bi}gh*w;Dwkr$;Ic5m@8 z=wkDeZtVINtN17AdP}xJ#>?yt4{n~-wtHuISV7|Ty{(BGw`~7xGdn`*v)#WFhu-~q zyq2L-4_Ml9ti9I#;I_W#&9k}rdQ%0rUVA*{nC{aX^VJ^M#q`K*mtX7q;H}p?eX&=& z(t6k3t5|<{LS|dgbsp85h4ZHgni<@T`FQ!$`tV8jBo`QX^W<|%7;b7>QmfH)PdcL| z?89-9=lYg61JUaTzee}DYXW&?xMsT+(he_c24 zalpO{dtx8ji&rcXZ{nUS{KoupWs2_BgG&B$_;*j9__q0F+_Icpsn>7at}z$bKV8|A z|L510bDdg79;;p)W{pS@bdZZ(oApi3>PPd#Xnp>ewO^t_PsiW8d!XD^s8u?+;=weV zg!*5LKe%_4^fR07efVDR-r;3;kFNAD6^>!*F65pNdSRaQW#(C5wW~99l|HR~*eCIM z?!*Ow^A{}Hv3c8WF1_4`GZat#?2u-^ZNk|7kYDiZqq%CizFWR;-kRO+ZLDa$yrp21 zs6y^}o8n8mxQ5s=*6K6n&lE_Wuvk(7c;#2zY!Uv_<*sro^K(9n$dzQ6AK$&toX@Q)CFCVf z;2}kiiAl^E4huBoW-Q>h{%HPZ_LKeJSb$UY4qnHut$(|v@Wb-3D=MFKbQdaRx3R2A zT{}h3|4+Sr%KsTQ*4lqjjGLkCntQ5CTDpim-^)zz?{Bw1$z_&D84B*R)jyf^ z!u}nwUAlPQ?p;|*#})=Ut$4w3U^)CqId=O8{Xa!?>fbK^*OLVrs(1g>C1(Ha@_z<5 zQ($``eDa?B{R4T7(M()DlWfxB` zlX|2Jy0r}URJF9u)QVhub!;PFCWQc1c0C#xTY z2fm`_^B!Q&)6Po%ADb_*F~0(p3mt7h(KTuY!w?A%?ZZ_$zuep3>f}Y4%~QC2#%1cs zq>2;lGS}9M1TfO!WJUDxuffI_ee$0{e*Y8S%lqFb?Ej_v`Wos5MHko$ALRcO+!Fum zi~m#5ek?X%fgufCYPjCzUntVrBF;2Y>xafZ2dS~E;dOh}kLgh!*z;_{xhR zWdicfq|q{A=$8qV>yPahd{K41H7EDW+H}ADGxeRflx_Fa)_PMoNn~=*#PfTBYd-$p F1OPae`Bne` diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/trigger_policies_general.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/trigger_policies_general.html deleted file mode 100644 index 5535bb978..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/trigger_policies_general.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - Trigger Policies - - - - - - -

        Trigger Policies

        - -

        - A trigger policy, say trig_pol, should support - the types and methods below. -

        -
          -
        1. Types
        2. -
        3. Methods
        4. -
        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tutorial.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tutorial.html deleted file mode 100644 index b5dd0f512..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/tutorial.html +++ /dev/null @@ -1,66 +0,0 @@ - - - -Short Tutorial - - - - -

        Short Tutorial

        - -

        - Following is a short tutorial introducing the main points of pb_assoc. It -is organized as follows.

        -
          -
        1. Basic Use of Maps
        2. -
        - - - - - - - -

        Basic Use of Maps

        - -

        - For the greater part, using pb_assoc's maps is similar -to using those of the STL. For example, the following shows a collision-chaining container mapping integers to characters. - -

        -cc_hash_assoc_cntnr<int, char> c;
        -
        -c[2] = 'b';
        -
        -assert(c.find(1) == c.end());
        -
        - -

        - Inteface::Containers describes the containers supported. basic_map_example.cpp -shows an example. -

        - - -

        Other Mapping Semantics

        - -

        - pb_assoc does not contain separate containers for different mapping semantics, -as the STL does (e.g., std::map and std::multimap). Rather, containers are parameterized by a Data parameter, and this parameter is a policy for the mapping semantics. -

        - -

        - Instantiating the Data parameter by -null_data_type -makes a "set". For example, the following shows a collision-chaining container storing integers. - -

        -cc_hash_assoc_cntnr<int, null_data_type> c;
        -
        -c.insert(2);
        -
        -assert(c.find(1) == c.end());
        -
        -

        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/update_seq_diagram.jpg b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/pb_assoc/update_seq_diagram.jpg deleted file mode 100644 index d3221cbb98b4a2117de2f73c28a07ce5a541f2da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23396 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/sgiexts.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/sgiexts.html deleted file mode 100644 index 515fc151e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/sgiexts.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - - - - - - - SGI extensions to the library in libstdc++-v3 - - - - - - - - -

        SGI extensions to the library in -libstdc++-v3

        - -

        This page describes the extensions that SGI made to their version of the - STL subset of the Standard C++ Library. For a time we - tracked and imported changes and updates - from most of the SGI STL, up through their (apparently) final release. - Their extensions were mostly preserved. -

        - -

        They are listed according to the chapters of the library that they - extend (see the chapter-specific notes - for a description). Not every chapter may have extensions, and the - extensions may come and go. Also, this page is incomplete because the - author is pressed for time. Check back often; the latest change was on - $Date: 2003/04/16 17:02:47 $ (UTC). -

        - -

        Descriptions range from the scanty to the verbose. You should also check - the generated documentation for notes - and comments, especially for entries marked with '*'. For more complete - doumentation, see the SGI website. For really complete - documentation, buy a copy of Matt Austern's book. *grin* -

        - -

        Back to the libstdc++-v3 extensions. -

        - - - -
        -

        Chapter 20

        -

        The <functional> header contains many additional functors and - helper functions, extending section 20.3. They are implemented in the - file stl_function.h: -

        -
          -
        • identity_element for addition and multiplication. *
        • -
        • The functor identity, whose operator() - returns the argument unchanged. *
        • -
        • Composition functors unary_function and - binary_function, and their helpers compose1 - and compose2. *
        • -
        • select1st and select2nd, to strip pairs. *
        • -
        • project1st and project2nd. *
        • -
        • A set of functors/functions which always return the same result. They - are constant_void_fun, constant_binary_fun, - constant_unary_fun, constant0, - constant1, and constant2. *
        • -
        • The class subtractive_rng. *
        • -
        • mem_fun adaptor helpers mem_fun1 and - mem_fun1_ref are provided for backwards compatibility.
        • -
        -

        20.4.1 can use several different allocators; they are described on the - main extensions page. -

        -

        20.4.3 is extended with a special version of - get_temporary_buffer taking a second argument. The argument - is a pointer, which is ignored, but can be used to specify the template - type (instead of using explicit function template arguments like the - standard version does). That is, in addition to -

        -
        -   get_temporary_buffer<int>(5);
        - you can also use -
        -   get_temporary_buffer(5, (int*)0);
        -

        A class temporary_buffer is given in stl_tempbuf.h. * -

        -

        The specialized algorithms of section 20.4.4 are extended with - uninitialized_copy_n. * -

        -

        Return to the main extensions page or - to the homepage. -

        - - -
        -

        Chapter 23

        -

        A few extensions and nods to backwards-compatibility have been made with - containers. Those dealing with older SGI-style allocators are dealt with - elsewhere. The remaining ones all deal with bits: -

        -

        The old pre-standard bit_vector class is present for - backwards compatibility. It is simply a typedef for the - vector<bool> specialization. -

        -

        The bitset class has a number of extensions, described in the - rest of this item. First, we'll mention that this implementation of - bitset<N> is specialized for cases where N number of - bits will fit into a single word of storage. If your choice of N is - within that range (<=32 on i686-pc-linux-gnu, for example), then all - of the operations will be faster. -

        -

        There are - versions of single-bit test, set, reset, and flip member functions which - do no range-checking. If we call them member functions of an instantiation - of "bitset<N>," then their names and signatures are: -

        -
        -   bitset<N>&   _Unchecked_set   (size_t pos);
        -   bitset<N>&   _Unchecked_set   (size_t pos, int val);
        -   bitset<N>&   _Unchecked_reset (size_t pos);
        -   bitset<N>&   _Unchecked_flip  (size_t pos);
        -   bool         _Unchecked_test  (size_t pos);
        -

        Note that these may in fact be removed in the future, although we have - no present plans to do so (and there doesn't seem to be any immediate - reason to). -

        -

        The semantics of member function operator[] are not specified - in the C++ standard. A long-standing defect report calls for sensible - obvious semantics, which are already implemented here: op[] - on a const bitset returns a bool, and for a non-const bitset returns a - reference (a nested type). However, this implementation does - no range-checking on the index argument, which is in keeping with other - containers' op[] requirements. The defect report's proposed - resolution calls for range-checking to be done. We'll just wait and see... -

        -

        Finally, two additional searching functions have been added. They return - the index of the first "on" bit, and the index of the first - "on" bit that is after prev, respectively: -

        -
        -   size_t _Find_first() const;
        -   size_t _Find_next (size_t prev) const;
        -

        The same caveat given for the _Unchecked_* functions applies here also. -

        -

        Return to the main extensions page or - to the homepage. -

        - - -
        -

        Chapter 24

        -

        24.3.2 describes struct iterator, which didn't exist in the - original HP STL implementation (the language wasn't rich enough at the - time). For backwards compatibility, base classes are provided which - declare the same nested typedefs: -

        -
          -
        • input_iterator
        • -
        • output_iterator
        • -
        • forward_iterator
        • -
        • bidirectional_iterator
        • -
        • random_access_iterator
        • -
        -

        24.3.4 describes iterator operation distance, which takes - two iterators and returns a result. It is extended by another signature - which takes two iterators and a reference to a result. The result is - modified, and the function returns nothing. -

        -

        Return to the main extensions page or - to the homepage. -

        - - -
        -

        Chapter 25

        -

        25.1.6 (count, count_if) is extended with two more versions of count - and count_if. The standard versions return their results. The - additional signatures return void, but take a final parameter by - reference to which they assign their results, e.g., -

        -
        -   void count (first, last, value, n);
        -

        25.2 (mutating algorithms) is extended with two families of signatures, - random_sample and random_sample_n. -

        -

        25.2.1 (copy) is extended with -

        -
        -   copy_n (_InputIter first, _Size count, _OutputIter result);
        -

        which copies the first 'count' elements at 'first' into 'result'. -

        -

        25.3 (sorting 'n' heaps 'n' stuff) is extended with some helper - predicates. Look in the doxygen-generated pages for notes on these. -

        -
          -
        • is_heap tests whether or not a range is a heap.
        • -
        • is_sorted tests whether or not a range is sorted in - nondescending order.
        • -
        -

        25.3.8 (lexigraphical_compare) is extended with -

        -
        -   lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1,
        -                                 _InputIter2 first2, _InputIter2 last2)
        -

        which does... what? -

        -

        Return to the main extensions page or - to the homepage. -

        - - -
        -

        Chapter 26

        -

        26.4, the generalized numeric operations such as accumulate, are extended - with the following functions: -

        -
        -   power (x, n);
        -   power (x, n, moniod_operation);
        -

        Returns, in FORTRAN syntax, "x ** n" where n>=0. In the - case of n == 0, returns the identity element for the - monoid operation. The two-argument signature uses multiplication (for - a true "power" implementation), but addition is supported as well. - The operation functor must be associative. -

        -

        The iota function wins the award for Extension With the - Coolest Name. It "assigns sequentially increasing values to a range. - That is, it assigns value to *first, value + 1 to *(first + 1) and so - on." Quoted from SGI documentation. -

        -
        -   void iota(_ForwardIter first, _ForwardIter last, _Tp value);
        -

        Return to the main extensions page or - to the homepage. -

        - - - - -
        -

        -See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

        - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/tr1.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/tr1.html deleted file mode 100644 index 85c621b54..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/ext/tr1.html +++ /dev/null @@ -1,2321 +0,0 @@ - - - - - - - - - - - - Status of TR1 features in GCC - - GNU Project - Free Software Foundation (FSF) - - - - - - -

        - Status of TR1 features in GCC -

        - -

        -This table is based on the table of contents of ISO/IEC DTR 19768 -Doc No: N1836=05-0096 Date: 2005-06-24 -Draft Technical Report on C++ Library Extensions -

        - -

        -In this implementation the header names are prefixed by -tr1/, for instance <tr1/functional>, -<tr1/memory>, and so on. -

        - -

        -This page describes the TR1 support in GCC 4.1. -

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        SectionDescriptionDoneBrokenMissingComments
        2General Utilities
        2.1Reference wrappersdone
        2.1.1Additions to header <functional> synopsisdone
        2.1.2Class template reference_wrapperdone
        2.1.2.1reference_wrapper construct/copy/destroydone
        2.1.2.2reference_wrapper assignmentdone
        2.1.2.3reference_wrapper accessdone
        2.1.2.4reference_wrapper invocationdone
        2.1.2.5reference_wrapper helper functionsdone
        2.2Smart pointersdone
        2.2.1Additions to header <memory> synopsisdone
        2.2.2Class bad_weak_ptrdone
        2.2.3Class template shared_ptrdone1
        2.2.3.1shared_ptr constructorsdone
        2.2.3.2shared_ptr destructordone
        2.2.3.3shared_ptr assignmentdone
        2.2.3.4shared_ptr modifiersdone
        2.2.3.5shared_ptr observersdone
        2.2.3.6shared_ptr comparisondone
        2.2.3.7shared_ptr I/Odone
        2.2.3.8shared_ptr specialized algorithmsdone
        2.2.3.9shared_ptr castsdone
        2.2.3.10get_deleterdone
        2.2.4Class template weak_ptrdone
        2.2.4.1weak_ptr constructorsdone
        2.2.4.2weak_ptr destructordone
        2.2.4.3weak_ptr assignmentdone
        2.2.4.4weak_ptr modifiersdone
        2.2.4.5weak_ptr observersdone
        2.2.4.6weak_ptr comparisondone
        2.2.4.7weak_ptr specialized algorithmsdone
        2.2.5Class template enable_shared_from_thisdone
        3Function objects
        3.1Definitionsdone
        3.2Additions to <functional> synopsisdone
        3.3Requirementsdone
        3.4Function return typesdone
        3.5Function template mem_fndone
        3.6Function object bindersdone
        3.6.1Class template is_bind_expressiondone
        3.6.2Class template is_placeholderdone
        3.6.3Function template binddone
        3.6.4Placeholdersdone
        3.7Polymorphic function wrappersdone
        3.7.1Class bad_function_calldone
        3.7.1.1bad_function_call constructordone
        3.7.2Class template functiondone
        3.7.2.1function construct/copy/destroydone
        3.7.2.2function modifiersdone
        3.7.2.3function capacitydone
        3.7.2.4function invocationdone
        3.7.2.5function target accessdone
        3.7.2.6undefined operatorsdone
        3.7.2.7null pointer comparison operatorsdone
        3.7.2.8specialized algorithmsdone
        4Metaprogramming and type traits
        4.1Requirementsdone
        4.2Header <type_traits> synopsisdone
        4.3Helper classesdone
        4.4General Requirementsdone
        4.5Unary Type Traitsdone
        4.5.1Primary Type Categoriesdone
        4.5.2Composite type traitsdone
        4.5.3Type propertiesdone
        4.6Relationships between typesdone
        4.7Transformations between typesdone
        4.7.1Const-volatile modificationsdone
        4.7.2Reference modificationsdone
        4.7.3Array modificationsdone
        4.7.4Pointer modificationsdone
        4.8Other transformationsdone
        4.9Implementation requirementsdone
        5Numerical facilities
        5.1Random number generationmissing
        5.1.1Requirementsmissing
        5.1.2Header <random> synopsismissing
        5.1.3Class template variate_generatormissing
        5.1.4Random number engine class templatesmissing
        5.1.4.1Class template linear_congruentialmissing
        5.1.4.2Class template mersenne_twistermissing
        5.1.4.3Class template subtract_with_carrymissing
        5.1.4.4Class template subtract_with_carry_01missing
        5.1.4.5Class template discard_blockmissing
        5.1.4.6Class template xor_combinemissing
        5.1.5Engines with predefined parametersmissing
        5.1.6Class random_devicemissing
        5.1.7Random distribution class templatesmissing
        5.1.7.1Class template uniform_intmissing
        5.1.7.2Class bernoulli_distributionmissing
        5.1.7.3Class template geometric_distributionmissing
        5.1.7.4Class template poisson_distributionmissing
        5.1.7.5Class template binomial_distributionmissing
        5.1.7.6Class template uniform_realmissing
        5.1.7.7Class template exponential_distributionmissing
        5.1.7.8Class template normal_distributionmissing
        5.1.7.9Class template gamma_distributionmissing
        5.2Mathematical special functionsmissing
        5.2.1Additions to header <cmath> synopsismissing
        5.2.1.1associated Laguerre polynomialsmissing
        5.2.1.2associated Legendre functionsmissing
        5.2.1.3beta functionmissing
        5.2.1.4(complete) elliptic integral of the first kindmissing
        5.2.1.5(complete) elliptic integral of the second kindmissing
        5.2.1.6(complete) elliptic integral of the third kindmissing
        5.2.1.7confluent hypergeometric functionsmissing
        5.2.1.8regular modified cylindrical Bessel functionsmissing
        5.2.1.9cylindrical Bessel functions (of the first kind)missing
        5.2.1.10irregular modified cylindrical Bessel functionsmissing
        5.2.1.11cylindrical Neumann functionsmissing
        5.2.1.12(incomplete) elliptic integral of the first kindmissing
        5.2.1.13(incomplete) elliptic integral of the second kindmissing
        5.2.1.14(incomplete) elliptic integral of the third kindmissing
        5.2.1.15exponential integralmissing
        5.2.1.16Hermite polynomialsmissing
        5.2.1.17hypergeometric functionsmissing
        5.2.1.18Laguerre polynomialsmissing
        5.2.1.19Legendre polynomialsmissing
        5.2.1.20Riemann zeta functionmissing
        5.2.1.21spherical Bessel functions (of the first kind)missing
        5.2.1.22spherical associated Legendre functionsmissing
        5.2.1.23spherical Neumann functionsmissing
        5.2.2Additions to header <math.h> synopsismissing
        6Containers
        6.1Tuple typesdone
        6.1.1Header <tuple> synopsisdone
        6.1.2Additions to header <utility> synopsisdone
        6.1.3Class template tupledone
        6.1.3.1Constructiondone
        6.1.3.2Tuple creation functionsdone
        6.1.3.3Tuple helper classesdone
        6.1.3.4Element accessdone
        6.1.3.5Relational operatorsdone
        6.1.4Pairsdone
        6.2Fixed size arraydone
        6.2.1Header <array> synopsisdone
        6.2.2Class template arraydone
        6.2.2.1array constructors, copy, and assignmentdone
        6.2.2.2array specialized algorithmsdone
        6.2.2.3array sizedone
        6.2.2.4Zero sized arraysdone
        6.2.2.5Tuple interface to class template arraydone
        6.3Unordered associative containersdone
        6.3.1Unordered associative container requirementsdone
        6.3.1.1Exception safety guaranteesdone
        6.3.2Additions to header <functional> synopsisdone
        6.3.3Class template hashdone
        6.3.4Unordered associative container classesdone
        6.3.4.1Header <unordered_set> synopsisdone
        6.3.4.2Header <unordered_map> synopsisdone
        6.3.4.3Class template unordered_setdone
        6.3.4.3.1unordered_set constructorsdone
        6.3.4.3.2unordered_set swapdone
        6.3.4.4Class template unordered_mapdone
        6.3.4.4.1unordered_map constructorsdone
        6.3.4.4.2unordered_map element accessdone
        6.3.4.4.3unordered_map swapdone
        6.3.4.5Class template unordered_multisetdone
        6.3.4.5.1unordered_multiset constructorsdone
        6.3.4.5.2unordered_multiset swapdone
        6.3.4.6Class template unordered_multimapdone
        6.3.4.6.1unordered_multimap constructorsdone
        6.3.4.6.2unordered_multimap swapdone
        7Regular expressions
        7.1Definitionsmissing
        7.2Requirementsmissing
        7.3Regular expressions summarymissing
        7.4Header <regex> synopsismissing
        7.5Namespace tr1::regex_constantsmissing
        7.5.1Bitmask Type syntax_option_typemissing
        7.5.2Bitmask Type regex_constants::match_flag_typemissing
        7.5.3Implementation defined error_typemissing
        7.6Class regex_errormissing
        7.7Class template regex_traitsmissing
        7.8Class template basic_regexmissing
        7.8.1basic_regex constantsmissing
        7.8.2basic_regex constructorsmissing
        7.8.3basic_regex assignmissing
        7.8.4basic_regex constant operationsmissing
        7.8.5basic_regex localemissing
        7.8.6basic_regex swapmissing
        7.8.7basic_regex non-member functionsmissing
        7.8.7.1basic_regex non-member swapmissing
        7.9Class template sub_matchmissing
        7.9.1sub_match membersmissing
        7.9.2sub_match non-member operatorsmissing
        7.10Class template match_resultsmissing
        7.10.1match_results constructorsmissing
        7.10.2match_results sizemissing
        7.10.3match_results element accessmissing
        7.10.4match_results formattingmissing
        7.10.5match_results allocatormissing
        7.10.6match_results swapmissing
        7.11Regular expression algorithmsmissing
        7.11.1exceptionsmissing
        7.11.2regex_matchmissing
        7.11.3regex_searchmissing
        7.11.4regex_replacemissing
        7.12Regular expression Iteratorsmissing
        7.12.1Class template regex_iteratormissing
        7.12.1.1regex_iterator constructorsmissing
        7.12.1.2regex_iterator comparisonsmissing
        7.12.1.3regex_iterator dereferencemissing
        7.12.1.4regex_iterator incrementmissing
        7.12.2Class template regex_token_iteratormissing
        7.12.2.1regex_token_iterator constructorsmissing
        7.12.2.2regex_token_iterator comparisonsmissing
        7.12.2.3regex_token_iterator dereferencemissing
        7.12.2.4regex_token_iterator incrementmissing
        7.13Modified ECMAScript regular expression grammarmissing
        8C compatibility
        8.1Additions to header <complex>missing
        8.1.1Synopsismissing
        8.1.2Function acosmissing
        8.1.3Function asinmissing
        8.1.4Function atanmissing
        8.1.5Function acoshmissing
        8.1.6Function asinhmissing
        8.1.7Function atanhmissing
        8.1.8Function fabsmissing
        8.1.9Additional Overloadsmissing
        8.2Header <ccomplex>missing
        8.3Header <complex.h>missing
        8.4Additions to header <cctype>missing
        8.4.1Synopsismissing
        8.4.2Function isblankmissing
        8.5Additions to header <ctype.h>missing
        8.6Header <cfenv>missing
        8.6.1Synopsismissing
        8.6.2Definitionsmissing
        8.7Header <fenv.h>missing
        8.8Additions to header <cfloat>missing
        8.9Additions to header <float.h>missing
        8.10Additions to header <ios>missing
        8.10.1Synopsismissing
        8.10.2Function hexfloatmissing
        8.11Header <cinttypes>missing
        8.11.1Synopsismissing
        8.11.2Definitionsmissing
        8.12Header <inttypes.h>missing
        8.13Additions to header <climits>missing
        8.14Additions to header <limits.h>missing
        8.15Additions to header <locale>missing
        8.16Additions to header <cmath>missing
        8.16.1Synopsismissing
        8.16.2Definitionsmissing
        8.16.3Function template definitionsmissing
        8.16.4Additional overloadsmissing
        8.17Additions to header <math.h>missing
        8.18Additions to header <cstdarg>missing
        8.19Additions to header <stdarg.h>missing
        8.20The header <cstdbool>missing
        8.21The header <stdbool.h>missing
        8.22The header <cstdint>missing
        8.22.1Synopsismissing
        8.22.2Definitionsmissing
        8.23The header <stdint.h>missing
        8.24Additions to header <cstdio>missing
        8.24.1Synopsismissing
        8.24.2Definitionsmissing
        8.24.3Additional format specifiersmissing
        8.24.4Additions to header <stdio.h>missing
        8.25Additions to header <cstdlib>missing
        8.25.1Synopsismissing
        8.25.2Definitionsmissing
        8.25.3Function absmissing
        8.25.4Function divmissing
        8.26Additions to header <stdlib.h>missing
        8.27Header <ctgmath>missing
        8.28Header <tgmath.h>missing
        8.29Additions to header <ctime>missing
        8.30Additions to header <cwchar>missing
        8.30.1Synopsismissing
        8.30.2Definitionsmissing
        8.30.3Additional wide format specifiersmissing
        8.31Additions to header <wchar.h>missing
        8.32Additions to header <cwctype>missing
        8.32.1Synopsismissing
        8.32.2Function iswblankmissing
        8.33Additions to header <wctype.h>missing
        - -

        Footnotes

        - -
          - -
        1. - - The shared_ptr implementation uses some code from the - Boost - shared_ptr library. -
        2. - -
        - -

        -Please send FSF & GNU inquiries & questions to -gnu@gnu.org. -There are also other ways -to contact the FSF. -

        - -

        -These pages are maintained by -the GCC team. -

        - -
        -For questions related to the use of GCC, please consult these web -pages and the GCC manuals. If -that fails, the gcc-help@gcc.gnu.org -mailing list might help.
        -Please send comments on these web pages and the development of GCC to our -developer mailing list at gcc@gnu.org -or gcc@gcc.gnu.org. All of our lists -have public archives. -
        - -

        -Copyright (C) Free Software Foundation, Inc., -51 Franklin St, Fifth Floor, Boston, MA 02110, USA. -

        -

        -Verbatim copying and distribution of this entire article is -permitted in any medium, provided this notice is preserved. -

        - - - - - - -
        - Last modified 2006-01-22 - - - Valid XHTML 1.0 - -
        - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.html deleted file mode 100644 index 4d0f922ef..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.html +++ /dev/null @@ -1,1201 +0,0 @@ - - - - - - - - - libstdc++-v3 FAQ - - - - - - -

        libstdc++ Frequently Asked Questions

        - -

        - The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/faq/. The main documentation - page is at - - http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html. -

        - -

        - To the libstdc++-v3 homepage. -

        - - -
        -

        Questions

        -
          -
        1. General Information - -
            -
          1. What is libstdc++-v3?
          2. -
          3. Why should I use libstdc++?
          4. -
          5. Who's in charge of it?
          6. -
          7. How do I get libstdc++?
          8. -
          9. When is libstdc++ going to be finished?
          10. -
          11. How do I contribute to the effort?
          12. -
          13. What happened to libg++? I need that!
          14. -
          15. What if I have more questions?
          16. -
          17. What are the license terms for libstdc++-v3?
          18. -
          -
        2. - -
        3. Installation -
            -
          1. How do I install libstdc++-v3?
          2. -
          3. [removed]
          4. -
          5. What is this CVS thing that you keep - mentioning?
          6. -
          7. How do I know if it works?
          8. -
          9. This library is HUGE! And what's libsupc++?
          10. -
          11. Why do I get an error saying - libstdc++.so.X is missing when I - run my program?
          12. -
          -
        4. - -
        5. Platform-Specific Issues -
            -
          1. Can libstdc++-v3 be used with <my - favorite compiler>?
          2. -
          3. [removed]
          4. -
          5. [removed]
          6. -
          7. I can't use 'long long' on Solaris
          8. -
          9. _XOPEN_SOURCE / - _GNU_SOURCE / etc is always defined -
          10. -
          11. OS X ctype.h is broken! How can I hack it?
          12. -
          13. Threading is broken on i386
          14. -
          15. Recent GNU/Linux glibc required?
          16. -
          17. Can't use wchar_t/wstring on FreeBSD
          18. -
          19. MIPS atomic operations
          20. -
          -
        6. - -
        7. Known Bugs and Non-Bugs -
            -
          1. What works already?
          2. -
          3. Bugs in gcc/g++ (not libstdc++-v3)
          4. -
          5. Bugs in the C++ language/lib specification
          6. -
          7. Things in libstdc++ that only look like bugs -
          8. -
          9. Aw, that's easy to fix!
          10. -
          -
        8. - -
        9. Miscellaneous -
            -
          1. string::iterator is not char*; - vector<T>::iterator is not T*
          2. -
          3. What's next after libstdc++-v3?
          4. -
          5. What about the STL from SGI?
          6. -
          7. Extensions and Backward Compatibility
          8. -
          9. Does libstdc++ support TR1?
          10. -
          11. Is libstdc++-v3 thread-safe?
          12. -
          13. How do I get a copy of the ISO C++ Standard?
          14. -
          15. What's an ABI and why is it so messy?
          16. -
          17. How do I make std::vector<T>::capacity() - == std::vector<T>::size?
          18. -
          -
        10. - -
        - -
        - - - -

        1.0 General Information

        - -

        1.1 What is libstdc++-v3?

        -

        The GNU Standard C++ Library v3 is an - ongoing project to implement the ISO 14882 Standard C++ library - as described in chapters 17 through 27 and annex D. - For those who want to see exactly how - far the project has come, or just want the latest - bleeding-edge code, the up-to-date source is available over - anonymous CVS, and can even be browsed over the Web (see - 1.4 below). -

        -

        The older libstdc++-v2 project is no longer maintained; the code - has been completely replaced and rewritten. - If you are using V2, then you need to - report bugs to your system vendor, not to the V3 list. -

        -

        A more formal description of the V3 goals can be found in the - official design document. -

        - -
        -

        1.2 Why should I use libstdc++?

        -

        The completion of the ISO C++ standardization gave the - C++ community a powerful set of reuseable tools in the form - of the C++ Standard Library. However, all existing C++ - implementations are (as the Draft Standard used to say) - "incomplet and incorrekt," and many suffer from - limitations of the compilers that use them. -

        -

        The GNU C/C++/FORTRAN/<pick-a-language> compiler - (gcc, g++, etc) is widely considered to be - one of the leading compilers in the world. Its development - is overseen by the - GCC team. All of - the rapid development and near-legendary - portability - that are the hallmarks of an open-source project are being - applied to libstdc++. -

        -

        That means that all of the Standard classes and functions - (such as string, vector<>, iostreams, - and algorithms) will be freely available and fully compliant. - Programmers will no longer need to "roll their own" - nor be worried about platform-specific incompatibilities. -

        - -
        -

        1.3 Who's in charge of it?

        -

        The libstdc++ project is contributed to by several developers - all over the world, in the same way as GCC or Linux. - Benjamin Kosnik, Gabriel Dos Reis, Phil Edwards, Ulrich Drepper, - Loren James Rittle, and Paolo Carlini are the lead maintainers of - the CVS archive. -

        -

        Development and discussion is held on the libstdc++ mailing - list. Subscribing to the list, or searching the list - archives, is open to everyone. You can read instructions for - doing so on the homepage. - If you have questions, ideas, code, or are just curious, sign up! -

        - -
        -

        1.4 How do I get libstdc++?

        -

        The homepage - has instructions for retrieving the latest CVS sources, and for - browsing the CVS sources over the web. -

        -

        Stable versions of libstdc++-v3 are included with releases of - the GCC compilers. -

        -

        The subset commonly known as the Standard Template Library - (chapters 23 through 25, mostly) is adapted from the final release - of the SGI STL, with extensive changes. -

        - -
        -

        1.5 When is libstdc++ going to be finished?

        - -

        Nathan Myers gave the best of all possible answers, responding to a - Usenet article asking this question: Sooner, if you help. -

        - -
        -

        1.6 How do I contribute to the effort?

        -

        Here is a - page devoted to this topic. Subscribing to the mailing - list (see above, or the homepage) is a very good idea if you - have something to contribute, or if you have spare time and - want to help. Contributions don't have to be in the form of - source code; anybody who is willing to help write - documentation, for example, or has found a bug in code that - we all thought was working, is more than welcome! -

        - -
        -

        1.7 What happened to libg++? I need that!

        -

        The most recent libg++ README states that libg++ is no longer - being actively maintained. It should not be used for new - projects, and is only being kicked along to support older code. -

        -

        The libg++ was designed and created when there was no Standard - to provide guidance. Classes like linked lists are now provided - for by list<T> and do not need to be created by - genclass. (For that matter, templates exist now and - are well-supported, whereas genclass (mostly) predates them.) -

        -

        There are other classes in libg++ that are not specified in the - ISO Standard (e.g., statistical analysis). While there are a - lot of really useful things that are used by a lot of people - (e.g., statistics :-), the Standards Committee couldn't include - everything, and so a lot of those "obvious" classes - didn't get included. -

        -

        Since libstdc++ is an implementation of the Standard Library, we - have no plans at this time to include non-Standard utilities - in the implementation, however handy they are. (The extensions - provided in the SGI STL aren't maintained by us and don't get - a lot of our attention, because they don't require a lot of our - time.) It is entirely plausable that the "useful stuff" - from libg++ might be extracted into an updated utilities library, - but nobody has started such a project yet. -

        -

        (The Boost site houses free - C++ libraries that do varying things, and happened to be started - by members of the Standards Committee. Certain "useful - stuff" classes will probably migrate there.) -

        -

        For the bold and/or desperate, the - GCC extensions page - describes where to find the last libg++ source. -

        - -
        -

        1.8 What if I have more questions?

        -

        If you have read the README and RELEASE-NOTES files, and your - question remains unanswered, then just ask the mailing list. - At present, you do not need to be subscribed to the list to - send a message to it. More information is available on the - homepage (including how to browse the list archives); to send - to the list, use - libstdc++@gcc.gnu.org. -

        -

        If you have a question that you think should be included here, - or if you have a question about a question/answer here, - contact Phil Edwards - or Gabriel Dos Reis. -

        - -
        -

        1.9 What are the license terms for libstdc++-v3?

        -

        See our license description - for these and related questions. -

        - -
        -

        2.0 Installation

        -

        2.1 How do I install libstdc++-v3?

        -

        Complete instructions are not given here (this is a FAQ, not - an installation document), but the tools required are few: -

        -
          -
        • A 3.x release of GCC. Note that building GCC is much - easier and more automated than building the GCC 2.[78] - series was. If you are using GCC 2.95, you can still - build earlier snapshots of libstdc++. -
        • -
        • GNU Make is required for GCC 3.4 and later. -
        • -
        • The GNU Autotools are needed if you are messing with - the configury or makefiles. -
        • -
        -

        The file documentation.html - provides a good overview of the steps necessary to build, install, - and use the library. Instructions for configuring the library - with new flags such as --enable-threads are there also, as well as - patches and instructions for working with GCC 2.95. -

        -

        The top-level install.html and - RELEASE-NOTES files contain - the exact build and installation instructions. You may wish to - browse those files over CVSweb ahead of time to get a feel for - what's required. RELEASE-NOTES is located in the - ".../docs/17_intro/" directory of the distribution. -

        - -
        -

        2.2 [removed]

        -

        This question has become moot and has been removed. The stub - is here to preserve numbering (and hence links/bookmarks). -

        - -
        -

        2.3 What is this CVS thing that you - keep mentioning?

        -

        The Concurrent Versions System is one of several revision - control packages. It was selected for GNU projects because it's - free (speech), free (beer), and very high quality. The CVS entry in - the GNU software catalogue has a better description as - well as a - link to the makers of CVS. -

        -

        The "anonymous client checkout" feature of CVS is - similar to anonymous FTP in that it allows anyone to retrieve - the latest libstdc++ sources. -

        -

        After the first of April, American users will have a - "/pharmacy" command-line option... - -

        - -
        -

        2.4 How do I know if it works?

        -

        libstdc++-v3 comes with its own testsuite. You do not need - to actually install the library ("make - install") to run the testsuite, but you do need - DejaGNU, as described - here. -

        -

        To run the testsuite on the library after building it, use - "make check" while in your build directory. To run - the testsuite on the library after building and installing it, - use "make check-install" instead. -

        -

        If you find bugs in the testsuite programs themselves, or if you - think of a new test program that should be added to the suite, - please write up your idea and send it to the list! -

        - -
        -

        2.5 This library is HUGE! And what's libsupc++?

        -

        Usually the size of libraries on disk isn't noticeable. When a - link editor (or simply "linker") pulls things from a - static archive library, only the necessary object files are copied - into your executable, not the entire library. Unfortunately, even - if you only need a single function or variable from an object file, - the entire object file is extracted. (There's nothing unique to C++ - or libstdc++-v3 about this; it's just common behavior, given here - for background reasons.) -

        -

        Some of the object files which make up libstdc++.a are rather large. - If you create a statically-linked executable with - -static, those large object files are suddenly part - of your executable. Historically the best way around this was to - only place a very few functions (often only a single one) in each - source/object file; then extracting a single function is the same - as extracting a single .o file. For libstdc++-v3 this is only - possible to a certain extent; the object files in question contain - template classes and template functions, pre-instantiated, and - splitting those up causes severe maintenance headaches. -

        -

        It's not a bug, and it's not really a problem. Nevertheless, some - people don't like it, so here are two pseudo-solutions: -

        -

        If the only functions from libstdc++.a which you need are - language support functions (those listed in clause 18 of the - standard, e.g., new and delete), - then try linking against libsupc++.a (Using - gcc instead of g++ and explicitly - linking in -lsupc++ for the final link step will - do it). This library contains only those support routines, - one per object file. But if you are using anything from the - rest of the library, such as IOStreams or vectors, then - you'll still need pieces from libstdc++.a. -

        -

        The second method is one we hope to incorporate into the library - build process. Some platforms can place each function and variable - into its own section in a .o file. The GNU linker can then perform - garbage collection on unused sections; this reduces the situation - to only copying needed functions into the executable, as before, - but all happens automatically. -

        -

        Unfortunately the garbage collection in GNU ld is buggy; sections - (corresponding to functions and variables) which are used - are mistakenly removed, leading to horrible crashes when your - executable starts up. For the time being, this feature is not used - when building the library. -

        - -
        -

        2.6 Why do I get an error saying - libstdc++.so.X is missing when I run - my program?

        -

        Depending on your platform and library version, the message might - be similar to one of the following: -

        -
        -    ./a.out: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
        -
        -    /usr/libexec/ld-elf.so.1: Shared object "libstdc++.so.6" not found 
        - -

        This doesn't mean that the shared library isn't installed, only - that the dynamic linker can't find it. When a dynamically-linked - executable is run the linker finds and loads the required shared - libraries by searching a pre-configured list of directories. If - the directory where you've installed libstdc++ is not in this - list then the libraries won't be found. The simplest way to fix - this is to use the LD_LIBRARY_PATH environment - variable, which is a colon-separated list of directories in which - the linker will search for shared libraries: -

        -
        -    LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH
        -    export LD_LIBRARY_PATH 
        -

        The exact environment variable to use will depend on your platform, - e.g. DYLD_LIBRARY_PATH for Darwin, - LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 for Solaris 32-/64-bit, - LD_LIBRARYN32_PATH/LD_LIBRARY64_PATH for Irix N32/64-bit ABIs - and SHLIB_PATH for HP-UX. -

        -

        See the man pages for ld(1), ldd(1) and - ldconfig(8) for more information. The dynamic linker - has different names on different platforms but the man page is - usually called something such as ld.so / rtld / dld.so. -

        - -
        -

        3.0 Platform-Specific Issues

        -

        3.1 Can libstdc++-v3 be used with <my - favorite compiler>?

        -

        Probably not. Yet.

        -

        Because GCC advances so rapidly, development and testing of - libstdc++ is being done almost entirely under that compiler. - If you are curious about whether other, lesser compilers - (*grin*) support libstdc++, you are more than welcome to try. - Configuring and building the library (see above) will still - require certain tools, however. Also keep in mind that - building libstdc++ does not imply that your compiler - will be able to use all of the features found in the - C++ Standard Library. -

        -

        Since the goal of ISO Standardization is for all C++ - implementations to be able to share code, the final libstdc++ - should, in theory, be usable under any ISO-compliant - compiler. It will still be targeted and optimized for - GCC/g++, however. -

        - -
        -

        3.2 [removed]

        -

        This question has become moot and has been removed. The stub - is here to preserve numbering (and hence links/bookmarks). -

        - -
        -

        3.3 [removed]

        -

        This question has become moot and has been removed. The stub - is here to preserve numbering (and hence links/bookmarks). -

        - -
        -

        3.4 I can't use 'long long' on Solaris

        -

        By default we try to support the C99 long long type. - This requires that certain functions from your C library be present. -

        -

        Up through release 3.0.2 the tests performed were too general, and - this feature was disabled when it did not need to be. The most - commonly reported platform affected was Solaris. -

        -

        This has been fixed for 3.0.3 and onwards. -

        - -
        -

        3.5 _XOPEN_SOURCE / _GNU_SOURCE - / etc is always defined

        -

        On Solaris, g++ (but not gcc) always defines the preprocessor - macro _XOPEN_SOURCE. On GNU/Linux, the same happens - with _GNU_SOURCE. (This is not an exhaustive list; - other macros and other platforms are also affected.) -

        -

        These macros are typically used in C library headers, guarding new - versions of functions from their older versions. The C++ standard - library includes the C standard library, but it requires the C90 - version, which for backwards-compatability reasons is often not the - default for many vendors. -

        -

        More to the point, the C++ standard requires behavior which is only - available on certain platforms after certain symbols are defined. - Usually the issue involves I/O-related typedefs. In order to - ensure correctness, the compiler simply predefines those symbols. -

        -

        Note that it's not enough to #define them only when the library is - being built (during installation). Since we don't have an 'export' - keyword, much of the library exists as headers, which means that - the symbols must also be defined as your programs are parsed and - compiled. -

        -

        To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in - the gcc config headers for your target (and try changing them to - see what happens when building complicated code). You can also run - "g++ -E -dM - < /dev/null" to display - a list of predefined macros for any particular installation. -

        -

        This has been discussed on the mailing lists - quite a bit. -

        -

        This method is something of a wart. We'd like to find a cleaner - solution, but nobody yet has contributed the time. -

        - -
        -

        3.6 OS X ctype.h is broken! How can I hack it?

        -

        This is a long-standing bug in the OS X support. Fortunately, - the patch is quite simple, and well-known. - Here's a - link to the solution. -

        - -
        -

        3.7 Threading is broken on i386

        -

        Support for atomic integer operations is/was broken on i386 - platforms. The assembly code accidentally used opcodes that are - only available on the i486 and later. So if you configured GCC - to target, for example, i386-linux, but actually used the programs - on an i686, then you would encounter no problems. Only when - actually running the code on a i386 will the problem appear. -

        -

        This is fixed in 3.2.2. -

        - -
        -

        3.8 Recent GNU/Linux glibc required?

        -

        When running on GNU/Linux, libstdc++ 3.2.1 (shared library version - 5.0.1) and later uses localization and formatting code from the system - C library (glibc) version 2.2.5. That version of glibc is over a - year old and contains necessary bugfixes. Many GNU/Linux distros make - glibc version 2.3.x available now. -

        -

        The guideline is simple: the more recent the C++ library, the - more recent the C library. (This is also documented in the main - GCC installation instructions.) -

        - -
        -

        3.9 Can't use wchar_t/wstring on FreeBSD

        -

        At the moment there are a few problems in FreeBSD's support for - wide character functions, and as a result the libstdc++ configury - decides that wchar_t support should be disabled. Once the underlying - problems are fixed in FreeBSD (soon), the library support will - automatically enable itself. -

        -

        You can fix the problems yourself, and learn more about the situation, - by reading - - this short thread ("_GLIBCPP_USE_WCHAR_T undefined in - FreeBSD's c++config.h?"). -

        - -
        -

        3.10 MIPS atomic operations

        -

        The atomic locking routines for MIPS targets requires MIPS II - and later. A patch went in just after the 3.3 release to - make mips* use the generic implementation instead. You can also - configure for mipsel-elf as a workaround. -

        -

        mips*-*-linux* continues to use the MIPS II routines, and more - work in this area is expected. -

        - -
        -

        4.0 Known Bugs and Non-Bugs

        - Note that this section can get rapdily outdated -- such is the - nature of an open-source project. For the latest information, join - the mailing list or look through recent archives. The RELEASE- - NOTES and BUGS files are generally kept up-to-date. - -

        For 3.0.1, the most common "bug" is an apparently missing - "../" in include/Makefile, resulting in files - like gthr.h and gthr-single.h not being found. Please read - the configuration - instructions for GCC, - specifically the part about configuring in a separate build directory, - and how strongly recommended it is. Building in the source directory - is fragile, is rarely tested, and tends to break, as in this case. - This was fixed for 3.0.2. -

        - -

        For 3.1, the most common "bug" is a parse error when using - <fstream>, ending with a message, - "bits/basic_file.h:52: parse error before `{' - token." Please read - the installation instructions for - GCC, specifically the part about not installing newer versions on - top of older versions. If you install 3.1 over a 3.0.x release, then - the wrong basic_file.h header will be found (its location changed - between releases). -

        - -

        Please do not report these as bugs. We know about them. - Reporting this -- or any other problem that's already been fixed -- - hinders the development of GCC, because we have to take time to - respond to your report. Thank you. -

        - -
        -

        4.1 What works already?

        -

        Short answer: Pretty much everything works except for some - corner cases. Also, localization is incomplete. For whether it works - well, or as you expect it to work, see 5.2. -

        -

        Long answer: See the docs/html/17_intro/CHECKLIST file, which is - badly outdated... Also see the RELEASE-NOTES file, which is kept - more up to date. -

        - -
        -

        4.2 Bugs in gcc/g++ (not libstdc++-v3)

        -

        This is by no means meant to be complete nor exhaustive, but - mentions some problems that users may encounter when building - or using libstdc++. If you are experiencing one of these - problems, you can find more information on the libstdc++ and - the GCC mailing lists. -

        -

        Before reporting a bug, examine the - bugs database with the - category set to "libstdc++". The BUGS file in the source - tree also tracks known serious problems. -

        -
          -
        • Debugging is problematic, due to bugs in line-number generation - (mostly fixed in the compiler) and gdb lagging behind the - compiler (lack of personnel). We recommend configuring the - compiler using --with-dwarf2 if the DWARF2 - debugging format is not already the default on your platform. - Also, -changing your - GDB settings can have a profound effect on your C++ debugging - experiences. :-)
        • -
        - -
        -

        4.3 Bugs in the C++ language/lib specification

        -

        Yes, unfortunately, there are some. In a - message - to the list, Nathan Myers announced that he has started a list of - problems in the ISO C++ Standard itself, especially with - regard to the chapters that concern the library. The list - itself is - posted on his - website. Developers who are having problems interpreting - the Standard may wish to consult his notes. -

        -

        For those people who are not part of the ISO Library Group - (i.e., nearly all of us needing to read this page in the first - place :-), a public list of the library defects is occasionally - published here. - Some of these have resulted in code changes. -

        - -
        -

        4.4 Things in libstdc++ that only look like bugs

        -

        There are things which are not bugs in the compiler (4.2) nor - the language specification (4.3), but aren't really bugs in - libstdc++, either. Really! Please do not report these as bugs. -

        -

        -Weffc++ - The biggest of these is the quadzillions of warnings about the - library headers emitted when -Weffc++ is used. Making - libstdc++ "-Weffc++-clean" is not a goal of the project, - for a few reasons. Mainly, that option tries to enforce - object-oriented programming, while the Standard Library isn't - necessarily trying to be OO. -

        -

        reopening a stream fails - Did I just say that -Weffc++ was our biggest false-bug report? - I lied. (It used to be.) Today it seems to be reports that after - executing a sequence like -

        -
        -    #include <fstream>
        -    ...
        -    std::fstream  fs("a_file");
        -    // .
        -    // . do things with fs...
        -    // .
        -    fs.close();
        -    fs.open("a_new_file");
        -

        all operations on the re-opened fs will fail, or at - least act very strangely. Yes, they often will, especially if - fs reached the EOF state on the previous file. The - reason is that the state flags are not cleared - on a successful call to open(). The standard unfortunately did - not specify behavior in this case, and to everybody's great sorrow, - the proposed LWG resolution in - DR #22 is to leave the flags unchanged. You must insert a call - to fs.clear() between the calls to close() and open(), - and then everything will work like we all expect it to work. - Update: for GCC 4.0 we implemented the resolution - of DR #409 and open() now calls - clear() on success! -

        -

        rel_ops - Another is the rel_ops namespace and the template - comparison operator functions contained therein. If they become - visible in the same namespace as other comparison functions - (e.g., 'using' them and the <iterator> header), - then you will suddenly be faced with huge numbers of ambiguity - errors. This was discussed on the -v3 list; Nathan Myers - sums - things up here. The collisions with vector/string iterator - types have been fixed for 3.1. -

        -

        The g++-3 headers are not ours

        -

        If you have found an extremely broken header file which is - causing problems for you, look carefully before submitting a - "high" priority bug report (which you probably shouldn't - do anyhow; see the last paragraph of the page describing - the GCC bug database). -

        -

        If the headers are in ${prefix}/include/g++-3, or if - the installed library's name looks like libstdc++-2.10.a - or libstdc++-libc6-2.10.so, then you are using the old - libstdc++-v2 library, which is nonstandard and unmaintained. Do not - report problems with -v2 to the -v3 mailing list. -

        -

        For GCC versions 3.0 and 3.1 the libstdc++-v3 header files are - installed in ${prefix}/include/g++-v3 (see the 'v'?). - Starting with version 3.2 the headers are installed in - ${prefix}/include/c++/${version} as this prevents - headers from previous versions being found by mistake. -

        -

        glibc - If you're on a GNU/Linux system and have just upgraded to - glibc 2.2, but are still using gcc 2.95.2, then you should have - read the glibc FAQ, specifically 2.34: -

        -
        -2.34.   When compiling C++ programs, I get a compilation error in streambuf.h.
        -
        -{BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to
        -apply a patch to the include files in /usr/include/g++, because the fpos_t
        -type has changed in glibc 2.2.  The patch is at
        -http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
        -   
        -

        Note that 2.95.x shipped with the - old v2 library which is no longer - maintained. Also note that gcc 2.95.3 fixes this problem, but - requires a separate patch for libstdc++-v3. -

        -

        concept checks - If you see compilation errors containing messages about - fooConcept and a constraints - member function, then most likely you have violated one of the - requirements for types used during instantiation of template - containers and functions. For example, EqualityComparableConcept - appears if your types must be comparable with == and you have not - provided this capability (a typo, or wrong visibility, or you - just plain forgot, etc). -

        -

        More information, including how to optionally enable/disable the - checks, is available - here. -

        -

        dlopen/dlsym - If you are using the C++ library across dynamically-loaded - objects, make certain that you are passing the correct options - when compiling and linking: -

        -
        -    // compile your library components
        -    g++ -fPIC -c a.cc
        -    g++ -fPIC -c b.cc
        -    ...
        -    g++ -fPIC -c z.cc
        -
        -    // create your library
        -    g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o
        -
        -    // link the executable
        -    g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl
        -

        "memory leaks" in containers - A few people have reported that the standard containers appear - to leak memory when tested with memory checkers such as - valgrind. - The library's default allocators keep free memory in a pool - for later reuse, rather than returning it to the OS. Although - this memory is always reachable by the library and is never - lost, memory debugging tools can report it as a leak. If you - want to test the library for memory leaks please read - Tips for memory leak hunting - first. -

        - -
        -

        4.5 Aw, that's easy to fix!

        -

        If you have found a bug in the library and you think you have - a working fix, then send it in! The main GCC site has a page - on submitting - patches that covers the procedure, but for libstdc++ you - should also send the patch to our mailing list in addition to - the GCC patches mailing list. The libstdc++ - contributors' page - also talks about how to submit patches. -

        -

        In addition to the description, the patch, and the ChangeLog - entry, it is a Good Thing if you can additionally create a small - test program to test for the presence of the bug that your - patch fixes. Bugs have a way of being reintroduced; if an old - bug creeps back in, it will be caught immediately by the - testsuite -- but only if such a test exists. -

        - -
        -

        5.0 Miscellaneous

        -

        5.1 string::iterator is not char*; - vector<T>::iterator is not T*

        -

        If you have code that depends on container<T> iterators - being implemented as pointer-to-T, your code is broken. -

        -

        While there are arguments for iterators to be implemented in - that manner, A) they aren't very good ones in the long term, - and B) they were never guaranteed by the Standard anyway. The - type-safety achieved by making iterators a real class rather - than a typedef for T* outweighs nearly all opposing - arguments. -

        -

        Code which does assume that a vector iterator i - is a pointer can often be fixed by changing i in - certain expressions to &*i . Future revisions - of the Standard are expected to bless this usage for - vector<> (but not for basic_string<>). -

        - -
        -

        5.2 What's next after libstdc++-v3?

        -

        Hopefully, not much. The goal of libstdc++-v3 is to produce - a fully-compliant, fully-portable Standard Library. After that, - we're mostly done: there won't be any more compliance - work to do. However: -

        -
          -
        1. The ISO Committee will meet periodically to review Defect Reports - in the C++ Standard. Undoubtedly some of these will result in - changes to the Standard, which will be reflected in patches to - libstdc++. Some of that is already happening, see 4.3. Some of - those changes are being predicted by the library maintainers, and - we add code to the library based on what the current proposed - resolution specifies. Those additions are listed in - the extensions page. -

        2. -
        3. Performance tuning. Lots of performance tuning. This too is - already underway for post-3.0 releases, starting with memory - expansion in container classes and buffer usage in synchronized - stream objects. -

        4. -
        5. An ABI for libstdc++ is being developed, so that - multiple binary-incompatible copies of the library can be replaced - with a single backwards-compatible library, like libgcc_s.so is. -

        6. -
        7. The current libstdc++ contains extensions to the Library which - must be explicitly requested by client code (for example, the - hash tables from SGI). Other extensions may be added to - libstdc++-v3 if they seem to be "standard" enough. - (For example, the "long long" type from C99.) - Bugfixes and rewrites (to improve or fix thread safety, for - instance) will of course be a continuing task. -

        8. -
        9. There is an effort underway to add significant extensions to - the standard library specification. The latest version of this effort is - described in - - The C++ Library Technical Report 1. - See 5.5. -

        10. -
        -

        This - question about the next libstdc++ prompted some brief but - interesting - speculation. -

        - -
        -

        5.3 What about the STL from SGI?

        -

        The STL from SGI, - version 3.3, was the final merge of the STL codebase. The - code in libstdc++ contains many fixes and changes, and - the SGI code is no longer under active - development. We expect that no future merges will take place. -

        -

        In particular, string is not from SGI and makes no - use of their "rope" class (which is included as an - optional extension), nor is valarray and some others. - Classes like vector<> are, however we have - made significant changes to them since then. -

        -

        The FAQ for SGI's STL (one jump off of their main page) is - recommended reading. -

        - -
        -

        5.4 Extensions and Backward Compatibility

        -

        Headers in the ext and backward - subdirectories should be referred to by their relative paths: - -

        -
        -      #include <ext/hash_map> 
        -

        rather than using -I or other options. This is more - portable and forward-compatible. (The situation is the same as - that of other headers whose directories are not searched directly, - e.g., <sys/stat.h>, <X11/Xlib.h>. -

        - -

        At this time most of the features of the SGI STL extension have been - replaced by standardized libraries. - In particular, the unordered_map and unordered_set containers of TR1 - are suitable replacement for the non-standard hash_map and hash_set - containers in the SGI STL. See 5.5 for more details. -

        - -

        The extensions are no longer in the global or std - namespaces, instead they are declared in the __gnu_cxx - namespace. For maximum portability, consider defining a namespace - alias to use to talk about extensions, e.g.: -

        -
        -      #ifdef __GNUC__
        -      #if __GNUC__ < 3
        -        #include <hash_map.h>
        -        namespace Sgi { using ::hash_map; }; // inherit globals
        -      #else
        -        #include <ext/hash_map>
        -        #if __GNUC_MINOR__ == 0
        -          namespace Sgi = std;               // GCC 3.0
        -        #else
        -          namespace Sgi = ::__gnu_cxx;       // GCC 3.1 and later
        -        #endif
        -      #endif
        -      #else      // ...  there are other compilers, right?
        -        namespace Sgi = std;
        -      #endif
        -
        -      Sgi::hash_map<int,int> my_map; 
        -

        This is a bit cleaner than defining typedefs for all the - instantiations you might need. -

        -

        Note: explicit template specializations must - be declared in the same namespace as the original template. - This means you cannot use a namespace alias when declaring - an explicit specialization. -

        -

        Extensions to the library have - their own page. -

        - -
        -

        5.5 Does libstdc++ support TR1?

        - -

        The C++ Standard Library Technical Report adds many new features to - the library. The latest version of this effort is described in - - Technical Report 1. -

        - -

        libstdc++ strives to implement all of TR1. - An overview of the implementation status - is available. -

        - -

        Briefly, the features of TR1 and the current status are: -

        - -

        Unordered containers - Complete - - The unordered_set, unordered_map, unordered_multiset, and - unordered_multimap containers are hashed versions of the map, set, - multimap, and multiset containers respectively. These classes are - suitable replacements for the SGI STL hash_map and hash_set - extensions. -

        - -

        Reference-counted smart pointers - Complete - - The shared_ptr and weak_ptr allow several object to know about a - pointer and whether it is valid. When the last reference to the - pointer is destroyed the pointer is freed. -

        - -

        Type traits - Complete - - The type_traits class gives templates the ability to probe - information about the input type and enable type-dependent logic - to be performed without the need of template specializations. -

        - -

        Fixed-size arrays - Complete - - The array class implements small fixed-sized arrays with container - semantics. -

        - -

        Tuples - Complete - - The tuple class implements small heterogeneous arrays. This is an - enhanced pair. In fact, the standard pair is enhanced with a tuple - interface. -

        - -

        A regular expression engine - This library provides for regular expression objects with traversal - of text with return of subexpressions. -

        - -

        A random number engine - This library contains randow number generators with several different - choices of distribution. -

        - -

        Special functions - Under construction - - Twenty-three mathematical functions familiar to physicists and - engineers are included: cylindrical and spherical Bessel and Neumann - functions, hypergeometric functions, Laguerre polynomials, Legendre - functions, elliptic integrals, exponential integrals and the Riemann - zeta function all for your computing pleasure. -

        - -

        C99 compatibility - Under construction - - There are many features designed to minimize the divergence of the C - and the C++ languages. -

        - -
        -

        5.6 Is libstdc++-v3 thread-safe?

        -

        libstdc++-v3 strives to be thread-safe when all of the following - conditions are met: -

        -
          -
        • The system's libc is itself thread-safe,
        • -
        • gcc -v reports a thread model other than 'single',
        • -
        • [pre-3.3 only] a non-generic implementation of atomicity.h - exists for the architecture in question.
        • -
        -

        The user-code must guard against concurrent method calls which may - access any particular library object's state. Typically, the - application programmer may infer what object locks must be held - based on the objects referenced in a method call. Without getting - into great detail, here is an example which requires user-level - locks: -

        -
        -     library_class_a shared_object_a;
        -
        -     thread_main () {
        -       library_class_b *object_b = new library_class_b;
        -       shared_object_a.add_b (object_b);   // must hold lock for shared_object_a
        -       shared_object_a.mutate ();          // must hold lock for shared_object_a
        -     }
        -
        -     // Multiple copies of thread_main() are started in independent threads.
        -

        Under the assumption that object_a and object_b are never exposed to - another thread, here is an example that should not require any - user-level locks: -

        -
        -     thread_main () {
        -       library_class_a object_a;
        -       library_class_b *object_b = new library_class_b;
        -       object_a.add_b (object_b);
        -       object_a.mutate ();
        -     } 
        -

        All library objects are safe to use in a multithreaded program as - long as each thread carefully locks out access by any other - thread while it uses any object visible to another thread, i.e., - treat library objects like any other shared resource. In general, - this requirement includes both read and write access to objects; - unless otherwise documented as safe, do not assume that two threads - may access a shared standard library object at the same time. -

        -

        See chapters 17 (library - introduction), 23 - (containers), and 27 (I/O) for - more information. -

        - -
        -

        5.7 How do I get a copy of the ISO C++ Standard?

        -

        Copies of the full ISO 14882 standard are available on line via the - ISO mirror site for committee members. Non-members, or those who - have not paid for the privilege of sitting on the committee and - sustained their two-meeting commitment for voting rights, may get a - copy of the standard from their respective national standards - organization. In the USA, this national standards organization is - ANSI and their website is right here. - (And if you've already registered with them, clicking this link will - take you to directly to the place where you can -buy - the standard on-line. -

        -

        Who is your country's member body? Visit the - ISO homepage and find out! -

        - -
        -

        5.8 What's an ABI and why is it so messy?

        -

        "ABI" stands for "Application Binary Interface." - Conventionally, it refers to a great mass of details about how - arguments are arranged on the call stack and/or in registers, and - how various types are arranged and padded in structs. A single CPU - design may suffer multiple ABIs designed by different development - tool vendors who made different choices, or even by the same vendor - for different target applications or compiler versions. In ideal - circumstances the CPU designer presents one ABI and all the OSes and - compilers use it. In practice every ABI omits details that compiler - implementers (consciously or accidentally) must choose for themselves. -

        -

        That ABI definition suffices for compilers to generate code so a - program can interact safely with an OS and its lowest-level libraries. - Users usually want an ABI to encompass more detail, allowing libraries - built with different compilers (or different releases of the same - compiler!) to be linked together. For C++, this includes many more - details than for C, and CPU designers (for good reasons elaborated - below) have not stepped up to publish C++ ABIs. The details include - virtual function implementation, struct inheritance layout, name - mangling, and exception handling. Such an ABI has been defined for - GNU C++, and is immediately useful for embedded work relying only on - a "free-standing implementation" that doesn't include (much - of) the standard library. It is a good basis for the work to come. -

        -

        A useful C++ ABI must also incorporate many details of the standard - library implementation. For a C ABI, the layouts of a few structs - (such as FILE, stat, jmpbuf, and the like) and a few macros suffice. - For C++, the details include the complete set of names of functions - and types used, the offsets of class members and virtual functions, - and the actual definitions of all inlines. C++ exposes many more - library details to the caller than C does. It makes defining - a complete ABI a much bigger undertaking, and requires not just - documenting library implementation details, but carefully designing - those details so that future bug fixes and optimizations don't - force breaking the ABI. -

        -

        There are ways to help isolate library implementation details from the - ABI, but they trade off against speed. Library details used in - inner loops (e.g., getchar) must be exposed and frozen for all - time, but many others may reasonably be kept hidden from user code, - so they may later be changed. Deciding which, and implementing - the decisions, must happen before you can reasonably document a - candidate C++ ABI that encompasses the standard library. -

        - -
        -

        5.9 How do I make std::vector<T>::capacity() - == std::vector<T>::size()?

        - -

        The standard idiom for deallocating a std::vector<T>'s - unused memory is to create a temporary copy of the vector and swap their - contents, e.g. for std::vector<T> v -

        -
        -     std::vector<T>(v).swap(v);
        -   
        -

        The copy will take O(n) time and the swap is constant time. -

        -

        See Shrink-to-fit strings for - a similar solution for strings. -

        - - - -
        -

        -See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

        - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.txt b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.txt deleted file mode 100644 index 958f1d908..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/faq/index.txt +++ /dev/null @@ -1,1111 +0,0 @@ - - #[1]GNU C++ Standard Library [2]Copyright - - libstdc++ Frequently Asked Questions - - The latest version of this document is always available at - [3]http://gcc.gnu.org/onlinedocs/libstdc++/faq/. The main - documentation page is at - [4]http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html. - - To the [5]libstdc++-v3 homepage. - _________________________________________________________________ - - Questions - - 1. [6]General Information - 1. [7]What is libstdc++-v3? - 2. [8]Why should I use libstdc++? - 3. [9]Who's in charge of it? - 4. [10]How do I get libstdc++? - 5. [11]When is libstdc++ going to be finished? - 6. [12]How do I contribute to the effort? - 7. [13]What happened to libg++? I need that! - 8. [14]What if I have more questions? - 9. [15]What are the license terms for libstdc++-v3? - 2. [16]Installation - 1. [17]How do I install libstdc++-v3? - 2. [18][removed] - 3. [19]What is this CVS thing that you keep mentioning? - 4. [20]How do I know if it works? - 5. [21]This library is HUGE! And what's libsupc++? - 6. [22]Why do I get an error saying libstdc++.so.X is missing - when I run my program? - 3. [23]Platform-Specific Issues - 1. [24]Can libstdc++-v3 be used with ? - 2. [25][removed] - 3. [26][removed] - 4. [27]I can't use 'long long' on Solaris - 5. [28]_XOPEN_SOURCE / _GNU_SOURCE / etc is always defined - 6. [29]OS X ctype.h is broken! How can I hack it? - 7. [30]Threading is broken on i386 - 8. [31]Recent GNU/Linux glibc required? - 9. [32]Can't use wchar_t/wstring on FreeBSD - 10. [33]MIPS atomic operations - 4. [34]Known Bugs and Non-Bugs - 1. [35]What works already? - 2. [36]Bugs in gcc/g++ (not libstdc++-v3) - 3. [37]Bugs in the C++ language/lib specification - 4. [38]Things in libstdc++ that only look like bugs - o [39]reopening a stream fails - o [40]-Weffc++ complains too much - o [41]"ambiguous overloads" after including an old-style - header - o [42]The g++-3 headers are not ours - o [43]compilation errors from streambuf.h - o [44]errors about *Concept and constraints in the STL... - o [45]program crashes when using library code in a - dynamically-loaded library - o [46]"memory leaks" in containers - 5. [47]Aw, that's easy to fix! - 5. [48]Miscellaneous - 1. [49]string::iterator is not char*; vector::iterator is not - T* - 2. [50]What's next after libstdc++-v3? - 3. [51]What about the STL from SGI? - 4. [52]Extensions and Backward Compatibility - 5. [53]Does libstdc++ support TR1? - 6. [54]Is libstdc++-v3 thread-safe? - 7. [55]How do I get a copy of the ISO C++ Standard? - 8. [56]What's an ABI and why is it so messy? - 9. [57]How do I make std::vector::capacity() == - std::vector::size? - _________________________________________________________________ - - 1.0 General Information - -1.1 What is libstdc++-v3? - - The GNU Standard C++ Library v3 is an ongoing project to implement the - ISO 14882 Standard C++ library as described in chapters 17 through 27 - and annex D. For those who want to see exactly how far the project has - come, or just want the latest bleeding-edge code, the up-to-date - source is available over anonymous CVS, and can even be browsed over - the Web (see [58]1.4 below). - - The older libstdc++-v2 project is no longer maintained; the code has - been completely replaced and rewritten. [59]If you are using V2, then - you need to report bugs to your system vendor, not to the V3 list. - - A more formal description of the V3 goals can be found in the official - [60]design document. - _________________________________________________________________ - -1.2 Why should I use libstdc++? - - The completion of the ISO C++ standardization gave the C++ community a - powerful set of reuseable tools in the form of the C++ Standard - Library. However, all existing C++ implementations are (as the Draft - Standard used to say) "incomplet and incorrekt," and many suffer from - limitations of the compilers that use them. - - The GNU C/C++/FORTRAN/ compiler (gcc, g++, etc) is - widely considered to be one of the leading compilers in the world. Its - development is overseen by the [61]GCC team. All of the rapid - development and near-legendary [62]portability that are the hallmarks - of an open-source project are being applied to libstdc++. - - That means that all of the Standard classes and functions (such as - string, vector<>, iostreams, and algorithms) will be freely available - and fully compliant. Programmers will no longer need to "roll their - own" nor be worried about platform-specific incompatibilities. - _________________________________________________________________ - -1.3 Who's in charge of it? - - The libstdc++ project is contributed to by several developers all over - the world, in the same way as GCC or Linux. Benjamin Kosnik, Gabriel - Dos Reis, Phil Edwards, Ulrich Drepper, Loren James Rittle, and Paolo - Carlini are the lead maintainers of the CVS archive. - - Development and discussion is held on the libstdc++ mailing list. - Subscribing to the list, or searching the list archives, is open to - everyone. You can read instructions for doing so on the [63]homepage. - If you have questions, ideas, code, or are just curious, sign up! - _________________________________________________________________ - -1.4 How do I get libstdc++? - - The [64]homepage has instructions for retrieving the latest CVS - sources, and for browsing the CVS sources over the web. - - Stable versions of libstdc++-v3 are included with releases of [65]the - GCC compilers. - - The subset commonly known as the Standard Template Library (chapters - 23 through 25, mostly) is adapted from the final release of the SGI - STL, with extensive changes. - _________________________________________________________________ - -1.5 When is libstdc++ going to be finished? - - Nathan Myers gave the best of all possible answers, responding to a - Usenet article asking this question: Sooner, if you help. - _________________________________________________________________ - -1.6 How do I contribute to the effort? - - Here is [66]a page devoted to this topic. Subscribing to the mailing - list (see above, or the homepage) is a very good idea if you have - something to contribute, or if you have spare time and want to help. - Contributions don't have to be in the form of source code; anybody who - is willing to help write documentation, for example, or has found a - bug in code that we all thought was working, is more than welcome! - _________________________________________________________________ - -1.7 What happened to libg++? I need that! - - The most recent libg++ README states that libg++ is no longer being - actively maintained. It should not be used for new projects, and is - only being kicked along to support older code. - - The libg++ was designed and created when there was no Standard to - provide guidance. Classes like linked lists are now provided for by - list and do not need to be created by genclass. (For that matter, - templates exist now and are well-supported, whereas genclass (mostly) - predates them.) - - There are other classes in libg++ that are not specified in the ISO - Standard (e.g., statistical analysis). While there are a lot of really - useful things that are used by a lot of people (e.g., statistics :-), - the Standards Committee couldn't include everything, and so a lot of - those "obvious" classes didn't get included. - - Since libstdc++ is an implementation of the Standard Library, we have - no plans at this time to include non-Standard utilities in the - implementation, however handy they are. (The extensions provided in - the SGI STL aren't maintained by us and don't get a lot of our - attention, because they don't require a lot of our time.) It is - entirely plausable that the "useful stuff" from libg++ might be - extracted into an updated utilities library, but nobody has started - such a project yet. - - (The [67]Boost site houses free C++ libraries that do varying things, - and happened to be started by members of the Standards Committee. - Certain "useful stuff" classes will probably migrate there.) - - For the bold and/or desperate, the [68]GCC extensions page describes - where to find the last libg++ source. - _________________________________________________________________ - -1.8 What if I have more questions? - - If you have read the README and RELEASE-NOTES files, and your question - remains unanswered, then just ask the mailing list. At present, you do - not need to be subscribed to the list to send a message to it. More - information is available on the homepage (including how to browse the - list archives); to send to the list, use [69]libstdc++@gcc.gnu.org. - - If you have a question that you think should be included here, or if - you have a question about a question/answer here, contact [70]Phil - Edwards or [71]Gabriel Dos Reis. - _________________________________________________________________ - -1.9 What are the license terms for libstdc++-v3? - - See [72]our license description for these and related questions. - _________________________________________________________________ - - 2.0 Installation - -2.1 How do I install libstdc++-v3? - - Complete instructions are not given here (this is a FAQ, not an - installation document), but the tools required are few: - * A 3.x release of GCC. Note that building GCC is much easier and - more automated than building the GCC 2.[78] series was. If you are - using GCC 2.95, you can still build earlier snapshots of - libstdc++. - * GNU Make is required for GCC 3.4 and later. - * The GNU Autotools are needed if you are messing with the configury - or makefiles. - - The file [73]documentation.html provides a good overview of the steps - necessary to build, install, and use the library. Instructions for - configuring the library with new flags such as --enable-threads are - there also, as well as patches and instructions for working with GCC - 2.95. - - The top-level install.html and [74]RELEASE-NOTES files contain the - exact build and installation instructions. You may wish to browse - those files over CVSweb ahead of time to get a feel for what's - required. RELEASE-NOTES is located in the ".../docs/17_intro/" - directory of the distribution. - _________________________________________________________________ - -2.2 [removed] - - This question has become moot and has been removed. The stub is here - to preserve numbering (and hence links/bookmarks). - _________________________________________________________________ - -2.3 What is this CVS thing that you keep mentioning? - - The Concurrent Versions System is one of several revision control - packages. It was selected for GNU projects because it's free (speech), - free (beer), and very high quality. The [75]CVS entry in the GNU - software catalogue has a better description as well as a [76]link to - the makers of CVS. - - The "anonymous client checkout" feature of CVS is similar to anonymous - FTP in that it allows anyone to retrieve the latest libstdc++ sources. - - After the first of April, American users will have a "/pharmacy" - command-line option... - _________________________________________________________________ - -2.4 How do I know if it works? - - libstdc++-v3 comes with its own testsuite. You do not need to actually - install the library ("make install") to run the testsuite, but you do - need DejaGNU, as described [77]here. - - To run the testsuite on the library after building it, use "make - check" while in your build directory. To run the testsuite on the - library after building and installing it, use "make check-install" - instead. - - If you find bugs in the testsuite programs themselves, or if you think - of a new test program that should be added to the suite, please write - up your idea and send it to the list! - _________________________________________________________________ - -2.5 This library is HUGE! And what's libsupc++? - - Usually the size of libraries on disk isn't noticeable. When a link - editor (or simply "linker") pulls things from a static archive - library, only the necessary object files are copied into your - executable, not the entire library. Unfortunately, even if you only - need a single function or variable from an object file, the entire - object file is extracted. (There's nothing unique to C++ or - libstdc++-v3 about this; it's just common behavior, given here for - background reasons.) - - Some of the object files which make up libstdc++.a are rather large. - If you create a statically-linked executable with -static, those large - object files are suddenly part of your executable. Historically the - best way around this was to only place a very few functions (often - only a single one) in each source/object file; then extracting a - single function is the same as extracting a single .o file. For - libstdc++-v3 this is only possible to a certain extent; the object - files in question contain template classes and template functions, - pre-instantiated, and splitting those up causes severe maintenance - headaches. - - It's not a bug, and it's not really a problem. Nevertheless, some - people don't like it, so here are two pseudo-solutions: - - If the only functions from libstdc++.a which you need are language - support functions (those listed in [78]clause 18 of the standard, - e.g., new and delete), then try linking against libsupc++.a (Using gcc - instead of g++ and explicitly linking in -lsupc++ for the final link - step will do it). This library contains only those support routines, - one per object file. But if you are using anything from the rest of - the library, such as IOStreams or vectors, then you'll still need - pieces from libstdc++.a. - - The second method is one we hope to incorporate into the library build - process. Some platforms can place each function and variable into its - own section in a .o file. The GNU linker can then perform garbage - collection on unused sections; this reduces the situation to only - copying needed functions into the executable, as before, but all - happens automatically. - - Unfortunately the garbage collection in GNU ld is buggy; sections - (corresponding to functions and variables) which are used are - mistakenly removed, leading to horrible crashes when your executable - starts up. For the time being, this feature is not used when building - the library. - _________________________________________________________________ - -2.6 Why do I get an error saying libstdc++.so.X is missing when I run my -program? - - Depending on your platform and library version, the message might be - similar to one of the following: - ./a.out: error while loading shared libraries: libstdc++.so.6: cannot open -shared object file: No such file or directory - - /usr/libexec/ld-elf.so.1: Shared object "libstdc++.so.6" not found - - This doesn't mean that the shared library isn't installed, only that - the dynamic linker can't find it. When a dynamically-linked executable - is run the linker finds and loads the required shared libraries by - searching a pre-configured list of directories. If the directory where - you've installed libstdc++ is not in this list then the libraries - won't be found. The simplest way to fix this is to use the - LD_LIBRARY_PATH environment variable, which is a colon-separated list - of directories in which the linker will search for shared libraries: - LD_LIBRARY_PATH=${prefix}/lib:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH - - The exact environment variable to use will depend on your platform, - e.g. DYLD_LIBRARY_PATH for Darwin, - LD_LIBRARY_PATH_32/LD_LIBRARY_PATH_64 for Solaris 32-/64-bit, - LD_LIBRARYN32_PATH/LD_LIBRARY64_PATH for Irix N32/64-bit ABIs and - SHLIB_PATH for HP-UX. - - See the man pages for ld(1), ldd(1) and ldconfig(8) for more - information. The dynamic linker has different names on different - platforms but the man page is usually called something such as ld.so / - rtld / dld.so. - _________________________________________________________________ - - 3.0 Platform-Specific Issues - -3.1 Can libstdc++-v3 be used with ? - - Probably not. Yet. - - Because GCC advances so rapidly, development and testing of libstdc++ - is being done almost entirely under that compiler. If you are curious - about whether other, lesser compilers (*grin*) support libstdc++, you - are more than welcome to try. Configuring and building the library - (see above) will still require certain tools, however. Also keep in - mind that building libstdc++ does not imply that your compiler will be - able to use all of the features found in the C++ Standard Library. - - Since the goal of ISO Standardization is for all C++ implementations - to be able to share code, the final libstdc++ should, in theory, be - usable under any ISO-compliant compiler. It will still be targeted and - optimized for GCC/g++, however. - _________________________________________________________________ - -3.2 [removed] - - This question has become moot and has been removed. The stub is here - to preserve numbering (and hence links/bookmarks). - _________________________________________________________________ - -3.3 [removed] - - This question has become moot and has been removed. The stub is here - to preserve numbering (and hence links/bookmarks). - _________________________________________________________________ - -3.4 I can't use 'long long' on Solaris - - By default we try to support the C99 long long type. This requires - that certain functions from your C library be present. - - Up through release 3.0.2 the tests performed were too general, and - this feature was disabled when it did not need to be. The most - commonly reported platform affected was Solaris. - - This has been fixed for 3.0.3 and onwards. - _________________________________________________________________ - -3.5 _XOPEN_SOURCE / _GNU_SOURCE / etc is always defined - - On Solaris, g++ (but not gcc) always defines the preprocessor macro - _XOPEN_SOURCE. On GNU/Linux, the same happens with _GNU_SOURCE. (This - is not an exhaustive list; other macros and other platforms are also - affected.) - - These macros are typically used in C library headers, guarding new - versions of functions from their older versions. The C++ standard - library includes the C standard library, but it requires the C90 - version, which for backwards-compatability reasons is often not the - default for many vendors. - - More to the point, the C++ standard requires behavior which is only - available on certain platforms after certain symbols are defined. - Usually the issue involves I/O-related typedefs. In order to ensure - correctness, the compiler simply predefines those symbols. - - Note that it's not enough to #define them only when the library is - being built (during installation). Since we don't have an 'export' - keyword, much of the library exists as headers, which means that the - symbols must also be defined as your programs are parsed and compiled. - - To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in the - gcc config headers for your target (and try changing them to see what - happens when building complicated code). You can also run "g++ -E -dM - - < /dev/null" to display a list of predefined macros for any - particular installation. - - This has been discussed on the mailing lists [79]quite a bit. - - This method is something of a wart. We'd like to find a cleaner - solution, but nobody yet has contributed the time. - _________________________________________________________________ - -3.6 OS X ctype.h is broken! How can I hack it? - - This is a long-standing bug in the OS X support. Fortunately, the - patch is quite simple, and well-known. [80]Here's a link to the - solution. - _________________________________________________________________ - -3.7 Threading is broken on i386 - - Support for atomic integer operations is/was broken on i386 platforms. - The assembly code accidentally used opcodes that are only available on - the i486 and later. So if you configured GCC to target, for example, - i386-linux, but actually used the programs on an i686, then you would - encounter no problems. Only when actually running the code on a i386 - will the problem appear. - - This is fixed in 3.2.2. - _________________________________________________________________ - -3.8 Recent GNU/Linux glibc required? - - When running on GNU/Linux, libstdc++ 3.2.1 (shared library version - 5.0.1) and later uses localization and formatting code from the system - C library (glibc) version 2.2.5. That version of glibc is over a year - old and contains necessary bugfixes. Many GNU/Linux distros make glibc - version 2.3.x available now. - - The guideline is simple: the more recent the C++ library, the more - recent the C library. (This is also documented in the main GCC - installation instructions.) - _________________________________________________________________ - -3.9 Can't use wchar_t/wstring on FreeBSD - - At the moment there are a few problems in FreeBSD's support for wide - character functions, and as a result the libstdc++ configury decides - that wchar_t support should be disabled. Once the underlying problems - are fixed in FreeBSD (soon), the library support will automatically - enable itself. - - You can fix the problems yourself, and learn more about the situation, - by reading [81]this short thread ("_GLIBCPP_USE_WCHAR_T undefined in - FreeBSD's c++config.h?"). - _________________________________________________________________ - -3.10 MIPS atomic operations - - The atomic locking routines for MIPS targets requires MIPS II and - later. A patch went in just after the 3.3 release to make mips* use - the generic implementation instead. You can also configure for - mipsel-elf as a workaround. - - mips*-*-linux* continues to use the MIPS II routines, and more work in - this area is expected. - _________________________________________________________________ - - 4.0 Known Bugs and Non-Bugs - - Note that this section can get rapdily outdated -- such is the nature - of an open-source project. For the latest information, join the - mailing list or look through recent archives. The RELEASE- NOTES and - BUGS files are generally kept up-to-date. - - For 3.0.1, the most common "bug" is an apparently missing "../" in - include/Makefile, resulting in files like gthr.h and gthr-single.h not - being found. Please read [82]the configuration instructions for GCC, - specifically the part about configuring in a separate build directory, - and how strongly recommended it is. Building in the source directory - is fragile, is rarely tested, and tends to break, as in this case. - This was fixed for 3.0.2. - - For 3.1, the most common "bug" is a parse error when using , - ending with a message, "bits/basic_file.h:52: parse error before `{' - token." Please read [83]the installation instructions for GCC, - specifically the part about not installing newer versions on top of - older versions. If you install 3.1 over a 3.0.x release, then the - wrong basic_file.h header will be found (its location changed between - releases). - - Please do not report these as bugs. We know about them. Reporting this - -- or any other problem that's already been fixed -- hinders the - development of GCC, because we have to take time to respond to your - report. Thank you. - _________________________________________________________________ - -4.1 What works already? - - Short answer: Pretty much everything works except for some corner - cases. Also, localization is incomplete. For whether it works well, or - as you expect it to work, see 5.2. - - Long answer: See the docs/html/17_intro/CHECKLIST file, which is badly - outdated... Also see the RELEASE-NOTES file, which is kept more up to - date. - _________________________________________________________________ - -4.2 Bugs in gcc/g++ (not libstdc++-v3) - - This is by no means meant to be complete nor exhaustive, but mentions - some problems that users may encounter when building or using - libstdc++. If you are experiencing one of these problems, you can find - more information on the libstdc++ and the GCC mailing lists. - - Before reporting a bug, examine the [84]bugs database with the - category set to "libstdc++". The BUGS file in the source tree also - tracks known serious problems. - * Debugging is problematic, due to bugs in line-number generation - (mostly fixed in the compiler) and gdb lagging behind the compiler - (lack of personnel). We recommend configuring the compiler using - --with-dwarf2 if the DWARF2 debugging format is not already the - default on your platform. Also, [85]changing your GDB settings can - have a profound effect on your C++ debugging experiences. :-) - _________________________________________________________________ - -4.3 Bugs in the C++ language/lib specification - - Yes, unfortunately, there are some. In a [86]message to the list, - Nathan Myers announced that he has started a list of problems in the - ISO C++ Standard itself, especially with regard to the chapters that - concern the library. The list itself is [87]posted on his website. - Developers who are having problems interpreting the Standard may wish - to consult his notes. - - For those people who are not part of the ISO Library Group (i.e., - nearly all of us needing to read this page in the first place :-), a - public list of the library defects is occasionally published [88]here. - Some of these have resulted in [89]code changes. - _________________________________________________________________ - -4.4 Things in libstdc++ that only look like bugs - - There are things which are not bugs in the compiler (4.2) nor the - language specification (4.3), but aren't really bugs in libstdc++, - either. Really! Please do not report these as bugs. - - -Weffc++ The biggest of these is the quadzillions of warnings about - the library headers emitted when -Weffc++ is used. Making libstdc++ - "-Weffc++-clean" is not a goal of the project, for a few reasons. - Mainly, that option tries to enforce object-oriented programming, - while the Standard Library isn't necessarily trying to be OO. - - reopening a stream fails Did I just say that -Weffc++ was our biggest - false-bug report? I lied. (It used to be.) Today it seems to be - reports that after executing a sequence like - #include - ... - std::fstream fs("a_file"); - // . - // . do things with fs... - // . - fs.close(); - fs.open("a_new_file"); - - all operations on the re-opened fs will fail, or at least act very - strangely. Yes, they often will, especially if fs reached the EOF - state on the previous file. The reason is that the state flags are not - cleared on a successful call to open(). The standard unfortunately did - not specify behavior in this case, and to everybody's great sorrow, - the [90]proposed LWG resolution in DR #22 is to leave the flags - unchanged. You must insert a call to fs.clear() between the calls to - close() and open(), and then everything will work like we all expect - it to work. Update: for GCC 4.0 we implemented the resolution of - [91]DR #409 and open() now calls clear() on success! - - rel_ops Another is the rel_ops namespace and the template comparison - operator functions contained therein. If they become visible in the - same namespace as other comparison functions (e.g., 'using' them and - the header), then you will suddenly be faced with huge - numbers of ambiguity errors. This was discussed on the -v3 list; - Nathan Myers [92]sums things up here. The collisions with - vector/string iterator types have been fixed for 3.1. - - The g++-3 headers are not ours - - If you have found an extremely broken header file which is causing - problems for you, look carefully before submitting a "high" priority - bug report (which you probably shouldn't do anyhow; see the last - paragraph of the page describing [93]the GCC bug database). - - If the headers are in ${prefix}/include/g++-3, or if the installed - library's name looks like libstdc++-2.10.a or libstdc++-libc6-2.10.so, - then you are using the old libstdc++-v2 library, which is nonstandard - and unmaintained. Do not report problems with -v2 to the -v3 mailing - list. - - For GCC versions 3.0 and 3.1 the libstdc++-v3 header files are - installed in ${prefix}/include/g++-v3 (see the 'v'?). Starting with - version 3.2 the headers are installed in - ${prefix}/include/c++/${version} as this prevents headers from - previous versions being found by mistake. - - glibc If you're on a GNU/Linux system and have just upgraded to glibc - 2.2, but are still using gcc 2.95.2, then you should have read the - glibc FAQ, specifically 2.34: -2.34. When compiling C++ programs, I get a compilation error in streambuf.h. - -{BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to -apply a patch to the include files in /usr/include/g++, because the fpos_t -type has changed in glibc 2.2. The patch is at -http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff - - - Note that 2.95.x shipped with the [94]old v2 library which is no - longer maintained. Also note that gcc 2.95.3 fixes this problem, but - requires a separate patch for libstdc++-v3. - - concept checks If you see compilation errors containing messages about - fooConcept and a constraints member function, then most likely you - have violated one of the requirements for types used during - instantiation of template containers and functions. For example, - EqualityComparableConcept appears if your types must be comparable - with == and you have not provided this capability (a typo, or wrong - visibility, or you just plain forgot, etc). - - More information, including how to optionally enable/disable the - checks, is available [95]here. - - dlopen/dlsym If you are using the C++ library across - dynamically-loaded objects, make certain that you are passing the - correct options when compiling and linking: - // compile your library components - g++ -fPIC -c a.cc - g++ -fPIC -c b.cc - ... - g++ -fPIC -c z.cc - - // create your library - g++ -fPIC -shared -rdynamic -o libfoo.so a.o b.o ... z.o - - // link the executable - g++ -fPIC -rdynamic -o foo ... -L. -lfoo -ldl - - "memory leaks" in containers A few people have reported that the - standard containers appear to leak memory when tested with memory - checkers such as [96]valgrind. The library's default allocators keep - free memory in a pool for later reuse, rather than returning it to the - OS. Although this memory is always reachable by the library and is - never lost, memory debugging tools can report it as a leak. If you - want to test the library for memory leaks please read [97]Tips for - memory leak hunting first. - _________________________________________________________________ - -4.5 Aw, that's easy to fix! - - If you have found a bug in the library and you think you have a - working fix, then send it in! The main GCC site has a page on - [98]submitting patches that covers the procedure, but for libstdc++ - you should also send the patch to our mailing list in addition to the - GCC patches mailing list. The libstdc++ [99]contributors' page also - talks about how to submit patches. - - In addition to the description, the patch, and the ChangeLog entry, it - is a Good Thing if you can additionally create a small test program to - test for the presence of the bug that your patch fixes. Bugs have a - way of being reintroduced; if an old bug creeps back in, it will be - caught immediately by the [100]testsuite -- but only if such a test - exists. - _________________________________________________________________ - - 5.0 Miscellaneous - -5.1 string::iterator is not char*; vector::iterator is not T* - - If you have code that depends on container iterators being - implemented as pointer-to-T, your code is broken. - - While there are arguments for iterators to be implemented in that - manner, A) they aren't very good ones in the long term, and B) they - were never guaranteed by the Standard anyway. The type-safety achieved - by making iterators a real class rather than a typedef for T* - outweighs nearly all opposing arguments. - - Code which does assume that a vector iterator i is a pointer can often - be fixed by changing i in certain expressions to &*i . Future - revisions of the Standard are expected to bless this usage for - vector<> (but not for basic_string<>). - _________________________________________________________________ - -5.2 What's next after libstdc++-v3? - - Hopefully, not much. The goal of libstdc++-v3 is to produce a - fully-compliant, fully-portable Standard Library. After that, we're - mostly done: there won't be any more compliance work to do. However: - 1. The ISO Committee will meet periodically to review Defect Reports - in the C++ Standard. Undoubtedly some of these will result in - changes to the Standard, which will be reflected in patches to - libstdc++. Some of that is already happening, see [101]4.3. Some - of those changes are being predicted by the library maintainers, - and we add code to the library based on what the current proposed - resolution specifies. Those additions are listed in [102]the - extensions page. - 2. Performance tuning. Lots of performance tuning. This too is - already underway for post-3.0 releases, starting with memory - expansion in container classes and buffer usage in synchronized - stream objects. - 3. An ABI for libstdc++ is being developed, so that multiple - binary-incompatible copies of the library can be replaced with a - single backwards-compatible library, like libgcc_s.so is. - 4. The current libstdc++ contains extensions to the Library which - must be explicitly requested by client code (for example, the hash - tables from SGI). Other extensions may be added to libstdc++-v3 if - they seem to be "standard" enough. (For example, the "long long" - type from C99.) Bugfixes and rewrites (to improve or fix thread - safety, for instance) will of course be a continuing task. - 5. There is an effort underway to add significant extensions to the - standard library specification. The latest version of this effort - is described in [103]The C++ Library Technical Report 1. See - [104]5.5. - - [105]This question about the next libstdc++ prompted some brief but - interesting [106]speculation. - _________________________________________________________________ - -5.3 What about the STL from SGI? - - The [107]STL from SGI, version 3.3, was the final merge of the STL - codebase. The code in libstdc++ contains many fixes and changes, and - the SGI code is no longer under active development. We expect that no - future merges will take place. - - In particular, string is not from SGI and makes no use of their "rope" - class (which is included as an optional extension), nor is valarray - and some others. Classes like vector<> are, however we have made - significant changes to them since then. - - The FAQ for SGI's STL (one jump off of their main page) is recommended - reading. - _________________________________________________________________ - -5.4 Extensions and Backward Compatibility - - Headers in the ext and backward subdirectories should be referred to - by their relative paths: - #include - - rather than using -I or other options. This is more portable and - forward-compatible. (The situation is the same as that of other - headers whose directories are not searched directly, e.g., - , . - - At this time most of the features of the SGI STL extension have been - replaced by standardized libraries. In particular, the unordered_map - and unordered_set containers of TR1 are suitable replacement for the - non-standard hash_map and hash_set containers in the SGI STL. See - [108]5.5 for more details. - - The extensions are no longer in the global or std namespaces, instead - they are declared in the __gnu_cxx namespace. For maximum portability, - consider defining a namespace alias to use to talk about extensions, - e.g.: - #ifdef __GNUC__ - #if __GNUC__ < 3 - #include - namespace Sgi { using ::hash_map; }; // inherit globals - #else - #include - #if __GNUC_MINOR__ == 0 - namespace Sgi = std; // GCC 3.0 - #else - namespace Sgi = ::__gnu_cxx; // GCC 3.1 and later - #endif - #endif - #else // ... there are other compilers, right? - namespace Sgi = std; - #endif - - Sgi::hash_map my_map; - - This is a bit cleaner than defining typedefs for all the - instantiations you might need. - - Note: explicit template specializations must be declared in the same - namespace as the original template. This means you cannot use a - namespace alias when declaring an explicit specialization. - - Extensions to the library have [109]their own page. - _________________________________________________________________ - -5.5 Does libstdc++ support TR1? - - The C++ Standard Library Technical Report adds many new features to - the library. The latest version of this effort is described in - [110]Technical Report 1. - - libstdc++ strives to implement all of TR1. An [111]overview of the - implementation status is available. - - Briefly, the features of TR1 and the current status are: - - Unordered containers - Complete - The unordered_set, unordered_map, - unordered_multiset, and unordered_multimap containers are hashed - versions of the map, set, multimap, and multiset containers - respectively. These classes are suitable replacements for the SGI STL - hash_map and hash_set extensions. - - Reference-counted smart pointers - Complete - The shared_ptr and - weak_ptr allow several object to know about a pointer and whether it - is valid. When the last reference to the pointer is destroyed the - pointer is freed. - - Type traits - Complete - The type_traits class gives templates the - ability to probe information about the input type and enable - type-dependent logic to be performed without the need of template - specializations. - - Fixed-size arrays - Complete - The array class implements small - fixed-sized arrays with container semantics. - - Tuples - Complete - The tuple class implements small heterogeneous - arrays. This is an enhanced pair. In fact, the standard pair is - enhanced with a tuple interface. - - A regular expression engine This library provides for regular - expression objects with traversal of text with return of - subexpressions. - - A random number engine This library contains randow number generators - with several different choices of distribution. - - Special functions - Under construction - Twenty-three mathematical - functions familiar to physicists and engineers are included: - cylindrical and spherical Bessel and Neumann functions, hypergeometric - functions, Laguerre polynomials, Legendre functions, elliptic - integrals, exponential integrals and the Riemann zeta function all for - your computing pleasure. - - C99 compatibility - Under construction - There are many features - designed to minimize the divergence of the C and the C++ languages. - _________________________________________________________________ - -5.6 Is libstdc++-v3 thread-safe? - - libstdc++-v3 strives to be thread-safe when all of the following - conditions are met: - * The system's libc is itself thread-safe, - * gcc -v reports a thread model other than 'single', - * [pre-3.3 only] a non-generic implementation of atomicity.h exists - for the architecture in question. - - The user-code must guard against concurrent method calls which may - access any particular library object's state. Typically, the - application programmer may infer what object locks must be held based - on the objects referenced in a method call. Without getting into great - detail, here is an example which requires user-level locks: - library_class_a shared_object_a; - - thread_main () { - library_class_b *object_b = new library_class_b; - shared_object_a.add_b (object_b); // must hold lock for shared_object_ -a - shared_object_a.mutate (); // must hold lock for shared_object_ -a - } - - // Multiple copies of thread_main() are started in independent threads. - - Under the assumption that object_a and object_b are never exposed to - another thread, here is an example that should not require any - user-level locks: - thread_main () { - library_class_a object_a; - library_class_b *object_b = new library_class_b; - object_a.add_b (object_b); - object_a.mutate (); - } - - All library objects are safe to use in a multithreaded program as long - as each thread carefully locks out access by any other thread while it - uses any object visible to another thread, i.e., treat library objects - like any other shared resource. In general, this requirement includes - both read and write access to objects; unless otherwise documented as - safe, do not assume that two threads may access a shared standard - library object at the same time. - - See chapters [112]17 (library introduction), [113]23 (containers), and - [114]27 (I/O) for more information. - _________________________________________________________________ - -5.7 How do I get a copy of the ISO C++ Standard? - - Copies of the full ISO 14882 standard are available on line via the - ISO mirror site for committee members. Non-members, or those who have - not paid for the privilege of sitting on the committee and sustained - their two-meeting commitment for voting rights, may get a copy of the - standard from their respective national standards organization. In the - USA, this national standards organization is ANSI and their website is - right [115]here. (And if you've already registered with them, clicking - this link will take you to directly to the place where you can - [116]buy the standard on-line. - - Who is your country's member body? Visit the [117]ISO homepage and - find out! - _________________________________________________________________ - -5.8 What's an ABI and why is it so messy? - - "ABI" stands for "Application Binary Interface." Conventionally, it - refers to a great mass of details about how arguments are arranged on - the call stack and/or in registers, and how various types are arranged - and padded in structs. A single CPU design may suffer multiple ABIs - designed by different development tool vendors who made different - choices, or even by the same vendor for different target applications - or compiler versions. In ideal circumstances the CPU designer presents - one ABI and all the OSes and compilers use it. In practice every ABI - omits details that compiler implementers (consciously or accidentally) - must choose for themselves. - - That ABI definition suffices for compilers to generate code so a - program can interact safely with an OS and its lowest-level libraries. - Users usually want an ABI to encompass more detail, allowing libraries - built with different compilers (or different releases of the same - compiler!) to be linked together. For C++, this includes many more - details than for C, and CPU designers (for good reasons elaborated - below) have not stepped up to publish C++ ABIs. The details include - virtual function implementation, struct inheritance layout, name - mangling, and exception handling. Such an ABI has been defined for GNU - C++, and is immediately useful for embedded work relying only on a - "free-standing implementation" that doesn't include (much of) the - standard library. It is a good basis for the work to come. - - A useful C++ ABI must also incorporate many details of the standard - library implementation. For a C ABI, the layouts of a few structs - (such as FILE, stat, jmpbuf, and the like) and a few macros suffice. - For C++, the details include the complete set of names of functions - and types used, the offsets of class members and virtual functions, - and the actual definitions of all inlines. C++ exposes many more - library details to the caller than C does. It makes defining a - complete ABI a much bigger undertaking, and requires not just - documenting library implementation details, but carefully designing - those details so that future bug fixes and optimizations don't force - breaking the ABI. - - There are ways to help isolate library implementation details from the - ABI, but they trade off against speed. Library details used in inner - loops (e.g., getchar) must be exposed and frozen for all time, but - many others may reasonably be kept hidden from user code, so they may - later be changed. Deciding which, and implementing the decisions, must - happen before you can reasonably document a candidate C++ ABI that - encompasses the standard library. - _________________________________________________________________ - -5.9 How do I make std::vector::capacity() == std::vector::size()? - - The standard idiom for deallocating a std::vector's unused memory - is to create a temporary copy of the vector and swap their contents, - e.g. for std::vector v - std::vector(v).swap(v); - - - The copy will take O(n) time and the swap is constant time. - - See [118]Shrink-to-fit strings for a similar solution for strings. - _________________________________________________________________ - - See [119]license.html for copying conditions. Comments and suggestions - are welcome, and may be sent to [120]the libstdc++ mailing list. - -References - - 1. ../documentation.html - 2. ../17_intro/license.html - 3. http://gcc.gnu.org/onlinedocs/libstdc++/faq/ - 4. http://gcc.gnu.org/onlinedocs/libstdc++/documentation.html - 5. http://gcc.gnu.org/libstdc++/ - 6. ../faq/index.html#1_0 - 7. ../faq/index.html#1_1 - 8. ../faq/index.html#1_2 - 9. ../faq/index.html#1_3 - 10. ../faq/index.html#1_4 - 11. ../faq/index.html#1_5 - 12. ../faq/index.html#1_6 - 13. ../faq/index.html#1_7 - 14. ../faq/index.html#1_8 - 15. ../faq/index.html#1_9 - 16. ../faq/index.html#2_0 - 17. ../faq/index.html#2_1 - 18. ../faq/index.html#2_2 - 19. ../faq/index.html#2_3 - 20. ../faq/index.html#2_4 - 21. ../faq/index.html#2_5 - 22. ../faq/index.html#2_6 - 23. ../faq/index.html#3_0 - 24. ../faq/index.html#3_1 - 25. ../faq/index.html#3_2 - 26. ../faq/index.html#3_3 - 27. ../faq/index.html#3_4 - 28. ../faq/index.html#3_5 - 29. ../faq/index.html#3_6 - 30. ../faq/index.html#3_7 - 31. ../faq/index.html#3_8 - 32. ../faq/index.html#3_9 - 33. ../faq/index.html#3_10 - 34. ../faq/index.html#4_0 - 35. ../faq/index.html#4_1 - 36. ../faq/index.html#4_2 - 37. ../faq/index.html#4_3 - 38. ../faq/index.html#4_4 - 39. ../faq/index.html#4_4_iostreamclear - 40. ../faq/index.html#4_4_Weff - 41. ../faq/index.html#4_4_rel_ops - 42. ../faq/index.html#4_4_interface - 43. ../faq/index.html#4_4_glibc - 44. ../faq/index.html#4_4_checks - 45. ../faq/index.html#4_4_dlsym - 46. ../faq/index.html#4_4_leak - 47. ../faq/index.html#4_5 - 48. ../faq/index.html#5_0 - 49. ../faq/index.html#5_1 - 50. ../faq/index.html#5_2 - 51. ../faq/index.html#5_3 - 52. ../faq/index.html#5_4 - 53. ../faq/index.html#5_5 - 54. ../faq/index.html#5_6 - 55. ../faq/index.html#5_7 - 56. ../faq/index.html#5_8 - 57. ../faq/index.html#5_9 - 58. ../faq/index.html#1_4 - 59. ../faq/index.html#4_4_interface - 60. ../17_intro/DESIGN - 61. http://gcc.gnu.org/ - 62. http://gcc.gnu.org/gcc-3.3/buildstat.html - 63. http://gcc.gnu.org/libstdc++/ - 64. http://gcc.gnu.org/libstdc++/ - 65. http://gcc.gnu.org/releases.html - 66. ../17_intro/contribute.html - 67. http://www.boost.org/ - 68. http://gcc.gnu.org/extensions.html - 69. mailto:libstdc++@gcc.gnu.org - 70. mailto:pme@gcc.gnu.org - 71. mailto:gdr@gcc.gnu.org - 72. ../17_intro/license.html - 73. ../documentation.html - 74. ../17_intro/RELEASE-NOTES - 75. http://www.gnu.org/software/cvs/cvs.html - 76. http://www.cvshome.org/ - 77. http://gcc.gnu.org/install/test.html - 78. ../18_support/howto.html - 79. http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris - 80. http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html - 81. http://gcc.gnu.org/ml/libstdc++/2003-02/subjects.html#00286 - 82. http://gcc.gnu.org/install/configure.html - 83. http://gcc.gnu.org/install/ - 84. http://gcc.gnu.org/bugs.html - 85. http://gcc.gnu.org/ml/libstdc++/2002-02/msg00034.html - 86. http://gcc.gnu.org/ml/libstdc++/1998/msg00006.html - 87. http://www.cantrip.org/draft-bugs.txt - 88. http://anubis.dkuug.dk/jtc1/sc22/wg21/ - 89. ../faq/index.html#5_2 - 90. ../ext/howto.html#5 - 91. ../ext/howto.html#5 - 92. http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html - 93. http://gcc.gnu.org/bugs.html - 94. ../faq/index.html#4_4_interface - 95. ../19_diagnostics/howto.html#3 - 96. http://developer.kde.org/~sewardj/ - 97. ../debug.html#mem - 98. http://gcc.gnu.org/contribute.html - 99. ../17_intro/contribute.html - 100. ../faq/index.html#2_4 - 101. ../faq/index.html#4_3 - 102. ../ext/howto.html#5 - 103. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf - 104. ../faq/index.html#5_5 - 105. http://gcc.gnu.org/ml/libstdc++/1999/msg00080.html - 106. http://gcc.gnu.org/ml/libstdc++/1999/msg00084.html - 107. http://www.sgi.com/tech/stl/ - 108. ../faq/index.html#5_5 - 109. ../ext/howto.html - 110. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf - 111. ../ext/tr1.html - 112. ../17_intro/howto.html#3 - 113. ../23_containers/howto.html#3 - 114. ../27_io/howto.html#9 - 115. http://www.ansi.org/ - 116. http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%3A2003 - 117. http://www.iso.ch/ - 118. ../21_strings/howto.html#6 - 119. ../17_intro/license.html - 120. mailto:libstdc++@gcc.gnu.org diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/install.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/install.html deleted file mode 100644 index 10841486d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/install.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - - - - libstdc++-v3 Installation Instructions - - - - - -

        Getting started: configure, build, install

        - -

        - The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/install.html. -

        - -

        - To the libstdc++-v3 homepage. -

        - - - -
        -

        Contents

        - -

        Because libstdc++-v3 is part of GCC, the primary source for - installation instructions is - the GCC install page. - Additional data is given here only where it applies to libstdc++-v3. -

        - - - -
        - - - -

        Tools you will need beforehand

        -

        The list of software needed to build the library is kept with the - rest of the compiler, at - - http://gcc.gnu.org/install/prerequisites.html. The same page - also lists the tools you will need if you wish to modify the source. -

        - -

        As of June 19, 2000, libstdc++ attempts to use tricky and - space-saving features of the GNU toolchain, enabled with - -ffunction-sections -fdata-sections -Wl,--gc-sections. - To obtain maximum benefit from this, binutils after this date should - also be used (bugs were fixed with C++ exception handling related - to this change in libstdc++-v3). The version of these tools should - be 2.10.90, or later, and you can get snapshots (as - well as releases) of binutils - here. The - configure process will automatically detect and use these features - if the underlying support is present. -

        - -

        Finally, a few system-specific requirements:

        -
        -
        linux
        - -
        If gcc 3.1.0 or later on is being used on linux, an attempt - will be made to use "C" library functionality necessary for C++ - named locale support. For gcc 3.2.1 and later, this means that - glibc 2.2.5 or later is required and the "C" library de_DE locale - information must be installed. - -

        - The configure option --enable-clocale can be used force a - particular behavior. -

        - -

        - If the 'gnu' locale model is being used, the following locales - are used and tested in the libstdc++ testsuites. The first column - is the name of the locale, the second is the character set it is - expected to use. -

        -
        -de_DE               ISO-8859-1
        -de_DE@euro          ISO-8859-15
        -en_HK               ISO-8859-1
        -en_PH               ISO-8859-1
        -en_US               ISO-8859-1
        -en_US.ISO-8859-1    ISO-8859-1
        -en_US.ISO-8859-15   ISO-8859-15
        -en_US.UTF-8         UTF-8
        -es_ES               ISO-8859-1
        -es_MX               ISO-8859-1
        -fr_FR               ISO-8859-1
        -fr_FR@euro          ISO-8859-15
        -is_IS               UTF-8
        -it_IT               ISO-8859-1
        -ja_JP.eucjp         EUC-JP
        -se_NO.UTF-8         UTF-8
        -ta_IN               UTF-8
        -zh_TW               BIG5
        -
        -

        Failure to have the underlying "C" library locale - information installed will mean that C++ named locales for the - above regions will not work: because of this, the libstdc++ - testsuite will skip the named locale tests. If this isn't an - issue, don't worry about it. If named locales are needed, the - underlying locale information must be installed. Note that - rebuilding libstdc++ after the "C" locales are installed is not - necessary. -

        - -

        To install support for locales, do only one of the following: -

        - -
          -
        • install all locales -
            -
          • with RedHat Linux: -

            export LC_ALL=C

            -

            rpm -e glibc-common --nodeps

            -

            rpm -i --define "_install_langs all" - glibc-common-2.2.5-34.i386.rpm

            -
          • -
          • (instructions for other operating systems solicited)
          • -
          -
        • -
        • install just the necessary locales -
            -
          • with Debian Linux: -

            Add the above list, as shown, to the file - /etc/locale.gen

            -

            run /usr/sbin/locale-gen

            -
          • -
          • on most Unix-like operating systems: -

            localedef -i de_DE -f ISO-8859-1 de_DE

            -

            (repeat for each entry in the above list)

            -
          • -
          • (instructions for other operating systems solicited)
          • -
          -
        • -
        -
        -
        - -
        - -

        Configuring

        -

        If you have never done this before, you should read the basic - GCC Installation - Instructions first. Read all of them. - Twice. -

        -

        When building libstdc++-v3 you'll have to configure - the entire gccsrcdir directory. The full list of libstdc++-v3 - specific configuration options, not dependent on the specific compiler - release being used, can be found here. -

        -

        Consider possibly using --enable-languages=c++ to save time by only - building the C++ language parts. -

        - -
        -   cd gccbuilddir
        -   gccsrcdir/configure --prefix=destdir --other-opts...
        - - -
        -

        Using the library

        -

        Find the new library at runtime (shared linking only)

        -

        If you only built a static library (libstdc++.a), or if you - specified static linking, you don't have to worry about this. - But if you built a shared library (libstdc++.so) and linked - against it, then you will need to find that library when you - run the executable. -

        -

        Methods vary for different platforms and different styles, but - the usual ones are printed to the screen during installation. - They include: -

        -
          -
        • At runtime set LD_LIBRARY_PATH in your environment correctly, - so that the shared library for libstdc++ can be found and - loaded. Be certain that you understand all of the other - implications and behavior of LD_LIBRARY_PATH first (few - people do, and they get into trouble). -
        • -
        • Compile the path to find the library at runtime into the - program. This can be done by passing certain options to g++, - which will in turn pass them on to the linker. The exact - format of the options is dependent on which linker you use: -
            -
          • GNU ld (default on Linux): -Wl,--rpath,destdir/lib
          • -
          • IRIX ld: -Wl,-rpath,destdir/lib
          • -
          • Solaris ld: -Wl,-Rdestdir/lib
          • -
          • More...? Let us know!
          • -
          -
        • -
        -

        Use the ldd(1) utility to show which library the system - thinks it will get at runtime. -

        -

        A libstdc++.la file is also installed, for use with Libtool. If - you use Libtool to create your executables, these details are - taken care of for you. -

        - - - - - - -
        -

        -See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

        - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/lib3styles.css b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/lib3styles.css deleted file mode 100644 index ee88c366c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/lib3styles.css +++ /dev/null @@ -1,6 +0,0 @@ -.centered { text-align: center } -.tocheader { font-size: large } -.fineprint { font-size: x-small } -.larger { font-size: large } -BODY { background: #FFFFFF } -PRE { text-align: left ; margin-left: 1em } diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/makedoc.awk b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/makedoc.awk deleted file mode 100644 index 9da77d9c1..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/makedoc.awk +++ /dev/null @@ -1,69 +0,0 @@ -# Take apart bits of HTML and puts them back together again in new and -# fascinating ways. Copyright (C) 2002 Free Software Foundation, Inc. -# Contributed by Phil Edwards . Simple two-state automaton -# inspired by Richard Henderson's gcc/mkmap-symver.awk. - -# 'file' is the name of the file on stdin -# 'title' is the text to print at the start of the list - -BEGIN { - state = "looking"; - entries = 0; - printf ("
      1. %s\n", title); - printf ("
          \n"); -} - -# Searching for the little table of contents at the top. -state == "looking" && /^

          Contents/ { - state = "entries"; - next; -} - -# Ignore everything else up to that point. -state == "looking" { - next; -} - -# An entry in the table of contents. Pull that line apart. -state == "entries" && /
        • / { - extract_info($0); - next; -} - -# End of the list. Don't bother reading the rest of the file. (It could -# also contain more
        • 's, so that would be incorrect as well as wasteful.) -state == "entries" && /^<\/ul>/ { - exit; -} - -END { - for (i = 0; i < entries; i++) - printf (" %s\n", entry[i]); - printf ("
        \n
      2. \n\n"); -} - -function extract_info(line) { - # thistarget will be things like "#5" or "elsewhere.html" - match(line,"href=\".*\""); - thistarget = substr(line,RSTART+6,RLENGTH-7); - - # take apart the filename - split(file,X,"/"); - if (thistarget ~ /^#/) { - # local name, use directory and filename - target = file thistarget - } else { - # different file, only use directory - target = X[1] "/" thistarget - } - - # visible text - gsub("","",line); - start = index(line,"\">") + 2; - thistext = substr(line,start); - - # Assemble and store the HTML for later output. - entry[entries++] = "
      3. " thistext "
      4. " -} - -# vim:sw=2 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/test.html b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/test.html deleted file mode 100644 index 41e0529e6..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/docs/html/test.html +++ /dev/null @@ -1,718 +0,0 @@ - - - - - - - - - - libstdc++-v3 Testing Instructions - - - - -

        Testing Details

        - -

        - The latest version of this document is always available at - - http://gcc.gnu.org/onlinedocs/libstdc++/test.html. -

        - -

        - To the libstdc++-v3 homepage. -

        - - -
        -

        Contents

        - - -
        - - - -

        Testsuite organization and naming conventions

        -

        - The directory libsrcdir/testsuite contains the - individual test cases organized in sub-directories corresponding - to chapters of the C++ standard (detailed below), the dejagnu - test harness support files, and sources to various testsuite - utilities that are packaged in a separate testing library. -

        - -

        All test cases for functionality required by the runtime - components of the C++ standard (ISO 14882) are files within the - following directories. -

        - -
        -17_intro
        -18_support
        -19_diagnostics
        -20_util
        -21_strings
        -22_locale
        -23_containers
        -25_algorithms
        -26_numerics
        -27_io
        -   
        - -

        - In addition, the following directories include test files: -

        - -
        -tr1		  Tests for components as described by the Technical Report on Standard Library Extensions (TR1).
        -backward	  Tests for backwards compatibility and deprecated features.
        -demangle	  Tests for __cxa_demangle, the IA 64 C++ ABI demangler
        -ext		  Tests for extensions.
        -performance	  Tests for performance analysis, and performance regressions.
        -thread		  Tests for threads.
        -   
        - -

        - Some directories don't have test files, but instead contain - auxiliary information (more information): -

        - -
        -config		  Files for the dejagnu test harness.
        -lib		  Files for the dejagnu test harness.
        -libstdc++*     	  Files for the dejagnu test harness.
        -data		  Sample text files for testing input and output.
        -   
        - -

        - Within a directory that includes test files, there may be - additional subdirectories, or files. Originally, test cases - were appended to one file that represented a particular section - of the chapter under test, and was named accordingly. For - instance, to test items related to 21.3.6.1 - - basic_string::find [lib.string::find] in the standard, - the following was used: -

        -
        -21_strings/find.cc
        -   
        -

        - However, that practice soon became a liability as the test cases - became huge and unwieldy, and testing new or extended - functionality (like wide characters or named locales) became - frustrating, leading to aggressive pruning of test cases on some - platforms that covered up implementation errors. Now, the test - suite has a policy of one file, one test case, which solves the - above issues and gives finer grained results and more manageable - error debugging. As an example, the test case quoted above - becomes: -

        -
        -21_strings/basic_string/find/char/1.cc
        -21_strings/basic_string/find/char/2.cc
        -21_strings/basic_string/find/char/3.cc
        -21_strings/basic_string/find/wchar_t/1.cc
        -21_strings/basic_string/find/wchar_t/2.cc
        -21_strings/basic_string/find/wchar_t/3.cc
        -   
        - -

        - All new tests should be written with the policy of one test - case, one file in mind. -

        - -

        - In addition, there are some special names and suffixes that are - used within the testsuite to designate particular kinds of - tests. -

        - -
          -
        • - _xin.cc -

          - This test case expects some kind of interactive input in order - to finish or pass. At the moment, the interactive tests are not - run by default. Instead, they are run by hand, like: -

          -
           
          -g++ 27_io/objects/char/3_xin.cc
          -cat 27_io/objects/char/3_xin.in | a.out
          -     
          -
        • -
        • - .in -

          - This file contains the expected input for the corresponding - _xin.cc test case. -

          -
        • -
        • - _neg.cc -

          - This test case is expected to fail: it's a negative test. At the - moment, these are almost always compile time errors. -

          -
        • -
        • - char -

          - This can either be a directory name or part of a longer file - name, and indicates that this file, or the files within this - directory are testing the char instantiation of a - template. -

          -
        • -
        • - wchar_t -

          - This can either be a directory name or part of a longer file - name, and indicates that this file, or the files within this - directory are testing the wchar_t instantiation of - a template. Some hosts do not support wchar_t - functionality, so for these targets, all of these tests will not - be run. -

          -
        • -
        • - thread -

          - This can either be a directory name or part of a longer file - name, and indicates that this file, or the files within this - directory are testing situations where multiple threads are - being used. -

          -
        • -
        • - performance -

          - This can either be an enclosing directory name or part of a - specific file name. This indicates a test that is used to - analyze runtime performance, for performance regression testing, - or for other optimization related analysis. At the moment, these - test cases are not run by default. -

          -
        • -
        - -
        -

        Utilities: abi_check and libv3test

        -

        - The testsuite directory also contains some files that implement - functionality that is intended to make writing test cases easier, - or to avoid duplication, or to provide error checking in a way that - is consistent across platforms and test harnesses. A stand-alone - executable, called abi_check, and a static library called - libv3test are constructed. Both of these items are not - installed, and only used during testing. -

        - -

        - These files include the following functionality: -

        - -
          -
        • - testsuite_abi.h, - testsuite_abi.cc, - testsuite_abi_check.cc -

          - Creates the executable abi_check. - Used to check correctness of symbol versioning, visibility of - exported symbols, and compatibility on symbols in the shared - library, for hosts that support this feature. More information - can be found in the ABI documentation here -

          -
        • -
        • - testsuite_allocator.h, - testsuite_allocator.cc -

          - Contains specialized allocators that keep track of construction - and destruction. Also, support for overriding global new and - delete operators, including verification that new and delete - are called during execution, and that allocation over max_size - fails. -

          -
        • -
        • - testsuite_character.h -

          - Contains std::char_traits and - std::codecvt specializations for a user-defined - POD. -

          -
        • -
        • - testsuite_hooks.h, - testsuite_hooks.cc -

          - A large number of utilities, including: -

          -
            -
          • VERIFY
          • -
          • set_memory_limits
          • -
          • verify_demangle
          • -
          • run_tests_wrapped_locale
          • -
          • run_tests_wrapped_env
          • -
          • try_named_locale
          • -
          • try_mkfifo
          • -
          • func_callback
          • -
          • counter
          • -
          • copy_tracker
          • -
          • copy_constructor
          • -
          • assignment_operator
          • -
          • destructor
          • -
          • pod_char, pod_int and associated char_traits specializations
          • -
          -

          -
        • -
        • - testsuite_io.h -

          - Error, exception, and constraint checking for - std::streambuf, std::basic_stringbuf, std::basic_filebuf. -

          -
        • -
        • - testsuite_iterators.h -

          - Wrappers for various iterators. -

          -
        • -
        • - testsuite_performance.h -

          - A number of class abstractions for performance counters, and - reporting functions including: -

          -
            -
          • time_counter
          • -
          • resource_counter
          • -
          • report_performance
          • -
          -

          -
        • -
        - -
        -

        How to write a new test case

        - -

        - The first step in making a new test case is to choose the correct - directory and file name, given the organization as previously - described. -

        - -

        - All files are copyright the FSF, and GPL'd: this is very - important. The first copyright year should correspond to the date - the file was checked in to CVS. -

        - -

        - As per the dejagnu instructions, always return 0 from main to - indicate success. -

        - -

        - A bunch of utility functions and classes have already been - abstracted out into the testsuite utility library, - libv3test. To use this functionality, just include the - appropriate header file: the library will automatically be linked - in as part of the testsuite run. -

        - -

        - For a test that needs to take advantage of the dejagnu test - harness, what follows below is a list of special keyword that - harness uses. Basically, a test case contains dg-keywords (see - dg.exp) indicating what to do and what kinds of behavior are to be - expected. New test cases should be written with the new style - DejaGnu framework in mind. -

        - -

        - To ease transition, here is the list of dg-keyword documentation - lifted from dg.exp. -

        - -
        -# The currently supported options are:
        -#
        -# dg-prms-id N
        -#	set prms_id to N
        -#
        -# dg-options "options ..." [{ target selector }]
        -#	specify special options to pass to the tool (eg: compiler)
        -#
        -# dg-do do-what-keyword [{ target/xfail selector }]
        -#	`do-what-keyword' is tool specific and is passed unchanged to
        -#	${tool}-dg-test.  An example is gcc where `keyword' can be any of:
        -#	preprocess|compile|assemble|link|run
        -#	and will do one of: produce a .i, produce a .s, produce a .o,
        -#	produce an a.out, or produce an a.out and run it (the default is
        -#	compile).
        -#
        -# dg-error regexp comment [{ target/xfail selector } [{.|0|linenum}]]
        -#	indicate an error message <regexp> is expected on this line
        -#	(the test fails if it doesn't occur)
        -#	Linenum=0 for general tool messages (eg: -V arg missing).
        -#	"." means the current line.
        -#
        -# dg-warning regexp comment [{ target/xfail selector } [{.|0|linenum}]]
        -#	indicate a warning message <regexp> is expected on this line
        -#	(the test fails if it doesn't occur)
        -#
        -# dg-bogus regexp comment [{ target/xfail selector } [{.|0|linenum}]]
        -#	indicate a bogus error message <regexp> use to occur here
        -#	(the test fails if it does occur)
        -#
        -# dg-build regexp comment [{ target/xfail selector }]
        -#	indicate the build use to fail for some reason
        -#	(errors covered here include bad assembler generated, tool crashes,
        -#	and link failures)
        -#	(the test fails if it does occur)
        -#
        -# dg-excess-errors comment [{ target/xfail selector }]
        -#	indicate excess errors are expected (any line)
        -#	(this should only be used sparingly and temporarily)
        -#
        -# dg-output regexp [{ target selector }]
        -#	indicate the expected output of the program is <regexp>
        -#	(there may be multiple occurrences of this, they are concatenated)
        -#
        -# dg-final { tcl code }
        -#	add some tcl code to be run at the end
        -#	(there may be multiple occurrences of this, they are concatenated)
        -#	(unbalanced braces must be \-escaped)
        -#
        -# "{ target selector }" is a list of expressions that determine whether the
        -# test succeeds or fails for a particular target, or in some cases whether the
        -# option applies for a particular target.  If the case of `dg-do' it specifies
        -# whether the test case is even attempted on the specified target.
        -#
        -# The target selector is always optional.  The format is one of:
        -#
        -# { xfail *-*-* ... } - the test is expected to fail for the given targets
        -# { target *-*-* ... } - the option only applies to the given targets
        -#
        -# At least one target must be specified, use *-*-* for "all targets".
        -# At present it is not possible to specify both `xfail' and `target'.
        -# "native" may be used in place of "*-*-*".
        -
        -Example 1: Testing compilation only
        -// { dg-do compile }
        -
        -Example 2: Testing for expected warnings on line 36, which all targets fail
        -// { dg-warning "string literals" "" { xfail *-*-* } 36
        -
        -Example 3: Testing for expected warnings on line 36
        -// { dg-warning "string literals" "" { target *-*-* } 36
        -
        -Example 4: Testing for compilation errors on line 41
        -// { dg-do compile }
        -// { dg-error "no match for" "" { target *-*-* } 41 }
        -
        -Example 5: Testing with special command line settings, or without the
        -use of pre-compiled headers, in particular the stdc++.h.gch file. Any
        -options here will override the DEFAULT_CXXFLAGS and PCH_CXXFLAGS set
        -up in the normal.exp file.
        -// { dg-options "-O0" { target *-*-* } }
        -
        - -

        - More examples can be found in the libstdc++-v3/testsuite/*/*.cc files. -

        - -
        -

        Options for running the tests

        - -

        There are several options for running tests, including testing - the regression tests, testing a subset of the regression tests, - testing the performance tests, testing just compilation, testing - installed tools, etc. In addition, there is a special rule for - checking the exported symbols of the shared library. -

        - -

        You can check the status of the build without installing it - using the dejagnu harness, much like the rest of the gcc tools.

        -
         make check
        -

        in the libbuilddir directory.

        -

        or

        -
         make check-target-libstdc++-v3
        -

        in the gccbuilddir directory.

        - -

        - These commands are functionally equivalent and will create a - 'testsuite' directory underneath libbuilddir containing - the results of the tests. Two results files will be generated: - libstdc++.sum, which is a PASS/FAIL summary for each - test, and libstdc++.log which is a log of the exact - command line passed to the compiler, the compiler output, and - the executable output (if any). -

        - - -

        -To debug the dejagnu test harness during runs, try invoking with a -specific argument to the variable RUNTESTFLAGS, as below. -

        - -
        -make check-target-libstdc++-v3 RUNTESTFLAGS="-v"
        -
        -or -
        -make check-target-libstdc++-v3 RUNTESTFLAGS="-v -v"
        -
        - -

        To run a subset of the library tests, try using a command like the -following from the libbuilddir/testsuite directory: -

        -
        -runtest --tool libstdc++ normal.exp="`find $srcdir/17_intro -name *.cc`"
        -
        - - -

        -There are two ways to run on a simulator: set up DEJAGNU to point to a -specially crafted site.exp, or pass down --target_board flags. -

        -Example flags to pass down for various embedded builds are as follows: -
        ---target=powerpc-eabism (libgloss/sim)
        -make check-target-libstdc++-v3 RUNTESTFLAGS="--target_board=powerpc-sim"
        -
        ---target=calmrisc32 (libgloss/sid)
        -make check-target-libstdc++-v3 RUNTESTFLAGS="--target_board=calmrisc32-sid"
        -
        ---target=xscale-elf (newlib/sim)
        -make check-target-libstdc++-v3 RUNTESTFLAGS="--target_board=arm-sim"
        -
        - -

        Also, here is an example of how to run the libstdc++ testsuite for a -multilibed build directory with different ABI settings: -

        -
        -make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board \"unix{-mabi=32,,-mabi=64}\"'
        -
        - -

        -You can run the tests with a compiler and library that have already -been installed. Make sure that the compiler (e.g., g++) -is in your PATH. If you are using shared libraries, then -you must also ensure that the directory containing the shared version -of libstdc++ is in your LD_LIBRARY_PATH, or equivalent. -If your GCC source tree is at /path/to/gcc, then you can -run the tests as follows: -

        -runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite
        -
        -The testsuite will create a number of files in the directory in which you -run this command,. Some of those files might use the same name as -files created by other testsuites (like the ones for GCC and G++), so -you should not try to run all the testsuites in parallel from the same -directory. -

        - -

        In addition, there are some testing options that are mostly of - interest to library maintainers and system integrators. As such, - these tests may not work on all cpu and host combinations, and may need to - be executed in the libbuilddir/testsuite directory. These options - include, but are not necessarily limited to, the following: -

        - -
        -   make testsuite_files
        -

        - Five files are generated that determine what test files - are run. These files are: -

        -
          -
        • - testsuite_files -

          This is a list of all the test cases that will be run. Each - test case is on a separate line, given with an absolute path - from the libsrcdir/testsuite directory. -

          -
        • - -
        • - testsuite_files_interactive -

          This is a list of all the interactive test cases, using the - same format as the file list above. These tests are not run by default. -

          -
        • - -
        • - testsuite_files_performance -

          This is a list of all the performance test cases, using the - same format as the file list above. These tests are not run by default. -

          -
        • - -
        • - testsuite_thread -

          This file indicates that the host system can run tests which - incolved multiple threads. -

          -
        • - -
        • - testsuite_wchar_t -

          This file indicates that the host system can run the wchar_t - tests, and corresponds to the macro definition - _GLIBCXX_USE_WCHAR_T in the file c++config.h. -

          -
        • -
        - -
        -   make check-abi
        -

        The library ABI can be tested. This involves testing the shared - library against an ABI-defining previous version of symbol exports.

        - -
        -   make check-compile
        -

        This rule compiles, but does not link or execute, the - testsuite_files test cases and displays the output on stdout.

        - -
        -   make check-performance
        -

        This rule runs through the testsuite_files_performance - test cases and collects information for performance analysis and - can be used to spot performance regressions. Various timing - information is collected, as well as number of hard page faults, - and memory used. This is not run by default, and the implementation - is in flux. -

        - -

        - We are interested in any strange failures of the - testsuite; please see FAQ 2.4 - for which files to examine. -

        - -
        -

        Running debug-mode tests

        -

        To run the libstdc++ test suite under the debug mode, - edit libstdc++/scripts/testsuite_flags to add the - compile-time flag -D_GLIBCXX_DEBUG to the result - printed by the --build-cxx option. Additionally, add - the -D_GLIBCXX_DEBUG_PEDANTIC flag to turn on pedantic - checking. The libstdc++ test suite should produce precisely the same - results under debug mode that it does under release mode: any - deviation indicates an error in either the library or the test - suite.

        - -
        -

        Future

        - -

        -Shared runs need to be implemented, for targets that support shared libraries. -

        - -

        -Diffing of expected output to standard streams needs to be finished off. -

        - -

        -The V3 testing framework supports, or will eventually support, -additional keywords for the purpose of easing the job of writing -test cases. All V3-keywords are of the form @xxx@. -Currently plans for supported keywords include: -

        - -
        -
        @require@ <files>
        -
        -

        - The existence of <files> is essential for the test to complete - successfully. For example, a test case foo.C using bar.baz as - input file could say -

        -
        -	    // @require@ bar.baz
        -

        - The special variable % stands for the rootname, e.g. the - file-name without its `.C' extension. Example of use (taken - verbatim from 27_io/filebuf.cc) -

        -
        -	   // @require@ %-*.tst %-*.txt
        -
        -
        @diff@ <first-list> <second-list>
        -
        -

        - After the test case compiles and ran successfully, diff - <first-list> against <second-list>, these lists should - have the same length. The test fails if diff returns non-zero a - pair of files. -

        -
        -
        - -
        -

        DejaGNU internals

        - -

        This is information for those looking at making changes to the testsuite -structure, and/or needing to trace dejagnu's actions with --verbose. This -will not be useful to people who are "merely" adding new tests to the existing -structure. -

        - -

        The first key point when working with dejagnu is the idea of a "tool". -Files, directories, and functions are all implicitly used when they are -named after the tool in use. Here, the tool will always be "libstdc++". -

        - -

        The lib subdir contains support routines. The -lib/libstdc++.exp file ("support library") is loaded -automagically, and must explicitly load the others. For example, files can -be copied from the core compiler's support directory into lib. -

        - -

        Some routines in lib/libstdc++.exp are callbacks, some are -our own. Callbacks must be prefixed with the name of the tool. To easily -distinguish the others, by convention our own routines are named "v3-*". -

        - -

        The next key point when working with dejagnu is "test files". Any -directory whose name starts with the tool name will be searched for test files. -(We have only one.) In those directories, any .exp file is -considered a test file, and will be run in turn. Our main test file is called -normal.exp; it runs all the tests in testsuite_files using the -callbacks loaded from the support library. -

        - -

        The config directory is searched for any particular "target -board" information unique to this library. This is currently unused and sets -only default variables. -

        - - - - -
        -

        -See license.html for copying conditions. -Comments and suggestions are welcome, and may be sent to -the libstdc++ mailing list. -

        - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/fragment.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/fragment.am deleted file mode 100644 index b20897276..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/fragment.am +++ /dev/null @@ -1,25 +0,0 @@ - -## This is used in all Makefile.am's except for libmath'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.1.0/include/Makefile.am b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/Makefile.am deleted file mode 100644 index 012054364..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/Makefile.am +++ /dev/null @@ -1,992 +0,0 @@ -## Makefile for the include subdirectory of the GNU C++ Standard library. -## -## Copyright (C) 2001, 2002, 2003, 2004, 2005 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 - -# Standard C++ includes. -std_srcdir = ${glibcxx_srcdir}/include/std -std_builddir = . -std_headers = \ - ${std_srcdir}/std_algorithm.h \ - ${std_srcdir}/std_bitset.h \ - ${std_srcdir}/std_complex.h \ - ${std_srcdir}/std_deque.h \ - ${std_srcdir}/std_fstream.h \ - ${std_srcdir}/std_functional.h \ - ${std_srcdir}/std_iomanip.h \ - ${std_srcdir}/std_ios.h \ - ${std_srcdir}/std_iosfwd.h \ - ${std_srcdir}/std_iostream.h \ - ${std_srcdir}/std_istream.h \ - ${std_srcdir}/std_iterator.h \ - ${std_srcdir}/std_limits.h \ - ${std_srcdir}/std_list.h \ - ${std_srcdir}/std_locale.h \ - ${std_srcdir}/std_map.h \ - ${std_srcdir}/std_memory.h \ - ${std_srcdir}/std_numeric.h \ - ${std_srcdir}/std_ostream.h \ - ${std_srcdir}/std_queue.h \ - ${std_srcdir}/std_set.h \ - ${std_srcdir}/std_sstream.h \ - ${std_srcdir}/std_stack.h \ - ${std_srcdir}/std_stdexcept.h \ - ${std_srcdir}/std_streambuf.h \ - ${std_srcdir}/std_string.h \ - ${std_srcdir}/std_utility.h \ - ${std_srcdir}/std_valarray.h \ - ${std_srcdir}/std_vector.h -# Renamed at build time. -std_headers_rename = \ - algorithm \ - bitset \ - complex \ - deque \ - fstream \ - functional \ - iomanip \ - ios \ - iosfwd \ - iostream \ - istream \ - iterator \ - limits \ - list \ - locale \ - map \ - memory \ - numeric \ - ostream \ - queue \ - set \ - sstream \ - stack \ - stdexcept \ - streambuf \ - string \ - utility \ - valarray \ - vector - -bits_srcdir = ${glibcxx_srcdir}/include/bits -bits_builddir = ./bits -bits_headers = \ - ${bits_srcdir}/allocator.h \ - ${bits_srcdir}/atomicity.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}/char_traits.h \ - ${bits_srcdir}/codecvt.h \ - ${bits_srcdir}/concept_check.h \ - ${bits_srcdir}/concurrence.h \ - ${bits_srcdir}/cpp_type_traits.h \ - ${bits_srcdir}/deque.tcc \ - ${bits_srcdir}/fstream.tcc \ - ${bits_srcdir}/functexcept.h \ - ${bits_srcdir}/gslice.h \ - ${bits_srcdir}/gslice_array.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_facets.h \ - ${bits_srcdir}/locale_facets.tcc \ - ${bits_srcdir}/localefwd.h \ - ${bits_srcdir}/mask_array.h \ - ${bits_srcdir}/ostream.tcc \ - ${bits_srcdir}/postypes.h \ - ${bits_srcdir}/stream_iterator.h \ - ${bits_srcdir}/streambuf_iterator.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}/valarray_array.h \ - ${bits_srcdir}/valarray_array.tcc \ - ${bits_srcdir}/valarray_before.h \ - ${bits_srcdir}/valarray_after.h \ - ${bits_srcdir}/vector.tcc - -backward_srcdir = ${glibcxx_srcdir}/include/backward -backward_builddir = ./backward -backward_headers = \ - ${backward_srcdir}/complex.h \ - ${backward_srcdir}/iomanip.h \ - ${backward_srcdir}/istream.h \ - ${backward_srcdir}/ostream.h \ - ${backward_srcdir}/stream.h \ - ${backward_srcdir}/streambuf.h \ - ${backward_srcdir}/algo.h \ - ${backward_srcdir}/algobase.h \ - ${backward_srcdir}/alloc.h \ - ${backward_srcdir}/bvector.h \ - ${backward_srcdir}/defalloc.h \ - ${backward_srcdir}/deque.h \ - ${backward_srcdir}/function.h \ - ${backward_srcdir}/hash_map.h \ - ${backward_srcdir}/hash_set.h \ - ${backward_srcdir}/hashtable.h \ - ${backward_srcdir}/heap.h \ - ${backward_srcdir}/iostream.h \ - ${backward_srcdir}/iterator.h \ - ${backward_srcdir}/list.h \ - ${backward_srcdir}/map.h \ - ${backward_srcdir}/multimap.h \ - ${backward_srcdir}/new.h \ - ${backward_srcdir}/multiset.h \ - ${backward_srcdir}/pair.h \ - ${backward_srcdir}/queue.h \ - ${backward_srcdir}/rope.h \ - ${backward_srcdir}/set.h \ - ${backward_srcdir}/slist.h \ - ${backward_srcdir}/stack.h \ - ${backward_srcdir}/tempbuf.h \ - ${backward_srcdir}/tree.h \ - ${backward_srcdir}/vector.h \ - ${backward_srcdir}/fstream.h \ - ${backward_srcdir}/strstream \ - ${backward_srcdir}/backward_warning.h - - -assoc_srcdir = ${glibcxx_srcdir}/include/ext/pb_assoc -assoc_builddir = ./ext/pb_assoc - -assoc_subdirs = \ - ${assoc_builddir}/detail \ - ${assoc_builddir}/detail/tree_assoc_cntnr \ - ${assoc_builddir}/detail/basic_assoc_cntnr \ - ${assoc_builddir}/detail/splay_tree_ \ - ${assoc_builddir}/detail/typelist \ - ${assoc_builddir}/detail/basic_hash_assoc_cntnr \ - ${assoc_builddir}/detail/cc_ht_map_ \ - ${assoc_builddir}/detail/gp_ht_map_ \ - ${assoc_builddir}/detail/tree_policy \ - ${assoc_builddir}/detail/resize_policy \ - ${assoc_builddir}/detail/bin_search_tree_ \ - ${assoc_builddir}/detail/basic_tree_assoc_cntnr \ - ${assoc_builddir}/detail/cc_hash_assoc_cntnr \ - ${assoc_builddir}/detail/value_type_adapter \ - ${assoc_builddir}/detail/lu_policy \ - ${assoc_builddir}/detail/gp_hash_assoc_cntnr \ - ${assoc_builddir}/detail/unordered_iterator \ - ${assoc_builddir}/detail/ov_tree_map_ \ - ${assoc_builddir}/detail/lu_assoc_cntnr \ - ${assoc_builddir}/detail/hash_fn \ - ${assoc_builddir}/detail/eq_fn \ - ${assoc_builddir}/detail/rb_tree_map_ \ - ${assoc_builddir}/detail/lu_map_ - -# The ability for make and the underlying host to deal with this -# unweildy list as one entire entity is not a sure thing, and may -# cause build errors. Thus, split one list into five smaller ones. -assoc_headers1 = \ - ${assoc_srcdir}/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/type_utils.hpp \ - ${assoc_srcdir}/detail/order_statistics_imp.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/d_find_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/extract_key.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/d_extract_key.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/splay_tree_.hpp \ - ${assoc_srcdir}/detail/splay_tree_/node.hpp \ - ${assoc_srcdir}/detail/splay_tree_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/splay_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_transform.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_apply.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_filter.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_at_index.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_contains.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_append.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_typelist_append.hpp \ - ${assoc_srcdir}/detail/ds_trait_imp.hpp \ - ${assoc_srcdir}/detail/basic_hash_assoc_cntnr/resize_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_hash_assoc_cntnr/constructors_destructor_fn_imps.hpp - -assoc_headers2 = \ - ${assoc_srcdir}/detail/cc_ht_map_/resize_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/find_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/erase_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/resize_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/debug_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/cmp_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/insert_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/find_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/cond_key_dtor_entry_dealtor.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/entry_list_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/constructor_destructor_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/erase_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/cc_ht_map_.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/standard_policies.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/insert_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/size_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/debug_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/resize_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/resize_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/find_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/erase_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/resize_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/debug_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/insert_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/find_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/constructor_destructor_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/erase_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/insert_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/gp_ht_map_.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/iterator_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/debug_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/resize_no_store_hash_fn_imps.hpp - -assoc_headers3 = \ - ${assoc_srcdir}/detail/tree_policy/order_statistics_imp.hpp \ - ${assoc_srcdir}/detail/tree_policy/null_node_updator_imp.hpp \ - ${assoc_srcdir}/detail/types_traits.hpp \ - ${assoc_srcdir}/detail/mapping_level_imp.hpp \ - ${assoc_srcdir}/detail/map_debug_base.hpp \ - ${assoc_srcdir}/detail/resize_policy/ht_prime_size_policy_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_prime_size_policy_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/size_base.hpp \ - ${assoc_srcdir}/detail/resize_policy/cc_hash_max_collision_resize_trigger_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_exponential_size_policy_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_standard_resize_policy_imp.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/find_iterators.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/node_iterators.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/rotate_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/r_erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/r_range_iteration_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/r_erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/range_iteration_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/node_iteration_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp - -assoc_headers4 = \ - ${assoc_srcdir}/detail/assoc_cntnr_base.hpp \ - ${assoc_srcdir}/detail/ms_category_imp.hpp \ - ${assoc_srcdir}/detail/hash_types_traits.hpp \ - ${assoc_srcdir}/detail/typelist.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/invalidation_guarantee_selector.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/iterator.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/constructor_destructor_and_related.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/value_type_traits.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/ref_pair.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/it_value_type_traits.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/erase_if_pred.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/value_type_adapter.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/iterator_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_policy/mtf_lu_policy_imp.hpp \ - ${assoc_srcdir}/detail/lu_policy/counter_lu_policy_imp.hpp \ - ${assoc_srcdir}/detail/lu_policy/counter_lu_metadata_imp.hpp \ - ${assoc_srcdir}/detail/gp_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/find_iterator.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/iterator.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/const_iterator.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/const_find_iterator.hpp \ - ${assoc_srcdir}/detail/standard_policies.hpp \ - ${assoc_srcdir}/detail/standard_sizes.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/node_iterators.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/cond_dtor.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp - -assoc_headers5 = \ - ${assoc_srcdir}/detail/lu_assoc_cntnr/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/hash_fn/linear_probe_fn_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/mod_based_range_hashing.hpp \ - ${assoc_srcdir}/detail/hash_fn/direct_mod_range_hashing_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/probe_fn_base.hpp \ - ${assoc_srcdir}/detail/hash_fn/ranged_probe_fn.hpp \ - ${assoc_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/direct_mask_range_hashing_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \ - ${assoc_srcdir}/detail/hash_fn/mask_based_range_hashing.hpp \ - ${assoc_srcdir}/detail/eq_fn/eq_by_less.hpp \ - ${assoc_srcdir}/detail/eq_fn/hash_eq_fn.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/node.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/rb_tree_.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/lu_map_.hpp \ - ${assoc_srcdir}/detail/lu_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/ms_trait_imp.hpp \ - ${assoc_srcdir}/detail/cond_dealtor.hpp \ - ${assoc_srcdir}/hash_policy.hpp \ - ${assoc_srcdir}/trivial_iterator_def.hpp \ - ${assoc_srcdir}/ds_trait.hpp \ - ${assoc_srcdir}/exception.hpp \ - ${assoc_srcdir}/tree_policy.hpp \ - ${assoc_srcdir}/lu_policy.hpp \ - ${assoc_srcdir}/ms_trait.hpp \ - ${assoc_srcdir}/assoc_cntnr.hpp \ - ${assoc_srcdir}/data_type.hpp - - -ext_srcdir = ${glibcxx_srcdir}/include/ext -ext_builddir = ./ext -ext_headers = \ - ${ext_srcdir}/algorithm \ - ${ext_srcdir}/array_allocator.h \ - ${ext_srcdir}/bitmap_allocator.h \ - ${ext_srcdir}/codecvt_specializations.h \ - ${ext_srcdir}/debug_allocator.h \ - ${ext_srcdir}/stdio_filebuf.h \ - ${ext_srcdir}/stdio_sync_filebuf.h \ - ${ext_srcdir}/functional \ - ${ext_srcdir}/hash_map \ - ${ext_srcdir}/hash_set \ - ${ext_srcdir}/hash_fun.h \ - ${ext_srcdir}/hashtable.h \ - ${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}/pod_char_traits.h \ - ${ext_srcdir}/pool_allocator.h \ - ${ext_srcdir}/rb_tree \ - ${ext_srcdir}/rope \ - ${ext_srcdir}/ropeimpl.h \ - ${ext_srcdir}/slist \ - ${ext_srcdir}/typelist.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 - - -tr1_srcdir = ${glibcxx_srcdir}/include/tr1 -tr1_builddir = ./tr1 -tr1_headers = \ - ${tr1_srcdir}/array \ - ${tr1_srcdir}/bind_repeat.h \ - ${tr1_srcdir}/bind_iterate.h \ - ${tr1_srcdir}/boost_shared_ptr.h \ - ${tr1_srcdir}/mu_iterate.h \ - ${tr1_srcdir}/functional \ - ${tr1_srcdir}/functional_iterate.h \ - ${tr1_srcdir}/memory \ - ${tr1_srcdir}/ref_fwd.h \ - ${tr1_srcdir}/ref_wrap_iterate.h \ - ${tr1_srcdir}/repeat.h \ - ${tr1_srcdir}/tuple \ - ${tr1_srcdir}/tuple_iterate.h \ - ${tr1_srcdir}/utility \ - ${tr1_srcdir}/type_traits \ - ${tr1_srcdir}/type_traits_fwd.h \ - ${tr1_srcdir}/hashtable \ - ${tr1_srcdir}/unordered_set \ - ${tr1_srcdir}/unordered_map - - -# This is the common subset of files that all three "C" header models use. -c_base_srcdir = $(C_INCLUDE_DIR) -c_base_builddir = . -c_base_headers = \ - ${c_base_srcdir}/std_cassert.h \ - ${c_base_srcdir}/std_cctype.h \ - ${c_base_srcdir}/std_cerrno.h \ - ${c_base_srcdir}/std_cfloat.h \ - ${c_base_srcdir}/std_ciso646.h \ - ${c_base_srcdir}/std_climits.h \ - ${c_base_srcdir}/std_clocale.h \ - ${c_base_srcdir}/std_cmath.h \ - ${c_base_srcdir}/std_csetjmp.h \ - ${c_base_srcdir}/std_csignal.h \ - ${c_base_srcdir}/std_cstdarg.h \ - ${c_base_srcdir}/std_cstddef.h \ - ${c_base_srcdir}/std_cstdio.h \ - ${c_base_srcdir}/std_cstdlib.h \ - ${c_base_srcdir}/std_cstring.h \ - ${c_base_srcdir}/std_ctime.h \ - ${c_base_srcdir}/std_cwchar.h \ - ${c_base_srcdir}/std_cwctype.h -c_base_headers_rename = \ - cassert \ - cctype \ - cerrno \ - cfloat \ - ciso646 \ - climits \ - clocale \ - cmath \ - csetjmp \ - csignal \ - cstdarg \ - cstddef \ - cstdio \ - cstdlib \ - cstring \ - ctime \ - cwchar \ - cwctype - -# "C" compatibility headers. -c_compatibility_srcdir = ${glibcxx_srcdir}/include/c_compatibility -c_compatibility_builddir = . -c_compatibility_headers = \ - ${c_compatibility_srcdir}/assert.h \ - ${c_compatibility_srcdir}/ctype.h \ - ${c_compatibility_srcdir}/errno.h \ - ${c_compatibility_srcdir}/float.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}/stddef.h \ - ${c_compatibility_srcdir}/stdio.h \ - ${c_compatibility_srcdir}/stdlib.h \ - ${c_compatibility_srcdir}/string.h \ - ${c_compatibility_srcdir}/time.h \ - ${c_compatibility_srcdir}/wchar.h \ - ${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}/functions.h \ - ${debug_srcdir}/hash_map \ - ${debug_srcdir}/hash_map.h \ - ${debug_srcdir}/hash_multimap.h \ - ${debug_srcdir}/hash_multiset.h \ - ${debug_srcdir}/hash_set \ - ${debug_srcdir}/hash_set.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}/set \ - ${debug_srcdir}/set.h \ - ${debug_srcdir}/string \ - ${debug_srcdir}/vector - -# Some of the different "C" header models need extra files. -# Some "C" header schemes require the "C" compatibility headers. -# For --enable-cheaders=c_std -if GLIBCXX_C_HEADERS_C_STD -c_base_headers_extra = ${c_base_srcdir}/cmath.tcc -else -c_base_headers_extra = -endif - -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_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 - -# 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 - -pch_input = ${host_builddir}/stdc++.h -pch_output_builddir = ${host_builddir}/stdc++.h.gch -pch_source = ${glibcxx_srcdir}/include/stdc++.h -PCHFLAGS=-Winvalid-pch -Wno-deprecated -x c++-header $(CXXFLAGS) -if GLIBCXX_BUILD_PCH -pch_build = ${pch_input} -pch_install = install-pch -else -pch_build = -pch_install = -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-c_base stamp-c_compatibility \ - stamp-backward stamp-ext stamp-assoc stamp-tr1 stamp-debug 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} - -# This rule is slightly different, in that we must change the name of the -# local file from std_foo.h to foo. -stamp-std: ${std_headers} - @if [ ! -d "${std_builddir}" ]; then \ - mkdir -p ${std_builddir} ;\ - fi ;\ - if [ ! -f stamp-std ]; then \ - (cd ${std_builddir} && for h in $?; do \ - build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\ - $(LN_S) $$h ./$${build_name} || true ;\ - done) ;\ - fi ;\ - $(STAMP) stamp-std - -stamp-bits: ${bits_headers} - @if [ ! -d "${bits_builddir}" ]; then \ - mkdir -p ${bits_builddir} ;\ - fi ;\ - if [ ! -f stamp-bits ]; then \ - (cd ${bits_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-bits - -stamp-c_base: stamp-bits ${c_base_headers} ${c_base_headers_extra} - @if [ ! -d "${c_base_builddir}" ]; then \ - mkdir -p ${c_base_builddir} ;\ - fi ;\ - if [ ! -f stamp-c_base ]; then \ - (cd ${c_base_builddir} && for h in ${c_base_headers}; do \ - build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\ - $(LN_S) $$h ./$${build_name} || true ;\ - done) ;\ - if [ ! -z "${c_base_headers_extra}" ]; then \ - (cd ${bits_builddir} && $(LN_S) ${c_base_headers_extra} . || true) ;\ - fi ;\ - fi ;\ - $(STAMP) stamp-c_base - -stamp-c_compatibility: ${c_compatibility_headers_extra} - @if [ ! -d "${c_compatibility_builddir}" ]; then \ - mkdir -p ${c_compatibility_builddir} ;\ - fi ;\ - if [ ! -f stamp-c_compatibility ]; then \ - if [ ! -z "${c_compatibility_headers_extra}" ]; then \ - (cd ${c_compatibility_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - fi ;\ - $(STAMP) stamp-c_compatibility - -stamp-backward: ${backward_headers} - @if [ ! -d "${backward_builddir}" ]; then \ - mkdir -p ${backward_builddir} ;\ - fi ;\ - if [ ! -f stamp-backward ]; then \ - (cd ${backward_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-backward - -stamp-ext: ${ext_headers} - @if [ ! -d "${ext_builddir}" ]; then \ - mkdir -p ${ext_builddir} ;\ - fi ;\ - if [ ! -f stamp-ext ]; then \ - (cd ${ext_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-ext - -# Have to deal with nested include directories, gah! Strip off source -# directory before making the link. -# XXX check ${assoc_headers} -stamp-assoc: - @if [ ! -d "${assoc_builddir}" ]; then \ - mkdir -p ${assoc_subdirs} ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers1}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers2}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers3}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers4}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers5}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - $(STAMP) stamp-assoc - -stamp-tr1: ${tr1_headers} - @if [ ! -d "${tr1_builddir}" ]; then \ - mkdir -p ${tr1_builddir} ;\ - fi ;\ - if [ ! -f stamp-tr1 ]; then \ - (cd ${tr1_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-tr1 - -stamp-debug: ${debug_headers} - @if [ ! -d "${debug_builddir}" ]; then \ - mkdir -p ${debug_builddir} ;\ - fi ;\ - if [ ! -f stamp-debug ]; then \ - (cd ${debug_builddir} && @LN_S@ $? . || true) ;\ - fi ;\ - $(STAMP) stamp-debug - -stamp-${host_alias}: - @if [ ! -d ${host_builddir} ]; then \ - mkdir -p ${host_builddir} ;\ - fi ;\ - $(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} - @if [ ! -f stamp-host ]; then \ - (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 ;\ - $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_H) codecvt_specializations.h || true);\ - fi ;\ - $(STAMP) stamp-host - -# Host includes dynamic. -${host_builddir}/c++config.h: ${top_builddir}/config.h \ - ${glibcxx_srcdir}/include/bits/c++config \ - stamp-${host_alias} \ - ${toplevel_srcdir}/gcc/DATESTAMP - @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ - sed -e 's/^/#define __GLIBCXX__ /' \ - < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\ - 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' \ - < ${CONFIG_HEADER} >> $@ ;\ - echo "#endif // _CXXCONFIG_" >>$@ - -# 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 ,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 ,g' \ - < ${toplevel_srcdir}/gcc/${glibcxx_thread_h} > $@ - -# Build a precompiled C++ include, stdc++.h.gch. -${pch_input}: ${allstamped} ${host_builddir}/c++config.h ${pch_source} - touch ${pch_input}; \ - if [ ! -d "${pch_output_builddir}" ]; then \ - mkdir -p ${pch_output_builddir}; \ - fi; \ - $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g.gch; \ - $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g.gch; - -# 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 ${pch_install} -else -install-data-local: install-freestanding-headers -endif - -# This is a subset of the full install-headers rule. We only need , -# , , , , , , 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)${gxx_include_dir}/${host_builddir} - for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h; do \ - $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; 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}/${assoc_builddir} - for dir in ${assoc_subdirs}; do \ - $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/$${dir} ; done - for file in ${assoc_headers1}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers2}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers3}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers4}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers5}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_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}/${c_base_builddir} - for file in ${c_base_headers_rename}; do \ - $(INSTALL_DATA) ${c_base_builddir}/$${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_rename}; do \ - $(INSTALL_DATA) ${std_builddir}/$${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 - $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_builddir} - for file in ${host_headers} ${host_headers_extra} \ - ${thread_host_headers}; do \ - $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; done - -install-pch: - $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pch_output_builddir} - for file in ${pch_output_builddir}/*; do \ - $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${pch_output_builddir}; done - -# By adding these files here, automake will remove them for 'make clean' -CLEANFILES = ${pch_input} ${pch_output_builddir}/* - -# 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_rename) $(c_base_headers_rename) -$(std_headers_rename): ; @: -$(c_base_headers_rename): ; @: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/Makefile.in b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/Makefile.in deleted file mode 100644 index a0c358c6c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/Makefile.in +++ /dev/null @@ -1,1364 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 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@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = @INSTALL@ -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 = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/fragment.am -subdir = include -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \ - $(top_srcdir)/../config/lead-dot.m4 \ - $(top_srcdir)/../config/no-executables.m4 \ - $(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \ - $(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.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 = -depcomp = -am__depfiles_maybe = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -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_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@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -C_INCLUDE_DIR = @C_INCLUDE_DIR@ -DEBUG_FLAGS = @DEBUG_FLAGS@ -DEFS = @DEFS@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_SYMVERS_DARWIN_EXPORT_FALSE = @ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@ -ENABLE_SYMVERS_DARWIN_EXPORT_TRUE = @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@ -ENABLE_SYMVERS_GNU_FALSE = @ENABLE_SYMVERS_GNU_FALSE@ -ENABLE_SYMVERS_GNU_TRUE = @ENABLE_SYMVERS_GNU_TRUE@ -EXEEXT = @EXEEXT@ -EXTRA_CXX_FLAGS = @EXTRA_CXX_FLAGS@ -GLIBCXX_BUILD_DEBUG_FALSE = @GLIBCXX_BUILD_DEBUG_FALSE@ -GLIBCXX_BUILD_DEBUG_TRUE = @GLIBCXX_BUILD_DEBUG_TRUE@ -GLIBCXX_BUILD_PCH_FALSE = @GLIBCXX_BUILD_PCH_FALSE@ -GLIBCXX_BUILD_PCH_TRUE = @GLIBCXX_BUILD_PCH_TRUE@ -GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE = @GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@ -GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE = @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@ -GLIBCXX_C_HEADERS_C_FALSE = @GLIBCXX_C_HEADERS_C_FALSE@ -GLIBCXX_C_HEADERS_C_STD_FALSE = @GLIBCXX_C_HEADERS_C_STD_FALSE@ -GLIBCXX_C_HEADERS_C_STD_TRUE = @GLIBCXX_C_HEADERS_C_STD_TRUE@ -GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HEADERS_C_TRUE@ -GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@ -GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@ -GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LIBICONV = @LIBICONV@ -LIBMATHOBJS = @LIBMATHOBJS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ -MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ -MAKEINFO = @MAKEINFO@ -OBJEXT = @OBJEXT@ -OPTIMIZE_CXXFLAGS = @OPTIMIZE_CXXFLAGS@ -OPT_LDFLAGS = @OPT_LDFLAGS@ -OS_INC_SRCDIR = @OS_INC_SRCDIR@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SECTION_FLAGS = @SECTION_FLAGS@ -SECTION_LDFLAGS = @SECTION_LDFLAGS@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -SYMVER_MAP = @SYMVER_MAP@ -TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -WARN_FLAGS = @WARN_FLAGS@ -WERROR = @WERROR@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__leading_dot = @am__leading_dot@ -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@ -check_msgfmt = @check_msgfmt@ -datadir = @datadir@ -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@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -libtool_VERSION = @libtool_VERSION@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -multi_basedir = @multi_basedir@ -oldincludedir = @oldincludedir@ -port_specific_symbol_files = @port_specific_symbol_files@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -toplevel_srcdir = @toplevel_srcdir@ - -# 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}/std_algorithm.h \ - ${std_srcdir}/std_bitset.h \ - ${std_srcdir}/std_complex.h \ - ${std_srcdir}/std_deque.h \ - ${std_srcdir}/std_fstream.h \ - ${std_srcdir}/std_functional.h \ - ${std_srcdir}/std_iomanip.h \ - ${std_srcdir}/std_ios.h \ - ${std_srcdir}/std_iosfwd.h \ - ${std_srcdir}/std_iostream.h \ - ${std_srcdir}/std_istream.h \ - ${std_srcdir}/std_iterator.h \ - ${std_srcdir}/std_limits.h \ - ${std_srcdir}/std_list.h \ - ${std_srcdir}/std_locale.h \ - ${std_srcdir}/std_map.h \ - ${std_srcdir}/std_memory.h \ - ${std_srcdir}/std_numeric.h \ - ${std_srcdir}/std_ostream.h \ - ${std_srcdir}/std_queue.h \ - ${std_srcdir}/std_set.h \ - ${std_srcdir}/std_sstream.h \ - ${std_srcdir}/std_stack.h \ - ${std_srcdir}/std_stdexcept.h \ - ${std_srcdir}/std_streambuf.h \ - ${std_srcdir}/std_string.h \ - ${std_srcdir}/std_utility.h \ - ${std_srcdir}/std_valarray.h \ - ${std_srcdir}/std_vector.h - -# Renamed at build time. -std_headers_rename = \ - algorithm \ - bitset \ - complex \ - deque \ - fstream \ - functional \ - iomanip \ - ios \ - iosfwd \ - iostream \ - istream \ - iterator \ - limits \ - list \ - locale \ - map \ - memory \ - numeric \ - ostream \ - queue \ - set \ - sstream \ - stack \ - stdexcept \ - streambuf \ - string \ - utility \ - valarray \ - vector - -bits_srcdir = ${glibcxx_srcdir}/include/bits -bits_builddir = ./bits -bits_headers = \ - ${bits_srcdir}/allocator.h \ - ${bits_srcdir}/atomicity.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}/char_traits.h \ - ${bits_srcdir}/codecvt.h \ - ${bits_srcdir}/concept_check.h \ - ${bits_srcdir}/concurrence.h \ - ${bits_srcdir}/cpp_type_traits.h \ - ${bits_srcdir}/deque.tcc \ - ${bits_srcdir}/fstream.tcc \ - ${bits_srcdir}/functexcept.h \ - ${bits_srcdir}/gslice.h \ - ${bits_srcdir}/gslice_array.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_facets.h \ - ${bits_srcdir}/locale_facets.tcc \ - ${bits_srcdir}/localefwd.h \ - ${bits_srcdir}/mask_array.h \ - ${bits_srcdir}/ostream.tcc \ - ${bits_srcdir}/postypes.h \ - ${bits_srcdir}/stream_iterator.h \ - ${bits_srcdir}/streambuf_iterator.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}/valarray_array.h \ - ${bits_srcdir}/valarray_array.tcc \ - ${bits_srcdir}/valarray_before.h \ - ${bits_srcdir}/valarray_after.h \ - ${bits_srcdir}/vector.tcc - -backward_srcdir = ${glibcxx_srcdir}/include/backward -backward_builddir = ./backward -backward_headers = \ - ${backward_srcdir}/complex.h \ - ${backward_srcdir}/iomanip.h \ - ${backward_srcdir}/istream.h \ - ${backward_srcdir}/ostream.h \ - ${backward_srcdir}/stream.h \ - ${backward_srcdir}/streambuf.h \ - ${backward_srcdir}/algo.h \ - ${backward_srcdir}/algobase.h \ - ${backward_srcdir}/alloc.h \ - ${backward_srcdir}/bvector.h \ - ${backward_srcdir}/defalloc.h \ - ${backward_srcdir}/deque.h \ - ${backward_srcdir}/function.h \ - ${backward_srcdir}/hash_map.h \ - ${backward_srcdir}/hash_set.h \ - ${backward_srcdir}/hashtable.h \ - ${backward_srcdir}/heap.h \ - ${backward_srcdir}/iostream.h \ - ${backward_srcdir}/iterator.h \ - ${backward_srcdir}/list.h \ - ${backward_srcdir}/map.h \ - ${backward_srcdir}/multimap.h \ - ${backward_srcdir}/new.h \ - ${backward_srcdir}/multiset.h \ - ${backward_srcdir}/pair.h \ - ${backward_srcdir}/queue.h \ - ${backward_srcdir}/rope.h \ - ${backward_srcdir}/set.h \ - ${backward_srcdir}/slist.h \ - ${backward_srcdir}/stack.h \ - ${backward_srcdir}/tempbuf.h \ - ${backward_srcdir}/tree.h \ - ${backward_srcdir}/vector.h \ - ${backward_srcdir}/fstream.h \ - ${backward_srcdir}/strstream \ - ${backward_srcdir}/backward_warning.h - -assoc_srcdir = ${glibcxx_srcdir}/include/ext/pb_assoc -assoc_builddir = ./ext/pb_assoc -assoc_subdirs = \ - ${assoc_builddir}/detail \ - ${assoc_builddir}/detail/tree_assoc_cntnr \ - ${assoc_builddir}/detail/basic_assoc_cntnr \ - ${assoc_builddir}/detail/splay_tree_ \ - ${assoc_builddir}/detail/typelist \ - ${assoc_builddir}/detail/basic_hash_assoc_cntnr \ - ${assoc_builddir}/detail/cc_ht_map_ \ - ${assoc_builddir}/detail/gp_ht_map_ \ - ${assoc_builddir}/detail/tree_policy \ - ${assoc_builddir}/detail/resize_policy \ - ${assoc_builddir}/detail/bin_search_tree_ \ - ${assoc_builddir}/detail/basic_tree_assoc_cntnr \ - ${assoc_builddir}/detail/cc_hash_assoc_cntnr \ - ${assoc_builddir}/detail/value_type_adapter \ - ${assoc_builddir}/detail/lu_policy \ - ${assoc_builddir}/detail/gp_hash_assoc_cntnr \ - ${assoc_builddir}/detail/unordered_iterator \ - ${assoc_builddir}/detail/ov_tree_map_ \ - ${assoc_builddir}/detail/lu_assoc_cntnr \ - ${assoc_builddir}/detail/hash_fn \ - ${assoc_builddir}/detail/eq_fn \ - ${assoc_builddir}/detail/rb_tree_map_ \ - ${assoc_builddir}/detail/lu_map_ - - -# The ability for make and the underlying host to deal with this -# unweildy list as one entire entity is not a sure thing, and may -# cause build errors. Thus, split one list into five smaller ones. -assoc_headers1 = \ - ${assoc_srcdir}/detail/tree_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/type_utils.hpp \ - ${assoc_srcdir}/detail/order_statistics_imp.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/d_find_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/d_insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/extract_key.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/d_extract_key.hpp \ - ${assoc_srcdir}/detail/basic_assoc_cntnr/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/splay_tree_.hpp \ - ${assoc_srcdir}/detail/splay_tree_/node.hpp \ - ${assoc_srcdir}/detail/splay_tree_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/splay_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/splay_tree_/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_transform.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_apply.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_filter.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_at_index.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_contains.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_append.hpp \ - ${assoc_srcdir}/detail/typelist/typelist_typelist_append.hpp \ - ${assoc_srcdir}/detail/ds_trait_imp.hpp \ - ${assoc_srcdir}/detail/basic_hash_assoc_cntnr/resize_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_hash_assoc_cntnr/constructors_destructor_fn_imps.hpp - -assoc_headers2 = \ - ${assoc_srcdir}/detail/cc_ht_map_/resize_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/find_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/erase_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/resize_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/debug_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/cmp_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/insert_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/find_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/cond_key_dtor_entry_dealtor.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/entry_list_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/constructor_destructor_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/erase_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/cc_ht_map_.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/standard_policies.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/insert_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/size_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/debug_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_ht_map_/resize_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/resize_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/find_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/erase_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/resize_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/debug_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/insert_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/find_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/constructor_destructor_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/erase_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/constructor_destructor_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/insert_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/gp_ht_map_.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/iterator_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/debug_no_store_hash_fn_imps.hpp \ - ${assoc_srcdir}/detail/gp_ht_map_/resize_no_store_hash_fn_imps.hpp - -assoc_headers3 = \ - ${assoc_srcdir}/detail/tree_policy/order_statistics_imp.hpp \ - ${assoc_srcdir}/detail/tree_policy/null_node_updator_imp.hpp \ - ${assoc_srcdir}/detail/types_traits.hpp \ - ${assoc_srcdir}/detail/mapping_level_imp.hpp \ - ${assoc_srcdir}/detail/map_debug_base.hpp \ - ${assoc_srcdir}/detail/resize_policy/ht_prime_size_policy_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_prime_size_policy_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/size_base.hpp \ - ${assoc_srcdir}/detail/resize_policy/cc_hash_max_collision_resize_trigger_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_exponential_size_policy_imp.hpp \ - ${assoc_srcdir}/detail/resize_policy/hash_standard_resize_policy_imp.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/find_iterators.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/node_iterators.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/rotate_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/r_erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/r_range_iteration_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/r_erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/range_iteration_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/basic_tree_assoc_cntnr/node_iteration_fn_imps.hpp \ - ${assoc_srcdir}/detail/cc_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp - -assoc_headers4 = \ - ${assoc_srcdir}/detail/assoc_cntnr_base.hpp \ - ${assoc_srcdir}/detail/ms_category_imp.hpp \ - ${assoc_srcdir}/detail/hash_types_traits.hpp \ - ${assoc_srcdir}/detail/typelist.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/invalidation_guarantee_selector.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/iterator.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/constructor_destructor_and_related.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/value_type_traits.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/ref_pair.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/it_value_type_traits.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/erase_if_pred.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/value_type_adapter.hpp \ - ${assoc_srcdir}/detail/value_type_adapter/iterator_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_policy/mtf_lu_policy_imp.hpp \ - ${assoc_srcdir}/detail/lu_policy/counter_lu_policy_imp.hpp \ - ${assoc_srcdir}/detail/lu_policy/counter_lu_metadata_imp.hpp \ - ${assoc_srcdir}/detail/gp_hash_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/find_iterator.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/iterator.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/const_iterator.hpp \ - ${assoc_srcdir}/detail/unordered_iterator/const_find_iterator.hpp \ - ${assoc_srcdir}/detail/standard_policies.hpp \ - ${assoc_srcdir}/detail/standard_sizes.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/node_iterators.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/cond_dtor.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp - -assoc_headers5 = \ - ${assoc_srcdir}/detail/lu_assoc_cntnr/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_assoc_cntnr/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/hash_fn/linear_probe_fn_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/mod_based_range_hashing.hpp \ - ${assoc_srcdir}/detail/hash_fn/direct_mod_range_hashing_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/probe_fn_base.hpp \ - ${assoc_srcdir}/detail/hash_fn/ranged_probe_fn.hpp \ - ${assoc_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/direct_mask_range_hashing_imp.hpp \ - ${assoc_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \ - ${assoc_srcdir}/detail/hash_fn/mask_based_range_hashing.hpp \ - ${assoc_srcdir}/detail/eq_fn/eq_by_less.hpp \ - ${assoc_srcdir}/detail/eq_fn/hash_eq_fn.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/node.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/split_join_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/rb_tree_.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/lu_map_.hpp \ - ${assoc_srcdir}/detail/lu_map_/erase_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/policy_access_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/insert_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/find_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/constructor_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/info_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/iterators_fn_imps.hpp \ - ${assoc_srcdir}/detail/lu_map_/debug_fn_imps.hpp \ - ${assoc_srcdir}/detail/constructors_destructor_fn_imps.hpp \ - ${assoc_srcdir}/detail/ms_trait_imp.hpp \ - ${assoc_srcdir}/detail/cond_dealtor.hpp \ - ${assoc_srcdir}/hash_policy.hpp \ - ${assoc_srcdir}/trivial_iterator_def.hpp \ - ${assoc_srcdir}/ds_trait.hpp \ - ${assoc_srcdir}/exception.hpp \ - ${assoc_srcdir}/tree_policy.hpp \ - ${assoc_srcdir}/lu_policy.hpp \ - ${assoc_srcdir}/ms_trait.hpp \ - ${assoc_srcdir}/assoc_cntnr.hpp \ - ${assoc_srcdir}/data_type.hpp - -ext_srcdir = ${glibcxx_srcdir}/include/ext -ext_builddir = ./ext -ext_headers = \ - ${ext_srcdir}/algorithm \ - ${ext_srcdir}/array_allocator.h \ - ${ext_srcdir}/bitmap_allocator.h \ - ${ext_srcdir}/codecvt_specializations.h \ - ${ext_srcdir}/debug_allocator.h \ - ${ext_srcdir}/stdio_filebuf.h \ - ${ext_srcdir}/stdio_sync_filebuf.h \ - ${ext_srcdir}/functional \ - ${ext_srcdir}/hash_map \ - ${ext_srcdir}/hash_set \ - ${ext_srcdir}/hash_fun.h \ - ${ext_srcdir}/hashtable.h \ - ${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}/pod_char_traits.h \ - ${ext_srcdir}/pool_allocator.h \ - ${ext_srcdir}/rb_tree \ - ${ext_srcdir}/rope \ - ${ext_srcdir}/ropeimpl.h \ - ${ext_srcdir}/slist \ - ${ext_srcdir}/typelist.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 - -tr1_srcdir = ${glibcxx_srcdir}/include/tr1 -tr1_builddir = ./tr1 -tr1_headers = \ - ${tr1_srcdir}/array \ - ${tr1_srcdir}/bind_repeat.h \ - ${tr1_srcdir}/bind_iterate.h \ - ${tr1_srcdir}/boost_shared_ptr.h \ - ${tr1_srcdir}/mu_iterate.h \ - ${tr1_srcdir}/functional \ - ${tr1_srcdir}/functional_iterate.h \ - ${tr1_srcdir}/memory \ - ${tr1_srcdir}/ref_fwd.h \ - ${tr1_srcdir}/ref_wrap_iterate.h \ - ${tr1_srcdir}/repeat.h \ - ${tr1_srcdir}/tuple \ - ${tr1_srcdir}/tuple_iterate.h \ - ${tr1_srcdir}/utility \ - ${tr1_srcdir}/type_traits \ - ${tr1_srcdir}/type_traits_fwd.h \ - ${tr1_srcdir}/hashtable \ - ${tr1_srcdir}/unordered_set \ - ${tr1_srcdir}/unordered_map - - -# This is the common subset of files that all three "C" header models use. -c_base_srcdir = $(C_INCLUDE_DIR) -c_base_builddir = . -c_base_headers = \ - ${c_base_srcdir}/std_cassert.h \ - ${c_base_srcdir}/std_cctype.h \ - ${c_base_srcdir}/std_cerrno.h \ - ${c_base_srcdir}/std_cfloat.h \ - ${c_base_srcdir}/std_ciso646.h \ - ${c_base_srcdir}/std_climits.h \ - ${c_base_srcdir}/std_clocale.h \ - ${c_base_srcdir}/std_cmath.h \ - ${c_base_srcdir}/std_csetjmp.h \ - ${c_base_srcdir}/std_csignal.h \ - ${c_base_srcdir}/std_cstdarg.h \ - ${c_base_srcdir}/std_cstddef.h \ - ${c_base_srcdir}/std_cstdio.h \ - ${c_base_srcdir}/std_cstdlib.h \ - ${c_base_srcdir}/std_cstring.h \ - ${c_base_srcdir}/std_ctime.h \ - ${c_base_srcdir}/std_cwchar.h \ - ${c_base_srcdir}/std_cwctype.h - -c_base_headers_rename = \ - cassert \ - cctype \ - cerrno \ - cfloat \ - ciso646 \ - climits \ - clocale \ - cmath \ - csetjmp \ - csignal \ - cstdarg \ - cstddef \ - cstdio \ - cstdlib \ - cstring \ - ctime \ - cwchar \ - cwctype - - -# "C" compatibility headers. -c_compatibility_srcdir = ${glibcxx_srcdir}/include/c_compatibility -c_compatibility_builddir = . -c_compatibility_headers = \ - ${c_compatibility_srcdir}/assert.h \ - ${c_compatibility_srcdir}/ctype.h \ - ${c_compatibility_srcdir}/errno.h \ - ${c_compatibility_srcdir}/float.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}/stddef.h \ - ${c_compatibility_srcdir}/stdio.h \ - ${c_compatibility_srcdir}/stdlib.h \ - ${c_compatibility_srcdir}/string.h \ - ${c_compatibility_srcdir}/time.h \ - ${c_compatibility_srcdir}/wchar.h \ - ${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}/functions.h \ - ${debug_srcdir}/hash_map \ - ${debug_srcdir}/hash_map.h \ - ${debug_srcdir}/hash_multimap.h \ - ${debug_srcdir}/hash_multiset.h \ - ${debug_srcdir}/hash_set \ - ${debug_srcdir}/hash_set.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}/set \ - ${debug_srcdir}/set.h \ - ${debug_srcdir}/string \ - ${debug_srcdir}/vector - -@GLIBCXX_C_HEADERS_C_STD_FALSE@c_base_headers_extra = - -# Some of the different "C" header models need extra files. -# Some "C" header schemes require the "C" compatibility headers. -# For --enable-cheaders=c_std -@GLIBCXX_C_HEADERS_C_STD_TRUE@c_base_headers_extra = ${c_base_srcdir}/cmath.tcc -@GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE@c_compatibility_headers_extra = -@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_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 - - -# 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 - -pch_input = ${host_builddir}/stdc++.h -pch_output_builddir = ${host_builddir}/stdc++.h.gch -pch_source = ${glibcxx_srcdir}/include/stdc++.h -PCHFLAGS = -Winvalid-pch -Wno-deprecated -x c++-header $(CXXFLAGS) -@GLIBCXX_BUILD_PCH_FALSE@pch_build = -@GLIBCXX_BUILD_PCH_TRUE@pch_build = ${pch_input} -@GLIBCXX_BUILD_PCH_FALSE@pch_install = -@GLIBCXX_BUILD_PCH_TRUE@pch_install = install-pch - -# 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-c_base stamp-c_compatibility \ - stamp-backward stamp-ext stamp-assoc stamp-tr1 stamp-debug 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_input} ${pch_output_builddir}/* -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 \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps include/Makefile'; \ - 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 - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/.. - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -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) - -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 distclean-libtool - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: install-data-local - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am all-local check check-am clean clean-generic \ - clean-libtool distclean distclean-generic distclean-libtool \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-data-local \ - install-exec install-exec-am install-info install-info-am \ - install-man 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-info-am - - -# Here are the rules for building the headers -all-local: ${allstamped} ${allcreated} - -# This rule is slightly different, in that we must change the name of the -# local file from std_foo.h to foo. -stamp-std: ${std_headers} - @if [ ! -d "${std_builddir}" ]; then \ - mkdir -p ${std_builddir} ;\ - fi ;\ - if [ ! -f stamp-std ]; then \ - (cd ${std_builddir} && for h in $?; do \ - build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\ - $(LN_S) $$h ./$${build_name} || true ;\ - done) ;\ - fi ;\ - $(STAMP) stamp-std - -stamp-bits: ${bits_headers} - @if [ ! -d "${bits_builddir}" ]; then \ - mkdir -p ${bits_builddir} ;\ - fi ;\ - if [ ! -f stamp-bits ]; then \ - (cd ${bits_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-bits - -stamp-c_base: stamp-bits ${c_base_headers} ${c_base_headers_extra} - @if [ ! -d "${c_base_builddir}" ]; then \ - mkdir -p ${c_base_builddir} ;\ - fi ;\ - if [ ! -f stamp-c_base ]; then \ - (cd ${c_base_builddir} && for h in ${c_base_headers}; do \ - build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\ - $(LN_S) $$h ./$${build_name} || true ;\ - done) ;\ - if [ ! -z "${c_base_headers_extra}" ]; then \ - (cd ${bits_builddir} && $(LN_S) ${c_base_headers_extra} . || true) ;\ - fi ;\ - fi ;\ - $(STAMP) stamp-c_base - -stamp-c_compatibility: ${c_compatibility_headers_extra} - @if [ ! -d "${c_compatibility_builddir}" ]; then \ - mkdir -p ${c_compatibility_builddir} ;\ - fi ;\ - if [ ! -f stamp-c_compatibility ]; then \ - if [ ! -z "${c_compatibility_headers_extra}" ]; then \ - (cd ${c_compatibility_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - fi ;\ - $(STAMP) stamp-c_compatibility - -stamp-backward: ${backward_headers} - @if [ ! -d "${backward_builddir}" ]; then \ - mkdir -p ${backward_builddir} ;\ - fi ;\ - if [ ! -f stamp-backward ]; then \ - (cd ${backward_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-backward - -stamp-ext: ${ext_headers} - @if [ ! -d "${ext_builddir}" ]; then \ - mkdir -p ${ext_builddir} ;\ - fi ;\ - if [ ! -f stamp-ext ]; then \ - (cd ${ext_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-ext - -# Have to deal with nested include directories, gah! Strip off source -# directory before making the link. -# XXX check ${assoc_headers} -stamp-assoc: - @if [ ! -d "${assoc_builddir}" ]; then \ - mkdir -p ${assoc_subdirs} ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers1}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers2}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers3}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers4}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - @if [ ! -f stamp-assoc ]; then \ - cd ${assoc_builddir} && for h in ${assoc_headers5}; do \ - build_name=`echo $$h | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(LN_S) $$h $${build_name} || true ;\ - done ;\ - fi - $(STAMP) stamp-assoc - -stamp-tr1: ${tr1_headers} - @if [ ! -d "${tr1_builddir}" ]; then \ - mkdir -p ${tr1_builddir} ;\ - fi ;\ - if [ ! -f stamp-tr1 ]; then \ - (cd ${tr1_builddir} && $(LN_S) $? . || true) ;\ - fi ;\ - $(STAMP) stamp-tr1 - -stamp-debug: ${debug_headers} - @if [ ! -d "${debug_builddir}" ]; then \ - mkdir -p ${debug_builddir} ;\ - fi ;\ - if [ ! -f stamp-debug ]; then \ - (cd ${debug_builddir} && @LN_S@ $? . || true) ;\ - fi ;\ - $(STAMP) stamp-debug - -stamp-${host_alias}: - @if [ ! -d ${host_builddir} ]; then \ - mkdir -p ${host_builddir} ;\ - fi ;\ - $(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} - @if [ ! -f stamp-host ]; then \ - (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 ;\ - $(LN_S) ${glibcxx_srcdir}/$(CCODECVT_H) codecvt_specializations.h || true);\ - fi ;\ - $(STAMP) stamp-host - -# Host includes dynamic. -${host_builddir}/c++config.h: ${top_builddir}/config.h \ - ${glibcxx_srcdir}/include/bits/c++config \ - stamp-${host_alias} \ - ${toplevel_srcdir}/gcc/DATESTAMP - @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\ - sed -e 's/^/#define __GLIBCXX__ /' \ - < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\ - 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' \ - < ${CONFIG_HEADER} >> $@ ;\ - echo "#endif // _CXXCONFIG_" >>$@ - -${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 ,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 ,g' \ - < ${toplevel_srcdir}/gcc/${glibcxx_thread_h} > $@ - -# Build a precompiled C++ include, stdc++.h.gch. -${pch_input}: ${allstamped} ${host_builddir}/c++config.h ${pch_source} - touch ${pch_input}; \ - if [ ! -d "${pch_output_builddir}" ]; then \ - mkdir -p ${pch_output_builddir}; \ - fi; \ - $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g.gch; \ - $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g.gch; - -# 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 ${pch_install} -@GLIBCXX_HOSTED_FALSE@install-data-local: install-freestanding-headers - -# This is a subset of the full install-headers rule. We only need , -# , , , , , , 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)${gxx_include_dir}/${host_builddir} - for file in ${host_srcdir}/os_defines.h ${host_builddir}/c++config.h; do \ - $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; 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}/${assoc_builddir} - for dir in ${assoc_subdirs}; do \ - $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/$${dir} ; done - for file in ${assoc_headers1}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers2}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers3}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers4}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_srcdir}|.|g"` ;\ - $(INSTALL_DATA) $${file} $${install_base}/$${relative_name} ; done - for file in ${assoc_headers5}; do \ - install_base=$(DESTDIR)${gxx_include_dir}/${assoc_builddir} ; \ - relative_name=`echo $$file | sed -e "s|${assoc_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}/${c_base_builddir} - for file in ${c_base_headers_rename}; do \ - $(INSTALL_DATA) ${c_base_builddir}/$${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_rename}; do \ - $(INSTALL_DATA) ${std_builddir}/$${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 - $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${host_builddir} - for file in ${host_headers} ${host_headers_extra} \ - ${thread_host_headers}; do \ - $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${host_builddir}; done - -install-pch: - $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${pch_output_builddir} - for file in ${pch_output_builddir}/*; do \ - $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${pch_output_builddir}; done - -# 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_rename) $(c_base_headers_rename) -$(std_headers_rename): ; @: -$(c_base_headers_rename): ; @: -# 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.1.0/include/backward/algo.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/algo.h deleted file mode 100644 index aaa8cdd3b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/algo.h +++ /dev/null @@ -1,149 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_ALGO_H -#define _BACKWARD_ALGO_H 1 - -#include "backward_warning.h" -#include "algobase.h" -#include "tempbuf.h" -#include "iterator.h" -#include -#include -#include -#include - -// Names from -using std::for_each; -using std::find; -using std::find_if; -using std::adjacent_find; -using std::count; -using std::count_if; -using std::search; -using std::search_n; -using std::swap_ranges; -using std::transform; -using std::replace; -using std::replace_if; -using std::replace_copy; -using std::replace_copy_if; -using std::generate; -using std::generate_n; -using std::remove; -using std::remove_if; -using std::remove_copy; -using std::remove_copy_if; -using std::unique; -using std::unique_copy; -using std::reverse; -using std::reverse_copy; -using std::rotate; -using std::rotate_copy; -using std::random_shuffle; -using std::partition; -using std::stable_partition; -using std::sort; -using std::stable_sort; -using std::partial_sort; -using std::partial_sort_copy; -using std::nth_element; -using std::lower_bound; -using std::upper_bound; -using std::equal_range; -using std::binary_search; -using std::merge; -using std::inplace_merge; -using std::includes; -using std::set_union; -using std::set_intersection; -using std::set_difference; -using std::set_symmetric_difference; -using std::min_element; -using std::max_element; -using std::next_permutation; -using std::prev_permutation; -using std::find_first_of; -using std::find_end; - -// Names from stl_heap.h -using std::push_heap; -using std::pop_heap; -using std::make_heap; -using std::sort_heap; - -// Names from stl_numeric.h -using std::accumulate; -using std::inner_product; -using std::partial_sum; -using std::adjacent_difference; - -// Names from ext/algorithm -using __gnu_cxx::random_sample; -using __gnu_cxx::random_sample_n; -using __gnu_cxx::is_sorted; -using __gnu_cxx::is_heap; -using __gnu_cxx::count; // Extension returning void -using __gnu_cxx::count_if; // Extension returning void - -// Names from ext/numeric -using __gnu_cxx::power; -using __gnu_cxx::iota; - -#endif /* _BACKWARD_ALGO_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/algobase.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/algobase.h deleted file mode 100644 index 19bdcadf6..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/algobase.h +++ /dev/null @@ -1,95 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_ALGOBASE_H -#define _BACKWARD_ALGOBASE_H 1 - -#include "backward_warning.h" -#include "pair.h" -#include "iterator.h" -#include -#include -#include -#include - -// Names from stl_algobase.h -using std::iter_swap; -using std::swap; -using std::min; -using std::max; -using std::copy; -using std::copy_backward; -using std::fill; -using std::fill_n; -using std::mismatch; -using std::equal; -using std::lexicographical_compare; - -// Names from stl_uninitialized.h -using std::uninitialized_copy; -using std::uninitialized_fill; -using std::uninitialized_fill_n; - -// Names from ext/algorithm -using __gnu_cxx::copy_n; -using __gnu_cxx::lexicographical_compare_3way; - -// Names from ext/memory -using __gnu_cxx::uninitialized_copy_n; - -#endif /* _BACKWARD_ALGOBASE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/alloc.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/alloc.h deleted file mode 100644 index 40a0af1f9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/alloc.h +++ /dev/null @@ -1,52 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - */ - -#ifndef _BACKWARD_ALLOC_H -#define _BACKWARD_ALLOC_H 1 - -#include "backward_warning.h" -#include -#include - -using std::allocator; - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/backward_warning.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/backward_warning.h deleted file mode 100644 index 80eabfe87..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/backward_warning.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_BACKWARD_WARNING_H -#define _BACKWARD_BACKWARD_WARNING_H 1 - -#ifdef __DEPRECATED -#warning This file includes at least one deprecated or antiquated header. \ -Please consider using one of the 32 headers found in section 17.4.1.2 of the \ -C++ standard. Examples include substituting the header for the \ -header for C++ includes, or instead of the deprecated header \ -. To disable this warning use -Wno-deprecated. -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/bvector.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/bvector.h deleted file mode 100644 index 10bafc843..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/bvector.h +++ /dev/null @@ -1,68 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_BVECTOR_H -#define _BACKWARD_BVECTOR_H 1 - -#include "backward_warning.h" -#include - -typedef std::vector > bit_vector; - -#endif /* _BACKWARD_BVECTOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/complex.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/complex.h deleted file mode 100644 index b03072e47..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/complex.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_COMPLEX_H -#define _BACKWARD_COMPLEX_H 1 - -#include "backward_warning.h" -#include - -using std::complex; -typedef complex float_complex; -typedef complex double_complex; -typedef complex long_double_complex; - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/defalloc.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/defalloc.h deleted file mode 100644 index ffa9b1682..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/defalloc.h +++ /dev/null @@ -1,117 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - * - */ - -// Inclusion of this file is DEPRECATED. This is the original HP -// default allocator. It is provided only for backward compatibility. -// This file WILL BE REMOVED in a future release. -// -// DO NOT USE THIS FILE unless you have an old container implementation -// that requires an allocator with the HP-style interface. -// -// Standard-conforming allocators have a very different interface. The -// standard default allocator is declared in the header . - -#ifndef _BACKWARD_DEFALLOC_H -#define _BACKWARD_DEFALLOC_H 1 - -#include "backward_warning.h" -#include "new.h" -#include -#include -#include -#include "iostream.h" -#include "algobase.h" - - -template -inline _Tp* allocate(ptrdiff_t __size, _Tp*) { - set_new_handler(0); - _Tp* __tmp = (_Tp*)(::operator new((size_t)(__size * sizeof(_Tp)))); - if (__tmp == 0) { - cerr << "out of memory" << endl; - exit(1); - } - return __tmp; -} - - -template -inline void deallocate(_Tp* __buffer) { - ::operator delete(__buffer); -} - -template -class allocator { -public: - typedef _Tp value_type; - typedef _Tp* pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - pointer allocate(size_type __n) { - return ::allocate((difference_type)__n, (pointer)0); - } - void deallocate(pointer __p) { ::deallocate(__p); } - pointer address(reference __x) { return (pointer)&__x; } - const_pointer const_address(const_reference __x) { - return (const_pointer)&__x; - } - size_type init_page_size() { - return max(size_type(1), size_type(4096/sizeof(_Tp))); - } - size_type max_size() const { - return max(size_type(1), size_type(UINT_MAX/sizeof(_Tp))); - } -}; - -class allocator { -public: - typedef void* pointer; -}; - - - -#endif /* _BACKWARD_DEFALLOC_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/deque.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/deque.h deleted file mode 100644 index 54b65ecce..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/deque.h +++ /dev/null @@ -1,70 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_DEQUE_H -#define _BACKWARD_DEQUE_H 1 - -#include "backward_warning.h" -#include "algobase.h" -#include "alloc.h" -#include - -using std::deque; - -#endif /* _BACKWARD_DEQUE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/fstream.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/fstream.h deleted file mode 100644 index c721ca5f3..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/fstream.h +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright (C) 2000, 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_FSTREAM_H -#define _BACKWARD_FSTREAM_H 1 - -#include "backward_warning.h" -#include - -using std::filebuf; -using std::ifstream; -using std::ofstream; -using std::fstream; -using std::streampos; - -#ifdef _GLIBCXX_USE_WCHAR_T -using std::wfilebuf; -using std::wifstream; -using std::wofstream; -using std::wfstream; -using std::wstreampos; -#endif - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/function.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/function.h deleted file mode 100644 index e7f29a636..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/function.h +++ /dev/null @@ -1,130 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_FUNCTION_H -#define _BACKWARD_FUNCTION_H 1 - -#include "backward_warning.h" -#include -#include -#include -#include - -// Names from stl_function.h -using std::unary_function; -using std::binary_function; -using std::plus; -using std::minus; -using std::multiplies; -using std::divides; -using std::modulus; -using std::negate; -using std::equal_to; -using std::not_equal_to; -using std::greater; -using std::less; -using std::greater_equal; -using std::less_equal; -using std::logical_and; -using std::logical_or; -using std::logical_not; -using std::unary_negate; -using std::binary_negate; -using std::not1; -using std::not2; -using std::binder1st; -using std::binder2nd; -using std::bind1st; -using std::bind2nd; -using std::pointer_to_unary_function; -using std::pointer_to_binary_function; -using std::ptr_fun; -using std::mem_fun_t; -using std::const_mem_fun_t; -using std::mem_fun_ref_t; -using std::const_mem_fun_ref_t; -using std::mem_fun1_t; -using std::const_mem_fun1_t; -using std::mem_fun1_ref_t; -using std::const_mem_fun1_ref_t; -using std::mem_fun; -using std::mem_fun_ref; - -// Names from ext/functional -using __gnu_cxx::identity_element; -using __gnu_cxx::unary_compose; -using __gnu_cxx::binary_compose; -using __gnu_cxx::compose1; -using __gnu_cxx::compose2; -using __gnu_cxx::identity; -using __gnu_cxx::select1st; -using __gnu_cxx::select2nd; -using __gnu_cxx::project1st; -using __gnu_cxx::project2nd; -using __gnu_cxx::constant_void_fun; -using __gnu_cxx::constant_unary_fun; -using __gnu_cxx::constant_binary_fun; -using __gnu_cxx::constant0; -using __gnu_cxx::constant1; -using __gnu_cxx::constant2; -using __gnu_cxx::subtractive_rng; -using __gnu_cxx::mem_fun1; -using __gnu_cxx::mem_fun1_ref; - -#endif /* _BACKWARD_FUNCTION_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_map.h deleted file mode 100644 index cbeed9947..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_map.h +++ /dev/null @@ -1,72 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - * - */ - -#ifndef _BACKWARD_HASH_MAP_H -#define _BACKWARD_HASH_MAP_H 1 - -#include "backward_warning.h" -#include "algobase.h" -#include - -using __gnu_cxx::hash; -using __gnu_cxx::hashtable; -using __gnu_cxx::hash_map; -using __gnu_cxx::hash_multimap; - -#endif /* _BACKWARD_HASH_MAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_set.h deleted file mode 100644 index c2c6e393e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hash_set.h +++ /dev/null @@ -1,69 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - * - */ - -#ifndef _BACKWARD_HASH_SET_H -#define _BACKWARD_HASH_SET_H 1 - -#include "backward_warning.h" -#include "algobase.h" -#include - -using __gnu_cxx::hash; -using __gnu_cxx::hashtable; -using __gnu_cxx::hash_set; -using __gnu_cxx::hash_multiset; - -#endif /* _BACKWARD_HASH_SET_H */ - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hashtable.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hashtable.h deleted file mode 100644 index 72fd281ba..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/hashtable.h +++ /dev/null @@ -1,76 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _BACKWARD_HASHTABLE_H -#define _BACKWARD_HASHTABLE_H 1 - -#include "backward_warning.h" -#include -#include "algo.h" -#include "alloc.h" -#include "vector.h" - -using __gnu_cxx::hash; -using __gnu_cxx::hashtable; - -#endif /* _BACKWARD_HASHTABLE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/heap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/heap.h deleted file mode 100644 index 6e02c355b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/heap.h +++ /dev/null @@ -1,71 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_HEAP_H -#define _BACKWARD_HEAP_H 1 - -#include "backward_warning.h" -#include -#include - -using std::push_heap; -using std::pop_heap; -using std::make_heap; -using std::sort_heap; - -#endif /* _BACKWARD_HEAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iomanip.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iomanip.h deleted file mode 100644 index aeb7b1f6c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iomanip.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (C) 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_IOMANIP_H -#define _BACKWARD_IOMANIP_H 1 - -#include "backward_warning.h" -#include "iostream.h" -#include - -// These are from as per [27.4]. -using std::boolalpha; -using std::noboolalpha; -using std::showbase; -using std::noshowbase; -using std::showpoint; -using std::noshowpoint; -using std::showpos; -using std::noshowpos; -using std::skipws; -using std::noskipws; -using std::uppercase; -using std::nouppercase; -using std::internal; -using std::left; -using std::right; -using std::dec; -using std::hex; -using std::oct; -using std::fixed; -using std::scientific; - -// These are from as per [27.6]. Manipulators from -// and (e.g., endl) are made available via . -using std::resetiosflags; -using std::setiosflags; -using std::setbase; -using std::setfill; -using std::setprecision; -using std::setw; - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iostream.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iostream.h deleted file mode 100644 index e22d11311..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iostream.h +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (C) 1997-1999, 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_IOSTREAM_H -#define _BACKWARD_IOSTREAM_H 1 - -#include "backward_warning.h" -#include - -using std::iostream; -using std::ostream; -using std::istream; -using std::ios; -using std::streambuf; - -using std::cout; -using std::cin; -using std::cerr; -using std::clog; -#ifdef _GLIBCXX_USE_WCHAR_T -using std::wcout; -using std::wcin; -using std::wcerr; -using std::wclog; -#endif - -using std::ws; -using std::endl; -using std::ends; -using std::flush; - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/istream.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/istream.h deleted file mode 100644 index 7db8f41a7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/istream.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (C) 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_ISTREAM_H -#define _BACKWARD_ISTREAM_H 1 - -#include "backward_warning.h" -#include "iostream.h" - -#endif - -// Local Variables: -// mode:C++ -// End: - - - - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iterator.h deleted file mode 100644 index 815bd1510..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/iterator.h +++ /dev/null @@ -1,191 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_ITERATOR_H -#define _BACKWARD_ITERATOR_H 1 - -#include "backward_warning.h" -#include "function.h" -#include -#include "iostream.h" -#include - -#include -#include - -#include // For 3-parameter distance extension - -// Names from stl_iterator.h -using std::input_iterator_tag; -using std::output_iterator_tag; -using std::forward_iterator_tag; -using std::bidirectional_iterator_tag; -using std::random_access_iterator_tag; - -#if 0 -using std::iterator; -#endif - -// The base classes input_iterator, output_iterator, forward_iterator, -// bidirectional_iterator, and random_access_iterator are not part of -// the C++ standard. (They have been replaced by struct iterator.) -// They are included for backward compatibility with the HP STL. -template - struct input_iterator { - typedef input_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Tp* pointer; - typedef _Tp& reference; - }; - -struct output_iterator { - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; -}; - -template - struct forward_iterator { - typedef forward_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Tp* pointer; - typedef _Tp& reference; - }; - -template - struct bidirectional_iterator { - typedef bidirectional_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Tp* pointer; - typedef _Tp& reference; - }; - -template - struct random_access_iterator { - typedef random_access_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Tp* pointer; - typedef _Tp& reference; - }; - -using std::iterator_traits; - -template - inline typename iterator_traits<_Iter>::iterator_category - iterator_category(const _Iter& __i) - { return __iterator_category(__i); } - -template - inline typename iterator_traits<_Iter>::difference_type* - distance_type(const _Iter&) - { return static_cast::difference_type*>(0); } - -template - inline typename iterator_traits<_Iter>::value_type* - value_type(const _Iter& __i) - { return static_cast::value_type*>(0); } - -using std::distance; -using __gnu_cxx::distance; // 3-parameter extension -using std::advance; - -using std::insert_iterator; -using std::front_insert_iterator; -using std::back_insert_iterator; -using std::inserter; -using std::front_inserter; -using std::back_inserter; - -using std::reverse_iterator; - -using std::istream_iterator; -using std::ostream_iterator; - -// Names from stl_construct.h -template - inline void - construct(_T1* __p, const _T2& __value) - { std::_Construct(__p, __value); } - -template - inline void - construct(_T1* __p) - { std::_Construct(__p); } - -template - inline void - destroy(_Tp* __pointer) - { std::_Destroy(__pointer); } - -template - inline void - destroy(_ForwardIterator __first, _ForwardIterator __last) - { std::_Destroy(__first, __last); } - - -// Names from stl_raw_storage_iter.h -using std::raw_storage_iterator; - -#endif /* _BACKWARD_ITERATOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/list.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/list.h deleted file mode 100644 index f8f85e121..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/list.h +++ /dev/null @@ -1,70 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_LIST_H -#define _BACKWARD_LIST_H 1 - -#include "backward_warning.h" -#include "algobase.h" -#include "alloc.h" -#include - -using std::list; - -#endif /* _BACKWARD_LIST_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/map.h deleted file mode 100644 index 0b5051dce..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/map.h +++ /dev/null @@ -1,69 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_MAP_H -#define _BACKWARD_MAP_H 1 - -#include "backward_warning.h" -#include "tree.h" -#include - -using std::map; - -#endif /* _BACKWARD_MAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multimap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multimap.h deleted file mode 100644 index 534d1c9e5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multimap.h +++ /dev/null @@ -1,69 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_MULTIMAP_H -#define _BACKWARD_MULTIMAP_H 1 - -#include "backward_warning.h" -#include "tree.h" -#include - -using std::multimap; - -#endif /* _BACKWARD_MULTIMAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multiset.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multiset.h deleted file mode 100644 index 47af8153b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/multiset.h +++ /dev/null @@ -1,69 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_MULTISET_H -#define _BACKWARD_MULTISET_H 1 - -#include "backward_warning.h" -#include "tree.h" -#include - -using std::multiset; - -#endif /* _BACKWARD_MULTISET_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/new.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/new.h deleted file mode 100644 index 9cfbab27f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/new.h +++ /dev/null @@ -1,42 +0,0 @@ -// -*- C++ -*- forwarding header. -// Copyright (C) 2000 Free Software Foundation - -// This file is part of GCC. -// -// GCC is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2, or (at your option) -// any later version. -// -// GCC is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with GCC; see the file COPYING. If not, write to -// the Free Software Foundation, 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. - -#ifndef _BACKWARD_NEW_H -#define _BACKWARD_NEW_H 1 - -#include "backward_warning.h" -#include - -using std::bad_alloc; -using std::nothrow_t; -using std::nothrow; -using std::new_handler; -using std::set_new_handler; - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/ostream.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/ostream.h deleted file mode 100644 index f30ebe4dd..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/ostream.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_OSTREAM_H -#define _BACKWARD_OSTREAM_H 1 - -#include "backward_warning.h" -#include "iostream.h" - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/pair.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/pair.h deleted file mode 100644 index fa89efe05..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/pair.h +++ /dev/null @@ -1,70 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_PAIR_H -#define _BACKWARD_PAIR_H 1 - -#include "backward_warning.h" -#include -#include - -using std::pair; -using std::make_pair; - -#endif /* _BACKWARD_PAIR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/queue.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/queue.h deleted file mode 100644 index 1da475c03..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/queue.h +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_QUEUE_H -#define _BACKWARD_QUEUE_H 1 - -#include "backward_warning.h" -#include - -using std::queue; -using std::priority_queue; - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/rope.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/rope.h deleted file mode 100644 index 6745c487c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/rope.h +++ /dev/null @@ -1,60 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - */ - -#ifndef _BACKWARD_ROPE_H -#define _BACKWARD_ROPE_H 1 - -#include "backward_warning.h" -#include "hashtable.h" -#include - -using __gnu_cxx::char_producer; -using __gnu_cxx::sequence_buffer; -using __gnu_cxx::rope; -using __gnu_cxx::crope; -using __gnu_cxx::wrope; - -#endif /* _BACKWARD_ROPE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/set.h deleted file mode 100644 index 004349425..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/set.h +++ /dev/null @@ -1,69 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_SET_H -#define _BACKWARD_SET_H 1 - -#include "backward_warning.h" -#include "tree.h" -#include - -using std::set; - -#endif /* _BACKWARD_SET_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/slist.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/slist.h deleted file mode 100644 index 3764a77b8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/slist.h +++ /dev/null @@ -1,56 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - * - */ - -#ifndef _BACKWARD_SLIST_H -#define _BACKWARD_SLIST_H 1 - -#include "backward_warning.h" -#include - -using __gnu_cxx::slist; - -#endif /* _BACKWARD_SLIST_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stack.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stack.h deleted file mode 100644 index a4c586aec..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stack.h +++ /dev/null @@ -1,72 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_STACK_H -#define _BACKWARD_STACK_H 1 - -#include "backward_warning.h" -#include "vector.h" -#include "deque.h" -#include "heap.h" -#include "queue.h" -#include - -using std::stack; - -#endif /* _BACKWARD_STACK_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stream.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stream.h deleted file mode 100644 index ab27241fb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/stream.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_STREAM_H -#define _BACKWARD_STREAM_H 1 - -#include "backward_warning.h" -#include "iostream.h" - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/streambuf.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/streambuf.h deleted file mode 100644 index 86730ecbe..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/streambuf.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (C) 2000 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _BACKWARD_STREAMBUF_H -#define _BACKWARD_STREAMBUF_H 1 - -#include "backward_warning.h" -#include - -using std::streambuf; - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/strstream b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/strstream deleted file mode 100644 index a8d94f400..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/strstream +++ /dev/null @@ -1,179 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. You should use the -// header instead. - -#ifndef __SGI_STL_STRSTREAM -#define __SGI_STL_STRSTREAM - -#include "backward_warning.h" -#include -#include -#include -#include -#include - -namespace std -{ - // Class strstreambuf, a streambuf class that manages an array of char. - // Note that this class is not a template. - class strstreambuf : public basic_streambuf > - { - public: - // Types. - typedef char_traits _Traits; - typedef basic_streambuf _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); - strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0); - strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0); - - strstreambuf(const char* __get, streamsize __n); - strstreambuf(const signed char* __get, streamsize __n); - strstreambuf(const unsigned char* __get, streamsize __n); - - virtual ~strstreambuf(); - - public: - void freeze(bool = true); - char* str(); - int pcount() const; - - 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); - - 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 - { - public: - explicit istrstream(char*); - explicit istrstream(const char*); - istrstream(char* , streamsize); - istrstream(const char*, streamsize); - virtual ~istrstream(); - - strstreambuf* rdbuf() const; - char* str(); - - private: - strstreambuf _M_buf; - }; - - // Class ostrstream - class ostrstream : public basic_ostream - { - public: - ostrstream(); - ostrstream(char*, int, ios_base::openmode = ios_base::out); - virtual ~ostrstream(); - - strstreambuf* rdbuf() const; - void freeze(bool = true); - char* str(); - int pcount() const; - - private: - strstreambuf _M_buf; - }; - - // Class strstream - class strstream : public basic_iostream - { - public: - typedef char char_type; - typedef char_traits::int_type int_type; - typedef char_traits::pos_type pos_type; - typedef char_traits::off_type off_type; - - strstream(); - strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out); - virtual ~strstream(); - - strstreambuf* rdbuf() const; - void freeze(bool = true); - int pcount() const; - char* str(); - - private: - strstreambuf _M_buf; - }; -} // namespace std -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tempbuf.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tempbuf.h deleted file mode 100644 index c42db0365..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tempbuf.h +++ /dev/null @@ -1,78 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_TEMPBUF_H -#define _BACKWARD_TEMPBUF_H 1 - -#include "backward_warning.h" -#include "pair.h" -#include "iterator.h" -#include -#include -#include -#include -#include -#include -#include - -using std::get_temporary_buffer; -using std::return_temporary_buffer; -using __gnu_cxx::temporary_buffer; - -#endif /* _BACKWARD_TEMPBUF_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tree.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tree.h deleted file mode 100644 index 25e49561e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/tree.h +++ /dev/null @@ -1,55 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - * - */ - -#ifndef _BACKWARD_TREE -#define _BACKWARD_TREE 1 - -#include "backward_warning.h" -#include - -using __gnu_cxx::rb_tree; - -#endif -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/vector.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/vector.h deleted file mode 100644 index f4ab069d2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/backward/vector.h +++ /dev/null @@ -1,70 +0,0 @@ -// Backward-compat support -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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. - */ - -#ifndef _BACKWARD_VECTOR_H -#define _BACKWARD_VECTOR_H 1 - -#include "backward_warning.h" -#include "algobase.h" -#include "alloc.h" -#include - -using std::vector; - -#endif /* _BACKWARD_VECTOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/allocator.h deleted file mode 100644 index 5bba2a95e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/allocator.h +++ /dev/null @@ -1,132 +0,0 @@ -// Allocators -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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 allocator.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _ALLOCATOR_H -#define _ALLOCATOR_H 1 - -// Define the base class to std::allocator. -#include - -namespace std -{ - template - class allocator; - - /// allocator specialization. - template<> - class allocator - { - public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; - - template - struct rebind - { typedef allocator<_Tp1> other; }; - }; - - /** - * @brief The "standard" allocator, as per [20.4]. - * - * Further details: - * http://gcc.gnu.org/onlinedocs/libstdc++/20_util/allocator.html - */ - template - 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 - struct rebind - { typedef allocator<_Tp1> other; }; - - allocator() throw() { } - - allocator(const allocator& __a) throw() - : __glibcxx_base_allocator<_Tp>(__a) { } - - template - allocator(const allocator<_Tp1>&) throw() { } - - ~allocator() throw() { } - - // Inherit everything else. - }; - - template - inline bool - operator==(const allocator<_T1>&, const allocator<_T2>&) - { return true; } - - template - inline bool - operator!=(const allocator<_T1>&, const allocator<_T2>&) - { return false; } - - // 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 class allocator; - extern template class allocator; -#endif - - // Undefine. -#undef __glibcxx_base_allocator -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/atomicity.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/atomicity.h deleted file mode 100644 index aa73736ab..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/atomicity.h +++ /dev/null @@ -1,60 +0,0 @@ -// Low-level functions for atomic operations -*- C++ -*- - -// Copyright (C) 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 atomicity.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _GLIBCXX_ATOMICITY_H -#define _GLIBCXX_ATOMICITY_H 1 - -#include - -namespace __gnu_cxx -{ - _Atomic_word - __attribute__ ((__unused__)) - __exchange_and_add(volatile _Atomic_word* __mem, int __val); - - void - __attribute__ ((__unused__)) - __atomic_add(volatile _Atomic_word* __mem, int __val); -} // namespace __gnu_cxx - -/* 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.1.0/include/bits/basic_ios.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_ios.h deleted file mode 100644 index 90886712b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_ios.h +++ /dev/null @@ -1,467 +0,0 @@ -// Iostreams base classes -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 basic_ios.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _BASIC_IOS_H -#define _BASIC_IOS_H 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -namespace std -{ - // 27.4.5 Template class basic_ios - /** - * @brief Virtual base class for all stream classes. - * - * Most of the member functions called dispatched on stream objects - * (e.g., @c std::cout.foo(bar);) are consolidated in this class. - */ - template - 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; - //@} - - //@{ - /** - * @if maint - * These are non-standard types. - * @endif - */ - 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, 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 - * "if (!a_stream) ..." and "while (a_stream) ..." - */ - operator void*() const - { return this->fail() ? 0 : const_cast(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 flage 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 - * #include - * #include - * - * 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 - * @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 Retreives the "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 "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 Qfill(); - _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++/22_locale/howto.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 >(getloc()).narrow(c,dfault) - * @endcode - * - * Additional l10n notes are at - * http://gcc.gnu.org/onlinedocs/libstdc++/22_locale/howto.html - */ - char - narrow(char_type __c, char __dfault) const; - - /** - * @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 >(getloc()).widen(c) - * @endcode - * - * Additional l10n notes are at - * http://gcc.gnu.org/onlinedocs/libstdc++/22_locale/howto.html - */ - char_type - widen(char __c) const; - - 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); - }; -} // namespace std - -#ifndef _GLIBCXX_EXPORT_TEMPLATE -#include -#endif - -#endif /* _BASIC_IOS_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_ios.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_ios.tcc deleted file mode 100644 index b536a0dae..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_ios.tcc +++ /dev/null @@ -1,200 +0,0 @@ -// basic_ios member functions -*- C++ -*- - -// Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 basic_ios.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _BASIC_IOS_TCC -#define _BASIC_IOS_TCC 1 - -#pragma GCC system_header - -namespace std -{ - template - 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 - 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 - 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; - } - - template - char - basic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const - { return __check_facet(_M_ctype).narrow(__c, __dfault); } - - template - _CharT - basic_ios<_CharT, _Traits>::widen(char __c) const - { return __check_facet(_M_ctype).widen(__c); } - - // Locales: - template - 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 - 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 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 facet. - _M_fill = _CharT(); - _M_fill_init = false; - - _M_tie = 0; - _M_exception = goodbit; - _M_streambuf = __sb; - _M_streambuf_state = __sb ? goodbit : badbit; - } - - template - 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. - // NB: This syntax is a GNU extension. -#if _GLIBCXX_EXTERN_TEMPLATE - extern template class basic_ios; - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class basic_ios; -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.h deleted file mode 100644 index 33a182e9e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.h +++ /dev/null @@ -1,2445 +0,0 @@ -// Components for manipulating sequences of characters -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 21 Strings library -// - -/** @file basic_string.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _BASIC_STRING_H -#define _BASIC_STRING_H 1 - -#pragma GCC system_header - -#include -#include - -namespace std -{ - /** - * @class basic_string basic_string.h - * @brief Managing sequences of characters and character-like objects. - * - * @ingroup Containers - * @ingroup Sequences - * - * Meets the requirements of a container, a - * reversible container, and a - * sequence. Of the - * optional sequence requirements, only - * @c push_back, @c at, and array access are supported. - * - * @doctodo - * - * - * @if maint - * Documentation? What's that? - * Nathan Myers . - * - * A string looks like this: - * - * @code - * [_Rep] - * _M_length - * [basic_string] _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 "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 "empty string" _Rep object already "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. - * @endif - */ - // 21.3 Template class basic_string - template - 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 iterator; - typedef __gnu_cxx::__normal_iterator - const_iterator; - typedef std::reverse_iterator const_reverse_iterator; - typedef std::reverse_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::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() - { - void* __p = reinterpret_cast(&_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) - { - 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 - if (__gnu_cxx::__exchange_and_add(&this->_M_refcount, -1) <= 0) - _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(&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(-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()(__s, _M_data()) - || less()(_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 - 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); } - - 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. - */ - inline - basic_string(); - - /** - * @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()); - - /** - * @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 - 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; - } - - // 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()); } - - 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()); } - - /** - * 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 *this == "". - */ - 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]; - } - - /** - * @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; - } - - /** - * @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); - - /** - * @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 - 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); - - /** - * @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 - basic_string& - assign(_InputIterator __first, _InputIterator __last) - { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } - - /** - * @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 - void - insert(iterator __p, _InputIterator __beg, _InputIterator __end) - { this->replace(__p, __p, __beg, __end); } - - /** - * @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 this->_M_ibegin() + __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 _M_ibegin() + __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(); - _M_mutate(__pos, __last - __first, size_type(0)); - _M_rep()->_M_set_leaked(); - return _M_ibegin() + __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. - */ - 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 first @a n 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 - 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); - } - - private: - template - 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 - 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 - 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()); - } - - template - static _CharT* - _S_construct_aux(_InIterator __beg, _InIterator __end, - const _Alloc& __a, __true_type) - { return _S_construct(static_cast(__beg), - static_cast(__end), __a); } - - template - 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 - 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 - 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 0). - * @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 0). - * @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 (default 0). - * @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 (default end). - * @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 0). - * @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 (default 0). - * @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 from (default 0). - * @return Index of first 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 from (default 0). - * @param n Number of characters from s to consider. - * @return Index of first 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 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 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 from (default 0). - * @return Index of first 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 = __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; - }; - - template - inline basic_string<_CharT, _Traits, _Alloc>:: - 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 - - // 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 - 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 - 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 - 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 - 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 - 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; - } - - // 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 - inline bool - operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, - const basic_string<_CharT, _Traits, _Alloc>& __rhs) - { return __lhs.compare(__rhs) == 0; } - - /** - * @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 - 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 - 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 - inline bool - operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, - const basic_string<_CharT, _Traits, _Alloc>& __rhs) - { return __rhs.compare(__lhs) != 0; } - - /** - * @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 - inline bool - operator!=(const _CharT* __lhs, - const basic_string<_CharT, _Traits, _Alloc>& __rhs) - { return __rhs.compare(__lhs) != 0; } - - /** - * @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 - inline bool - operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs, - const _CharT* __rhs) - { return __lhs.compare(__rhs) != 0; } - - // 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT, _Traits, _Alloc>& __str); - - template<> - basic_istream& - operator>>(basic_istream& __is, basic_string& __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 - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, - const basic_string<_CharT, _Traits, _Alloc>& __str); - - /** - * @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 - 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 - inline basic_istream<_CharT, _Traits>& - getline(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT, _Traits, _Alloc>& __str); - - template<> - basic_istream& - getline(basic_istream& __in, basic_string& __str, - char __delim); - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - basic_istream& - getline(basic_istream& __in, basic_string& __str, - wchar_t __delim); -#endif -} // namespace std - -#endif /* _BASIC_STRING_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.tcc deleted file mode 100644 index f8f9f3ef2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/basic_string.tcc +++ /dev/null @@ -1,998 +0,0 @@ -// Components for manipulating sequences of characters -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 basic_string.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -// -// 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 - -namespace std -{ - template - inline bool - __is_null_pointer(_Type* __ptr) - { return __ptr == 0; } - - template - inline bool - __is_null_pointer(_Type) - { return false; } - - template - 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 - const _CharT - basic_string<_CharT, _Traits, _Alloc>:: - _Rep::_S_terminal = _CharT(); - - template - 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 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 - template - _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 - template - _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 (__builtin_expect(__is_null_pointer(__beg) && __beg != __end, 0)) - __throw_logic_error(__N("basic_string::_S_construct NULL not valid")); - - const size_type __dnew = static_cast(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 - _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 - 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 - basic_string<_CharT, _Traits, _Alloc>:: - basic_string(const _Alloc& __a) - : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) - { } - - template - 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 - 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 - 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 - 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 - 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 - template - basic_string<_CharT, _Traits, _Alloc>:: - basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a) - : _M_dataplus(_S_construct(__beg, __end, __a), __a) - { } - - template - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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(this), __size); - } - - template - 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 - 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 - 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 - 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 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; - return __p; - } - - template - _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 - 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 - template - 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 - 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 - 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 - 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 - 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 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 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); - size_type __ret = npos; - const size_type __size = this->size(); - if (__pos + __n <= __size) - { - const _CharT* __data = _M_data(); - const _CharT* __p = std::search(__data + __pos, __data + __size, - __s, __s + __n, traits_type::eq); - if (__p != __data + __size || __n == 0) - __ret = __p - __data; - } - return __ret; - } - - template - 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 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 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 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 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 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 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 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 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 - 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 = __n - __osize; - return __r; - } - - template - 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 = __n1 - __n2; - return __r; - } - - template - 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 = __size - __osize; - return __r; - } - - template - 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 = __n1 - __osize; - return __r; - } - - template - 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 = __n1 - __n2; - return __r; - } - - // 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 class basic_string; - extern template - basic_istream& - operator>>(basic_istream&, string&); - extern template - basic_ostream& - operator<<(basic_ostream&, const string&); - extern template - basic_istream& - getline(basic_istream&, string&, char); - extern template - basic_istream& - getline(basic_istream&, string&); - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class basic_string; - extern template - basic_istream& - operator>>(basic_istream&, wstring&); - extern template - basic_ostream& - operator<<(basic_ostream&, const wstring&); - extern template - basic_istream& - getline(basic_istream&, wstring&, wchar_t); - extern template - basic_istream& - getline(basic_istream&, wstring&); -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/boost_concept_check.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/boost_concept_check.h deleted file mode 100644 index 24160ed4e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/boost_concept_check.h +++ /dev/null @@ -1,932 +0,0 @@ -// Copyright (C) 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// (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. -// - -// GCC Note: based on version 1.12.0 of the Boost library. - -/** @file boost_concept_check.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _BOOST_CONCEPT_CHECK_H -#define _BOOST_CONCEPT_CHECK_H 1 - -#pragma GCC system_header - -#include // for ptrdiff_t, used next -#include // for traits and tags -#include // for pair<> - -namespace __gnu_cxx -{ - -#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 -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 -struct _Aux_require_same { }; - -template -struct _Aux_require_same<_Tp,_Tp> { typedef _Tp _Type; }; - - template - struct _SameTypeConcept - { - void __constraints() { - typedef typename _Aux_require_same<_Tp1, _Tp2>::_Type _Required; - } - }; - - template - struct _IntegerConcept { - void __constraints() { - __error_type_must_be_an_integer_type(); - } - }; - template <> struct _IntegerConcept { void __constraints() {} }; - template <> struct _IntegerConcept { void __constraints(){} }; - template <> struct _IntegerConcept { void __constraints() {} }; - template <> struct _IntegerConcept { void __constraints() {} }; - template <> struct _IntegerConcept { void __constraints() {} }; - template <> struct _IntegerConcept { void __constraints() {} }; - template <> struct _IntegerConcept { void __constraints() {} }; - template <> struct _IntegerConcept - { void __constraints() {} }; - - template - struct _SignedIntegerConcept { - void __constraints() { - __error_type_must_be_a_signed_integer_type(); - } - }; - template <> struct _SignedIntegerConcept { void __constraints() {} }; - template <> struct _SignedIntegerConcept { void __constraints() {} }; - template <> struct _SignedIntegerConcept { void __constraints() {} }; - template <> struct _SignedIntegerConcept { void __constraints(){}}; - - template - struct _UnsignedIntegerConcept { - void __constraints() { - __error_type_must_be_an_unsigned_integer_type(); - } - }; - template <> struct _UnsignedIntegerConcept - { void __constraints() {} }; - template <> struct _UnsignedIntegerConcept - { void __constraints() {} }; - template <> struct _UnsignedIntegerConcept - { void __constraints() {} }; - template <> struct _UnsignedIntegerConcept - { void __constraints() {} }; - - //=========================================================================== - // Basic Concepts - - template - struct _DefaultConstructibleConcept - { - void __constraints() { - _Tp __a _IsUnused; // require default constructor - } - }; - - template - 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 - 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 - 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 - 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 - void __aux_require_boolean_expr(const _Tp& __t) { - bool __x _IsUnused = __t; - } - -// FIXME - template - struct _EqualityComparableConcept - { - void __constraints() { - __aux_require_boolean_expr(__a == __b); - } - _Tp __a, __b; - }; - - template - struct _LessThanComparableConcept - { - void __constraints() { - __aux_require_boolean_expr(__a < __b); - } - _Tp __a, __b; - }; - - // This is equivalent to SGI STL's LessThanComparable. - template - 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 \ - 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 \ - 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 - struct _GeneratorConcept - { - void __constraints() { - const _Return& __r _IsUnused = __f();// require operator() member function - } - _Func __f; - }; - - - template - struct _GeneratorConcept<_Func,void> - { - void __constraints() { - __f(); // require operator() member function - } - _Func __f; - }; - - template - struct _UnaryFunctionConcept - { - void __constraints() { - __r = __f(__arg); // require operator() - } - _Func __f; - _Arg __arg; - _Return __r; - }; - - template - struct _UnaryFunctionConcept<_Func, void, _Arg> { - void __constraints() { - __f(__arg); // require operator() - } - _Func __f; - _Arg __arg; - }; - - template - struct _BinaryFunctionConcept - { - void __constraints() { - __r = __f(__first, __second); // require operator() - } - _Func __f; - _First __first; - _Second __second; - _Return __r; - }; - - template - struct _BinaryFunctionConcept<_Func, void, _First, _Second> - { - void __constraints() { - __f(__first, __second); // require operator() - } - _Func __f; - _First __first; - _Second __second; - }; - - template - struct _UnaryPredicateConcept - { - void __constraints() { - __aux_require_boolean_expr(__f(__arg)); // require op() returning bool - } - _Func __f; - _Arg __arg; - }; - - template - 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 - 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 - 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 - struct _Mutable_TrivialIteratorConcept - { - void __constraints() { - __function_requires< _TrivialIteratorConcept<_Tp> >(); - *__i = *__j; // require dereference and assignment - } - _Tp __i, __j; - }; - - template - 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 - 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 - 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 - struct _Mutable_ForwardIteratorConcept - { - void __constraints() { - __function_requires< _ForwardIteratorConcept<_Tp> >(); - *__i++ = *__i; // require postincrement and assignment - } - _Tp __i; - }; - - template - 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 - struct _Mutable_BidirectionalIteratorConcept - { - void __constraints() { - __function_requires< _BidirectionalIteratorConcept<_Tp> >(); - __function_requires< _Mutable_ForwardIteratorConcept<_Tp> >(); - *__i-- = *__i; // require postdecrement and assignment - } - _Tp __i; - }; - - - template - 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 - 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 - 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 - 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 - struct _ForwardContainerConcept - { - void __constraints() { - __function_requires< _ContainerConcept<_ForwardContainer> >(); - typedef typename _ForwardContainer::const_iterator _Const_iterator; - __function_requires< _ForwardIteratorConcept<_Const_iterator> >(); - } - }; - - template - 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 - 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 - 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 - 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 - 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 - 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 >(); - __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 - struct _FrontInsertionSequenceConcept - { - void __constraints() { - __function_requires< _SequenceConcept<_FrontInsertionSequence> >(); - - __c.push_front(__t); - __c.pop_front(); - } - _FrontInsertionSequence __c; - typename _FrontInsertionSequence::value_type __t; - }; - - template - 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; - }; - - template - struct _AssociativeContainerConcept - { - void __constraints() { - __function_requires< _ForwardContainerConcept<_AssociativeContainer> >(); - __function_requires< - _DefaultConstructibleConcept<_AssociativeContainer> >(); - - __i = __c.find(__k); - __r = __c.equal_range(__k); - __c.erase(__k); - __c.erase(__i); - __c.erase(__r.first, __r.second); - __const_constraints(__c); - } - void __const_constraints(const _AssociativeContainer& __c) { - __ci = __c.find(__k); - __n = __c.count(__k); - __cr = __c.equal_range(__k); - } - typedef typename _AssociativeContainer::iterator _Iterator; - typedef typename _AssociativeContainer::const_iterator _Const_iterator; - - _AssociativeContainer __c; - _Iterator __i; - std::pair<_Iterator,_Iterator> __r; - _Const_iterator __ci; - std::pair<_Const_iterator,_Const_iterator> __cr; - typename _AssociativeContainer::key_type __k; - typename _AssociativeContainer::size_type __n; - }; - - template - struct _UniqueAssociativeContainerConcept - { - void __constraints() { - __function_requires< - _AssociativeContainerConcept<_UniqueAssociativeContainer> >(); - - _UniqueAssociativeContainer __c(__first, __last); - - __pos_flag = __c.insert(__t); - __c.insert(__first, __last); - } - std::pair __pos_flag; - typename _UniqueAssociativeContainer::value_type __t; - typename _UniqueAssociativeContainer::value_type *__first, *__last; - }; - - template - struct _MultipleAssociativeContainerConcept - { - void __constraints() { - __function_requires< - _AssociativeContainerConcept<_MultipleAssociativeContainer> >(); - - _MultipleAssociativeContainer __c(__first, __last); - - __pos = __c.insert(__t); - __c.insert(__first, __last); - - } - typename _MultipleAssociativeContainer::iterator __pos; - typename _MultipleAssociativeContainer::value_type __t; - typename _MultipleAssociativeContainer::value_type *__first, *__last; - }; - - template - struct _SimpleAssociativeContainerConcept - { - void __constraints() { - __function_requires< - _AssociativeContainerConcept<_SimpleAssociativeContainer> >(); - typedef typename _SimpleAssociativeContainer::key_type _Key_type; - typedef typename _SimpleAssociativeContainer::value_type _Value_type; - typedef typename _Aux_require_same<_Key_type, _Value_type>::_Type - _Required; - } - }; - - template - struct _PairAssociativeContainerConcept - { - void __constraints() { - __function_requires< - _AssociativeContainerConcept<_SimpleAssociativeContainer> >(); - typedef typename _SimpleAssociativeContainer::key_type _Key_type; - typedef typename _SimpleAssociativeContainer::value_type _Value_type; - typedef typename _SimpleAssociativeContainer::mapped_type _Mapped_type; - typedef std::pair _Required_value_type; - typedef typename _Aux_require_same<_Value_type, - _Required_value_type>::_Type _Required; - } - }; - - template - struct _SortedAssociativeContainerConcept - { - void __constraints() { - __function_requires< - _AssociativeContainerConcept<_SortedAssociativeContainer> >(); - __function_requires< - _ReversibleContainerConcept<_SortedAssociativeContainer> >(); - - _SortedAssociativeContainer - __c _IsUnused(__kc), - __c2 _IsUnused(__first, __last), - __c3 _IsUnused(__first, __last, __kc); - - __p = __c.upper_bound(__k); - __p = __c.lower_bound(__k); - __r = __c.equal_range(__k); - - __c.insert(__p, __t); - } - void __const_constraints(const _SortedAssociativeContainer& __c) { - __kc = __c.key_comp(); - __vc = __c.value_comp(); - - __cp = __c.upper_bound(__k); - __cp = __c.lower_bound(__k); - __cr = __c.equal_range(__k); - } - typename _SortedAssociativeContainer::key_compare __kc; - typename _SortedAssociativeContainer::value_compare __vc; - typename _SortedAssociativeContainer::value_type __t; - typename _SortedAssociativeContainer::key_type __k; - typedef typename _SortedAssociativeContainer::iterator _Iterator; - typedef typename _SortedAssociativeContainer::const_iterator - _Const_iterator; - - _Iterator __p; - _Const_iterator __cp; - std::pair<_Iterator,_Iterator> __r; - std::pair<_Const_iterator,_Const_iterator> __cr; - typename _SortedAssociativeContainer::value_type *__first, *__last; - }; - - // HashedAssociativeContainer - -} // namespace __gnu_cxx - -#undef _IsUnused - -#endif // _GLIBCXX_BOOST_CONCEPT_CHECK - - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/c++config b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/c++config deleted file mode 100644 index eb8dc798f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/c++config +++ /dev/null @@ -1,105 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _CXXCONFIG -#define _CXXCONFIG 1 - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// Debug mode support. Debug mode basic_string is not allowed to be -// associated with std, because of locale and exception link -// dependence. -namespace __gnu_debug_def { } - -namespace __gnu_debug -{ - using namespace __gnu_debug_def; -} - -#ifdef _GLIBCXX_DEBUG -# define _GLIBCXX_STD __gnu_norm -# define _GLIBCXX_EXTERN_TEMPLATE 0 -namespace __gnu_norm -{ - using namespace std; -} -namespace std -{ - using namespace __gnu_debug_def __attribute__ ((strong)); -} -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning debug mode without inlining may fail due to lack of weak symbols -# endif -#else -# define _GLIBCXX_STD std -#endif - -// Allow use of "export template." This is currently not a feature -// that g++ supports. -// #define _GLIBCXX_EXPORT_TEMPLATE 1 - -// Allow use of the GNU syntax extension, "extern template." This -// extension is fully documented in the g++ manual, but in a nutshell, -// 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. -#ifndef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE 1 -#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) - -// End of prewritten config; the discovered settings follow. diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/char_traits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/char_traits.h deleted file mode 100644 index 6b4c916b7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/char_traits.h +++ /dev/null @@ -1,366 +0,0 @@ -// Character Traits for use by standard string and iostream -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 21 Strings library -// - -/** @file char_traits.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _CHAR_TRAITS_H -#define _CHAR_TRAITS_H 1 - -#pragma GCC system_header - -#include // For memmove, memset, memchr -#include // For copy, lexicographical_compare, fill_n -#include // For streampos - -namespace __gnu_cxx -{ - /** - * @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 - 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 fundamentl types, but classes in - * namespace __gnu_cxx may be. - * - * See http://gcc.gnu.org/onlinedocs/libstdc++/21_strings/howto.html#5 - * for advice on how to make use of this class for "unusual" character - * types. Also, check out include/ext/pod_char_traits.h. - */ - template - 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 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, 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 char_type - to_char_type(const int_type& __c) - { return static_cast(__c); } - - static int_type - to_int_type(const char_type& __c) - { return static_cast(__c); } - - static bool - eq_int_type(const int_type& __c1, const int_type& __c2) - { return __c1 == __c2; } - - static int_type - eof() - { return static_cast(EOF); } - - static int_type - not_eof(const int_type& __c) - { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } - }; - - template - int - char_traits<_CharT>:: - compare(const char_type* __s1, const char_type* __s2, std::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; - } - - template - 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 - 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 char_traits<_CharT>::char_type* - char_traits<_CharT>:: - move(char_type* __s1, const char_type* __s2, std::size_t __n) - { - return static_cast<_CharT*>(std::memmove(__s1, __s2, - __n * sizeof(char_type))); - } - - template - typename char_traits<_CharT>::char_type* - char_traits<_CharT>:: - copy(char_type* __s1, const char_type* __s2, std::size_t __n) - { - std::copy(__s2, __s2 + __n, __s1); - return __s1; - } - - template - typename char_traits<_CharT>::char_type* - char_traits<_CharT>:: - assign(char_type* __s, std::size_t __n, char_type __a) - { - std::fill_n(__s, __n, __a); - return __s; - } -} - -namespace std -{ - // 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++/21_strings/howto.html#5 - * for advice on how to make use of this class for "unusual" character - * types. Also, check out include/ext/pod_char_traits.h. - */ - template - struct char_traits : public __gnu_cxx::char_traits<_CharT> - { }; - - - /// @brief 21.1.3.1 char_traits specializations - template<> - struct char_traits - { - 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 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) - { return memcmp(__s1, __s2, __n); } - - static size_t - length(const char_type* __s) - { return strlen(__s); } - - static const char_type* - find(const char_type* __s, size_t __n, const char_type& __a) - { return static_cast(memchr(__s, __a, __n)); } - - static char_type* - move(char_type* __s1, const char_type* __s2, size_t __n) - { return static_cast(memmove(__s1, __s2, __n)); } - - static char_type* - copy(char_type* __s1, const char_type* __s2, size_t __n) - { return static_cast(memcpy(__s1, __s2, __n)); } - - static char_type* - assign(char_type* __s, size_t __n, char_type __a) - { return static_cast(memset(__s, __a, __n)); } - - static char_type - to_char_type(const int_type& __c) - { return static_cast(__c); } - - // To keep both the byte 0xff and the eof symbol 0xffffffff - // from ending up as 0xffffffff. - static int_type - to_int_type(const char_type& __c) - { return static_cast(static_cast(__c)); } - - static bool - eq_int_type(const int_type& __c1, const int_type& __c2) - { return __c1 == __c2; } - - static int_type - eof() { return static_cast(EOF); } - - static int_type - not_eof(const int_type& __c) - { return (__c == eof()) ? 0 : __c; } - }; - - -#ifdef _GLIBCXX_USE_WCHAR_T - /// @brief 21.1.3.2 char_traits specializations - template<> - struct char_traits - { - 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 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) - { 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 char_type - to_char_type(const int_type& __c) { return char_type(__c); } - - static int_type - to_int_type(const char_type& __c) { return int_type(__c); } - - static bool - eq_int_type(const int_type& __c1, const int_type& __c2) - { return __c1 == __c2; } - - static int_type - eof() { return static_cast(WEOF); } - - static int_type - not_eof(const int_type& __c) - { return eq_int_type(__c, eof()) ? 0 : __c; } - }; -#endif //_GLIBCXX_USE_WCHAR_T - -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/codecvt.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/codecvt.h deleted file mode 100644 index 86602b219..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/codecvt.h +++ /dev/null @@ -1,470 +0,0 @@ -// Locale support (codecvt) -*- C++ -*- - -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 22.2.1.5 Template class codecvt -// - -// Written by Benjamin Kosnik - -/** @file bits/codecvt.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _CODECVT_H -#define _CODECVT_H 1 - -#pragma GCC system_header - - /// @brief 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 - 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 intialized 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 intialized 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 class codecvt [22.2.1.5]. - /// NB: Generic, mostly useless implementation. - template - 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 - locale::id codecvt<_InternT, _ExternT, _StateT>::id; - - /// @brief class codecvt specialization. - template<> - class codecvt - : public __codecvt_abstract_base - { - 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 - /// @brief class codecvt specialization. - template<> - class codecvt - : public __codecvt_abstract_base - { - 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 - - /// @brief class codecvt_byname [22.2.1.6]. - template - 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 (std::strcmp(__s, "C") != 0 && std::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() { } - }; - -#endif // _CODECVT_H diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/concept_check.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/concept_check.h deleted file mode 100644 index 98cb42d85..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/concept_check.h +++ /dev/null @@ -1,85 +0,0 @@ -// Concept-checking control -*- C++ -*- - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 concept_check.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _CONCEPT_CHECK_H -#define _CONCEPT_CHECK_H 1 - -#pragma GCC system_header - -#include - -// 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 - -// 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)" 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.1.0/include/bits/concurrence.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/concurrence.h deleted file mode 100644 index 5f1b682cb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/concurrence.h +++ /dev/null @@ -1,100 +0,0 @@ -// Support for concurrent programing -*- C++ -*- - -// Copyright (C) 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 concurrence.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _CONCURRENCE_H -#define _CONCURRENCE_H 1 - -// GCC's thread abstraction layer -#include "bits/gthr.h" - -#if __GTHREADS - -# ifdef __GTHREAD_MUTEX_INIT -# define __glibcxx_mutex_type __gthread_mutex_t -# define __glibcxx_mutex_define_initialized(NAME) \ -__gthread_mutex_t NAME = __GTHREAD_MUTEX_INIT -# define __glibcxx_mutex_lock(NAME) \ -__gthread_mutex_lock(&NAME) -# else -// Implies __GTHREAD_MUTEX_INIT_FUNCTION -struct __glibcxx_mutex : public __gthread_mutex_t -{ - __glibcxx_mutex() { __GTHREAD_MUTEX_INIT_FUNCTION(this); } -}; - -# define __glibcxx_mutex_type __glibcxx_mutex -# define __glibcxx_mutex_define_initialized(NAME) \ -__glibcxx_mutex NAME -# define __glibcxx_mutex_lock(NAME) \ -__gthread_mutex_lock(&NAME) -# endif - -# define __glibcxx_mutex_unlock(NAME) __gthread_mutex_unlock(&NAME) - -#else - -# define __glibcxx_mutex_type __gthread_mutex_t -# define __glibcxx_mutex_define_initialized(NAME) __gthread_mutex_t NAME -# define __glibcxx_mutex_lock(NAME) -# define __glibcxx_mutex_unlock(NAME) - -#endif - -namespace __gnu_cxx -{ - typedef __glibcxx_mutex_type mutex_type; - - /// @brief Scoped lock idiom. - // Acquire the mutex here with a constructor call, then release with - // the destructor call in accordance with RAII style. - class lock - { - // Externally defined and initialized. - mutex_type& device; - - public: - explicit lock(mutex_type& name) : device(name) - { __glibcxx_mutex_lock(device); } - - ~lock() throw() - { __glibcxx_mutex_unlock(device); } - - private: - lock(const lock&); - lock& operator=(const lock&); - }; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/cpp_type_traits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/cpp_type_traits.h deleted file mode 100644 index 5ac9c98e7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/cpp_type_traits.h +++ /dev/null @@ -1,389 +0,0 @@ -// The -*- C++ -*- type traits classes for internal use in libstdc++ - -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file cpp_type_traits.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _CPP_TYPE_TRAITS_H -#define _CPP_TYPE_TRAITS_H 1 - -#pragma GCC system_header - -#include - -// -// 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 . 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 has been -// removed. -// - -// NB: g++ can not compile these if declared within the class -// __is_pod itself. -namespace __gnu_internal -{ - typedef char __one; - typedef char __two[2]; - - template - __one __test_type(int _Tp::*); - template - __two& __test_type(...); -} // namespace __gnu_internal - -// Forward declaration hack, should really include this from somewhere. -namespace __gnu_cxx -{ - template - class __normal_iterator; -} // namespace __gnu_cxx - -struct __true_type { }; -struct __false_type { }; - -namespace std -{ - template - struct __truth_type - { typedef __false_type __type; }; - - template<> - struct __truth_type - { typedef __true_type __type; }; - - // N.B. The conversions to bool are needed due to the issue - // explained in c++/19404. - template - struct __traitor - { - enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; - typedef typename __truth_type<__value>::__type __type; - }; - - // Compare for equality of types. - template - struct __are_same - { - enum { __value = 0 }; - typedef __false_type __type; - }; - - template - struct __are_same<_Tp, _Tp> - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - // Define a nested type if some predicate holds. - template - struct __enable_if - { - }; - - template - struct __enable_if<_Tp, true> - { - typedef _Tp __type; - }; - - // Holds if the template-argument is a void type. - template - struct __is_void - { - enum { __value = 0 }; - typedef __false_type __type; - }; - - template<> - struct __is_void - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - // - // Integer types - // - template - struct __is_integer - { - enum { __value = 0 }; - typedef __false_type __type; - }; - - // Thirteen specializations (yes there are eleven standard integer - // types; 'long long' and 'unsigned long long' are supported as - // extensions) - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - -# ifdef _GLIBCXX_USE_WCHAR_T - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; -# endif - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_integer - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - // - // Floating point types - // - template - struct __is_floating - { - enum { __value = 0 }; - typedef __false_type __type; - }; - - // three specializations (float, double and 'long double') - template<> - struct __is_floating - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_floating - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template<> - struct __is_floating - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - // - // Pointer types - // - template - struct __is_pointer - { - enum { __value = 0 }; - typedef __false_type __type; - }; - - template - struct __is_pointer<_Tp*> - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - // - // Normal iterator type - // - template - struct __is_normal_iterator - { - enum { __value = 0 }; - typedef __false_type __type; - }; - - template - 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 - struct __is_arithmetic - : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > - { }; - - // - // A fundamental type is `void' or and arithmetic type - // - template - struct __is_fundamental - : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> > - { }; - - // - // A scalar type is an arithmetic type or a pointer type - // - template - struct __is_scalar - : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > - { }; - - // - // For the immediate use, the following is a good approximation - // - template - struct __is_pod - { - enum - { - __value = (sizeof(__gnu_internal::__test_type<_Tp>(0)) - != sizeof(__gnu_internal::__one)) - }; - }; - - // - // A stripped-down version of std::tr1::is_empty - // - template - struct __is_empty - { - private: - template - struct __first { }; - template - struct __second - : public _Up { }; - - public: - enum - { - __value = sizeof(__first<_Tp>) == sizeof(__second<_Tp>) - }; - }; - -} // namespace std - -#endif //_CPP_TYPE_TRAITS_H diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/deque.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/deque.tcc deleted file mode 100644 index 717222389..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/deque.tcc +++ /dev/null @@ -1,767 +0,0 @@ -// Deque implementation (out of line) -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 deque.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _DEQUE_TCC -#define _DEQUE_TCC 1 - -namespace _GLIBCXX_STD -{ - template - deque<_Tp, _Alloc>& - deque<_Tp, _Alloc>:: - operator=(const deque& __x) - { - const size_type __len = size(); - if (&__x != this) - { - if (__len >= __x.size()) - erase(std::copy(__x.begin(), __x.end(), this->_M_impl._M_start), - this->_M_impl._M_finish); - 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; - } - - template - 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); - } - - template - typename deque<_Tp, _Alloc>::iterator - deque<_Tp, _Alloc>:: - erase(iterator __position) - { - iterator __next = __position; - ++__next; - const size_type __index = __position - this->_M_impl._M_start; - if (__index < (size() >> 1)) - { - std::copy_backward(this->_M_impl._M_start, __position, __next); - pop_front(); - } - else - { - std::copy(__next, this->_M_impl._M_finish, __position); - pop_back(); - } - return this->_M_impl._M_start + __index; - } - - template - typename deque<_Tp, _Alloc>::iterator - deque<_Tp, _Alloc>:: - erase(iterator __first, iterator __last) - { - if (__first == this->_M_impl._M_start - && __last == this->_M_impl._M_finish) - { - clear(); - return this->_M_impl._M_finish; - } - else - { - const difference_type __n = __last - __first; - const difference_type __elems_before = (__first - - this->_M_impl._M_start); - if (static_cast(__elems_before) < (size() - __n) / 2) - { - std::copy_backward(this->_M_impl._M_start, __first, __last); - iterator __new_start = this->_M_impl._M_start + __n; - std::_Destroy(this->_M_impl._M_start, __new_start, - _M_get_Tp_allocator()); - _M_destroy_nodes(this->_M_impl._M_start._M_node, - __new_start._M_node); - this->_M_impl._M_start = __new_start; - } - else - { - std::copy(__last, this->_M_impl._M_finish, __first); - iterator __new_finish = this->_M_impl._M_finish - __n; - std::_Destroy(__new_finish, this->_M_impl._M_finish, - _M_get_Tp_allocator()); - _M_destroy_nodes(__new_finish._M_node + 1, - this->_M_impl._M_finish._M_node + 1); - this->_M_impl._M_finish = __new_finish; - } - return this->_M_impl._M_start + __elems_before; - } - } - - template - void - deque<_Tp, _Alloc>:: - clear() - { - for (_Map_pointer __node = this->_M_impl._M_start._M_node + 1; - __node < this->_M_impl._M_finish._M_node; - ++__node) - { - std::_Destroy(*__node, *__node + _S_buffer_size(), - _M_get_Tp_allocator()); - _M_deallocate_node(*__node); - } - - if (this->_M_impl._M_start._M_node != this->_M_impl._M_finish._M_node) - { - std::_Destroy(this->_M_impl._M_start._M_cur, - this->_M_impl._M_start._M_last, - _M_get_Tp_allocator()); - std::_Destroy(this->_M_impl._M_finish._M_first, - this->_M_impl._M_finish._M_cur, - _M_get_Tp_allocator()); - _M_deallocate_node(this->_M_impl._M_finish._M_first); - } - else - std::_Destroy(this->_M_impl._M_start._M_cur, - this->_M_impl._M_finish._M_cur, - _M_get_Tp_allocator()); - - this->_M_impl._M_finish = this->_M_impl._M_start; - } - - template - template - 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) - erase(__cur, end()); - else - insert(end(), __first, __last); - } - - template - 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); - } - - template - 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 - template - 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 - template - 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 - void - deque<_Tp, _Alloc>:: - _M_push_back_aux(const value_type& __t) - { - value_type __t_copy = __t; - _M_reserve_map_at_back(); - *(this->_M_impl._M_finish._M_node + 1) = this->_M_allocate_node(); - try - { - this->_M_impl.construct(this->_M_impl._M_finish._M_cur, __t_copy); - 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 - void - deque<_Tp, _Alloc>:: - _M_push_front_aux(const value_type& __t) - { - value_type __t_copy = __t; - _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; - this->_M_impl.construct(this->_M_impl._M_start._M_cur, __t_copy); - } - 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 - 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 - 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 - template - 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 - template - 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 deque<_Tp, _Alloc>::iterator - deque<_Tp, _Alloc>:: - _M_insert_aux(iterator __pos, const value_type& __x) - { - difference_type __index = __pos - this->_M_impl._M_start; - value_type __x_copy = __x; // XXX copy - if (static_cast(__index) < size() / 2) - { - push_front(front()); - iterator __front1 = this->_M_impl._M_start; - ++__front1; - iterator __front2 = __front1; - ++__front2; - __pos = this->_M_impl._M_start + __index; - iterator __pos1 = __pos; - ++__pos1; - std::copy(__front2, __pos1, __front1); - } - else - { - push_back(back()); - iterator __back1 = this->_M_impl._M_finish; - --__back1; - iterator __back2 = __back1; - --__back2; - __pos = this->_M_impl._M_start + __index; - std::copy_backward(__pos, __back2, __back1); - } - *__pos = __x_copy; - return __pos; - } - - template - 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_copy_a(this->_M_impl._M_start, - __start_n, __new_start, - _M_get_Tp_allocator()); - this->_M_impl._M_start = __new_start; - std::copy(__start_n, __pos, __old_start); - fill(__pos - difference_type(__n), __pos, __x_copy); - } - else - { - std::__uninitialized_copy_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_copy_a(__finish_n, - this->_M_impl._M_finish, - this->_M_impl._M_finish, - _M_get_Tp_allocator()); - this->_M_impl._M_finish = __new_finish; - std::copy_backward(__pos, __finish_n, __old_finish); - std::fill(__pos, __pos + difference_type(__n), __x_copy); - } - else - { - std::__uninitialized_fill_copy(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 - template - 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(__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_copy_a(this->_M_impl._M_start, - __start_n, __new_start, - _M_get_Tp_allocator()); - this->_M_impl._M_start = __new_start; - std::copy(__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_copy_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_copy_a(__finish_n, - this->_M_impl._M_finish, - this->_M_impl._M_finish, - _M_get_Tp_allocator()); - this->_M_impl._M_finish = __new_finish; - std::copy_backward(__pos, __finish_n, __old_finish); - std::copy(__first, __last, __pos); - } - else - { - _ForwardIterator __mid = __first; - std::advance(__mid, __elemsafter); - std::__uninitialized_copy_copy(__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 - void - deque<_Tp, _Alloc>:: - _M_new_elements_at_front(size_type __new_elems) - { - 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 - void - deque<_Tp, _Alloc>:: - _M_new_elements_at_back(size_type __new_elems) - { - 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 - 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); - } -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/fstream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/fstream.tcc deleted file mode 100644 index 652c54d87..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/fstream.tcc +++ /dev/null @@ -1,904 +0,0 @@ -// File based streams -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 fstream.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -// -// ISO C++ 14882: 27.8 File-based streams -// - -#ifndef _FSTREAM_TCC -#define _FSTREAM_TCC 1 - -#pragma GCC system_header - -namespace std -{ - template - 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 - void - basic_filebuf<_CharT, _Traits>:: - _M_destroy_internal_buffer() throw() - { - if (_M_buf_allocated) - { - delete [] _M_buf; - _M_buf = NULL; - _M_buf_allocated = false; - } - delete [] _M_ext_buf; - _M_ext_buf = NULL; - _M_ext_buf_size = 0; - _M_ext_next = NULL; - _M_ext_end = NULL; - } - - template - 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(NULL), _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 basic_filebuf<_CharT, _Traits>::__filebuf_type* - basic_filebuf<_CharT, _Traits>:: - open(const char* __s, ios_base::openmode __mode) - { - __filebuf_type *__ret = NULL; - 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 basic_filebuf<_CharT, _Traits>::__filebuf_type* - basic_filebuf<_CharT, _Traits>:: - close() throw() - { - __filebuf_type* __ret = NULL; - if (this->is_open()) - { - bool __testfail = false; - try - { - if (!_M_terminate_output()) - __testfail = true; - } - catch(...) - { __testfail = true; } - - // NB: Do this here so that re-opened filebufs will be cool... - _M_mode = ios_base::openmode(0); - _M_pback_init = false; - _M_destroy_internal_buffer(); - _M_reading = false; - _M_writing = false; - _M_set_buffer(-1); - _M_state_last = _M_state_cur = _M_state_beg; - - if (!_M_file.close()) - __testfail = true; - - if (!__testfail) - __ret = this; - } - return __ret; - } - - template - 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 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 && !_M_writing) - { - // Check for pback madness, and if so swich 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(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) - std::memcpy(__buf, _M_ext_next, __remainder); - - delete [] _M_ext_buf; - _M_ext_buf = __buf; - _M_ext_buf_size = __blen; - } - else if (__remainder) - std::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; - __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(_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 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 && !_M_writing) - { - // 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 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 && !_M_reading) - { - 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 - 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(__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(__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(__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 - 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(); - this->gbump(1); - __ret = 1; - --__n; - } - _M_destroy_pback(); - } - - // 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 && !_M_writing) - { - // First, copy the chars already present in the buffer. - const streamsize __avail = this->egptr() - this->gptr(); - if (__avail != 0) - { - if (__avail == 1) - *__s = *this->gptr(); - else - traits_type::copy(__s, this->gptr(), __avail); - __s += __avail; - this->gbump(__avail); - __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(__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 - streamsize - basic_filebuf<_CharT, _Traits>:: - xsputn(const _CharT* __s, streamsize __n) - { - // 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. - streamsize __ret = 0; - 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(this->pbase()); - __ret = _M_file.xsputn_2(__buf, __buffill, - reinterpret_cast(__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 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 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) - { - // Ditch any pback buffers to avoid confusion. - _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) - { - if (_M_codecvt->always_noconv()) - __computed_off += this->gptr() - this->egptr(); - else - { - // Calculate offset from _M_ext_buf that corresponds - // to gptr(). Note: uses _M_state_last, which - // corresponds to eback(). - const int __gptr_off = - _M_codecvt->length(_M_state_last, _M_ext_buf, _M_ext_next, - this->gptr() - this->eback()); - __computed_off += _M_ext_buf + __gptr_off - _M_ext_end; - - // _M_state_last is modified by codecvt::length() so - // it now corresponds to gptr(). - __state = _M_state_last; - } - } - __ret = _M_seek(__computed_off, __way, __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 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 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()) - { - // Returns pos_type(off_type(-1)) in case of failure. - __ret = pos_type(_M_file.seekoff(__off, __way)); - _M_reading = false; - _M_writing = false; - _M_ext_next = _M_ext_end = _M_ext_buf; - _M_set_buffer(-1); - _M_state_cur = __state; - __ret.state(_M_state_cur); - } - return __ret; - } - - template - 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 - 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 - 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) - std::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. - // NB: This syntax is a GNU extension. -#if _GLIBCXX_EXTERN_TEMPLATE - extern template class basic_filebuf; - extern template class basic_ifstream; - extern template class basic_ofstream; - extern template class basic_fstream; - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class basic_filebuf; - extern template class basic_ifstream; - extern template class basic_ofstream; - extern template class basic_fstream; -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/functexcept.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/functexcept.h deleted file mode 100644 index 3e2ce2c55..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/functexcept.h +++ /dev/null @@ -1,93 +0,0 @@ -// Function-Based Exception Support -*- C++ -*- - -// Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 functexcept.h - * This header provides support for -fno-exceptions. - */ - -// -// ISO C++ 14882: 19.1 Exception classes -// - -#ifndef _FUNCTEXCEPT_H -#define _FUNCTEXCEPT_H 1 - -#include - -namespace std -{ - // Helper for exception objects in - void - __throw_bad_exception(void) __attribute__((__noreturn__)); - - // Helper for exception objects in - void - __throw_bad_alloc(void) __attribute__((__noreturn__)); - - // Helper for exception objects in - void - __throw_bad_cast(void) __attribute__((__noreturn__)); - - void - __throw_bad_typeid(void) __attribute__((__noreturn__)); - - // Helpers for exception objects in - 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 basic_ios - void - __throw_ios_failure(const char*) __attribute__((__noreturn__)); -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice.h deleted file mode 100644 index 31cb1029f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice.h +++ /dev/null @@ -1,174 +0,0 @@ -// The template and inlines for the -*- C++ -*- gslice class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file gslice.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _GSLICE_H -#define _GSLICE_H 1 - -#pragma GCC system_header - -namespace std -{ - /** - * @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&, const valarray&); - - // XXX: the IS says the copy-ctor and copy-assignment operators are - // synthetized 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() const; - - /// Return array of array strides for each dimension. - valarray stride() const; - - private: - struct _Indexer - { - size_t _M_count; - size_t _M_start; - valarray _M_size; - valarray _M_stride; - valarray _M_index; // Linear array of referenced indices - _Indexer(size_t, const valarray&, - const valarray&); - void - _M_increment_use() - { ++_M_count; } - - size_t - _M_decrement_use() - { return --_M_count; } - }; - - _Indexer* _M_index; - - template friend class valarray; - }; - - inline size_t - gslice::start () const - { return _M_index ? _M_index->_M_start : 0; } - - inline valarray - gslice::size () const - { return _M_index ? _M_index->_M_size : valarray(); } - - inline valarray - gslice::stride () const - { return _M_index ? _M_index->_M_stride : valarray(); } - - inline gslice::gslice () : _M_index(0) {} - - inline - gslice::gslice(size_t __o, const valarray& __l, - const valarray& __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; - } - -} // std:: - -#endif /* _GSLICE_H */ - -// Local Variables: -// mode:c++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice_array.h deleted file mode 100644 index 2904efec7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/gslice_array.h +++ /dev/null @@ -1,218 +0,0 @@ -// The template and inlines for the -*- C++ -*- gslice_array class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file gslice_array.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _GSLICE_ARRAY_H -#define _GSLICE_ARRAY_H 1 - -#pragma GCC system_header - -namespace std -{ - /** - * @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 - 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 - void operator=(const _Expr<_Dom, _Tp>&) const; - template - void operator*=(const _Expr<_Dom, _Tp>&) const; - template - void operator/=(const _Expr<_Dom, _Tp>&) const; - template - void operator%=(const _Expr<_Dom, _Tp>&) const; - template - void operator+=(const _Expr<_Dom, _Tp>&) const; - template - void operator-=(const _Expr<_Dom, _Tp>&) const; - template - void operator^=(const _Expr<_Dom, _Tp>&) const; - template - void operator&=(const _Expr<_Dom, _Tp>&) const; - template - void operator|=(const _Expr<_Dom, _Tp>&) const; - template - void operator<<=(const _Expr<_Dom, _Tp>&) const; - template - void operator>>=(const _Expr<_Dom, _Tp>&) const; - - private: - _Array<_Tp> _M_array; - const valarray& _M_index; - - friend class valarray<_Tp>; - - gslice_array(_Array<_Tp>, const valarray&); - - // not implemented - gslice_array(); - }; - - template - inline - gslice_array<_Tp>::gslice_array(_Array<_Tp> __a, - const valarray& __i) - : _M_array(__a), _M_index(__i) {} - - template - inline - gslice_array<_Tp>::gslice_array(const gslice_array<_Tp>& __a) - : _M_array(__a._M_array), _M_index(__a._M_index) {} - - template - inline gslice_array<_Tp>& - gslice_array<_Tp>::operator=(const gslice_array<_Tp>& __a) - { - std::__valarray_copy(_Array<_Tp>(__a._M_array), - _Array(__a._M_index), _M_index.size(), - _M_array, _Array(_M_index)); - return *this; - } - - template - inline void - gslice_array<_Tp>::operator=(const _Tp& __t) const - { - std::__valarray_fill(_M_array, _Array(_M_index), - _M_index.size(), __t); - } - - template - inline void - gslice_array<_Tp>::operator=(const valarray<_Tp>& __v) const - { - std::__valarray_copy(_Array<_Tp>(__v), __v.size(), - _M_array, _Array(_M_index)); - } - - template - template - inline void - gslice_array<_Tp>::operator=(const _Expr<_Dom, _Tp>& __e) const - { - std::__valarray_copy (__e, _M_index.size(), _M_array, - _Array(_M_index)); - } - -#undef _DEFINE_VALARRAY_OPERATOR -#define _DEFINE_VALARRAY_OPERATOR(_Op, _Name) \ - template \ - inline void \ - gslice_array<_Tp>::operator _Op##=(const valarray<_Tp>& __v) const \ - { \ - _Array_augmented_##_Name(_M_array, _Array(_M_index), \ - _Array<_Tp>(__v), __v.size()); \ - } \ - \ - template \ - template \ - inline void \ - gslice_array<_Tp>::operator _Op##= (const _Expr<_Dom, _Tp>& __e) const\ - { \ - _Array_augmented_##_Name(_M_array, _Array(_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 - -} // std:: - -#endif /* _GSLICE_ARRAY_H */ - -// Local Variables: -// mode:c++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/indirect_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/indirect_array.h deleted file mode 100644 index aca2fe38e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/indirect_array.h +++ /dev/null @@ -1,212 +0,0 @@ -// The template and inlines for the -*- C++ -*- indirect_array class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file indirect_array.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _INDIRECT_ARRAY_H -#define _INDIRECT_ARRAY_H 1 - -#pragma GCC system_header - -namespace std -{ - /** - * @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) 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 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 - void operator=(const _Expr<_Dom, _Tp>&) const; - template - void operator*=(const _Expr<_Dom, _Tp>&) const; - template - void operator/=(const _Expr<_Dom, _Tp>&) const; - template - void operator%=(const _Expr<_Dom, _Tp>&) const; - template - void operator+=(const _Expr<_Dom, _Tp>&) const; - template - void operator-=(const _Expr<_Dom, _Tp>&) const; - template - void operator^=(const _Expr<_Dom, _Tp>&) const; - template - void operator&=(const _Expr<_Dom, _Tp>&) const; - template - void operator|=(const _Expr<_Dom, _Tp>&) const; - template - void operator<<=(const _Expr<_Dom, _Tp>&) const; - template - 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); - - friend class valarray<_Tp>; - friend class gslice_array<_Tp>; - - const size_t _M_sz; - const _Array _M_index; - const _Array<_Tp> _M_array; - - // not implemented - indirect_array(); - }; - - template - 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 - inline - indirect_array<_Tp>::indirect_array(_Array<_Tp> __a, size_t __s, - _Array __i) - : _M_sz(__s), _M_index(__i), _M_array(__a) {} - - template - 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 - inline void - indirect_array<_Tp>::operator=(const _Tp& __t) const - { std::__valarray_fill(_M_array, _M_index, _M_sz, __t); } - - template - inline void - indirect_array<_Tp>::operator=(const valarray<_Tp>& __v) const - { std::__valarray_copy(_Array<_Tp>(__v), _M_sz, _M_array, _M_index); } - - template - template - 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 \ - 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 \ - template \ - 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 - -} // std:: - -#endif /* _INDIRECT_ARRAY_H */ - -// Local Variables: -// mode:c++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ios_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ios_base.h deleted file mode 100644 index 644c65550..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ios_base.h +++ /dev/null @@ -1,967 +0,0 @@ -// Iostreams base classes -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 27.4 Iostreams base classes -// - -/** @file ios_base.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _IOS_BASE_H -#define _IOS_BASE_H 1 - -#pragma GCC system_header - -#include -#include -#include - -namespace std -{ - // 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 _Ios_Fmtflags - operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) - { return _Ios_Fmtflags(static_cast(__a) & static_cast(__b)); } - - inline _Ios_Fmtflags - operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) - { return _Ios_Fmtflags(static_cast(__a) | static_cast(__b)); } - - inline _Ios_Fmtflags - operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) - { return _Ios_Fmtflags(static_cast(__a) ^ static_cast(__b)); } - - inline _Ios_Fmtflags& - operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) - { return __a = __a | __b; } - - inline _Ios_Fmtflags& - operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) - { return __a = __a & __b; } - - inline _Ios_Fmtflags& - operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) - { return __a = __a ^ __b; } - - inline _Ios_Fmtflags - operator~(_Ios_Fmtflags __a) - { return _Ios_Fmtflags(~static_cast(__a)); } - - - 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 _Ios_Openmode - operator&(_Ios_Openmode __a, _Ios_Openmode __b) - { return _Ios_Openmode(static_cast(__a) & static_cast(__b)); } - - inline _Ios_Openmode - operator|(_Ios_Openmode __a, _Ios_Openmode __b) - { return _Ios_Openmode(static_cast(__a) | static_cast(__b)); } - - inline _Ios_Openmode - operator^(_Ios_Openmode __a, _Ios_Openmode __b) - { return _Ios_Openmode(static_cast(__a) ^ static_cast(__b)); } - - inline _Ios_Openmode& - operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) - { return __a = __a | __b; } - - inline _Ios_Openmode& - operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) - { return __a = __a & __b; } - - inline _Ios_Openmode& - operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) - { return __a = __a ^ __b; } - - inline _Ios_Openmode - operator~(_Ios_Openmode __a) - { return _Ios_Openmode(~static_cast(__a)); } - - - 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 _Ios_Iostate - operator&(_Ios_Iostate __a, _Ios_Iostate __b) - { return _Ios_Iostate(static_cast(__a) & static_cast(__b)); } - - inline _Ios_Iostate - operator|(_Ios_Iostate __a, _Ios_Iostate __b) - { return _Ios_Iostate(static_cast(__a) | static_cast(__b)); } - - inline _Ios_Iostate - operator^(_Ios_Iostate __a, _Ios_Iostate __b) - { return _Ios_Iostate(static_cast(__a) ^ static_cast(__b)); } - - inline _Ios_Iostate& - operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) - { return __a = __a | __b; } - - inline _Ios_Iostate& - operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) - { return __a = __a & __b; } - - inline _Ios_Iostate& - operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) - { return __a = __a ^ __b; } - - inline _Ios_Iostate - operator~(_Ios_Iostate __a) - { return _Ios_Iostate(~static_cast(__a)); } - - enum _Ios_Seekdir - { - _S_beg = 0, - _S_cur = SEEK_CUR, - _S_end = SEEK_END, - _S_ios_seekdir_end = 1L << 16 - }; - - // 27.4.2 Class ios_base - /** - * @brief The base of the I/O class hierarchy. - * - * 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: - - // 27.4.2.1.1 Class ios_base::failure - /// These are thrown to indicate problems. Doc me. - 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-3.0.2/gcc_6.html#SEC118 - 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 "_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 = fmtflags(__ios_flags::_S_boolalpha); - - /// Converts integer input or generates integer output in decimal base. - static const fmtflags dec = fmtflags(__ios_flags::_S_dec); - - /// Generate floating-point output in fixed-point notation. - static const fmtflags fixed = fmtflags(__ios_flags::_S_fixed); - - /// Converts integer input or generates integer output in hexadecimal base. - static const fmtflags hex = fmtflags(__ios_flags::_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 = fmtflags(__ios_flags::_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 = fmtflags(__ios_flags::_S_left); - - /// Converts integer input or generates integer output in octal base. - static const fmtflags oct = fmtflags(__ios_flags::_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 = fmtflags(__ios_flags::_S_right); - - /// Generates floating-point output in scientific notation. - static const fmtflags scientific = fmtflags(__ios_flags::_S_scientific); - - /// Generates a prefix indicating the numeric base of generated integer - /// output. - static const fmtflags showbase = fmtflags(__ios_flags::_S_showbase); - - /// Generates a decimal-point character unconditionally in generated - /// floating-point output. - static const fmtflags showpoint = fmtflags(__ios_flags::_S_showpoint); - - /// Generates a + sign in non-negative generated numeric output. - static const fmtflags showpos = fmtflags(__ios_flags::_S_showpos); - - /// Skips leading white space before certain input operations. - static const fmtflags skipws = fmtflags(__ios_flags::_S_skipws); - - /// Flushes output after each output operation. - static const fmtflags unitbuf = fmtflags(__ios_flags::_S_unitbuf); - - /// Replaces certain lowercase letters with their uppercase equivalents - /// in generated output. - static const fmtflags uppercase = fmtflags(__ios_flags::_S_uppercase); - - /// A mask of left|right|internal. Useful for the 2-arg form of @c setf. - static const fmtflags adjustfield = fmtflags(__ios_flags::_S_adjustfield); - - /// A mask of dec|oct|hex. Useful for the 2-arg form of @c setf. - static const fmtflags basefield = fmtflags(__ios_flags::_S_basefield); - - /// A mask of scientific|fixed. Useful for the 2-arg form of @c setf. - static const fmtflags floatfield = fmtflags(__ios_flags::_S_floatfield); - - // 27.4.2.1.3 Type ios_base::iostate - /** - * @brief This is a bitmask type. - * - * @c "_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 = iostate(__ios_flags::_S_badbit); - - /// Indicates that an input operation reached the end of an input sequence. - static const iostate eofbit = iostate(__ios_flags::_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 = iostate(__ios_flags::_S_failbit); - - /// Indicates all is well. - static const iostate goodbit = iostate(0); - - // 27.4.2.1.4 Type ios_base::openmode - /** - * @brief This is a bitmask type. - * - * @c "_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 = openmode(__ios_flags::_S_app); - - /// Open and seek to end immediately after opening. - static const openmode ate = openmode(__ios_flags::_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++/27_io/howto.html#3 and - /// http://gcc.gnu.org/onlinedocs/libstdc++/27_io/howto.html#7 for more. - static const openmode binary = openmode(__ios_flags::_S_bin); - - /// Open for input. Default for @c ifstream and fstream. - static const openmode in = openmode(__ios_flags::_S_in); - - /// Open for output. Default for @c ofstream and fstream. - static const openmode out = openmode(__ios_flags::_S_out); - - /// Open for input. Default for @c ofstream. - static const openmode trunc = openmode(__ios_flags::_S_trunc); - - // 27.4.2.1.5 Type ios_base::seekdir - /** - * @brief This is an enumerated type. - * - * @c "_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 = seekdir(0); - - /// Request a seek relative to the current position within the sequence. - static const seekdir cur = seekdir(SEEK_CUR); - - /// Request a seek relative to the current end of the sequence. - static const seekdir end = seekdir(SEEK_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: - //@{ - /** - * @if maint - * ios_base data members (doc me) - * @endif - */ - 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(&_M_refcount, 1); } - - // 0 => OK to delete. - int - _M_remove_reference() - { return __gnu_cxx::__exchange_and_add(&_M_refcount, -1); } - }; - - _Callback_list* _M_callbacks; - - void - _M_call_callbacks(event __ev) throw(); - - void - _M_dispose_callbacks(void); - - // 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. - static const int _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(); - - 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. - */ - inline 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. - */ - inline 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. - */ - inline 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. - */ - inline 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. - */ - inline void - unsetf(fmtflags __mask) { _M_flags &= ~__mask; } - - /** - * @brief Flags access. - * @return The precision to generate on certain output operations. - * - * @if maint - * Be careful if you try to give a definition of "precision" here; see - * DR 189. - * @endif - */ - inline streamsize - precision() const { return _M_precision; } - - /** - * @brief Changing flags. - * @param prec The new precision value. - * @return The previous value of precision(). - */ - inline 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. - * - * "Minimum field width" refers to the number of characters. - */ - inline streamsize - width() const { return _M_width; } - - /** - * @brief Changing flags. - * @param wide The new width value. - * @return The previous value of width(). - */ - inline 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++/27_io/howto.html#8 for more. - */ - 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); - - /** - * @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. - */ - inline 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. - */ - inline 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. - */ - inline 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. - */ - inline 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(); - - // _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 anipulators - /// 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 anipulators - /// 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 anipulators - /// 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; - } -} // namespace std - -#endif /* _IOS_BASE_H */ - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/istream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/istream.tcc deleted file mode 100644 index 21299e60b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/istream.tcc +++ /dev/null @@ -1,1286 +0,0 @@ -// istream classes -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 istream.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -// -// ISO C++ 14882: 27.6.1 Input streams -// - -#ifndef _ISTREAM_TCC -#define _ISTREAM_TCC 1 - -#pragma GCC system_header - -#include -#include // For flush() - -namespace std -{ - template - basic_istream<_CharT, _Traits>::sentry:: - sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - if (__in.good()) - { - if (__in.tie()) - __in.tie()->flush(); - if (!__noskip && (__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 - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(__istream_type& (*__pf)(__istream_type&)) - { return __pf(*this); } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(__ios_type& (*__pf)(__ios_type&)) - { - __pf(*this); - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(ios_base& (*__pf)(ios_base&)) - { - __pf(*this); - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(bool& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(short& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(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 - // 118. basic_istream uses nonexistent num_get member functions. - if (!(__err & ios_base::failbit) - && (numeric_limits::min() <= __l - && __l <= numeric_limits::max())) - __n = __l; - else - __err |= ios_base::failbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(unsigned short& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(int& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(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 - // 118. basic_istream uses nonexistent num_get member functions. - if (!(__err & ios_base::failbit) - && (numeric_limits::min() <= __l - && __l <= numeric_limits::max())) - __n = __l; - else - __err |= ios_base::failbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(unsigned int& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(long& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(unsigned long& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - -#ifdef _GLIBCXX_USE_LONG_LONG - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(long long& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(unsigned long long& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } -#endif - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(float& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(double& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(long double& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(void*& __n) - { - sentry __cerb(*this, false); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_get_type& __ng = __check_facet(this->_M_num_get); - __ng.get(*this, 0, *this, __err, __n); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - operator>>(__streambuf_type* __sbout) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - sentry __cerb(*this, false); - if (__cerb && __sbout) - { - try - { - if (!__copy_streambufs(this->rdbuf(), __sbout)) - __err |= ios_base::failbit; - } - catch(...) - { this->_M_setstate(ios_base::failbit); } - } - else if (!__sbout) - __err |= ios_base::failbit; - if (__err) - this->setstate(__err); - return *this; - } - - template - 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::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - } - if (!_M_gcount) - __err |= ios_base::failbit; - if (__err) - this->setstate(__err); - return __c; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - get(char_type& __c) - { - _M_gcount = 0; - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - } - if (!_M_gcount) - __err |= ios_base::failbit; - if (__err) - this->setstate(__err); - return *this; - } - - template - 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::iostate(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(...) - { 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<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - get(__streambuf_type& __sb, char_type __delim) - { - _M_gcount = 0; - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - } - if (!_M_gcount) - __err |= ios_base::failbit; - if (__err) - this->setstate(__err); - return *this; - } - - template - 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::iostate(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(...) - { 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 - 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::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - 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::iostate(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 == numeric_limits::max() - && !traits_type::eq_int_type(__c, __eof)) - { - _M_gcount = numeric_limits::min(); - __large_ignore = true; - } - else - break; - } - - if (__large_ignore) - _M_gcount = numeric_limits::max(); - - if (traits_type::eq_int_type(__c, __eof)) - __err |= ios_base::eofbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - 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::iostate(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 == numeric_limits::max() - && !traits_type::eq_int_type(__c, __eof) - && !traits_type::eq_int_type(__c, __delim)) - { - _M_gcount = numeric_limits::min(); - __large_ignore = true; - } - else - break; - } - - if (__large_ignore) - _M_gcount = numeric_limits::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 < numeric_limits::max()) - ++_M_gcount; - __sb->sbumpc(); - } - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - 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::iostate(ios_base::goodbit); - try - { - __c = this->rdbuf()->sgetc(); - if (traits_type::eq_int_type(__c, traits_type::eof())) - __err |= ios_base::eofbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return __c; - } - - template - 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::iostate(ios_base::goodbit); - try - { - _M_gcount = this->rdbuf()->sgetn(__s, __n); - if (_M_gcount != __n) - __err |= (ios_base::eofbit | ios_base::failbit); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - 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::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return _M_gcount; - } - - template - 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; - sentry __cerb(*this, true); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - unget(void) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 60. What is a formatted input function? - _M_gcount = 0; - sentry __cerb(*this, true); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - 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::iostate(ios_base::goodbit); - try - { - __streambuf_type* __sb = this->rdbuf(); - if (__sb) - { - if (__sb->pubsync() == -1) - __err |= ios_base::badbit; - else - __ret = 0; - } - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return __ret; - } - - template - 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); - try - { - if (!this->fail()) - __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in); - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - return __ret; - } - - template - basic_istream<_CharT, _Traits>& - basic_istream<_CharT, _Traits>:: - seekg(pos_type __pos) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR60. Do not change _M_gcount. - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - return *this; - } - - template - 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. - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - return *this; - } - - // 27.6.1.2.3 Character extraction templates - template - 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::iostate(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(...) - { __in._M_setstate(ios_base::badbit); } - if (__err) - __in.setstate(__err); - } - return __in; - } - - template - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s) - { - typedef basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::__streambuf_type __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::iostate(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 = numeric_limits::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(...) - { __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 - basic_istream<_CharT,_Traits>& - ws(basic_istream<_CharT,_Traits>& __in) - { - typedef basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::__streambuf_type __streambuf_type; - typedef typename __istream_type::__ctype_type __ctype_type; - typedef typename __istream_type::int_type __int_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; - } - - // 21.3.7.9 basic_string::getline and operators - template - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __in, - basic_string<_CharT, _Traits, _Alloc>& __str) - { - typedef basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::int_type __int_type; - typedef typename __istream_type::__streambuf_type __streambuf_type; - typedef typename __istream_type::__ctype_type __ctype_type; - typedef basic_string<_CharT, _Traits, _Alloc> __string_type; - typedef typename __string_type::size_type __size_type; - - __size_type __extracted = 0; - ios_base::iostate __err = ios_base::iostate(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(); - __streambuf_type* __sb = __in.rdbuf(); - __int_type __c = __sb->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 = __sb->snextc(); - } - __str.append(__buf, __len); - - if (_Traits::eq_int_type(__c, __eof)) - __err |= ios_base::eofbit; - __in.width(0); - } - 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 - 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 typename __istream_type::int_type __int_type; - typedef typename __istream_type::__streambuf_type __streambuf_type; - typedef typename __istream_type::__ctype_type __ctype_type; - typedef basic_string<_CharT, _Traits, _Alloc> __string_type; - typedef typename __string_type::size_type __size_type; - - __size_type __extracted = 0; - const __size_type __n = __str.max_size(); - ios_base::iostate __err = ios_base::iostate(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(); - __streambuf_type* __sb = __in.rdbuf(); - __int_type __c = __sb->sgetc(); - - while (__extracted < __n - && !_Traits::eq_int_type(__c, __eof) - && !_Traits::eq_int_type(__c, __idelim)) - { - __str += _Traits::to_char_type(__c); - ++__extracted; - __c = __sb->snextc(); - } - - if (_Traits::eq_int_type(__c, __eof)) - __err |= ios_base::eofbit; - else if (_Traits::eq_int_type(__c, __idelim)) - { - ++__extracted; - __sb->sbumpc(); - } - else - __err |= ios_base::failbit; - } - 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 - inline basic_istream<_CharT,_Traits>& - getline(basic_istream<_CharT, _Traits>& __in, - basic_string<_CharT,_Traits,_Alloc>& __str) - { return getline(__in, __str, __in.widen('\n')); } - - // 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 class basic_istream; - 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 class basic_iostream; - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class basic_istream; - extern template wistream& ws(wistream&); - extern template wistream& operator>>(wistream&, wchar_t&); - extern template wistream& operator>>(wistream&, wchar_t*); - - extern template class basic_iostream; -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/list.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/list.tcc deleted file mode 100644 index ece04300f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/list.tcc +++ /dev/null @@ -1,379 +0,0 @@ -// List implementation (out of line) -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 list.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _LIST_TCC -#define _LIST_TCC 1 - -namespace _GLIBCXX_STD -{ - template - 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); - _M_get_Tp_allocator().destroy(&__tmp->_M_data); - _M_put_node(__tmp); - } - } - - template - typename list<_Tp, _Alloc>::iterator - list<_Tp, _Alloc>:: - insert(iterator __position, const value_type& __x) - { - _Node* __tmp = _M_create_node(__x); - __tmp->hook(__position._M_node); - return iterator(__tmp); - } - - template - typename list<_Tp, _Alloc>::iterator - list<_Tp, _Alloc>:: - erase(iterator __position) - { - iterator __ret = iterator(__position._M_node->_M_next); - _M_erase(__position); - return __ret; - } - - template - 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); - } - - template - 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 - 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 - template - 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 - void - list<_Tp, _Alloc>:: - remove(const value_type& __value) - { - iterator __first = begin(); - iterator __last = end(); - while (__first != __last) - { - iterator __next = __first; - ++__next; - if (*__first == __value) - _M_erase(__first); - __first = __next; - } - } - - template - 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 - void - list<_Tp, _Alloc>:: - merge(list& __x) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 300. list::merge() specification incomplete - if (this != &__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 - 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 - template - 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 - template - 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 - template - void - list<_Tp, _Alloc>:: - merge(list& __x, _StrictWeakOrdering __comp) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 300. list::merge() specification incomplete - if (this != &__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 - template - 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)); - } - } -} // namespace std - -#endif /* _LIST_TCC */ - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_classes.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_classes.h deleted file mode 100644 index aed938d0c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_classes.h +++ /dev/null @@ -1,582 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 22.1 Locales -// - -/** @file locale_classes.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _LOCALE_CLASSES_H -#define _LOCALE_CLASSES_H 1 - -#pragma GCC system_header - -#include -#include // For strcmp. -#include -#include -#include - -namespace std -{ - // 22.1.1 Class locale - /** - * @brief Container class for localization functionality. - * - * 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 - friend bool - has_facet(const locale&) throw(); - - template - friend const _Facet& - use_facet(const locale&); - - template - 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. - * - * @if maint - * NB: Order must match _S_facet_categories definition in locale.cc - * @endif - */ - 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 - 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 - 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) - */ - inline 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 facet compares s1 < s2, else false. - */ - template - 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. - static const size_t _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(); - - 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. - * - * 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); - - static void - _S_destroy_c_locale(__c_locale& __cloc); - - // Returns data from the underlying "C" library data for the - // classic locale. - static __c_locale - _S_get_c_locale(); - - static const char* - _S_get_c_name(); - - private: - inline void - _M_add_reference() const throw() - { __gnu_cxx::__atomic_add(&_M_refcount, 1); } - - inline void - _M_remove_reference() const throw() - { - if (__gnu_cxx::__exchange_and_add(&_M_refcount, -1) == 1) - { - 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. - * - * 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 - friend const _Facet& - use_facet(const locale&); - - template - 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; - }; - - - // Implementation object for locale. - class locale::_Impl - { - public: - // Friends. - friend class locale; - friend class locale::facet; - - template - friend bool - has_facet(const locale&) throw(); - - template - friend const _Facet& - use_facet(const locale&); - - template - 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[]; - - inline void - _M_add_reference() throw() - { __gnu_cxx::__atomic_add(&_M_refcount, 1); } - - inline void - _M_remove_reference() throw() - { - if (__gnu_cxx::__exchange_and_add(&_M_refcount, -1) == 1) - { - 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. - - inline 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 = std::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 - inline void - _M_init_facet(_Facet* __facet) - { _M_install_facet(&_Facet::id, __facet); } - - void - _M_install_cache(const facet*, size_t); - }; - - template - 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. - } -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.h deleted file mode 100644 index b4cd513b9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.h +++ /dev/null @@ -1,4578 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 22.1 Locales -// - -/** @file locale_facets.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _LOCALE_FACETS_H -#define _LOCALE_FACETS_H 1 - -#pragma GCC system_header - -#include // For struct tm -#include // For wctype_t -#include -#include // For ios_base, ios_base::iostate -#include - -namespace std -{ - // 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 _Tv and store results. - // NB: This is specialized for all required types, there is no - // generic definition. - template - void - __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err, - const __c_locale& __cloc); - - // Explicit specializations for required types. - template<> - void - __convert_to_v(const char*, float&, ios_base::iostate&, - const __c_locale&); - - template<> - void - __convert_to_v(const char*, double&, ios_base::iostate&, - const __c_locale&); - - template<> - void - __convert_to_v(const char*, long double&, ios_base::iostate&, - const __c_locale&); - - // NB: __pad is a struct, rather than a function, so it can be - // partially-specialized. - template - struct __pad - { - static void - _S_pad(ios_base& __io, _CharT __fill, _CharT* __news, - const _CharT* __olds, const streamsize __newlen, - const streamsize __oldlen, const bool __num); - }; - - // 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 __glen != 0. - template - _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 - 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 - 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. - #include - - // Common base for ctype<_CharT>. - /** - * @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 abtract stubs for the protected virtual - * functions. - */ - template - 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::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::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::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::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::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:: 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::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:: 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::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::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::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::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; - }; - - // NB: Generic, mostly useless implementation. - /** - * @brief Template ctype facet - * - * This template class defines classification and conversion functions for - * character sets. It wraps 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 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 - 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 - 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 - locale::id ctype<_CharT>::id; - - // 22.2.1.3 ctype specialization. - /** - * @brief The ctype specialization. - * - * 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 : 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(-1)]; - mutable char _M_narrow[1 + static_cast(-1)]; - mutable char _M_narrow_ok; // 0 uninitialized, 1 init, - // 2 memcpy can't be used - - public: - /// The facet id for ctype - static locale::id id; - /// The size of the mask table. It is SCHAR_MAX + 1. - static const size_t table_size = 1 + static_cast(-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::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:: 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::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:: 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 facet, the - * argument will be returned unchanged. - * - * This function works as if it returns ctype::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(__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 - * facet, the argument will be copied unchanged. - * - * This function works as if it returns ctype::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) - { - 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 facet, @a c - * will be returned unchanged. - * - * This function works as if it returns ctype::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(__c)]) - return _M_narrow[static_cast(__c)]; - const char __t = do_narrow(__c, __dfault); - if (__t != __dfault) - _M_narrow[static_cast(__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 - * facet, the argument will be copied unchanged. - * - * This function works as if it returns ctype::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)) - { - memcpy(__to, __lo, __hi - __lo); - return __hi; - } - if (!_M_narrow_ok) - _M_narrow_init(); - return this->do_narrow(__lo, __hi, __dfault, __to); - } - - protected: - /// 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(); - - /** - * @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 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 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 - { - 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 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 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 - { - memcpy(__dest, __lo, __hi - __lo); - return __hi; - } - - private: - - void _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 (memcmp(__tmp, _M_widen, sizeof(_M_widen))) - _M_widen_ok = 2; - } - - // 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 _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 (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; - } - } - }; - - template<> - const ctype& - use_facet >(const locale& __loc); - -#ifdef _GLIBCXX_USE_WCHAR_T - // 22.2.1.3 ctype specialization - /** - * @brief The ctype specialization. - * - * 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 inherits its public methods from - * __ctype_abstract_base. - */ - template<> - class ctype : public __ctype_abstract_base - { - 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(-1)]; - - // Pre-computed elements for do_is. - mask _M_bit[16]; - __wmask_type _M_wmask[16]; - - public: - // Data Members: - /// The facet id for ctype - 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; - - /// 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 - * 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 - * 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 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 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(); - }; - - template<> - const ctype& - use_facet >(const locale& __loc); -#endif //_GLIBCXX_USE_WCHAR_T - - // Include host and configuration specific ctype inlines. - #include - - /// @brief class ctype_byname [22.2.1.2]. - template - class ctype_byname : public ctype<_CharT> - { - public: - typedef _CharT char_type; - - explicit - ctype_byname(const char* __s, size_t __refs = 0); - - protected: - virtual - ~ctype_byname() { }; - }; - - /// 22.2.1.4 Class ctype_byname specializations. - template<> - ctype_byname::ctype_byname(const char*, size_t refs); - - template<> - ctype_byname::ctype_byname(const char*, size_t refs); - - // 22.2.1.5 Template class codecvt - #include - - // 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); - }; - - template - 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(NULL), _M_grouping_size(0), _M_use_grouping(false), - _M_truename(NULL), _M_truename_size(0), _M_falsename(NULL), - _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 - __numpunct_cache<_CharT>::~__numpunct_cache() - { - if (_M_allocated) - { - delete [] _M_grouping; - delete [] _M_truename; - delete [] _M_falsename; - } - } - - /** - * @brief Numpunct facet. - * - * 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 - 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(NULL) - { _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(NULL) - { _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::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::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::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::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::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 = NULL); - }; - - template - locale::id numpunct<_CharT>::id; - - template<> - numpunct::~numpunct(); - - template<> - void - numpunct::_M_initialize_numpunct(__c_locale __cloc); - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - numpunct::~numpunct(); - - template<> - void - numpunct::_M_initialize_numpunct(__c_locale __cloc); -#endif - - /// @brief class numpunct_byname [22.2.3.2]. - template - 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 (std::strcmp(__s, "C") != 0 && std::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() { } - }; - - /** - * @brief Facet for parsing number strings. - * - * 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 - 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::truename() or ctype::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 intrepreted 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 intrepreted 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 intrepreted 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& __xtrc) const; - - template - iter_type - _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&, - _ValueT& __v) const; - - //@{ - /** - * @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, iter_type, ios_base&, ios_base::iostate&, long&) const; - - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned short&) const; - - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned int&) const; - - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned long&) const; - -#ifdef _GLIBCXX_USE_LONG_LONG - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - long long&) const; - - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - unsigned long long&) const; -#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; - - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - long double&) const; - - virtual iter_type - do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err, - void*&) const; - //@} - }; - - template - locale::id num_get<_CharT, _InIter>::id; - - - /** - * @brief Facet for converting numbers to strings. - * - * 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 - 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::truename() or - * ctype::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 - 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 - 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, ios_base&, char_type __fill, long __v) const; - - virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, unsigned long) const; - -#ifdef _GLIBCXX_USE_LONG_LONG - virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, long long __v) const; - - virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const; -#endif - - virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, double __v) const; - - virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, long double __v) const; - - virtual iter_type - do_put(iter_type, ios_base&, char_type __fill, const void* __v) const; - //@} - }; - - template - locale::id num_put<_CharT, _OutIter>::id; - - - /** - * @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 - 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; - - size_t - _M_transform(_CharT*, const _CharT*, size_t) const; - - 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 - locale::id collate<_CharT>::id; - - // Specializations. - template<> - int - collate::_M_compare(const char*, const char*) const; - - template<> - size_t - collate::_M_transform(char*, const char*, size_t) const; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - int - collate::_M_compare(const wchar_t*, const wchar_t*) const; - - template<> - size_t - collate::_M_transform(wchar_t*, const wchar_t*, size_t) const; -#endif - - /// @brief class collate_byname [22.2.4.2]. - template - 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 (std::strcmp(__s, "C") != 0 && std::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() { } - }; - - - /** - * @brief Time format ordering data. - * - * This class provides an enum representing different orderings of day, - * month, and year. - */ - class time_base - { - public: - enum dateorder { no_order, dmy, mdy, ymd, ydm }; - }; - - template - 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(NULL), _M_date_era_format(NULL), _M_time_format(NULL), - _M_time_era_format(NULL), _M_date_time_format(NULL), - _M_date_time_era_format(NULL), _M_am(NULL), _M_pm(NULL), - _M_am_pm_format(NULL), _M_day1(NULL), _M_day2(NULL), _M_day3(NULL), - _M_day4(NULL), _M_day5(NULL), _M_day6(NULL), _M_day7(NULL), - _M_aday1(NULL), _M_aday2(NULL), _M_aday3(NULL), _M_aday4(NULL), - _M_aday5(NULL), _M_aday6(NULL), _M_aday7(NULL), _M_month01(NULL), - _M_month02(NULL), _M_month03(NULL), _M_month04(NULL), _M_month05(NULL), - _M_month06(NULL), _M_month07(NULL), _M_month08(NULL), _M_month09(NULL), - _M_month10(NULL), _M_month11(NULL), _M_month12(NULL), _M_amonth01(NULL), - _M_amonth02(NULL), _M_amonth03(NULL), _M_amonth04(NULL), - _M_amonth05(NULL), _M_amonth06(NULL), _M_amonth07(NULL), - _M_amonth08(NULL), _M_amonth09(NULL), _M_amonth10(NULL), - _M_amonth11(NULL), _M_amonth12(NULL), _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 - __timepunct_cache<_CharT>::~__timepunct_cache() - { - if (_M_allocated) - { - // Unused. - } - } - - // Specializations. - template<> - const char* - __timepunct_cache::_S_timezones[14]; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - const wchar_t* - __timepunct_cache::_S_timezones[14]; -#endif - - // Generic. - template - const _CharT* __timepunct_cache<_CharT>::_S_timezones[14]; - - template - 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; - - 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 = NULL); - }; - - template - locale::id __timepunct<_CharT>::id; - - // Specializations. - template<> - void - __timepunct::_M_initialize_timepunct(__c_locale __cloc); - - template<> - void - __timepunct::_M_put(char*, size_t, const char*, const tm*) const; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - void - __timepunct::_M_initialize_timepunct(__c_locale __cloc); - - template<> - void - __timepunct::_M_put(wchar_t*, size_t, const wchar_t*, - const tm*) const; -#endif - - // Include host and configuration specific timepunct functions. - #include - - /** - * @brief Facet for parsing dates and times. - * - * 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 - 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 "x" given to time_put::put() only - * uses month, day, and year. If the format "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 "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 "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 "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 "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 "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 "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 "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 day or month name, or 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 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 - locale::id time_get<_CharT, _InIter>::id; - - /// @brief class time_get_byname [22.2.5.2]. - template - 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 Facet for outputting dates and times. - * - * 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 - 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 - locale::id time_put<_CharT, _OutIter>::id; - - /// @brief class time_put_byname [22.2.5.4]. - template - 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. - * - * 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 - static pattern - _S_construct_pattern(char __precedes, char __space, char __posn); - }; - - template - 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(NULL), _M_grouping_size(0), _M_use_grouping(false), - _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()), - _M_curr_symbol(NULL), _M_curr_symbol_size(0), - _M_positive_sign(NULL), _M_positive_sign_size(0), - _M_negative_sign(NULL), _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 - __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 Facet for formatting data for money amounts. - * - * This facet encapsulates the punctuation, grouping and other formatting - * features of money amount string representations. - */ - template - 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(NULL) - { _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(NULL) - { _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::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::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 "\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 - * moneypunct::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::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::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::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::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::do_pos_format() or - * moneypunct::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 "$+10.01". - * - * @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 = NULL, - const char* __name = NULL); - }; - - template - locale::id moneypunct<_CharT, _Intl>::id; - - template - const bool moneypunct<_CharT, _Intl>::intl; - - template<> - moneypunct::~moneypunct(); - - template<> - moneypunct::~moneypunct(); - - template<> - void - moneypunct::_M_initialize_moneypunct(__c_locale, const char*); - - template<> - void - moneypunct::_M_initialize_moneypunct(__c_locale, const char*); - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - moneypunct::~moneypunct(); - - template<> - moneypunct::~moneypunct(); - - template<> - void - moneypunct::_M_initialize_moneypunct(__c_locale, - const char*); - - template<> - void - moneypunct::_M_initialize_moneypunct(__c_locale, - const char*); -#endif - - /// @brief class moneypunct_byname [22.2.6.4]. - template - 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 (std::strcmp(__s, "C") != 0 && std::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 - const bool moneypunct_byname<_CharT, _Intl>::intl; - - /** - * @brief Facet for parsing monetary amounts. - * - * 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 - 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 >. - * @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 "1001" 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 >. - * @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. - */ - virtual iter_type - do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io, - ios_base::iostate& __err, long double& __units) const; - - /** - * @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; - - template - iter_type - _M_extract(iter_type __s, iter_type __end, ios_base& __io, - ios_base::iostate& __err, string& __digits) const; - }; - - template - locale::id money_get<_CharT, _InIter>::id; - - /** - * @brief Facet for outputting monetary amounts. - * - * 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 - 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 "$10.01" 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 >. - * @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 "1001" in - * a US locale would write "$10.01" 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 >. - * @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 "$10.01" 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 >. - * @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, - long double __units) const; - - /** - * @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 "1001" in - * a US locale would write "$10.01" 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 >. - * @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; - - template - iter_type - _M_insert(iter_type __s, ios_base& __io, char_type __fill, - const string_type& __digits) const; - }; - - template - locale::id money_put<_CharT, _OutIter>::id; - - /** - * @brief Messages facet base class providing catalog typedef. - */ - struct messages_base - { - typedef int catalog; - }; - - /** - * @brief Facet for handling message catalogs - * - * 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 - 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& __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&, 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&, 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(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::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 __codecvt_type; - typedef typename codecvt __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 - locale::id messages<_CharT>::id; - - // Specializations for required instantiations. - template<> - string - messages::do_get(catalog, int, int, const string&) const; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - wstring - messages::do_get(catalog, int, int, const wstring&) const; -#endif - - /// @brief class messages_byname [22.2.7.2]. - template - 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() - { } - }; - - // Include host and configuration specific messages functions. - #include - - - // 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 - inline bool - isspace(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::space, __c); } - - /// Convenience interface to ctype.is(ctype_base::print, __c). - template - inline bool - isprint(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::print, __c); } - - /// Convenience interface to ctype.is(ctype_base::cntrl, __c). - template - inline bool - iscntrl(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::cntrl, __c); } - - /// Convenience interface to ctype.is(ctype_base::upper, __c). - template - inline bool - isupper(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::upper, __c); } - - /// Convenience interface to ctype.is(ctype_base::lower, __c). - template - inline bool - islower(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::lower, __c); } - - /// Convenience interface to ctype.is(ctype_base::alpha, __c). - template - inline bool - isalpha(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::alpha, __c); } - - /// Convenience interface to ctype.is(ctype_base::digit, __c). - template - inline bool - isdigit(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::digit, __c); } - - /// Convenience interface to ctype.is(ctype_base::punct, __c). - template - inline bool - ispunct(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::punct, __c); } - - /// Convenience interface to ctype.is(ctype_base::xdigit, __c). - template - inline bool - isxdigit(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::xdigit, __c); } - - /// Convenience interface to ctype.is(ctype_base::alnum, __c). - template - inline bool - isalnum(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::alnum, __c); } - - /// Convenience interface to ctype.is(ctype_base::graph, __c). - template - inline bool - isgraph(_CharT __c, const locale& __loc) - { return use_facet >(__loc).is(ctype_base::graph, __c); } - - /// Convenience interface to ctype.toupper(__c). - template - inline _CharT - toupper(_CharT __c, const locale& __loc) - { return use_facet >(__loc).toupper(__c); } - - /// Convenience interface to ctype.tolower(__c). - template - inline _CharT - tolower(_CharT __c, const locale& __loc) - { return use_facet >(__loc).tolower(__c); } -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.tcc deleted file mode 100644 index eb4a3527c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/locale_facets.tcc +++ /dev/null @@ -1,2766 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 locale_facets.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _LOCALE_FACETS_TCC -#define _LOCALE_FACETS_TCC 1 - -#pragma GCC system_header - -#include // For numeric_limits -#include // For bad_cast. -#include - -namespace std -{ - template - 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 - 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); - } - - /** - * @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 - inline 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 && __facets[__i]); - } - - /** - * @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 - inline 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(); - return static_cast(*__facets[__i]); - } - - // Routine to access a cache for the facet. If the cache didn't - // exist before, it gets constructed on the fly. - template - struct __use_cache - { - const _Facet* - operator() (const locale& __loc) const; - }; - - // Specializations. - template - 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 = NULL; - 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*>(__caches[__i]); - } - }; - - template - 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 = NULL; - 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 - void - __numpunct_cache<_CharT>::_M_cache(const locale& __loc) - { - _M_allocated = true; - - const numpunct<_CharT>& __np = use_facet >(__loc); - - _M_grouping_size = __np.grouping().size(); - char* __grouping = new char[_M_grouping_size]; - __np.grouping().copy(__grouping, _M_grouping_size); - _M_grouping = __grouping; - _M_use_grouping = (_M_grouping_size - && static_cast(__np.grouping()[0]) > 0); - - _M_truename_size = __np.truename().size(); - _CharT* __truename = new _CharT[_M_truename_size]; - __np.truename().copy(__truename, _M_truename_size); - _M_truename = __truename; - - _M_falsename_size = __np.falsename().size(); - _CharT* __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 >(__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); - } - - template - void - __moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc) - { - _M_allocated = true; - - const moneypunct<_CharT, _Intl>& __mp = - use_facet >(__loc); - - _M_grouping_size = __mp.grouping().size(); - char* __grouping = new char[_M_grouping_size]; - __mp.grouping().copy(__grouping, _M_grouping_size); - _M_grouping = __grouping; - _M_use_grouping = (_M_grouping_size - && static_cast(__mp.grouping()[0]) > 0); - - _M_decimal_point = __mp.decimal_point(); - _M_thousands_sep = __mp.thousands_sep(); - _M_frac_digits = __mp.frac_digits(); - - _M_curr_symbol_size = __mp.curr_symbol().size(); - _CharT* __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(); - _CharT* __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(); - _CharT* __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 >(__loc); - __ct.widen(money_base::_S_atoms, - money_base::_S_atoms + money_base::_S_end, _M_atoms); - } - - - // 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" - static bool - __verify_grouping(const char* __grouping, size_t __grouping_size, - const string& __grouping_tmp); - - template - _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* __q; - const char_type* __lit_zero = __lit + __num_base::_S_izero; - 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(__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(__sep_pos); - __xtrc += '.'; - __found_dec = true; - } - else - break; - } - else if ((__q = __traits_type::find(__lit_zero, 10, __c))) - { - __xtrc += __num_base::_S_atoms_in[__q - __lit]; - __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(__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 - // Not a valid input item. - 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(__sep_pos); - - if (!std::__verify_grouping(__lc->_M_grouping, - __lc->_M_grouping_size, - __found_grouping)) - __err |= ios_base::failbit; - } - - // Finish up. - if (__testeof) - __err |= ios_base::eofbit; - return __beg; - } - - template - struct __to_unsigned_type - { typedef _ValueT __type; }; - - template<> - struct __to_unsigned_type - { typedef unsigned long __type; }; - -#ifdef _GLIBCXX_USE_LONG_LONG - template<> - struct __to_unsigned_type - { typedef unsigned long long __type; }; -#endif - - template - template - _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; - typedef typename __to_unsigned_type<_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; - if (numeric_limits<_ValueT>::is_signed) - __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; - const __unsigned_type __max = __negative ? - -numeric_limits<_ValueT>::min() : numeric_limits<_ValueT>::max(); - const __unsigned_type __smax = __max / __base; - __unsigned_type __result = 0; - const char_type* __q; - const char_type* __lit_zero = __lit + __num_base::_S_izero; - 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(__sep_pos); - __sep_pos = 0; - } - else - { - __testfail = true; - break; - } - } - else if (__c == __lc->_M_decimal_point) - break; - else if ((__q = __traits_type::find(__lit_zero, __len, __c))) - { - int __digit = __q - __lit_zero; - if (__digit > 15) - __digit -= 6; - if (__result > __smax) - __testfail = true; - else - { - __result *= __base; - __testfail |= __result > __max - __digit; - __result += __digit; - ++__sep_pos; - } - } - else - // Not a valid input item. - 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. - __found_grouping += static_cast(__sep_pos); - - if (!std::__verify_grouping(__lc->_M_grouping, - __lc->_M_grouping_size, - __found_grouping)) - __err |= ios_base::failbit; - } - - if (!__testfail && (__sep_pos || __found_zero - || __found_grouping.size())) - __v = __negative ? -__result : __result; - else - __err |= ios_base::failbit; - - if (__testeof) - __err |= ios_base::eofbit; - return __beg; - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 17. Bad bool parsing - template - _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 = __l; - else - __err |= ios_base::failbit; - } - 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; - size_t __n; - bool __testeof = __beg == __end; - for (__n = 0; !__testeof; ++__n) - { - const char_type __c = *__beg; - - if (__testf) - if (__n < __lc->_M_falsename_size) - __testf = __c == __lc->_M_falsename[__n]; - else - break; - - if (__testt) - if (__n < __lc->_M_truename_size) - __testt = __c == __lc->_M_truename[__n]; - else - break; - - if (!__testf && !__testt) - break; - - if (++__beg == __end) - __testeof = true; - } - if (__testf && __n == __lc->_M_falsename_size) - __v = 0; - else if (__testt && __n == __lc->_M_truename_size) - __v = 1; - else - __err |= ios_base::failbit; - - if (__testeof) - __err |= ios_base::eofbit; - } - return __beg; - } - - template - _InIter - num_get<_CharT, _InIter>:: - 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); } - - template - _InIter - num_get<_CharT, _InIter>:: - 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); } - - template - _InIter - num_get<_CharT, _InIter>:: - 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); } - - template - _InIter - num_get<_CharT, _InIter>:: - 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 - template - _InIter - num_get<_CharT, _InIter>:: - 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); } - - template - _InIter - num_get<_CharT, _InIter>:: - 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 - - template - _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()); - return __beg; - } - - template - _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()); - return __beg; - } - - template - _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()); - return __beg; - } - - template - _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); - - unsigned long __ul; - __beg = _M_extract_int(__beg, __end, __io, __err, __ul); - - // Reset from hex formatted input. - __io.flags(__fmt); - - if (!(__err & ios_base::failbit)) - __v = reinterpret_cast(__ul); - return __beg; - } - - // For use by integer and floating-point types after they have been - // converted into a char_type string. - template - 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, true); - __len = static_cast(__w); - } - - // Forwarding functions to peel signed from unsigned integer types and - // either cast or compute the absolute value for the former, depending - // on __basefield. - template - inline int - __int_to_char(_CharT* __bufend, long __v, const _CharT* __lit, - ios_base::fmtflags __flags) - { - unsigned long __ul = __v; - const ios_base::fmtflags __basefield = __flags & ios_base::basefield; - if (__builtin_expect(__basefield != ios_base::oct - && __basefield != ios_base::hex, true)) - __ul = __v < 0 ? -__v : __ul; - return __int_to_char(__bufend, __ul, __lit, __flags, false); - } - - template - inline int - __int_to_char(_CharT* __bufend, unsigned long __v, const _CharT* __lit, - ios_base::fmtflags __flags) - { return __int_to_char(__bufend, __v, __lit, __flags, false); } - -#ifdef _GLIBCXX_USE_LONG_LONG - template - inline int - __int_to_char(_CharT* __bufend, long long __v, const _CharT* __lit, - ios_base::fmtflags __flags) - { - unsigned long long __ull = __v; - const ios_base::fmtflags __basefield = __flags & ios_base::basefield; - if (__builtin_expect(__basefield != ios_base::oct - && __basefield != ios_base::hex, true)) - __ull = __v < 0 ? -__v : __ull; - return __int_to_char(__bufend, __ull, __lit, __flags, false); - } - - template - inline int - __int_to_char(_CharT* __bufend, unsigned long long __v, - const _CharT* __lit, ios_base::fmtflags __flags) - { return __int_to_char(__bufend, __v, __lit, __flags, false); } -#endif - - // N.B. The last argument is currently unused (see libstdc++/20914). - template - int - __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit, - ios_base::fmtflags __flags, bool) - { - const ios_base::fmtflags __basefield = __flags & ios_base::basefield; - _CharT* __buf = __bufend; - - if (__builtin_expect(__basefield != ios_base::oct - && __basefield != ios_base::hex, true)) - { - // Decimal. - do - { - *--__buf = __lit[(__v % 10) + __num_base::_S_odigits]; - __v /= 10; - } - while (__v != 0); - } - else if (__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; - } - - template - 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 - template - _OutIter - num_put<_CharT, _OutIter>:: - _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill, - _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); - 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. - int __len = __int_to_char(__cs + __ilen, __v, __lit, __flags); - __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. - const ios_base::fmtflags __basefield = __flags & ios_base::basefield; - if (__builtin_expect(__basefield != ios_base::oct - && __basefield != ios_base::hex, true)) - { - // Decimal. - if (__v > 0) - { - if (__flags & ios_base::showpos - && numeric_limits<_ValueT>::is_signed) - *--__cs = __lit[__num_base::_S_oplus], ++__len; - } - else if (__v) - *--__cs = __lit[__num_base::_S_ominus], ++__len; - } - else if (__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(__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 - 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 snprintf (or sprintf(), 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 - template - _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. - streamsize __prec = __io.precision(); - if (__prec < static_cast(0)) - __prec = static_cast(6); - - const int __max_digits = numeric_limits<_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]; - -#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(__builtin_alloca(__cs_size)); - - __num_base::_S_format_float(__io, __fbuf, __mod); - __len = std::__convert_from_v(__cs, __cs_size, __fbuf, __v, - _S_get_c_locale(), __prec); - - // If the buffer was not large enough, try again with the correct size. - if (__len >= __cs_size) - { - __cs_size = __len + 1; - __cs = static_cast(__builtin_alloca(__cs_size)); - __len = std::__convert_from_v(__cs, __cs_size, __fbuf, __v, - _S_get_c_locale(), __prec); - } -#else - // Consider the possibility of long ios_base::fixed outputs - const bool __fixed = __io.flags() & ios_base::fixed; - const int __max_exp = numeric_limits<_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(__builtin_alloca(__cs_size)); - - __num_base::_S_format_float(__io, __fbuf, __mod); - __len = std::__convert_from_v(__cs, 0, __fbuf, __v, - _S_get_c_locale(), __prec); -#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 >(__loc); - - _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * __len)); - __ctype.widen(__cs, __cs + __len, __ws); - - // Replace decimal point. - const _CharT __cdec = __ctype.widen('.'); - const _CharT __dec = __lc->_M_decimal_point; - const _CharT* __p = char_traits<_CharT>::find(__ws, __len, __cdec); - if (__p) - __ws[__p - __ws] = __dec; - - // 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 - && (__p || __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, __p, __ws2 + __off, - __ws + __off, __len); - __len += __off; - - __ws = __ws2; - } - - // Pad. - const streamsize __w = __io.width(); - if (__w > static_cast(__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 - _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(__len)) - { - _CharT* __cs - = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * __w)); - _M_pad(__fill, __w, __io, __cs, __name, __len); - __name = __cs; - } - __io.width(0); - __s = std::__write(__s, __name, __len); - } - return __s; - } - - template - _OutIter - num_put<_CharT, _OutIter>:: - do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const - { return _M_insert_int(__s, __io, __fill, __v); } - - template - _OutIter - num_put<_CharT, _OutIter>:: - 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 - template - _OutIter - num_put<_CharT, _OutIter>:: - do_put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const - { return _M_insert_int(__s, __io, __fill, __v); } - - template - _OutIter - num_put<_CharT, _OutIter>:: - 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 - - template - _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); } - - template - _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 - _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 - | ios_base::internal); - __io.flags(__flags & __fmt | (ios_base::hex | ios_base::showbase)); - - __s = _M_insert_int(__s, __io, __fill, - reinterpret_cast(__v)); - __io.flags(__flags); - return __s; - } - - template - template - _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 >(__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(__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(__p.field[0]) - == money_base::sign) - || (static_cast(__p.field[2]) - == money_base::space))) - || (__i == 2 && ((static_cast(__p.field[3]) - == money_base::value) - || __mandatory_sign - && (static_cast(__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) - { - __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(__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(__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 && __lc->_M_frac_digits > 0 - && __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; - } - - template - _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; - if (__intl) - __beg = _M_extract(__beg, __end, __io, __err, __str); - else - __beg = _M_extract(__beg, __end, __io, __err, __str); - std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale()); - return __beg; - } - - template - _InIter - money_get<_CharT, _InIter>:: - do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io, - ios_base::iostate& __err, string_type& __units) const - { - typedef typename string::size_type size_type; - - const locale& __loc = __io._M_getloc(); - const ctype<_CharT>& __ctype = use_facet >(__loc); - - string __str; - const iter_type __ret = __intl ? _M_extract(__beg, __end, __io, - __err, __str) - : _M_extract(__beg, __end, __io, - __err, __str); - const size_type __len = __str.size(); - if (__len) - { - _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * __len)); - __ctype.widen(__str.data(), __str.data() + __len, __ws); - __units.assign(__ws, __len); - } - - return __ret; - } - - template - template - _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 >(__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. - int __paddec = __len - __lc->_M_frac_digits; - if (__paddec > 0) - { - if (__lc->_M_frac_digits < 0) - __paddec = __len; - if (__lc->_M_grouping_size) - { - _CharT* __ws = - static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * 2 * __len)); - _CharT* __ws_end = - std::__add_grouping(__ws, __lc->_M_thousands_sep, - __lc->_M_grouping, - __lc->_M_grouping_size, - __beg, __beg + __paddec); - __value.assign(__ws, __ws_end - __ws); - } - 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(__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(__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 - // charater 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; - } - - template - _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 >(__loc); -#ifdef _GLIBCXX_USE_C99 - // First try a buffer perhaps big enough. - int __cs_size = 64; - char* __cs = static_cast(__builtin_alloca(__cs_size)); - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 328. Bad sprintf format modifier in money_put<>::do_put() - int __len = std::__convert_from_v(__cs, __cs_size, "%.*Lf", __units, - _S_get_c_locale(), 0); - // If the buffer was not large enough, try again with the correct size. - if (__len >= __cs_size) - { - __cs_size = __len + 1; - __cs = static_cast(__builtin_alloca(__cs_size)); - __len = std::__convert_from_v(__cs, __cs_size, "%.*Lf", __units, - _S_get_c_locale(), 0); - } -#else - // max_exponent10 + 1 for the integer part, + 2 for sign and '\0'. - const int __cs_size = numeric_limits::max_exponent10 + 3; - char* __cs = static_cast(__builtin_alloca(__cs_size)); - int __len = std::__convert_from_v(__cs, 0, "%.*Lf", __units, - _S_get_c_locale(), 0); -#endif - _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * __cs_size)); - __ctype.widen(__cs, __cs + __len, __ws); - const string_type __digits(__ws, __len); - return __intl ? _M_insert(__s, __io, __fill, __digits) - : _M_insert(__s, __io, __fill, __digits); - } - - template - _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(__s, __io, __fill, __digits) - : _M_insert(__s, __io, __fill, __digits); } - - - // 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 - 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 - _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 >(__loc); - const size_t __len = char_traits<_CharT>::length(__format); - - for (size_t __i = 0; __beg != __end && __i < __len && !__err; ++__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, __err); - 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, __err); - 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, __err); - 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, __err); - 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, __err, - __tm, __dt[0]); - break; - case 'd': - // Day [01, 31]. [tm_mday] - __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 1, 31, 2, - __io, __err); - 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, __err); - else - __beg = _M_extract_num(__beg, __end, __tm->tm_mday, 10, 31, - 2, __io, __err); - 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, __err, - __tm, __wcs); - break; - case 'H': - // Hour [00, 23]. [tm_hour] - __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 0, 23, 2, - __io, __err); - break; - case 'I': - // Hour [01, 12]. [tm_hour] - __beg = _M_extract_num(__beg, __end, __tm->tm_hour, 1, 12, 2, - __io, __err); - break; - case 'm': - // Month [01, 12]. [tm_mon] - __beg = _M_extract_num(__beg, __end, __mem, 1, 12, 2, - __io, __err); - if (!__err) - __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, __err); - break; - case 'n': - if (__ctype.narrow(*__beg, 0) == '\n') - ++__beg; - else - __err |= 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, __err, - __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, __err); - break; - case 't': - if (__ctype.narrow(*__beg, 0) == '\t') - ++__beg; - else - __err |= 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, __err, - __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, __err, - __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, __err, - __tm, __times[0]); - break; - case 'y': - case 'C': // C99 - // Two digit year. [tm_year] - __beg = _M_extract_num(__beg, __end, __tm->tm_year, 0, 99, 2, - __io, __err); - break; - case 'Y': - // Year [1900). [tm_year] - __beg = _M_extract_num(__beg, __end, __mem, 0, 9999, 4, - __io, __err); - if (!__err) - __tm->tm_year = __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, __err); - - // GMT requires special effort. - if (__beg != __end && !__err && __tmp == 0 - && (*__beg == __ctype.widen('-') - || *__beg == __ctype.widen('+'))) - { - __beg = _M_extract_num(__beg, __end, __tmp, 0, 23, 2, - __io, __err); - __beg = _M_extract_num(__beg, __end, __tmp, 0, 59, 2, - __io, __err); - } - } - else - __err |= ios_base::failbit; - break; - default: - // Not recognized. - __err |= ios_base::failbit; - } - } - else - { - // Verify format and input match, extract and discard. - if (__format[__i] == *__beg) - ++__beg; - else - __err |= ios_base::failbit; - } - } - return __beg; - } - - template - _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 >(__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; - else - __err |= ios_base::failbit; - return __beg; - } - - // Assumptions: - // All elements in __names are unique. - template - _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 >(__loc); - - int* __matches = static_cast(__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 - _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 - _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 - _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 >(__loc); - const char_type* __days[7]; - __tp._M_days_abbreviated(__days); - int __tmpwday; - __beg = _M_extract_name(__beg, __end, __tmpwday, __days, 7, __io, __err); - - // Check to see if non-abbreviated name exists, and extract. - // NB: Assumes both _M_days and _M_days_abbreviated organized in - // exact same order, first to last, such that the resulting - // __days array with the same index points to a day, and that - // day's abbreviated form. - // NB: Also assumes that an abbreviated name is a subset of the name. - if (!__err && __beg != __end) - { - size_t __pos = __traits_type::length(__days[__tmpwday]); - __tp._M_days(__days); - const char_type* __name = __days[__tmpwday]; - if (__name[__pos] == *__beg) - { - // Extract the rest of it. - const size_t __len = __traits_type::length(__name); - while (__pos < __len && __beg != __end - && __name[__pos] == *__beg) - ++__beg, ++__pos; - if (__len != __pos) - __err |= ios_base::failbit; - } - } - if (!__err) - __tm->tm_wday = __tmpwday; - - if (__beg == __end) - __err |= ios_base::eofbit; - return __beg; - } - - template - _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 >(__loc); - const char_type* __months[12]; - __tp._M_months_abbreviated(__months); - int __tmpmon; - __beg = _M_extract_name(__beg, __end, __tmpmon, __months, 12, - __io, __err); - - // Check to see if non-abbreviated name exists, and extract. - // NB: Assumes both _M_months and _M_months_abbreviated organized in - // exact same order, first to last, such that the resulting - // __months array with the same index points to a month, and that - // month's abbreviated form. - // NB: Also assumes that an abbreviated name is a subset of the name. - if (!__err && __beg != __end) - { - size_t __pos = __traits_type::length(__months[__tmpmon]); - __tp._M_months(__months); - const char_type* __name = __months[__tmpmon]; - if (__name[__pos] == *__beg) - { - // Extract the rest of it. - const size_t __len = __traits_type::length(__name); - while (__pos < __len && __beg != __end - && __name[__pos] == *__beg) - ++__beg, ++__pos; - if (__len != __pos) - __err |= ios_base::failbit; - } - } - if (!__err) - __tm->tm_mon = __tmpmon; - - if (__beg == __end) - __err |= ios_base::eofbit; - return __beg; - } - - template - _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 >(__loc); - - size_t __i = 0; - int __value = 0; - for (; __beg != __end && __i < 4; ++__beg, ++__i) - { - const char __c = __ctype.narrow(*__beg, '*'); - if (__c >= '0' && __c <= '9') - __value = __value * 10 + (__c - '0'); - else - break; - } - if (__i == 2 || __i == 4) - __tm->tm_year = __i == 2 ? __value : __value - 1900; - else - __err |= ios_base::failbit; - if (__beg == __end) - __err |= ios_base::eofbit; - return __beg; - } - - template - _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 >(__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 - _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 >(__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 = - static_cast(__builtin_alloca(sizeof(char_type) * __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::length(__res)); - } - - // Generic version does nothing. - template - int - collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const - { return 0; } - - // Generic version does nothing. - template - size_t - collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const - { return 0; } - - template - 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 collate<_CharT>::string_type - collate<_CharT>:: - do_transform(const _CharT* __lo, const _CharT* __hi) const - { - // strxfrm assumes zero-terminated strings so we make a copy - string_type __str(__lo, __hi); - - const _CharT* __p = __str.c_str(); - const _CharT* __pend = __str.data() + __str.length(); - - size_t __len = (__hi - __lo) * 2; - - string_type __ret; - - // 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. - _CharT* __c = - static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __len)); - 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; - __c = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * __len)); - __res = _M_transform(__c, __p, __len); - } - - __ret.append(__c, __res); - __p += char_traits<_CharT>::length(__p); - if (__p == __pend) - return __ret; - - __p++; - __ret.push_back(_CharT()); - } - } - - template - 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 >> (numeric_limits::digits - 7))); - return static_cast(__val); - } - - // Construct correctly padded string, as per 22.2.2.2.2 - // Assumes - // __newlen > __oldlen - // __news is allocated for __newlen size - // Used by both num_put and ostream inserters: if __num, - // internal-adjusted objects are padded according to the rules below - // concerning 0[xX] and +-, otherwise, exactly as right-adjusted - // ones are. - - // NB: Of the two parameters, _CharT can be deduced from the - // function arguments. The other (_Traits) has to be explicitly specified. - template - void - __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill, - _CharT* __news, const _CharT* __olds, - const streamsize __newlen, - const streamsize __oldlen, const bool __num) - { - const size_t __plen = static_cast(__newlen - __oldlen); - const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield; - - // Padding last. - if (__adjust == ios_base::left) - { - _Traits::copy(__news, const_cast<_CharT*>(__olds), __oldlen); - _Traits::assign(__news + __oldlen, __plen, __fill); - return; - } - - size_t __mod = 0; - if (__adjust == ios_base::internal && __num) - { - // 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 >(__loc); - - const bool __testsign = (__ctype.widen('-') == __olds[0] - || __ctype.widen('+') == __olds[0]); - const bool __testhex = (__ctype.widen('0') == __olds[0] - && __oldlen > 1 - && (__ctype.widen('x') == __olds[1] - || __ctype.widen('X') == __olds[1])); - if (__testhex) - { - __news[0] = __olds[0]; - __news[1] = __olds[1]; - __mod = 2; - __news += 2; - } - else if (__testsign) - { - __news[0] = __olds[0]; - __mod = 1; - ++__news; - } - // else Padding first. - } - _Traits::assign(__news, __plen, __fill); - _Traits::copy(__news + __plen, const_cast<_CharT*>(__olds + __mod), - __oldlen - __mod); - } - - bool - __verify_grouping(const char* __grouping, size_t __grouping_size, - const string& __grouping_tmp) - { - 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(__grouping[__min]) > 0) - __test &= __grouping_tmp[0] <= __grouping[__min]; - return __test; - } - - template - _CharT* - __add_grouping(_CharT* __s, _CharT __sep, - const char* __gbeg, size_t __gsize, - const _CharT* __first, const _CharT* __last) - { - if (__last - __first > *__gbeg - && static_cast(*__gbeg) > 0) - { - const bool __bump = __gsize != 1; - __s = std::__add_grouping(__s, __sep, __gbeg + __bump, - __gsize - __bump, __first, - __last - *__gbeg); - __first = __last - *__gbeg; - *__s++ = __sep; - } - do - *__s++ = *__first++; - while (__first != __last); - return __s; - } - - // 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 class moneypunct; - extern template class moneypunct; - extern template class moneypunct_byname; - extern template class moneypunct_byname; - extern template class money_get; - extern template class money_put; - extern template class numpunct; - extern template class numpunct_byname; - extern template class num_get; - extern template class num_put; - extern template class __timepunct; - extern template class time_put; - extern template class time_put_byname; - extern template class time_get; - extern template class time_get_byname; - extern template class messages; - extern template class messages_byname; - extern template class ctype_byname; - extern template class codecvt_byname; - extern template class collate; - extern template class collate_byname; - - extern template - const codecvt& - use_facet >(const locale&); - - extern template - const collate& - use_facet >(const locale&); - - extern template - const numpunct& - use_facet >(const locale&); - - extern template - const num_put& - use_facet >(const locale&); - - extern template - const num_get& - use_facet >(const locale&); - - extern template - const moneypunct& - use_facet >(const locale&); - - extern template - const moneypunct& - use_facet >(const locale&); - - extern template - const money_put& - use_facet >(const locale&); - - extern template - const money_get& - use_facet >(const locale&); - - extern template - const __timepunct& - use_facet<__timepunct >(const locale&); - - extern template - const time_put& - use_facet >(const locale&); - - extern template - const time_get& - use_facet >(const locale&); - - extern template - const messages& - use_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet<__timepunct >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class moneypunct; - extern template class moneypunct; - extern template class moneypunct_byname; - extern template class moneypunct_byname; - extern template class money_get; - extern template class money_put; - extern template class numpunct; - extern template class numpunct_byname; - extern template class num_get; - extern template class num_put; - extern template class __timepunct; - extern template class time_put; - extern template class time_put_byname; - extern template class time_get; - extern template class time_get_byname; - extern template class messages; - extern template class messages_byname; - extern template class ctype_byname; - extern template class codecvt_byname; - extern template class collate; - extern template class collate_byname; - - extern template - const codecvt& - use_facet >(locale const&); - - extern template - const collate& - use_facet >(const locale&); - - extern template - const numpunct& - use_facet >(const locale&); - - extern template - const num_put& - use_facet >(const locale&); - - extern template - const num_get& - use_facet >(const locale&); - - extern template - const moneypunct& - use_facet >(const locale&); - - extern template - const moneypunct& - use_facet >(const locale&); - - extern template - const money_put& - use_facet >(const locale&); - - extern template - const money_get& - use_facet >(const locale&); - - extern template - const __timepunct& - use_facet<__timepunct >(const locale&); - - extern template - const time_put& - use_facet >(const locale&); - - extern template - const time_get& - use_facet >(const locale&); - - extern template - const messages& - use_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet<__timepunct >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); - - extern template - bool - has_facet >(const locale&); -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/localefwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/localefwd.h deleted file mode 100644 index 258fcc13a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/localefwd.h +++ /dev/null @@ -1,192 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 22.1 Locales -// - -/** @file localefwd.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _LOCALE_FWD_H -#define _LOCALE_FWD_H 1 - -#pragma GCC system_header - -#include -#include // Defines __c_locale, config-specific includes -#include // For ostreambuf_iterator, istreambuf_iterator -#include - -namespace std -{ - // 22.1.1 Locale - class locale; - - // 22.1.3 Convenience interfaces - template - inline bool - isspace(_CharT, const locale&); - - template - inline bool - isprint(_CharT, const locale&); - - template - inline bool - iscntrl(_CharT, const locale&); - - template - inline bool - isupper(_CharT, const locale&); - - template - inline bool - islower(_CharT, const locale&); - - template - inline bool - isalpha(_CharT, const locale&); - - template - inline bool - isdigit(_CharT, const locale&); - - template - inline bool - ispunct(_CharT, const locale&); - - template - inline bool - isxdigit(_CharT, const locale&); - - template - inline bool - isalnum(_CharT, const locale&); - - template - inline bool - isgraph(_CharT, const locale&); - - template - inline _CharT - toupper(_CharT, const locale&); - - template - inline _CharT - tolower(_CharT, const locale&); - - // 22.2.1 and 22.2.1.3 ctype - class ctype_base; - template - class ctype; - template<> class ctype; -#ifdef _GLIBCXX_USE_WCHAR_T - template<> class ctype; -#endif - template - class ctype_byname; - // NB: Specialized for char and wchar_t in locale_facets.h. - - class codecvt_base; - class __enc_traits; - template - class codecvt; - template<> class codecvt; -#ifdef _GLIBCXX_USE_WCHAR_T - template<> class codecvt; -#endif - template - class codecvt_byname; - - // 22.2.2 and 22.2.3 numeric - template > - class num_get; - template > - class num_put; - template class numpunct; - template class numpunct_byname; - - // 22.2.4 collation - template - class collate; - template class - collate_byname; - - // 22.2.5 date and time - class time_base; - template > - class time_get; - template > - class time_get_byname; - template > - class time_put; - template > - class time_put_byname; - - // 22.2.6 money - class money_base; - template > - class money_get; - template > - class money_put; - template - class moneypunct; - template - class moneypunct_byname; - - // 22.2.7 message retrieval - class messages_base; - template - class messages; - template - class messages_byname; - - template - bool - has_facet(const locale& __loc) throw(); - - template - const _Facet& - use_facet(const locale& __loc); - - template - inline const _Facet& - __check_facet(const _Facet* __f) - { - if (!__f) - __throw_bad_cast(); - return *__f; - } -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/mask_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/mask_array.h deleted file mode 100644 index 592aad7dc..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/mask_array.h +++ /dev/null @@ -1,208 +0,0 @@ -// The template and inlines for the -*- C++ -*- mask_array class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file mask_array.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _MASK_ARRAY_H -#define _MASK_ARRAY_H 1 - -#pragma GCC system_header - -namespace std -{ - /** - * @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) 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 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 - void operator=(const _Expr<_Dom,_Tp>&) const; - template - void operator*=(const _Expr<_Dom,_Tp>&) const; - template - void operator/=(const _Expr<_Dom,_Tp>&) const; - template - void operator%=(const _Expr<_Dom,_Tp>&) const; - template - void operator+=(const _Expr<_Dom,_Tp>&) const; - template - void operator-=(const _Expr<_Dom,_Tp>&) const; - template - void operator^=(const _Expr<_Dom,_Tp>&) const; - template - void operator&=(const _Expr<_Dom,_Tp>&) const; - template - void operator|=(const _Expr<_Dom,_Tp>&) const; - template - void operator<<=(const _Expr<_Dom,_Tp>&) const; - template - void operator>>=(const _Expr<_Dom,_Tp>&) const; - - private: - mask_array(_Array<_Tp>, size_t, _Array); - friend class valarray<_Tp>; - - const size_t _M_sz; - const _Array _M_mask; - const _Array<_Tp> _M_array; - - // not implemented - mask_array(); - }; - - template - 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 - inline - mask_array<_Tp>::mask_array(_Array<_Tp> __a, size_t __s, _Array __m) - : _M_sz(__s), _M_mask(__m), _M_array(__a) {} - - template - 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 - inline void - mask_array<_Tp>::operator=(const _Tp& __t) const - { std::__valarray_fill(_M_array, _M_sz, _M_mask, __t); } - - template - inline void - mask_array<_Tp>::operator=(const valarray<_Tp>& __v) const - { std::__valarray_copy(_Array<_Tp>(__v), __v.size(), _M_array, _M_mask); } - - template - template - 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 \ - 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 \ - template \ - 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 - -} // std:: - -#endif /* _MASK_ARRAY_H */ - -// Local Variables: -// mode:c++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ostream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ostream.tcc deleted file mode 100644 index e26ad50d6..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/ostream.tcc +++ /dev/null @@ -1,823 +0,0 @@ -// ostream classes -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 ostream.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -// -// ISO C++ 14882: 27.6.2 Output streams -// - -#ifndef _OSTREAM_TCC -#define _OSTREAM_TCC 1 - -#pragma GCC system_header - -#include - -namespace std -{ - template - 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 - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - 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); - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - 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; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - 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; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(bool __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(short __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 117. basic_ostream uses nonexistent num_put member functions. - long __l; - const ios_base::fmtflags __fmt = (this->flags() - & ios_base::basefield); - if (__fmt == ios_base::oct || __fmt == ios_base::hex) - __l = static_cast(static_cast(__n)); - else - __l = static_cast(__n); - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __l).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(unsigned short __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 117. basic_ostream uses nonexistent num_put member functions. - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), - static_cast(__n)).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(int __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 117. basic_ostream uses nonexistent num_put member functions. - long __l; - const ios_base::fmtflags __fmt = (this->flags() - & ios_base::basefield); - if (__fmt == ios_base::oct || __fmt == ios_base::hex) - __l = static_cast(static_cast(__n)); - else - __l = static_cast(__n); - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __l).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(unsigned int __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 117. basic_ostream uses nonexistent num_put member functions. - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), - static_cast(__n)).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(long __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(unsigned long __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - -#ifdef _GLIBCXX_USE_LONG_LONG - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(long long __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(unsigned long long __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } -#endif - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(float __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 117. basic_ostream uses nonexistent num_put member functions. - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), - static_cast(__n)).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(double __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(long double __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(const void* __n) - { - sentry __cerb(*this); - if (__cerb) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - try - { - const __num_put_type& __np = __check_facet(this->_M_num_put); - if (__np.put(*this, *this, this->fill(), __n).failed()) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - operator<<(__streambuf_type* __sbin) - { - ios_base::iostate __err = ios_base::iostate(ios_base::goodbit); - sentry __cerb(*this); - if (__cerb && __sbin) - { - try - { - if (!__copy_streambufs(__sbin, this->rdbuf())) - __err |= ios_base::failbit; - } - catch(...) - { this->_M_setstate(ios_base::failbit); } - } - else if (!__sbin) - __err |= ios_base::badbit; - if (__err) - this->setstate(__err); - return *this; - } - - template - 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::iostate(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 (...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - } - return *this; - } - - template - 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 (...) - { this->_M_setstate(ios_base::badbit); } - } - return *this; - } - - template - 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::iostate(ios_base::goodbit); - try - { - if (this->rdbuf() && this->rdbuf()->pubsync() == -1) - __err |= ios_base::badbit; - } - catch(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - return *this; - } - - template - 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(...) - { this->_M_setstate(ios_base::badbit); } - return __ret; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - seekp(pos_type __pos) - { - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - return *this; - } - - template - basic_ostream<_CharT, _Traits>& - basic_ostream<_CharT, _Traits>:: - seekp(off_type __off, ios_base::seekdir __dir) - { - ios_base::iostate __err = ios_base::iostate(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(...) - { this->_M_setstate(ios_base::badbit); } - if (__err) - this->setstate(__err); - return *this; - } - - // 27.6.2.5.4 Character inserters. - template - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c) - { - typedef basic_ostream<_CharT, _Traits> __ostream_type; - typename __ostream_type::sentry __cerb(__out); - if (__cerb) - { - try - { - const streamsize __w = __out.width(); - streamsize __len = 1; - _CharT* __cs = &__c; - if (__w > __len) - { - __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * __w)); - __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, - &__c, __w, __len, false); - __len = __w; - } - __out._M_write(__cs, __len); - __out.width(0); - } - catch(...) - { __out._M_setstate(ios_base::badbit); } - } - return __out; - } - - // Specializations. - template - basic_ostream& - operator<<(basic_ostream& __out, char __c) - { - typedef basic_ostream __ostream_type; - typename __ostream_type::sentry __cerb(__out); - if (__cerb) - { - try - { - const streamsize __w = __out.width(); - streamsize __len = 1; - char* __cs = &__c; - if (__w > __len) - { - __cs = static_cast(__builtin_alloca(__w)); - __pad::_S_pad(__out, __out.fill(), __cs, - &__c, __w, __len, false); - __len = __w; - } - __out._M_write(__cs, __len); - __out.width(0); - } - catch(...) - { __out._M_setstate(ios_base::badbit); } - } - return __out; - } - - template - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s) - { - typedef basic_ostream<_CharT, _Traits> __ostream_type; - typename __ostream_type::sentry __cerb(__out); - if (__cerb && __s) - { - try - { - const streamsize __w = __out.width(); - streamsize __len = static_cast(_Traits::length(__s)); - if (__w > __len) - { - _CharT* __cs = (static_cast< - _CharT*>(__builtin_alloca(sizeof(_CharT) - * __w))); - __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, - __s, __w, __len, false); - __s = __cs; - __len = __w; - } - __out._M_write(__s, __len); - __out.width(0); - } - catch(...) - { __out._M_setstate(ios_base::badbit); } - } - else if (!__s) - __out.setstate(ios_base::badbit); - return __out; - } - - template - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s) - { - typedef basic_ostream<_CharT, _Traits> __ostream_type; - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 167. Improper use of traits_type::length() - // Note that this is only in 'Review' status. - typedef char_traits __traits_type; - typename __ostream_type::sentry __cerb(__out); - if (__cerb && __s) - { - size_t __clen = __traits_type::length(__s); - _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) - * __clen)); - for (size_t __i = 0; __i < __clen; ++__i) - __ws[__i] = __out.widen(__s[__i]); - _CharT* __str = __ws; - - try - { - const streamsize __w = __out.width(); - streamsize __len = static_cast(__clen); - if (__w > __len) - { - _CharT* __cs = (static_cast< - _CharT*>(__builtin_alloca(sizeof(_CharT) - * __w))); - __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, - __ws, __w, __len, false); - __str = __cs; - __len = __w; - } - __out._M_write(__str, __len); - __out.width(0); - } - catch(...) - { __out._M_setstate(ios_base::badbit); } - } - else if (!__s) - __out.setstate(ios_base::badbit); - return __out; - } - - // Partial specializations. - template - basic_ostream& - operator<<(basic_ostream& __out, const char* __s) - { - typedef basic_ostream __ostream_type; - typename __ostream_type::sentry __cerb(__out); - if (__cerb && __s) - { - try - { - const streamsize __w = __out.width(); - streamsize __len = static_cast(_Traits::length(__s)); - if (__w > __len) - { - char* __cs = static_cast(__builtin_alloca(__w)); - __pad::_S_pad(__out, __out.fill(), __cs, - __s, __w, __len, false); - __s = __cs; - __len = __w; - } - __out._M_write(__s, __len); - __out.width(0); - } - catch(...) - { __out._M_setstate(ios_base::badbit); } - } - else if (!__s) - __out.setstate(ios_base::badbit); - return __out; - } - - // 21.3.7.9 basic_string::operator<< - template - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __out, - const basic_string<_CharT, _Traits, _Alloc>& __str) - { - typedef basic_ostream<_CharT, _Traits> __ostream_type; - typename __ostream_type::sentry __cerb(__out); - if (__cerb) - { - const streamsize __w = __out.width(); - streamsize __len = static_cast(__str.size()); - const _CharT* __s = __str.data(); - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 25. String operator<< uses width() value wrong - if (__w > __len) - { - _CharT* __cs = (static_cast< - _CharT*>(__builtin_alloca(sizeof(_CharT) * __w))); - __pad<_CharT, _Traits>::_S_pad(__out, __out.fill(), __cs, __s, - __w, __len, false); - __s = __cs; - __len = __w; - } - __out._M_write(__s, __len); - __out.width(0); - } - return __out; - } - - // 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 class basic_ostream; - 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*); - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class basic_ostream; - 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*); -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/postypes.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/postypes.h deleted file mode 100644 index 6df0ef934..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/postypes.h +++ /dev/null @@ -1,215 +0,0 @@ -// Position types -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 27.4.1 - Types -// ISO C++ 14882: 27.4.3 - Template class fpos -// - -/** @file postypes.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _GLIBCXX_POSTYPES_H -#define _GLIBCXX_POSTYPES_H 1 - -#pragma GCC system_header - -#include // For mbstate_t - -#ifdef _GLIBCXX_HAVE_STDINT_H -#include // For int64_t -#endif - -namespace std -{ - // 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 verbage, 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, and char_traits. - * - * @if maint - * 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. - * @endif - */ -#ifdef _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 - - template - class fpos; - - /** - * @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 - 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 only requires that operator== must be an - // equivalence relation. In this implementation two fpos - // objects belong to the same equivalence class if the contained - // offsets compare equal. - /// Test if equivalent to another position. - bool - operator==(const fpos& __other) const - { return _M_off == __other._M_off; } - - /// Test if not equivalent to another position. - bool - operator!=(const fpos& __other) const - { return _M_off != __other._M_off; } - - // The standard requires that this operator must be defined, but - // gives no semantics. In this implemenation it just adds it's - // 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 implemenation it just subtracts - // it's 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 it's 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 it's 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 it's 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; } - }; - - // 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 - /// File position for char streams. - typedef fpos streampos; - /// File position for wchar_t streams. - typedef fpos wstreampos; -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/slice_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/slice_array.h deleted file mode 100644 index bde07d5e7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/slice_array.h +++ /dev/null @@ -1,273 +0,0 @@ -// The template and inlines for the -*- C++ -*- slice_array class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file slice_array.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _SLICE_ARRAY_H -#define _SLICE_ARRAY_H 1 - -#pragma GCC system_header - -namespace std -{ - /** - * @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 - }; - - // The default constructor constructor is not required to initialize - // data members with any meaningful values, so we choose to do nothing. - inline - slice::slice() {} - - 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 - 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 - void operator=(const _Expr<_Dom, _Tp>&) const; - template - void operator*=(const _Expr<_Dom, _Tp>&) const; - template - void operator/=(const _Expr<_Dom, _Tp>&) const; - template - void operator%=(const _Expr<_Dom, _Tp>&) const; - template - void operator+=(const _Expr<_Dom, _Tp>&) const; - template - void operator-=(const _Expr<_Dom, _Tp>&) const; - template - void operator^=(const _Expr<_Dom, _Tp>&) const; - template - void operator&=(const _Expr<_Dom, _Tp>&) const; - template - void operator|=(const _Expr<_Dom, _Tp>&) const; - template - void operator<<=(const _Expr<_Dom, _Tp>&) const; - template - 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 - 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 - 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 - // inline slice_array<_Tp>::~slice_array () {} - - template - 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 - inline void - slice_array<_Tp>::operator=(const _Tp& __t) const - { std::__valarray_fill(_M_array, _M_sz, _M_stride, __t); } - - template - inline void - slice_array<_Tp>::operator=(const valarray<_Tp>& __v) const - { std::__valarray_copy(_Array<_Tp>(__v), _M_array, _M_sz, _M_stride); } - - template - template - 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 \ - 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 \ - template \ - 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 - -} // std:: - -#endif /* _SLICE_ARRAY_H */ - -// Local Variables: -// mode:c++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/sstream.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/sstream.tcc deleted file mode 100644 index 28fb1959e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/sstream.tcc +++ /dev/null @@ -1,238 +0,0 @@ -// String based streams -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 sstream.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -// -// ISO C++ 14882: 27.7 String-based streams -// - -#ifndef _SSTREAM_TCC -#define _SSTREAM_TCC 1 - -#pragma GCC system_header - -#include - -namespace std -{ - template - 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 - 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. - 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. - // Then, in virtue of DR 169 (TC) we are allowed to grow more - // than one char. - 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()); - _M_string.swap(__tmp); - _M_sync(const_cast(_M_string.data()), - this->gptr() - this->eback(), this->pptr() - this->pbase()); - } - return this->sputc(traits_type::to_char_type(__c)); - } - - template - 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 - 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->gbump((__beg + __newoffi) - this->gptr()); - __ret = pos_type(__newoffi); - } - if ((__testout || __testboth) - && __newoffo >= 0 - && this->egptr() - __beg >= __newoffo) - { - this->pbump((__beg + __newoffo) - this->pptr()); - __ret = pos_type(__newoffo); - } - } - return __ret; - } - - template - 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 && (__testin || __testout)) - { - _M_update_egptr(); - - const off_type __pos(__sp); - const bool __testpos = 0 <= __pos - && __pos <= this->egptr() - __beg; - if (__testpos) - { - if (__testin) - this->gbump((__beg + __pos) - this->gptr()); - if (__testout) - this->pbump((__beg + __pos) - this->pptr()); - __ret = __sp; - } - } - return __ret; - } - - // 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 class basic_stringbuf; - extern template class basic_istringstream; - extern template class basic_ostringstream; - extern template class basic_stringstream; - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class basic_stringbuf; - extern template class basic_istringstream; - extern template class basic_ostringstream; - extern template class basic_stringstream; -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algo.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algo.h deleted file mode 100644 index 1a7fd6eee..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algo.h +++ /dev/null @@ -1,5307 +0,0 @@ -// Algorithm implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_algo.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _ALGO_H -#define _ALGO_H 1 - -#include -#include // for _Temporary_buffer -#include - -// See concept_check.h for the __glibcxx_*_requires macros. - -namespace std -{ - /** - * @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 - inline 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 - inline 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; - } - - /** - * @brief Apply a function to every element of a sequence. - * @param first An input iterator. - * @param last An input iterator. - * @param f A unary function object. - * @return @p f. - * - * 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 - _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 __f; - } - - /** - * @if maint - * This is an overload used by find() for the Input Iterator case. - * @endif - */ - template - inline _InputIterator - __find(_InputIterator __first, _InputIterator __last, - const _Tp& __val, input_iterator_tag) - { - while (__first != __last && !(*__first == __val)) - ++__first; - return __first; - } - - /** - * @if maint - * This is an overload used by find_if() for the Input Iterator case. - * @endif - */ - template - inline _InputIterator - __find_if(_InputIterator __first, _InputIterator __last, - _Predicate __pred, input_iterator_tag) - { - while (__first != __last && !__pred(*__first)) - ++__first; - return __first; - } - - /** - * @if maint - * This is an overload used by find() for the RAI case. - * @endif - */ - template - _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; - } - } - - /** - * @if maint - * This is an overload used by find_if() for the RAI case. - * @endif - */ - template - _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; - } - } - - /** - * @brief Find the first occurrence of a value in a sequence. - * @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 - 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. - * @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 - 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 two adjacent values in a sequence that are equal. - * @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 - _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. - * @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 - _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. - * @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 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. - * @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 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. - * @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 - _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 __tmp(__first2); - ++__tmp; - if (__tmp == __last2) - return std::find(__first1, __last1, *__first2); - - // General case. - _ForwardIterator2 __p1, __p; - __p1 = __first2; ++__p1; - _ForwardIterator1 __current = __first1; - - while (__first1 != __last1) - { - __first1 = std::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. - * @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 - _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 __tmp(__first2); - ++__tmp; - if (__tmp == __last2) - { - while (__first1 != __last1 && !__predicate(*__first1, *__first2)) - ++__first1; - return __first1; - } - - // General case. - _ForwardIterator2 __p1, __p; - __p1 = __first2; ++__p1; - _ForwardIterator1 __current = __first1; - - while (__first1 != __last1) - { - while (__first1 != __last1) - { - if (__predicate(*__first1, *__first2)) - break; - ++__first1; - } - while (__first1 != __last1 && !__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; - } - - /** - * @if maint - * This is an uglified - * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&) - * overloaded for forward iterators. - * @endif - */ - template - _ForwardIterator - __search_n(_ForwardIterator __first, _ForwardIterator __last, - _Integer __count, const _Tp& __val, - std::forward_iterator_tag) - { - __first = std::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 = std::find(++__i, __last, __val); - } - return __last; - } - - /** - * @if maint - * This is an uglified - * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&) - * overloaded for random access iterators. - * @endif - */ - template - _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; - } - } - - /** - * @brief Search a sequence for a number of consecutive values. - * @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 - _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 std::find(__first, __last, __val); - return std::__search_n(__first, __last, __count, __val, - std::__iterator_category(__first)); - } - - /** - * @if maint - * This is an uglified - * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&, - * _BinaryPredicate) - * overloaded for forward iterators. - * @endif - */ - template - _ForwardIterator - __search_n(_ForwardIterator __first, _ForwardIterator __last, - _Integer __count, const _Tp& __val, - _BinaryPredicate __binary_pred, std::forward_iterator_tag) - { - while (__first != __last && !__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 && *__i == __val) - { - ++__i; - --__n; - } - if (__n == 1) - return __first; - if (__i == __last) - return __last; - __first = ++__i; - while (__first != __last && !__binary_pred(*__first, __val)) - ++__first; - } - return __last; - } - - /** - * @if maint - * This is an uglified - * search_n(_ForwardIterator, _ForwardIterator, _Integer, const _Tp&, - * _BinaryPredicate) - * overloaded for random access iterators. - * @endif - */ - template - _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 (!__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; - } - } - - /** - * @brief Search a sequence for a number of consecutive values using a - * predicate. - * @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 - _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 && !__binary_pred(*__first, __val)) - ++__first; - return __first; - } - return std::__search_n(__first, __last, __count, __val, __binary_pred, - std::__iterator_category(__first)); - } - - /** - * @brief Swap the elements of two sequences. - * @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 - _ForwardIterator2 - swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, - _ForwardIterator2 __first2) - { - // concept requirements - __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< - _ForwardIterator1>) - __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< - _ForwardIterator2>) - __glibcxx_function_requires(_ConvertibleConcept< - typename iterator_traits<_ForwardIterator1>::value_type, - typename iterator_traits<_ForwardIterator2>::value_type>) - __glibcxx_function_requires(_ConvertibleConcept< - typename iterator_traits<_ForwardIterator2>::value_type, - typename iterator_traits<_ForwardIterator1>::value_type>) - __glibcxx_requires_valid_range(__first1, __last1); - - for ( ; __first1 != __last1; ++__first1, ++__first2) - std::iter_swap(__first1, __first2); - return __first2; - } - - /** - * @brief Perform an operation on a sequence. - * @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 - _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. - * @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 - _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. - * @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 - 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. - * @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 - 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 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 - _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. - * @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 - _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; - } - - /** - * @brief Assign the result of a function object to each value in a - * sequence. - * @param first A forward iterator. - * @param last A forward iterator. - * @param gen A function object taking no arguments. - * @return generate() returns no value. - * - * Performs the assignment @c *i = @p gen() for each @c i in the range - * @p [first,last). - */ - template - 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. - * @param first A forward iterator. - * @param n The length of the sequence. - * @param gen A function object taking no arguments. - * @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). - */ - template - _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 ( ; __n > 0; --__n, ++__first) - *__first = __gen(); - return __first; - } - - /** - * @brief Copy a sequence, removing elements of a given value. - * @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 - _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. - * @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. - * - * remove_copy_if() is stable, so the relative order of elements that are - * copied is unchanged. - */ - template - _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 (!__pred(*__first)) - { - *__result = *__first; - ++__result; - } - return __result; - } - - /** - * @brief Remove elements from a sequence. - * @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 - _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 = std::find(__first, __last, __value); - _ForwardIterator __i = __first; - return __first == __last ? __first - : std::remove_copy(++__i, __last, - __first, __value); - } - - /** - * @brief Remove elements from a sequence using a predicate. - * @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 - _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 = std::find_if(__first, __last, __pred); - _ForwardIterator __i = __first; - return __first == __last ? __first - : std::remove_copy_if(++__i, __last, - __first, __pred); - } - - /** - * @if maint - * This is an uglified unique_copy(_InputIterator, _InputIterator, - * _OutputIterator) - * overloaded for output iterators. - * @endif - */ - template - _OutputIterator - __unique_copy(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, - 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; - } - - /** - * @if maint - * This is an uglified unique_copy(_InputIterator, _InputIterator, - * _OutputIterator) - * overloaded for forward iterators. - * @endif - */ - template - _ForwardIterator - __unique_copy(_InputIterator __first, _InputIterator __last, - _ForwardIterator __result, - forward_iterator_tag) - { - // concept requirements -- taken care of in dispatching function - *__result = *__first; - while (++__first != __last) - if (!(*__result == *__first)) - *++__result = *__first; - return ++__result; - } - - /** - * @if maint - * This is an uglified - * unique_copy(_InputIterator, _InputIterator, _OutputIterator, - * _BinaryPredicate) - * overloaded for output iterators. - * @endif - */ - template - _OutputIterator - __unique_copy(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, - _BinaryPredicate __binary_pred, - 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 (!__binary_pred(__value, *__first)) - { - __value = *__first; - *++__result = __value; - } - return ++__result; - } - - /** - * @if maint - * This is an uglified - * unique_copy(_InputIterator, _InputIterator, _OutputIterator, - * _BinaryPredicate) - * overloaded for forward iterators. - * @endif - */ - template - _ForwardIterator - __unique_copy(_InputIterator __first, _InputIterator __last, - _ForwardIterator __result, - _BinaryPredicate __binary_pred, - 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 (!__binary_pred(*__result, *__first)) *++__result = *__first; - return ++__result; - } - - /** - * @brief Copy a sequence, removing consecutive duplicate values. - * @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. - */ - template - 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); - - typedef typename iterator_traits<_OutputIterator>::iterator_category - _IterType; - - if (__first == __last) return __result; - return std::__unique_copy(__first, __last, __result, _IterType()); - } - - /** - * @brief Copy a sequence, removing consecutive values using a predicate. - * @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. - */ - template - 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); - - typedef typename iterator_traits<_OutputIterator>::iterator_category - _IterType; - - if (__first == __last) return __result; - return std::__unique_copy(__first, __last, __result, - __binary_pred, _IterType()); - } - - /** - * @brief Remove consecutive duplicate values from a sequence. - * @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 - _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 = std::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 = *__first; - return ++__dest; - } - - /** - * @brief Remove consecutive values from a sequence using a predicate. - * @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 - _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 = std::adjacent_find(__first, __last, __binary_pred); - if (__first == __last) - return __last; - - // Do the real copy work. - _ForwardIterator __dest = __first; - ++__first; - while (++__first != __last) - if (!__binary_pred(*__dest, *__first)) - *++__dest = *__first; - return ++__dest; - } - - /** - * @if maint - * This is an uglified reverse(_BidirectionalIterator, - * _BidirectionalIterator) - * overloaded for bidirectional iterators. - * @endif - */ - template - void - __reverse(_BidirectionalIterator __first, _BidirectionalIterator __last, - bidirectional_iterator_tag) - { - while (true) - if (__first == __last || __first == --__last) - return; - else - { - std::iter_swap(__first, __last); - ++__first; - } - } - - /** - * @if maint - * This is an uglified reverse(_BidirectionalIterator, - * _BidirectionalIterator) - * overloaded for random access iterators. - * @endif - */ - template - 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. - * @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 - 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. - * @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 - _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; - } - - - /** - * @if maint - * This is a helper function for the rotate algorithm specialized on RAIs. - * It returns the greatest common divisor of two integer values. - * @endif - */ - template - _EuclideanRingElement - __gcd(_EuclideanRingElement __m, _EuclideanRingElement __n) - { - while (__n != 0) - { - _EuclideanRingElement __t = __m % __n; - __m = __n; - __n = __t; - } - return __m; - } - - /** - * @if maint - * This is a helper function for the rotate algorithm. - * @endif - */ - template - void - __rotate(_ForwardIterator __first, - _ForwardIterator __middle, - _ForwardIterator __last, - forward_iterator_tag) - { - if (__first == __middle || __last == __middle) - return; - - _ForwardIterator __first2 = __middle; - do - { - swap(*__first, *__first2); - ++__first; - ++__first2; - if (__first == __middle) - __middle = __first2; - } - while (__first2 != __last); - - __first2 = __middle; - - while (__first2 != __last) - { - swap(*__first, *__first2); - ++__first; - ++__first2; - if (__first == __middle) - __middle = __first2; - else if (__first2 == __last) - __first2 = __middle; - } - } - - /** - * @if maint - * This is a helper function for the rotate algorithm. - * @endif - */ - template - 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) - { - swap(*__first, *--__last); - ++__first; - } - - if (__first == __middle) - std::__reverse(__middle, __last, bidirectional_iterator_tag()); - else - std::__reverse(__first, __middle, bidirectional_iterator_tag()); - } - - /** - * @if maint - * This is a helper function for the rotate algorithm. - * @endif - */ - template - 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; - - const _Distance __n = __last - __first; - const _Distance __k = __middle - __first; - const _Distance __l = __n - __k; - - if (__k == __l) - { - std::swap_ranges(__first, __middle, __middle); - return; - } - - const _Distance __d = __gcd(__n, __k); - - for (_Distance __i = 0; __i < __d; __i++) - { - _ValueType __tmp = *__first; - _RandomAccessIterator __p = __first; - - if (__k < __l) - { - for (_Distance __j = 0; __j < __l / __d; __j++) - { - if (__p > __first + __l) - { - *__p = *(__p - __l); - __p -= __l; - } - - *__p = *(__p + __k); - __p += __k; - } - } - else - { - for (_Distance __j = 0; __j < __k / __d - 1; __j ++) - { - if (__p < __last - __k) - { - *__p = *(__p + __k); - __p += __k; - } - *__p = * (__p - __l); - __p -= __l; - } - } - - *__p = __tmp; - ++__first; - } - } - - /** - * @brief Rotate the elements of a sequence. - * @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 - 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. - * @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 - _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)); - } - - /** - * @brief Randomly shuffle the elements of a sequence. - * @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 - 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. - * @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 - void - random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last, - _RandomNumberGenerator& __rand) - { - // 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)); - } - - - /** - * @if maint - * This is a helper function... - * @endif - */ - template - _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)) - { - swap(*__first, *__next); - ++__first; - } - - return __first; - } - - /** - * @if maint - * This is a helper function... - * @endif - */ - template - _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 (!__pred(*__last)) - --__last; - else - break; - std::iter_swap(__first, __last); - ++__first; - } - } - - /** - * @brief Move elements for which a predicate is true to the beginning - * of a sequence. - * @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 - 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)); - } - - - /** - * @if maint - * This is a helper function... - * @endif - */ - template - _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; - } - - /** - * @if maint - * This is a helper function... - * @endif - */ - template - _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 = *__first; - ++__result1; - } - else - { - *__result2 = *__first; - ++__result2; - } - std::copy(__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. - * @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 - _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(), __buf.size()); - else - return - std::__inplace_stable_partition(__first, __last, __pred, - _DistanceType(__buf.requested_size())); - } - } - - /** - * @if maint - * This is a helper function... - * @endif - */ - template - _RandomAccessIterator - __unguarded_partition(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Tp __pivot) - { - while (true) - { - while (*__first < __pivot) - ++__first; - --__last; - while (__pivot < *__last) - --__last; - if (!(__first < __last)) - return __first; - std::iter_swap(__first, __last); - ++__first; - } - } - - /** - * @if maint - * This is a helper function... - * @endif - */ - template - _RandomAccessIterator - __unguarded_partition(_RandomAccessIterator __first, - _RandomAccessIterator __last, - _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; - } - } - - /** - * @if maint - * @doctodo - * This controls some aspect of the sort routines. - * @endif - */ - enum { _S_threshold = 16 }; - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - void - __unguarded_linear_insert(_RandomAccessIterator __last, _Tp __val) - { - _RandomAccessIterator __next = __last; - --__next; - while (__val < *__next) - { - *__last = *__next; - __last = __next; - --__next; - } - *__last = __val; - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - void - __unguarded_linear_insert(_RandomAccessIterator __last, _Tp __val, - _Compare __comp) - { - _RandomAccessIterator __next = __last; - --__next; - while (__comp(__val, *__next)) - { - *__last = *__next; - __last = __next; - --__next; - } - *__last = __val; - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - void - __insertion_sort(_RandomAccessIterator __first, - _RandomAccessIterator __last) - { - if (__first == __last) - return; - - for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) - { - typename iterator_traits<_RandomAccessIterator>::value_type - __val = *__i; - if (__val < *__first) - { - std::copy_backward(__first, __i, __i + 1); - *__first = __val; - } - else - std::__unguarded_linear_insert(__i, __val); - } - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - void - __insertion_sort(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp) - { - if (__first == __last) return; - - for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i) - { - typename iterator_traits<_RandomAccessIterator>::value_type - __val = *__i; - if (__comp(__val, *__first)) - { - std::copy_backward(__first, __i, __i + 1); - *__first = __val; - } - else - std::__unguarded_linear_insert(__i, __val, __comp); - } - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - 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, _ValueType(*__i)); - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - 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, _ValueType(*__i), __comp); - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - 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); - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - 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); - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - inline _Size - __lg(_Size __n) - { - _Size __k; - for (__k = 0; __n != 1; __n >>= 1) - ++__k; - return __k; - } - - /** - * @brief Sort the smallest elements of a sequence. - * @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 - 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::make_heap(__first, __middle); - for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) - if (*__i < *__first) - std::__pop_heap(__first, __middle, __i, _ValueType(*__i)); - std::sort_heap(__first, __middle); - } - - /** - * @brief Sort the smallest elements of a sequence using a predicate - * for comparison. - * @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 - 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::make_heap(__first, __middle, __comp); - for (_RandomAccessIterator __i = __middle; __i < __last; ++__i) - if (__comp(*__i, *__first)) - std::__pop_heap(__first, __middle, __i, _ValueType(*__i), __comp); - std::sort_heap(__first, __middle, __comp); - } - - /** - * @brief Copy the smallest elements of a sequence. - * @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 - _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(_LessThanComparableConcept<_OutputValueType>) - __glibcxx_function_requires(_LessThanComparableConcept<_InputValueType>) - __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. - * @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 - _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, - _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; - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - void - __introsort_loop(_RandomAccessIterator __first, - _RandomAccessIterator __last, - _Size __depth_limit) - { - typedef typename iterator_traits<_RandomAccessIterator>::value_type - _ValueType; - - while (__last - __first > int(_S_threshold)) - { - if (__depth_limit == 0) - { - std::partial_sort(__first, __last, __last); - return; - } - --__depth_limit; - _RandomAccessIterator __cut = - std::__unguarded_partition(__first, __last, - _ValueType(std::__median(*__first, - *(__first - + (__last - - __first) - / 2), - *(__last - - 1)))); - std::__introsort_loop(__cut, __last, __depth_limit); - __last = __cut; - } - } - - /** - * @if maint - * This is a helper function for the sort routine. - * @endif - */ - template - void - __introsort_loop(_RandomAccessIterator __first, - _RandomAccessIterator __last, - _Size __depth_limit, _Compare __comp) - { - typedef typename iterator_traits<_RandomAccessIterator>::value_type - _ValueType; - - while (__last - __first > int(_S_threshold)) - { - if (__depth_limit == 0) - { - std::partial_sort(__first, __last, __last, __comp); - return; - } - --__depth_limit; - _RandomAccessIterator __cut = - std::__unguarded_partition(__first, __last, - _ValueType(std::__median(*__first, - *(__first - + (__last - - __first) - / 2), - *(__last - 1), - __comp)), - __comp); - std::__introsort_loop(__cut, __last, __depth_limit, __comp); - __last = __cut; - } - } - - /** - * @brief Sort the elements of a sequence. - * @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 - 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, __lg(__last - __first) * 2); - std::__final_insertion_sort(__first, __last); - } - } - - /** - * @brief Sort the elements of a sequence using a predicate for comparison. - * @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 - 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, __lg(__last - __first) * 2, - __comp); - std::__final_insertion_sort(__first, __last, __comp); - } - } - - /** - * @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 "not less than" @a val, - * or end() if every element is less than @a val. - * @ingroup binarysearch - */ - template - _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 - // Note that these are slightly stricter than those of the 4-argument - // version, defined next. The difference is in the strictness of the - // comparison operations... so for looser checking, define your own - // comparison function, as was intended. - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_SameTypeConcept<_Tp, _ValueType>) - __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) - __glibcxx_requires_partitioned(__first, __last, __val); - - _DistanceType __len = std::distance(__first, __last); - _DistanceType __half; - _ForwardIterator __middle; - - while (__len > 0) - { - __half = __len >> 1; - __middle = __first; - std::advance(__middle, __half); - if (*__middle < __val) - { - __first = __middle; - ++__first; - __len = __len - __half - 1; - } - else - __len = __half; - } - return __first; - } - - /** - * @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. - * @param comp A functor to use for comparisons. - * @return An iterator pointing to the first element "not less than" @a val, - * or end() if every element is less than @a val. - * @ingroup binarysearch - * - * The comparison function should have the same effects on ordering as - * the function used for the initial sort. - */ - template - _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_pred(__first, __last, __val, __comp); - - _DistanceType __len = std::distance(__first, __last); - _DistanceType __half; - _ForwardIterator __middle; - - while (__len > 0) - { - __half = __len >> 1; - __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. - * @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 binarysearch - */ - template - _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 - // See comments on lower_bound. - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_SameTypeConcept<_Tp, _ValueType>) - __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) - __glibcxx_requires_partitioned(__first, __last, __val); - - _DistanceType __len = std::distance(__first, __last); - _DistanceType __half; - _ForwardIterator __middle; - - while (__len > 0) - { - __half = __len >> 1; - __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. - * @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 binarysearch - * - * The comparison function should have the same effects on ordering as - * the function used for the initial sort. - */ - template - _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_pred(__first, __last, __val, __comp); - - _DistanceType __len = std::distance(__first, __last); - _DistanceType __half; - _ForwardIterator __middle; - - while (__len > 0) - { - __half = __len >> 1; - __middle = __first; - std::advance(__middle, __half); - if (__comp(__val, *__middle)) - __len = __half; - else - { - __first = __middle; - ++__first; - __len = __len - __half - 1; - } - } - return __first; - } - - /** - * @if maint - * This is a helper function for the merge routines. - * @endif - */ - template - 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); - } - - /** - * @if maint - * This is a helper function for the merge routines. - * @endif - */ - template - 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); - } - - /** - * @if maint - * This is a helper function for the stable sorting routines. - * @endif - */ - template - 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); - } - - /** - * @if maint - * This is a helper function for the stable sorting routines. - * @endif - */ - template - 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); - } - - /** - * @brief Merges two sorted ranges. - * @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 "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. - */ - template - _OutputIterator - merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_requires_sorted(__first1, __last1); - __glibcxx_requires_sorted(__first2, __last2); - - 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. - * @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 - _OutputIterator - merge(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result, _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_requires_sorted_pred(__first1, __last1, __comp); - __glibcxx_requires_sorted_pred(__first2, __last2, __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)); - } - - template - 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::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::merge(__first, __first + __step_size, __first + __step_size, __last, - __result); - } - - template - 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::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::merge(__first, __first + __step_size, - __first + __step_size, __last, - __result, - __comp); - } - - enum { _S_chunk_size = 7 }; - - template - 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 - 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); - } - - template - 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 - 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; - } - } - - /** - * @if maint - * This is a helper function for the merge routines. - * @endif - */ - template - _BidirectionalIterator3 - __merge_backward(_BidirectionalIterator1 __first1, - _BidirectionalIterator1 __last1, - _BidirectionalIterator2 __first2, - _BidirectionalIterator2 __last2, - _BidirectionalIterator3 __result) - { - if (__first1 == __last1) - return std::copy_backward(__first2, __last2, __result); - if (__first2 == __last2) - return std::copy_backward(__first1, __last1, __result); - --__last1; - --__last2; - while (true) - { - if (*__last2 < *__last1) - { - *--__result = *__last1; - if (__first1 == __last1) - return std::copy_backward(__first2, ++__last2, __result); - --__last1; - } - else - { - *--__result = *__last2; - if (__first2 == __last2) - return std::copy_backward(__first1, ++__last1, __result); - --__last2; - } - } - } - - /** - * @if maint - * This is a helper function for the merge routines. - * @endif - */ - template - _BidirectionalIterator3 - __merge_backward(_BidirectionalIterator1 __first1, - _BidirectionalIterator1 __last1, - _BidirectionalIterator2 __first2, - _BidirectionalIterator2 __last2, - _BidirectionalIterator3 __result, - _Compare __comp) - { - if (__first1 == __last1) - return std::copy_backward(__first2, __last2, __result); - if (__first2 == __last2) - return std::copy_backward(__first1, __last1, __result); - --__last1; - --__last2; - while (true) - { - if (__comp(*__last2, *__last1)) - { - *--__result = *__last1; - if (__first1 == __last1) - return std::copy_backward(__first2, ++__last2, __result); - --__last1; - } - else - { - *--__result = *__last2; - if (__first2 == __last2) - return std::copy_backward(__first1, ++__last1, __result); - --__last2; - } - } - } - - /** - * @if maint - * This is a helper function for the merge routines. - * @endif - */ - template - _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 = std::copy(__middle, __last, __buffer); - std::copy_backward(__first, __middle, __last); - return std::copy(__buffer, __buffer_end, __first); - } - else if (__len1 <= __buffer_size) - { - __buffer_end = std::copy(__first, __middle, __buffer); - std::copy(__middle, __last, __first); - return std::copy_backward(__buffer, __buffer_end, __last); - } - else - { - std::rotate(__first, __middle, __last); - std::advance(__first, std::distance(__middle, __last)); - return __first; - } - } - - /** - * @if maint - * This is a helper function for the merge routines. - * @endif - */ - template - 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 = std::copy(__first, __middle, __buffer); - std::merge(__buffer, __buffer_end, __middle, __last, __first); - } - else if (__len2 <= __buffer_size) - { - _Pointer __buffer_end = std::copy(__middle, __last, __buffer); - std::__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); - } - } - - /** - * @if maint - * This is a helper function for the merge routines. - * @endif - */ - template - 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 = std::copy(__first, __middle, __buffer); - std::merge(__buffer, __buffer_end, __middle, __last, __first, __comp); - } - else if (__len2 <= __buffer_size) - { - _Pointer __buffer_end = std::copy(__middle, __last, __buffer); - std::__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); - } - } - - /** - * @brief Merges two sorted ranges in place. - * @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 - 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. - * @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 - 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 - 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 - 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); - } - - /** - * @brief Sort the elements of a sequence, preserving the relative order - * of equivalent elements. - * @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 - 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. - * @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 - 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 Sort a sequence just enough to find a particular position. - * @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 - 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); - - while (__last - __first > 3) - { - _RandomAccessIterator __cut = - std::__unguarded_partition(__first, __last, - _ValueType(std::__median(*__first, - *(__first - + (__last - - __first) - / 2), - *(__last - - 1)))); - if (__cut <= __nth) - __first = __cut; - else - __last = __cut; - } - std::__insertion_sort(__first, __last); - } - - /** - * @brief Sort a sequence just enough to find a particular position - * using a predicate for comparison. - * @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 - 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); - - while (__last - __first > 3) - { - _RandomAccessIterator __cut = - std::__unguarded_partition(__first, __last, - _ValueType(std::__median(*__first, - *(__first - + (__last - - __first) - / 2), - *(__last - 1), - __comp)), __comp); - if (__cut <= __nth) - __first = __cut; - else - __last = __cut; - } - std::__insertion_sort(__first, __last, __comp); - } - - /** - * @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. - * @return An pair of iterators defining the subrange. - * @ingroup binarysearch - * - * 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 - 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 - // See comments on lower_bound. - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_SameTypeConcept<_Tp, _ValueType>) - __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) - __glibcxx_requires_partitioned(__first, __last, __val); - - _DistanceType __len = std::distance(__first, __last); - _DistanceType __half; - _ForwardIterator __middle, __left, __right; - - while (__len > 0) - { - __half = __len >> 1; - __middle = __first; - std::advance(__middle, __half); - if (*__middle < __val) - { - __first = __middle; - ++__first; - __len = __len - __half - 1; - } - else if (__val < *__middle) - __len = __half; - else - { - __left = std::lower_bound(__first, __middle, __val); - std::advance(__first, __len); - __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 binarysearch - * - * 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 - 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_pred(__first, __last, __val, __comp); - - _DistanceType __len = std::distance(__first, __last); - _DistanceType __half; - _ForwardIterator __middle, __left, __right; - - while (__len > 0) - { - __half = __len >> 1; - __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 - { - __left = std::lower_bound(__first, __middle, __val, __comp); - std::advance(__first, __len); - __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. - * @param first An iterator. - * @param last Another iterator. - * @param val The search term. - * @return True if @a val (or its equivelent) is in [@a first,@a last ]. - * @ingroup binarysearch - * - * 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 - bool - binary_search(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __val) - { - // concept requirements - // See comments on lower_bound. - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_SameTypeConcept<_Tp, - typename iterator_traits<_ForwardIterator>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) - __glibcxx_requires_partitioned(__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. - * @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 equivelent) is in [@a first,@a last ]. - * @ingroup binarysearch - * - * 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 - bool - binary_search(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __val, _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, - typename iterator_traits<_ForwardIterator>::value_type, _Tp>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, _Tp, - typename iterator_traits<_ForwardIterator>::value_type>) - __glibcxx_requires_partitioned_pred(__first, __last, __val, __comp); - - _ForwardIterator __i = std::lower_bound(__first, __last, __val, __comp); - return __i != __last && !__comp(__val, *__i); - } - - // 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 setoperations - * - * 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 - bool - includes(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_requires_sorted(__first1, __last1); - __glibcxx_requires_sorted(__first2, __last2); - - 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. - * @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 setoperations - * - * 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 - bool - includes(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_requires_sorted_pred(__first1, __last1, __comp); - __glibcxx_requires_sorted_pred(__first2, __last2, __comp); - - while (__first1 != __last1 && __first2 != __last2) - if (__comp(*__first2, *__first1)) - return false; - else if(__comp(*__first1, *__first2)) - ++__first1; - else - ++__first1, ++__first2; - - return __first2 == __last2; - } - - /** - * @brief Return the union of two sorted ranges. - * @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 setoperations - * - * 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 - _OutputIterator - set_union(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_requires_sorted(__first1, __last1); - __glibcxx_requires_sorted(__first2, __last2); - - 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. - * @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 setoperations - * - * 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 - _OutputIterator - set_union(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result, _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_requires_sorted_pred(__first1, __last1, __comp); - __glibcxx_requires_sorted_pred(__first2, __last2, __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. - * @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 setoperations - * - * 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 - _OutputIterator - set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_requires_sorted(__first1, __last1); - __glibcxx_requires_sorted(__first2, __last2); - - 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. - * @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 setoperations - * - * 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 - _OutputIterator - set_intersection(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result, _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_requires_sorted_pred(__first1, __last1, __comp); - __glibcxx_requires_sorted_pred(__first2, __last2, __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. - * @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 setoperations - * - * 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 - _OutputIterator - set_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_requires_sorted(__first1, __last1); - __glibcxx_requires_sorted(__first2, __last2); - - 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. - * @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 setoperations - * - * 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 - _OutputIterator - set_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result, _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_requires_sorted_pred(__first1, __last1, __comp); - __glibcxx_requires_sorted_pred(__first2, __last2, __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. - * @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 setoperations - * - * 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 - _OutputIterator - set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_requires_sorted(__first1, __last1); - __glibcxx_requires_sorted(__first2, __last2); - - 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. - * @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 setoperations - * - * 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 - _OutputIterator - set_symmetric_difference(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _OutputIterator __result, - _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_SameTypeConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_BinaryPredicateConcept<_Compare, - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_requires_sorted_pred(__first1, __last1, __comp); - __glibcxx_requires_sorted_pred(__first2, __last2, __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)); - } - - // min_element and max_element, with and without an explicitly supplied - // comparison function. - - /** - * @brief Return the maximum element in a range. - * @param first Start of range. - * @param last End of range. - * @return Iterator referencing the first instance of the largest value. - */ - template - _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. - * @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 - _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; - } - - /** - * @brief Return the minimum element in a range. - * @param first Start of range. - * @param last End of range. - * @return Iterator referencing the first instance of the smallest value. - */ - template - _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. - * @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 - _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; - } - - // next_permutation and prev_permutation, with and without an explicitly - // supplied comparison function. - - /** - * @brief Permute range into the next "dictionary" ordering. - * @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 "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 - 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 "dictionary" ordering using - * comparison functor. - * @param first Start of range. - * @param last End of range. - * @param comp - * @return False if wrapped to first permutation, true otherwise. - * - * Treats all permutations of the range [first,last) as a set of - * "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 - 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 (!__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 "dictionary" ordering. - * @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 "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 - 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 "dictionary" ordering using - * comparison functor. - * @param first Start of range. - * @param last End of range. - * @param comp - * @return False if wrapped to last permutation, true otherwise. - * - * Treats all permutations of the range [first,last) as a set of - * "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 - 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 (!__comp(*--__j, *__i)) - {} - std::iter_swap(__i, __j); - std::reverse(__ii, __last); - return true; - } - if (__i == __first) - { - std::reverse(__first, __last); - return false; - } - } - } - - // find_first_of, with and without an explicitly supplied comparison function. - - /** - * @brief Find element from a set in a sequence. - * @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 - * interator 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 - _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. - * @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 - * interator 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 - _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; - } - - - // find_end, with and without an explicitly supplied comparison function. - // Search [first2, last2) as a subsequence in [first1, last1), and return - // the *last* possible match. Note that find_end for bidirectional iterators - // is much faster than for forward iterators. - - // find_end for forward iterators. - template - _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 - = std::search(__first1, __last1, __first2, __last2); - if (__new_result == __last1) - return __result; - else - { - __result = __new_result; - __first1 = __new_result; - ++__first1; - } - } - } - } - - template - _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 - = std::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. Requires partial specialization. - template - _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 = std::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 - _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; - } - } - - // Dispatching functions for find_end. - - /** - * @brief Find last matching subsequence in a sequence. - * @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 - 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. - * @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 - 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); - } - -} // namespace std - -#endif /* _ALGO_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algobase.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algobase.h deleted file mode 100644 index d8da473c9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_algobase.h +++ /dev/null @@ -1,912 +0,0 @@ -// Bits and pieces used in algorithms -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_algobase.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _ALGOBASE_H -#define _ALGOBASE_H 1 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace std -{ - - /** - * @brief Swaps two values. - * @param a A thing of arbitrary type. - * @param b Another thing of arbitrary type. - * @return Nothing. - * - * This is the simple classic generic implementation. It will work on - * any type which has a copy constructor and an assignment operator. - */ - template - inline void - swap(_Tp& __a, _Tp& __b) - { - // concept requirements - __glibcxx_function_requires(_SGIAssignableConcept<_Tp>) - - _Tp __tmp = __a; - __a = __b; - __b = __tmp; - } - - // 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 - struct __iter_swap - { - template - static void - iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) - { - typedef typename iterator_traits<_ForwardIterator1>::value_type - _ValueType1; - _ValueType1 __tmp = *__a; - *__a = *__b; - *__b = __tmp; - } - }; - - template<> - struct __iter_swap - { - template - static void - iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) - { - swap(*__a, *__b); - } - }; - - /** - * @brief Swaps the contents of two iterators. - * @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 - 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); - } - - #undef min - #undef max - - /** - * @brief This does what you think it does. - * @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 - 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. - * @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 - 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. - * @param a A thing of arbitrary type. - * @param b Another thing of arbitrary type. - * @param comp A @link s20_3_3_comparisons 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 - 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. - * @param a A thing of arbitrary type. - * @param b Another thing of arbitrary type. - * @param comp A @link s20_3_3_comparisons 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 - 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; - } - - // 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 - struct __copy - { - template - static _OI - copy(_II __first, _II __last, _OI __result) - { - for (; __first != __last; ++__result, ++__first) - *__result = *__first; - return __result; - } - }; - - template - struct __copy<_BoolType, random_access_iterator_tag> - { - template - static _OI - copy(_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; - } - }; - - template<> - struct __copy - { - template - static _Tp* - copy(const _Tp* __first, const _Tp* __last, _Tp* __result) - { - std::memmove(__result, __first, sizeof(_Tp) * (__last - __first)); - return __result + (__last - __first); - } - }; - - template - inline _OI - __copy_aux(_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_scalar<_ValueTypeI>::__value - && __is_pointer<_II>::__value - && __is_pointer<_OI>::__value - && __are_same<_ValueTypeI, _ValueTypeO>::__value); - - return std::__copy<__simple, _Category>::copy(__first, __last, __result); - } - - template - struct __copy_normal - { - template - static _OI - copy_n(_II __first, _II __last, _OI __result) - { return std::__copy_aux(__first, __last, __result); } - }; - - template<> - struct __copy_normal - { - template - static _OI - copy_n(_II __first, _II __last, _OI __result) - { return std::__copy_aux(__first.base(), __last.base(), __result); } - }; - - template<> - struct __copy_normal - { - template - static _OI - copy_n(_II __first, _II __last, _OI __result) - { return _OI(std::__copy_aux(__first, __last, __result.base())); } - }; - - template<> - struct __copy_normal - { - template - static _OI - copy_n(_II __first, _II __last, _OI __result) - { return _OI(std::__copy_aux(__first.base(), __last.base(), - __result.base())); } - }; - - /** - * @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) - * - * 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 - inline _OutputIterator - 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_requires_valid_range(__first, __last); - - const bool __in = __is_normal_iterator<_InputIterator>::__value; - const bool __out = __is_normal_iterator<_OutputIterator>::__value; - return std::__copy_normal<__in, __out>::copy_n(__first, __last, - __result); - } - - template - struct __copy_backward - { - template - static _BI2 - copy_b(_BI1 __first, _BI1 __last, _BI2 __result) - { - while (__first != __last) - *--__result = *--__last; - return __result; - } - }; - - template - struct __copy_backward<_BoolType, random_access_iterator_tag> - { - template - static _BI2 - copy_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; - } - }; - - template<> - struct __copy_backward - { - template - static _Tp* - copy_b(const _Tp* __first, const _Tp* __last, _Tp* __result) - { - const ptrdiff_t _Num = __last - __first; - std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num); - return __result - _Num; - } - }; - - template - inline _BI2 - __copy_backward_aux(_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_scalar<_ValueType1>::__value - && __is_pointer<_BI1>::__value - && __is_pointer<_BI2>::__value - && __are_same<_ValueType1, _ValueType2>::__value); - - return std::__copy_backward<__simple, _Category>::copy_b(__first, __last, - __result); - } - - template - struct __copy_backward_normal - { - template - static _BI2 - copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) - { return std::__copy_backward_aux(__first, __last, __result); } - }; - - template<> - struct __copy_backward_normal - { - template - static _BI2 - copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) - { return std::__copy_backward_aux(__first.base(), __last.base(), - __result); } - }; - - template<> - struct __copy_backward_normal - { - template - static _BI2 - copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) - { return _BI2(std::__copy_backward_aux(__first, __last, - __result.base())); } - }; - - template<> - struct __copy_backward_normal - { - template - static _BI2 - copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result) - { return _BI2(std::__copy_backward_aux(__first.base(), __last.base(), - __result.base())); } - }; - - /** - * @brief Copies the range [first,last) into result. - * @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 - 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); - - const bool __bi1 = __is_normal_iterator<_BI1>::__value; - const bool __bi2 = __is_normal_iterator<_BI2>::__value; - return std::__copy_backward_normal<__bi1, __bi2>::copy_b_n(__first, __last, - __result); - } - - template - struct __fill - { - template - static void - fill(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __value) - { - for (; __first != __last; ++__first) - *__first = __value; - } - }; - - template<> - struct __fill - { - template - static void - fill(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __value) - { - const _Tp __tmp = __value; - for (; __first != __last; ++__first) - *__first = __tmp; - } - }; - - /** - * @brief Fills the range [first,last) with copies of value. - * @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 one-byte - * types filling contiguous areas of memory, this becomes an inline call to - * @c memset. - */ - template - void - fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) - { - // concept requirements - __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< - _ForwardIterator>) - __glibcxx_requires_valid_range(__first, __last); - - const bool __scalar = __is_scalar<_Tp>::__value; - std::__fill<__scalar>::fill(__first, __last, __value); - } - - // Specialization: for one-byte types we can use memset. - inline void - fill(unsigned char* __first, unsigned char* __last, const unsigned char& __c) - { - __glibcxx_requires_valid_range(__first, __last); - const unsigned char __tmp = __c; - std::memset(__first, __tmp, __last - __first); - } - - inline void - fill(signed char* __first, signed char* __last, const signed char& __c) - { - __glibcxx_requires_valid_range(__first, __last); - const signed char __tmp = __c; - std::memset(__first, static_cast(__tmp), __last - __first); - } - - inline void - fill(char* __first, char* __last, const char& __c) - { - __glibcxx_requires_valid_range(__first, __last); - const char __tmp = __c; - std::memset(__first, static_cast(__tmp), __last - __first); - } - - template - struct __fill_n - { - template - static _OutputIterator - fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) - { - for (; __n > 0; --__n, ++__first) - *__first = __value; - return __first; - } - }; - - template<> - struct __fill_n - { - template - static _OutputIterator - fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) - { - const _Tp __tmp = __value; - for (; __n > 0; --__n, ++__first) - *__first = __tmp; - return __first; - } - }; - - /** - * @brief Fills the range [first,first+n) with copies of value. - * @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 one-byte - * types filling contiguous areas of memory, this becomes an inline call to - * @c memset. - */ - template - _OutputIterator - fill_n(_OutputIterator __first, _Size __n, const _Tp& __value) - { - // concept requirements - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, _Tp>) - - const bool __scalar = __is_scalar<_Tp>::__value; - return std::__fill_n<__scalar>::fill_n(__first, __n, __value); - } - - template - inline unsigned char* - fill_n(unsigned char* __first, _Size __n, const unsigned char& __c) - { - std::fill(__first, __first + __n, __c); - return __first + __n; - } - - template - inline signed char* - fill_n(char* __first, _Size __n, const signed char& __c) - { - std::fill(__first, __first + __n, __c); - return __first + __n; - } - - template - inline char* - fill_n(char* __first, _Size __n, const char& __c) - { - std::fill(__first, __first + __n, __c); - return __first + __n; - } - - /** - * @brief Finds the places in ranges which don't match. - * @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 - 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. - * @param first1 An input iterator. - * @param last1 An input iterator. - * @param first2 An input iterator. - * @param binary_pred A binary predicate @link s20_3_1_base 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 - 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 && __binary_pred(*__first1, *__first2)) - { - ++__first1; - ++__first2; - } - return pair<_InputIterator1, _InputIterator2>(__first1, __first2); - } - - /** - * @brief Tests a range for element-wise equality. - * @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 - inline bool - equal(_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); - - for (; __first1 != __last1; ++__first1, ++__first2) - if (!(*__first1 == *__first2)) - return false; - return true; - } - - /** - * @brief Tests a range for element-wise equality. - * @param first1 An input iterator. - * @param last1 An input iterator. - * @param first2 An input iterator. - * @param binary_pred A binary predicate @link s20_3_1_base 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 - inline bool - equal(_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); - - for (; __first1 != __last1; ++__first1, ++__first2) - if (!__binary_pred(*__first1, *__first2)) - return false; - return true; - } - - /** - * @brief Performs "dictionary" comparison on ranges. - * @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. - * - * "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." - * (Quoted from [25.3.8]/1.) If the iterators are all character pointers, - * then this is an inline call to @c memcmp. - */ - template - bool - lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_LessThanOpConcept< - typename iterator_traits<_InputIterator1>::value_type, - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_function_requires(_LessThanOpConcept< - typename iterator_traits<_InputIterator2>::value_type, - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_requires_valid_range(__first1, __last1); - __glibcxx_requires_valid_range(__first2, __last2); - - for (; __first1 != __last1 && __first2 != __last2; - ++__first1, ++__first2) - { - if (*__first1 < *__first2) - return true; - if (*__first2 < *__first1) - return false; - } - return __first1 == __last1 && __first2 != __last2; - } - - /** - * @brief Performs "dictionary" comparison on ranges. - * @param first1 An input iterator. - * @param last1 An input iterator. - * @param first2 An input iterator. - * @param last2 An input iterator. - * @param comp A @link s20_3_3_comparisons comparison functor@endlink. - * @return A boolean true or false. - * - * The same as the four-parameter @c lexigraphical_compare, but uses the - * comp parameter instead of @c <. - */ - template - bool - lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _InputIterator2 __last2, - _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_requires_valid_range(__first1, __last1); - __glibcxx_requires_valid_range(__first2, __last2); - - for (; __first1 != __last1 && __first2 != __last2; - ++__first1, ++__first2) - { - if (__comp(*__first1, *__first2)) - return true; - if (__comp(*__first2, *__first1)) - return false; - } - return __first1 == __last1 && __first2 != __last2; - } - - inline bool - lexicographical_compare(const unsigned char* __first1, - const unsigned char* __last1, - const unsigned char* __first2, - const unsigned char* __last2) - { - __glibcxx_requires_valid_range(__first1, __last1); - __glibcxx_requires_valid_range(__first2, __last2); - - const size_t __len1 = __last1 - __first1; - const size_t __len2 = __last2 - __first2; - const int __result = std::memcmp(__first1, __first2, - std::min(__len1, __len2)); - return __result != 0 ? __result < 0 : __len1 < __len2; - } - - inline bool - lexicographical_compare(const char* __first1, const char* __last1, - const char* __first2, const char* __last2) - { - __glibcxx_requires_valid_range(__first1, __last1); - __glibcxx_requires_valid_range(__first2, __last2); - -#if CHAR_MAX == SCHAR_MAX - return std::lexicographical_compare((const signed char*) __first1, - (const signed char*) __last1, - (const signed char*) __first2, - (const signed char*) __last2); -#else /* CHAR_MAX == SCHAR_MAX */ - return std::lexicographical_compare((const unsigned char*) __first1, - (const unsigned char*) __last1, - (const unsigned char*) __first2, - (const unsigned char*) __last2); -#endif /* CHAR_MAX == SCHAR_MAX */ - } - -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_bvector.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_bvector.h deleted file mode 100644 index 05c7e09ad..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_bvector.h +++ /dev/null @@ -1,958 +0,0 @@ -// vector specialization -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_bvector.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _BVECTOR_H -#define _BVECTOR_H 1 - -namespace _GLIBCXX_STD -{ - 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 - { - _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) - { - _M_offset = static_cast(__n + int(_S_word_bit)); - --_M_p; - } - else - _M_offset = static_cast(__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; } - - template - class _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(const _Bit_alloc_type& __a) - : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0) - { } - }; - - public: - typedef _Alloc allocator_type; - - allocator_type - get_allocator() const - { return *static_cast(&this->_M_impl); } - - _Bvector_base(const allocator_type& __a) : _M_impl(__a) { } - - ~_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); - } - }; -} // namespace std - -// Declare a partial specialization of vector. -#include - -namespace _GLIBCXX_STD -{ - /** - * @brief A specialization of vector for booleans which offers fixed time - * access to individual elements in any order. - * - * Note that vector 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 Containers - * @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 - class vector : public _Bvector_base<_Alloc> - { - 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_reverse_iterator; - typedef std::reverse_iterator reverse_iterator; - - typedef typename _Bvector_base<_Alloc>::allocator_type allocator_type; - - allocator_type get_allocator() const - { return _Bvector_base<_Alloc>::get_allocator(); } - - protected: - using _Bvector_base<_Alloc>::_M_allocate; - using _Bvector_base<_Alloc>::_M_deallocate; - - protected: - 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); - } - - void - _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 = size() ? 2 * size() - : static_cast(_S_word_bit); - _Bit_type * __q = this->_M_allocate(__len); - iterator __i = std::copy(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); - } - } - - template - void - _M_initialize_range(_InputIterator __first, _InputIterator __last, - std::input_iterator_tag) - { - this->_M_impl._M_start = iterator(); - this->_M_impl._M_finish = iterator(); - this->_M_impl._M_end_of_storage = 0; - for (; __first != __last; ++__first) - push_back(*__first); - } - - template - 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); - } - - template - void - _M_insert_range(iterator __pos, _InputIterator __first, - _InputIterator __last, std::input_iterator_tag) - { - for (; __first != __last; ++__first) - { - __pos = insert(__pos, *__first); - ++__pos; - } - } - - template - void - _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 = size() + std::max(size(), __n); - _Bit_type * __q = this->_M_allocate(__len); - iterator __i = std::copy(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); - } - } - } - - public: - 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()); } - - size_type - size() const - { return size_type(end() - begin()); } - - size_type - max_size() const - { return size_type(-1); } - - 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 *(begin() + difference_type(__n)); } - - const_reference - operator[](size_type __n) const - { return *(begin() + difference_type(__n)); } - - void - _M_range_check(size_type __n) const - { - if (__n >= this->size()) - __throw_out_of_range(__N("vector::_M_range_check")); - } - - 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]; } - - explicit - vector(const allocator_type& __a = allocator_type()) - : _Bvector_base<_Alloc>(__a) { } - - vector(size_type __n, bool __value, - const allocator_type& __a = allocator_type()) - : _Bvector_base<_Alloc>(__a) - { - _M_initialize(__n); - std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage, - __value ? ~0 : 0); - } - - explicit - vector(size_type __n) - : _Bvector_base<_Alloc>(allocator_type()) - { - _M_initialize(__n); - std::fill(this->_M_impl._M_start._M_p, - this->_M_impl._M_end_of_storage, 0); - } - - vector(const vector& __x) - : _Bvector_base<_Alloc>(__x.get_allocator()) - { - _M_initialize(__x.size()); - std::copy(__x.begin(), __x.end(), this->_M_impl._M_start); - } - - // Check whether it's an integral type. If so, it's not an iterator. - template - void - _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) - { - _M_initialize(__n); - std::fill(this->_M_impl._M_start._M_p, - this->_M_impl._M_end_of_storage, __x ? ~0 : 0); - } - - template - void - _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, - __false_type) - { _M_initialize_range(__first, __last, - std::__iterator_category(__first)); } - - template - vector(_InputIterator __first, _InputIterator __last, - const allocator_type& __a = allocator_type()) - : _Bvector_base<_Alloc>(__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()); - } - std::copy(__x.begin(), __x.end(), begin()); - this->_M_impl._M_finish = begin() + difference_type(__x.size()); - return *this; - } - - // 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 - _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 - { - erase(begin() + __n, end()); - std::fill(this->_M_impl._M_start._M_p, - this->_M_impl._M_end_of_storage, __x ? ~0 : 0); - } - } - - void - assign(size_t __n, bool __x) - { _M_fill_assign(__n, __x); } - - template - void - assign(_InputIterator __first, _InputIterator __last) - { - typedef typename std::__is_integer<_InputIterator>::__type _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - template - void - _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { _M_fill_assign((size_t) __n, (bool) __val); } - - template - void - _M_assign_dispatch(_InputIterator __first, _InputIterator __last, - __false_type) - { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - - template - 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) - erase(__cur, end()); - else - insert(end(), __first, __last); - } - - template - void - _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, - std::forward_iterator_tag) - { - const size_type __len = std::distance(__first, __last); - if (__len < size()) - erase(std::copy(__first, __last, begin()), end()); - else - { - _ForwardIterator __mid = __first; - std::advance(__mid, size()); - std::copy(__first, __mid, begin()); - insert(end(), __mid, __last); - } - } - - void - 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 = std::copy(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)); - } - } - - 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 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); - } - - // [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, 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; - } - - // Check whether it's an integral type. If so, it's not an iterator. - - template - void - _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - __true_type) - { _M_fill_insert(__pos, __n, __x); } - - template - void - _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - __false_type) - { _M_insert_range(__pos, __first, __last, - std::__iterator_category(__first)); } - - template - void - insert(iterator __position, - _InputIterator __first, _InputIterator __last) - { - typedef typename std::__is_integer<_InputIterator>::__type _Integral; - _M_insert_dispatch(__position, __first, __last, _Integral()); - } - - void - _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 = size() + std::max(size(), __n); - _Bit_type * __q = this->_M_allocate(__len); - iterator __i = std::copy(begin(), __position, iterator(__q, 0)); - std::fill_n(__i, __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); - } - } - - void - insert(iterator __position, size_type __n, bool __x) - { _M_fill_insert(__position, __n, __x); } - - 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) - { - this->_M_impl._M_finish = std::copy(__last, end(), __first); - return __first; - } - - void - resize(size_type __new_size, bool __x = bool()) - { - if (__new_size < size()) - erase(begin() + difference_type(__new_size), end()); - else - insert(end(), __new_size - size(), __x); - } - - 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() - { erase(begin(), end()); } - }; -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_construct.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_construct.h deleted file mode 100644 index 8f78d8c30..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_construct.h +++ /dev/null @@ -1,189 +0,0 @@ -// nonstandard construct and destroy functions -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_construct.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STL_CONSTRUCT_H -#define _STL_CONSTRUCT_H 1 - -#include -#include - -namespace std -{ - /** - * @if maint - * Constructs an object in existing memory by invoking an allocated - * object's constructor with an initializer. - * @endif - */ - template - inline void - _Construct(_T1* __p, const _T2& __value) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 402. wrong new expression in [some_]allocator::construct - ::new(static_cast(__p)) _T1(__value); - } - - /** - * @if maint - * Constructs an object in existing memory by invoking an allocated - * object's default constructor (no initializers). - * @endif - */ - template - inline void - _Construct(_T1* __p) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 402. wrong new expression in [some_]allocator::construct - ::new(static_cast(__p)) _T1(); - } - - /** - * @if maint - * Destroy the object pointed to by a pointer type. - * @endif - */ - template - inline void - _Destroy(_Tp* __pointer) - { __pointer->~_Tp(); } - - /** - * @if maint - * Destroy a range of objects with nontrivial destructors. - * - * This is a helper function used only by _Destroy(). - * @endif - */ - template - inline void - __destroy_aux(_ForwardIterator __first, _ForwardIterator __last, - __false_type) - { - for (; __first != __last; ++__first) - std::_Destroy(&*__first); - } - - /** - * @if maint - * Destroy a range of objects with trivial destructors. Since the destructors - * are trivial, there's nothing to do and hopefully this function will be - * entirely optimized away. - * - * This is a helper function used only by _Destroy(). - * @endif - */ - template - inline void - __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type) - { } - - /** - * @if maint - * 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. - * @endif - */ - template - inline void - _Destroy(_ForwardIterator __first, _ForwardIterator __last) - { - typedef typename iterator_traits<_ForwardIterator>::value_type - _Value_type; - typedef typename std::__is_scalar<_Value_type>::__type - _Has_trivial_destructor; - - std::__destroy_aux(__first, __last, _Has_trivial_destructor()); - } - - /** - * @if maint - * 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. - * @endif - */ - - template class allocator; - - template - void - _Destroy(_ForwardIterator __first, _ForwardIterator __last, - _Allocator __alloc) - { - for (; __first != __last; ++__first) - __alloc.destroy(&*__first); - } - - template - inline void - _Destroy(_ForwardIterator __first, _ForwardIterator __last, - allocator<_Tp>) - { - _Destroy(__first, __last); - } - - -} // namespace std - -#endif /* _STL_CONSTRUCT_H */ - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_deque.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_deque.h deleted file mode 100644 index eb534ca8c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_deque.h +++ /dev/null @@ -1,1531 +0,0 @@ -// Deque implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_deque.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _DEQUE_H -#define _DEQUE_H 1 - -#include -#include -#include - -namespace _GLIBCXX_STD -{ - /** - * @if maint - * @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 '512' is - * tuneable (and no other code needs to change), but no investigation has - * been done since inheriting the SGI code. - * @endif - */ - inline size_t - __deque_buf_size(size_t __size) - { return __size < 512 ? size_t(512 / __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. - * - * @if maint - * All the functions are op overloads except for _M_set_node. - * @endif - */ - template - 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); } - - /** @if maint - * 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. - * @endif - */ - 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 - 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 - 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 - inline bool - operator!=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, - const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) - { return !(__x == __y); } - - template - inline bool - operator!=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, - const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) - { return !(__x == __y); } - - template - 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 - 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 - inline bool - operator>(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, - const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) - { return __y < __x; } - - template - inline bool - operator>(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, - const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) - { return __y < __x; } - - template - inline bool - operator<=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, - const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) - { return !(__y < __x); } - - template - inline bool - operator<=(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, - const _Deque_iterator<_Tp, _RefR, _PtrR>& __y) - { return !(__y < __x); } - - template - inline bool - operator>=(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, - const _Deque_iterator<_Tp, _Ref, _Ptr>& __y) - { return !(__x < __y); } - - template - 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 - 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 - inline _Deque_iterator<_Tp, _Ref, _Ptr> - operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Ref, _Ptr>& __x) - { return __x + __n; } - - /** - * @if maint - * 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. - * @endif - */ - template - class _Deque_base - { - public: - typedef _Alloc allocator_type; - - allocator_type - get_allocator() const - { return _M_get_Tp_allocator(); } - - typedef _Deque_iterator<_Tp, _Tp&, _Tp*> iterator; - typedef _Deque_iterator<_Tp, const _Tp&, const _Tp*> const_iterator; - - _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) - { } - - ~_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(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(&this->_M_impl); } - - _Map_alloc_type - _M_get_map_allocator() const - { return _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 - _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); - } - } - - /** - * @if maint - * @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... - * @endif - */ - template - 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 - 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 - 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 Containers - * @ingroup Sequences - * - * Meets the requirements of a container, a - * reversible container, and a - * sequence, including the - * optional sequence requirements. - * - * 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. - * - * @if maint - * Here's how a deque 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-"nodes". (The name %map has nothing to do with the - * std::map class, and "nodes" should not be confused with - * std::list's usage of "node".) - * - * A "node" has no specific type name as such, but it is referred - * to as "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 - * "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 "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 > - 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_reverse_iterator; - typedef std::reverse_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; - - /** @if maint - * A total of four data members accumulated down the heirarchy. - * May be accessed via _M_impl.* - * @endif - */ - 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. - */ - explicit - deque(const allocator_type& __a = allocator_type()) - : _Base(__a, 0) {} - - /** - * @brief Create a %deque with copies of an exemplar element. - * @param n The number of elements to initially create. - * @param value An element to copy. - * - * 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); } - - /** - * @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.get_allocator(), __x.size()) - { std::__uninitialized_copy_a(__x.begin(), __x.end(), - this->_M_impl._M_start, - _M_get_Tp_allocator()); } - - /** - * @brief Builds a %deque from a range. - * @param first An input iterator. - * @param last An input iterator. - * - * 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 - 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 responsibilty. - */ - ~deque() - { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, - _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); - - /** - * @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 - void - assign(_InputIterator __first, _InputIterator __last) - { - typedef typename std::__is_integer<_InputIterator>::__type _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - /// 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); } - - // [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 size_type(-1); } - - /** - * @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) - erase(this->_M_impl._M_start + __new_size, this->_M_impl._M_finish); - else - insert(this->_M_impl._M_finish, __new_size - __len, __x); - } - - /** - * 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: - /// @if maint Safety check used only from at(). @endif - 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); - } - - /** - * @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); - } - - /** - * @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(); - } - - /** - * @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); - - /** - * @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 "range insert." - */ - template - 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 responsibilty. - */ - 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 responsibilty. - */ - 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); - } - - /** - * 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 responsibilty. - */ - void clear(); - - protected: - // Internal constructor functions follow. - - // called by the range constructor to implement [23.1.1]/9 - template - void - _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) - { - _M_initialize_map(__n); - _M_fill_initialize(__x); - } - - // called by the range constructor to implement [23.1.1]/9 - template - 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 - //@{ - /** - * @if maint - * @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. - * @endif - */ - template - void - _M_range_initialize(_InputIterator __first, _InputIterator __last, - std::input_iterator_tag); - - // called by the second initialize_dispatch above - template - void - _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, - std::forward_iterator_tag); - //@} - - /** - * @if maint - * @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). - * @endif - */ - void - _M_fill_initialize(const value_type& __value); - - // 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 - template - void - _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { - _M_fill_assign(static_cast(__n), - static_cast(__val)); - } - - // called by the range assign to implement [23.1.1]/9 - template - 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 - void - _M_assign_aux(_InputIterator __first, _InputIterator __last, - std::input_iterator_tag); - - // called by the second assign_dispatch above - template - 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 - erase(std::copy(__first, __last, begin()), end()); - } - - // 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 - { - erase(begin() + __n, end()); - std::fill(begin(), end(), __val); - } - } - - //@{ - /** - * @if maint - * @brief Helper functions for push_* and pop_*. - * @endif - */ - void _M_push_back_aux(const value_type&); - void _M_push_front_aux(const value_type&); - 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 - template - void - _M_insert_dispatch(iterator __pos, - _Integer __n, _Integer __x, __true_type) - { - _M_fill_insert(__pos, static_cast(__n), - static_cast(__x)); - } - - // called by the range insert to implement [23.1.1]/9 - template - 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 - void - _M_range_insert_aux(iterator __pos, _InputIterator __first, - _InputIterator __last, std::input_iterator_tag); - - // called by the second insert_dispatch above - template - 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) - iterator - _M_insert_aux(iterator __pos, const value_type& __x); - - // 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 - void - _M_insert_aux(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, - size_type __n); - - //@{ - /** - * @if maint - * @brief Memory-handling helpers for the previous internal insert - * functions. - * @endif - */ - 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); - //@} - - - //@{ - /** - * @if maint - * @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.) - * @endif - */ - 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 - 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 - inline bool - operator<(const deque<_Tp, _Alloc>& __x, - const deque<_Tp, _Alloc>& __y) - { return lexicographical_compare(__x.begin(), __x.end(), - __y.begin(), __y.end()); } - - /// Based on operator== - template - inline bool - operator!=(const deque<_Tp, _Alloc>& __x, - const deque<_Tp, _Alloc>& __y) - { return !(__x == __y); } - - /// Based on operator< - template - inline bool - operator>(const deque<_Tp, _Alloc>& __x, - const deque<_Tp, _Alloc>& __y) - { return __y < __x; } - - /// Based on operator< - template - inline bool - operator<=(const deque<_Tp, _Alloc>& __x, - const deque<_Tp, _Alloc>& __y) - { return !(__y < __x); } - - /// Based on operator< - template - inline bool - operator>=(const deque<_Tp, _Alloc>& __x, - const deque<_Tp, _Alloc>& __y) - { return !(__x < __y); } - - /// See std::deque::swap(). - template - inline void - swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y) - { __x.swap(__y); } -} // namespace std - -#endif /* _DEQUE_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_function.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_function.h deleted file mode 100644 index dac19c8e5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_function.h +++ /dev/null @@ -1,759 +0,0 @@ -// Functor implementations -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_function.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _FUNCTION_H -#define _FUNCTION_H 1 - -namespace std -{ - // 20.3.1 base classes - /** @defgroup s20_3_1_base Functor Base Classes - * 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 "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()); - * \endcode - * To negate every element in @c a, use - * \code - * transform(a.begin(), a.end(), a.begin(), negate()); - * \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 s20_3_1_base functor base classes@endlink. - */ - template - struct unary_function - { - typedef _Arg argument_type; ///< @c argument_type is the type of the - /// argument (no surprises here) - - typedef _Result result_type; ///< @c result_type is the return type - }; - - /** - * This is one of the @link s20_3_1_base functor base classes@endlink. - */ - template - struct binary_function - { - typedef _Arg1 first_argument_type; ///< the type of the first argument - /// (no surprises here) - - typedef _Arg2 second_argument_type; ///< the type of the second argument - typedef _Result result_type; ///< type of the return type - }; - /** @} */ - - // 20.3.2 arithmetic - /** @defgroup s20_3_2_arithmetic Arithmetic Classes - * Because basic math often needs to be done during an algorithm, the library - * provides functors for those operations. See the documentation for - * @link s20_3_1_base the base classes@endlink for examples of their use. - * - * @{ - */ - /// One of the @link s20_3_2_arithmetic math functors@endlink. - template - struct plus : public binary_function<_Tp, _Tp, _Tp> - { - _Tp - operator()(const _Tp& __x, const _Tp& __y) const - { return __x + __y; } - }; - - /// One of the @link s20_3_2_arithmetic math functors@endlink. - template - struct minus : public binary_function<_Tp, _Tp, _Tp> - { - _Tp - operator()(const _Tp& __x, const _Tp& __y) const - { return __x - __y; } - }; - - /// One of the @link s20_3_2_arithmetic math functors@endlink. - template - struct multiplies : public binary_function<_Tp, _Tp, _Tp> - { - _Tp - operator()(const _Tp& __x, const _Tp& __y) const - { return __x * __y; } - }; - - /// One of the @link s20_3_2_arithmetic math functors@endlink. - template - struct divides : public binary_function<_Tp, _Tp, _Tp> - { - _Tp - operator()(const _Tp& __x, const _Tp& __y) const - { return __x / __y; } - }; - - /// One of the @link s20_3_2_arithmetic math functors@endlink. - template - struct modulus : public binary_function<_Tp, _Tp, _Tp> - { - _Tp - operator()(const _Tp& __x, const _Tp& __y) const - { return __x % __y; } - }; - - /// One of the @link s20_3_2_arithmetic math functors@endlink. - template - struct negate : public unary_function<_Tp, _Tp> - { - _Tp - operator()(const _Tp& __x) const - { return -__x; } - }; - /** @} */ - - // 20.3.3 comparisons - /** @defgroup s20_3_3_comparisons Comparison Classes - * The library provides six wrapper functors for all the basic comparisons - * in C++, like @c <. - * - * @{ - */ - /// One of the @link s20_3_3_comparisons comparison functors@endlink. - template - 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 s20_3_3_comparisons comparison functors@endlink. - template - 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 s20_3_3_comparisons comparison functors@endlink. - template - struct greater : public binary_function<_Tp, _Tp, bool> - { - bool - operator()(const _Tp& __x, const _Tp& __y) const - { return __x > __y; } - }; - - /// One of the @link s20_3_3_comparisons comparison functors@endlink. - template - struct less : public binary_function<_Tp, _Tp, bool> - { - bool - operator()(const _Tp& __x, const _Tp& __y) const - { return __x < __y; } - }; - - /// One of the @link s20_3_3_comparisons comparison functors@endlink. - template - 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 s20_3_3_comparisons comparison functors@endlink. - template - 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 s20_3_4_logical Boolean Operations Classes - * Here are wrapper functors for Boolean operations: @c &&, @c ||, and @c !. - * - * @{ - */ - /// One of the @link s20_3_4_logical Boolean operations functors@endlink. - template - 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 s20_3_4_logical Boolean operations functors@endlink. - template - 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 s20_3_4_logical Boolean operations functors@endlink. - template - struct logical_not : public unary_function<_Tp, bool> - { - bool - operator()(const _Tp& __x) const - { return !__x; } - }; - /** @} */ - - // 20.3.5 negators - /** @defgroup s20_3_5_negators Negators - * 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 - * { - * 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 - * "!(v[i] > 3)" 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 s20_3_5_negators negation functors@endlink. - template - class unary_negate - : public unary_function - { - 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 s20_3_5_negators negation functors@endlink. - template - inline unary_negate<_Predicate> - not1(const _Predicate& __pred) - { return unary_negate<_Predicate>(__pred); } - - /// One of the @link s20_3_5_negators negation functors@endlink. - template - class binary_negate - : public binary_function - { - 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 s20_3_5_negators negation functors@endlink. - template - inline binary_negate<_Predicate> - not2(const _Predicate& __pred) - { return binary_negate<_Predicate>(__pred); } - /** @} */ - - // 20.3.6 binders - /** @defgroup s20_3_6_binder Binder Classes - * 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 "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,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 "1.3 - x" 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> for declaring a variable to hold the - * return value from @c bind1st(std::plus,5). - * - * These become more useful when combined with the composition functions. - * - * @{ - */ - /// One of the @link s20_3_6_binder binder functors@endlink. - template - class binder1st - : public unary_function - { - 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); } - }; - - /// One of the @link s20_3_6_binder binder functors@endlink. - template - 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 s20_3_6_binder binder functors@endlink. - template - class binder2nd - : public unary_function - { - 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); } - }; - - /// One of the @link s20_3_6_binder binder functors@endlink. - template - 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)); - } - /** @} */ - - // 20.3.7 adaptors pointers functions - /** @defgroup s20_3_7_adaptors Adaptors for pointers to functions - * 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 s20_3_7_adaptors adaptors for function pointers@endlink. - template - 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 s20_3_7_adaptors adaptors for function pointers@endlink. - template - inline pointer_to_unary_function<_Arg, _Result> - ptr_fun(_Result (*__x)(_Arg)) - { return pointer_to_unary_function<_Arg, _Result>(__x); } - - /// One of the @link s20_3_7_adaptors adaptors for function pointers@endlink. - template - 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 s20_3_7_adaptors adaptors for function pointers@endlink. - template - inline pointer_to_binary_function<_Arg1, _Arg2, _Result> - ptr_fun(_Result (*__x)(_Arg1, _Arg2)) - { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } - /** @} */ - - template - struct _Identity : public unary_function<_Tp,_Tp> - { - _Tp& - operator()(_Tp& __x) const - { return __x; } - - const _Tp& - operator()(const _Tp& __x) const - { return __x; } - }; - - template - 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; } - }; - - template - 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 s20_3_8_memadaptors Adaptors for pointers to members - * 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - class const_mem_fun_t : public unary_function - { - 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - class const_mem_fun1_t : public binary_function - { - 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - 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 s20_3_8_memadaptors adaptors for member pointers@endlink. - template - 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 - inline mem_fun_t<_Ret, _Tp> - mem_fun(_Ret (_Tp::*__f)()) - { return mem_fun_t<_Ret, _Tp>(__f); } - - template - inline const_mem_fun_t<_Ret, _Tp> - mem_fun(_Ret (_Tp::*__f)() const) - { return const_mem_fun_t<_Ret, _Tp>(__f); } - - template - inline mem_fun_ref_t<_Ret, _Tp> - mem_fun_ref(_Ret (_Tp::*__f)()) - { return mem_fun_ref_t<_Ret, _Tp>(__f); } - - template - 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 - inline mem_fun1_t<_Ret, _Tp, _Arg> - mem_fun(_Ret (_Tp::*__f)(_Arg)) - { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } - - template - 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 - 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 - 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); } - - /** @} */ - -} // namespace std - -#endif /* _FUNCTION_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_heap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_heap.h deleted file mode 100644 index 3dd0001e7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_heap.h +++ /dev/null @@ -1,467 +0,0 @@ -// Heap implementation -*- C++ -*- - -// Copyright (C) 2001, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_heap.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STL_HEAP_H -#define _STL_HEAP_H 1 - -#include - -namespace std -{ - // 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 - bool - __is_heap(_RandomAccessIterator __first, _Distance __n) - { - _Distance __parent = 0; - for (_Distance __child = 1; __child < __n; ++__child) - { - if (__first[__parent] < __first[__child]) - return false; - if ((__child & 1) == 0) - ++__parent; - } - return true; - } - - template - bool - __is_heap(_RandomAccessIterator __first, _StrictWeakOrdering __comp, - _Distance __n) - { - _Distance __parent = 0; - for (_Distance __child = 1; __child < __n; ++__child) - { - if (__comp(__first[__parent], __first[__child])) - return false; - if ((__child & 1) == 0) - ++__parent; - } - return true; - } - - template - bool - __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) - { return std::__is_heap(__first, std::distance(__first, __last)); } - - template - bool - __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _StrictWeakOrdering __comp) - { return std::__is_heap(__first, __comp, std::distance(__first, __last)); } - - // Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap. - - template - void - __push_heap(_RandomAccessIterator __first, - _Distance __holeIndex, _Distance __topIndex, _Tp __value) - { - _Distance __parent = (__holeIndex - 1) / 2; - while (__holeIndex > __topIndex && *(__first + __parent) < __value) - { - *(__first + __holeIndex) = *(__first + __parent); - __holeIndex = __parent; - __parent = (__holeIndex - 1) / 2; - } - *(__first + __holeIndex) = __value; - } - - /** - * @brief Push an element onto a heap. - * @param first Start of heap. - * @param last End of heap + element. - * @ingroup heap - * - * 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 - 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); - - std::__push_heap(__first, _DistanceType((__last - __first) - 1), - _DistanceType(0), _ValueType(*(__last - 1))); - } - - template - 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) = *(__first + __parent); - __holeIndex = __parent; - __parent = (__holeIndex - 1) / 2; - } - *(__first + __holeIndex) = __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 - * - * 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 - 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); - - std::__push_heap(__first, _DistanceType((__last - __first) - 1), - _DistanceType(0), _ValueType(*(__last - 1)), __comp); - } - - template - void - __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - _Distance __len, _Tp __value) - { - const _Distance __topIndex = __holeIndex; - _Distance __secondChild = 2 * __holeIndex + 2; - while (__secondChild < __len) - { - if (*(__first + __secondChild) < *(__first + (__secondChild - 1))) - __secondChild--; - *(__first + __holeIndex) = *(__first + __secondChild); - __holeIndex = __secondChild; - __secondChild = 2 * (__secondChild + 1); - } - if (__secondChild == __len) - { - *(__first + __holeIndex) = *(__first + (__secondChild - 1)); - __holeIndex = __secondChild - 1; - } - std::__push_heap(__first, __holeIndex, __topIndex, __value); - } - - template - inline void - __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _RandomAccessIterator __result, _Tp __value) - { - typedef typename iterator_traits<_RandomAccessIterator>::difference_type - _Distance; - *__result = *__first; - std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first), - __value); - } - - /** - * @brief Pop an element off a heap. - * @param first Start of heap. - * @param last End of heap. - * @ingroup heap - * - * 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 - 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); - - std::__pop_heap(__first, __last - 1, __last - 1, - _ValueType(*(__last - 1))); - } - - template - void - __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - _Distance __len, _Tp __value, _Compare __comp) - { - const _Distance __topIndex = __holeIndex; - _Distance __secondChild = 2 * __holeIndex + 2; - while (__secondChild < __len) - { - if (__comp(*(__first + __secondChild), - *(__first + (__secondChild - 1)))) - __secondChild--; - *(__first + __holeIndex) = *(__first + __secondChild); - __holeIndex = __secondChild; - __secondChild = 2 * (__secondChild + 1); - } - if (__secondChild == __len) - { - *(__first + __holeIndex) = *(__first + (__secondChild - 1)); - __holeIndex = __secondChild - 1; - } - std::__push_heap(__first, __holeIndex, __topIndex, __value, __comp); - } - - template - inline void - __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _RandomAccessIterator __result, _Tp __value, _Compare __comp) - { - typedef typename iterator_traits<_RandomAccessIterator>::difference_type - _Distance; - *__result = *__first; - std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first), - __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 - * - * 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 - 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); - - typedef typename iterator_traits<_RandomAccessIterator>::value_type - _ValueType; - std::__pop_heap(__first, __last - 1, __last - 1, - _ValueType(*(__last - 1)), __comp); - } - - /** - * @brief Construct a heap over a range. - * @param first Start of heap. - * @param last End of heap. - * @ingroup heap - * - * This operation makes the elements in [first,last) into a heap. - */ - template - 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) - { - std::__adjust_heap(__first, __parent, __len, - _ValueType(*(__first + __parent))); - 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 - * - * This operation makes the elements in [first,last) into a heap. - * Comparisons are made using comp. - */ - template - inline 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) - { - std::__adjust_heap(__first, __parent, __len, - _ValueType(*(__first + __parent)), __comp); - if (__parent == 0) - return; - __parent--; - } - } - - /** - * @brief Sort a heap. - * @param first Start of heap. - * @param last End of heap. - * @ingroup heap - * - * This operation sorts the valid heap in the range [first,last). - */ - template - 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) - std::pop_heap(__first, __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 - * - * This operation sorts the valid heap in the range [first,last). - * Comparisons are made using comp. - */ - template - 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) - std::pop_heap(__first, __last--, __comp); - } - -} // namespace std - -#endif /* _STL_HEAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator.h deleted file mode 100644 index 4c4630a06..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator.h +++ /dev/null @@ -1,822 +0,0 @@ -// Iterators -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_iterator.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - * - * This file implements reverse_iterator, back_insert_iterator, - * front_insert_iterator, insert_iterator, __normal_iterator, and their - * supporting functions and overloaded operators. - */ - -#ifndef _ITERATOR_H -#define _ITERATOR_H 1 - -#include - -namespace std -{ - // 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 - * - * 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." [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 - class reverse_iterator - : public 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; - - public: - typedef _Iterator iterator_type; - typedef typename iterator_traits<_Iterator>::difference_type - difference_type; - typedef typename iterator_traits<_Iterator>::reference reference; - typedef typename iterator_traits<_Iterator>::pointer pointer; - - public: - /** - * 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 - 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 - inline bool - operator==(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __x.base() == __y.base(); } - - template - inline bool - operator<(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __y.base() < __x.base(); } - - template - inline bool - operator!=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return !(__x == __y); } - - template - inline bool - operator>(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __y < __x; } - - template - inline bool - operator<=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return !(__y < __x); } - - template - inline bool - operator>=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return !(__x < __y); } - - template - inline typename reverse_iterator<_Iterator>::difference_type - operator-(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __y.base() - __x.base(); } - - template - 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 - inline bool - operator==(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return __x.base() == __y.base(); } - - template - inline bool - operator<(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return __y.base() < __x.base(); } - - template - inline bool - operator!=(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return !(__x == __y); } - - template - inline bool - operator>(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return __y < __x; } - - template - inline bool - operator<=(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return !(__y < __x); } - - template - inline bool - operator>=(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return !(__x < __y); } - - template - inline typename reverse_iterator<_IteratorL>::difference_type - operator-(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { 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 - class back_insert_iterator - : public iterator - { - 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. - * @return This %iterator, for chained operations. - * - * This kind of %iterator doesn't really have 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. - */ - back_insert_iterator& - operator=(typename _Container::const_reference __value) - { - container->push_back(__value); - return *this; - } - - /// Simply returns *this. - back_insert_iterator& - operator*() - { return *this; } - - /// Simply returns *this. (This %iterator does not "move".) - back_insert_iterator& - operator++() - { return *this; } - - /// Simply returns *this. (This %iterator does not "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 - 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 - class front_insert_iterator - : public iterator - { - 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. - * @return This %iterator, for chained operations. - * - * This kind of %iterator doesn't really have 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. - */ - front_insert_iterator& - operator=(typename _Container::const_reference __value) - { - container->push_front(__value); - return *this; - } - - /// Simply returns *this. - front_insert_iterator& - operator*() - { return *this; } - - /// Simply returns *this. (This %iterator does not "move".) - front_insert_iterator& - operator++() - { return *this; } - - /// Simply returns *this. (This %iterator does not "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 - 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 - class insert_iterator - : public iterator - { - 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. - * @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 - */ - insert_iterator& - operator=(const typename _Container::const_reference __value) - { - iter = container->insert(iter, __value); - ++iter; - return *this; - } - - /// Simply returns *this. - insert_iterator& - operator*() - { return *this; } - - /// Simply returns *this. (This %iterator does not "move".) - insert_iterator& - operator++() - { return *this; } - - /// Simply returns *this. (This %iterator does not "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 - inline insert_iterator<_Container> - inserter(_Container& __x, _Iterator __i) - { - return insert_iterator<_Container>(__x, - typename _Container::iterator(__i)); - } -} // namespace std - -namespace __gnu_cxx -{ - // This iterator adapter is '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 - class __normal_iterator - { - protected: - _Iterator _M_current; - - public: - typedef typename iterator_traits<_Iterator>::iterator_category - iterator_category; - typedef typename iterator_traits<_Iterator>::value_type value_type; - typedef typename iterator_traits<_Iterator>::difference_type - difference_type; - typedef typename iterator_traits<_Iterator>::reference reference; - typedef typename iterator_traits<_Iterator>::pointer pointer; - - __normal_iterator() : _M_current(_Iterator()) { } - - explicit - __normal_iterator(const _Iterator& __i) : _M_current(__i) { } - - // Allow iterator to const_iterator conversion - template - __normal_iterator(const __normal_iterator<_Iter, - typename std::__enable_if<_Container, - (std::__are_same<_Iter, - typename _Container::pointer>::__value) - >::__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 - // comparaison 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 - inline bool - operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - { return __lhs.base() == __rhs.base(); } - - template - inline bool - operator==(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - { return __lhs.base() == __rhs.base(); } - - template - inline bool - operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - { return __lhs.base() != __rhs.base(); } - - template - 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 - inline bool - operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - { return __lhs.base() < __rhs.base(); } - - template - inline bool - operator<(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - { return __lhs.base() < __rhs.base(); } - - template - inline bool - operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - { return __lhs.base() > __rhs.base(); } - - template - inline bool - operator>(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - { return __lhs.base() > __rhs.base(); } - - template - inline bool - operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - { return __lhs.base() <= __rhs.base(); } - - template - inline bool - operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - { return __lhs.base() <= __rhs.base(); } - - template - inline bool - operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - { return __lhs.base() >= __rhs.base(); } - - template - 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 - inline typename __normal_iterator<_IteratorL, _Container>::difference_type - operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - { return __lhs.base() - __rhs.base(); } - - template - 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); } -} // namespace __gnu_cxx - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_funcs.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_funcs.h deleted file mode 100644 index 6e550fadf..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_funcs.h +++ /dev/null @@ -1,179 +0,0 @@ -// Functions used by iterators -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_iterator_base_funcs.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - * - * This file contains all of the general iterator-related utility - * functions, such as distance() and advance(). - */ - -#ifndef _ITERATOR_BASE_FUNCS_H -#define _ITERATOR_BASE_FUNCS_H 1 - -#pragma GCC system_header -#include - -namespace std -{ - template - 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 - 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 - 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 - inline void - __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) - while (__n--) - ++__i; - } - - template - 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 - 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 "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 - inline void - advance(_InputIterator& __i, _Distance __n) - { - // concept requirements -- taken care of in __advance - std::__advance(__i, __n, std::__iterator_category(__i)); - } -} // namespace std - -#endif /* _ITERATOR_BASE_FUNCS_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_types.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_types.h deleted file mode 100644 index 2161f2a81..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_iterator_base_types.h +++ /dev/null @@ -1,170 +0,0 @@ -// Types used in iterator implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_iterator_base_types.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - * - * This file contains all of the general iterator-related utility types, - * such as iterator_traits and struct iterator. - */ - -#ifndef _ITERATOR_BASE_TYPES_H -#define _ITERATOR_BASE_TYPES_H 1 - -#pragma GCC system_header - -namespace std -{ - //@{ - /** - * @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 supporetd 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 - 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; - }; - - /** - * This class does nothing but define nested typedefs. The general - * version simply "forwards" the nested typedefs from the Iterator - * argument. Specialized versions for pointers and pointers-to-const - * provide tighter, more correct semantics. - */ - template - 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; - }; - - template - 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; - }; - - template - struct iterator_traits - { - typedef random_access_iterator_tag iterator_category; - typedef _Tp value_type; - typedef ptrdiff_t difference_type; - typedef const _Tp* pointer; - typedef const _Tp& reference; - }; - - /** - * @if maint - * This function is not a part of the C++ standard but is syntactic - * sugar for internal library use only. - * @endif - */ - template - inline typename iterator_traits<_Iter>::iterator_category - __iterator_category(const _Iter&) - { return typename iterator_traits<_Iter>::iterator_category(); } - -} // namespace std - -#endif /* _ITERATOR_BASE_TYPES_H */ - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_list.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_list.h deleted file mode 100644 index 3d954e980..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_list.h +++ /dev/null @@ -1,1231 +0,0 @@ -// List implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_list.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _LIST_H -#define _LIST_H 1 - -#include - -namespace _GLIBCXX_STD -{ - // 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. - - /// @if maint Common part of a node in the %list. @endif - struct _List_node_base - { - _List_node_base* _M_next; ///< Self-explanatory - _List_node_base* _M_prev; ///< Self-explanatory - - static void - swap(_List_node_base& __x, _List_node_base& __y); - - void - transfer(_List_node_base * const __first, - _List_node_base * const __last); - - void - reverse(); - - void - hook(_List_node_base * const __position); - - void - unhook(); - }; - - /// @if maint An actual node in the %list. @endif - template - struct _List_node : public _List_node_base - { - _Tp _M_data; ///< User's data. - }; - - /** - * @brief A list::iterator. - * - * @if maint - * All the functions are op overloads. - * @endif - */ - template - 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(_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 &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. - _List_node_base* _M_node; - }; - - /** - * @brief A list::const_iterator. - * - * @if maint - * All the functions are op overloads. - * @endif - */ - template - 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 _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 &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 _List_node_base* _M_node; - }; - - template - inline bool - operator==(const _List_iterator<_Val>& __x, - const _List_const_iterator<_Val>& __y) - { return __x._M_node == __y._M_node; } - - template - inline bool - operator!=(const _List_iterator<_Val>& __x, - const _List_const_iterator<_Val>& __y) - { return __x._M_node != __y._M_node; } - - - /** - * @if maint - * See bits/stl_deque.h's _Deque_base for an explanation. - * @endif - */ - template - class _List_base - { - protected: - // NOTA BENE - // The stored instance is not actually of "allocator_type"'s - // type. Instead we rebind the type to - // Allocator>, which according to [20.1.5]/4 - // should probably be the same. List_node is not the same - // size as Tp (it's two pointers larger), and specializations on - // Tp may go unused because List_node 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 - { - _List_node_base _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; - - _Tp_alloc_type - _M_get_Tp_allocator() const - { return *static_cast(&this->_M_impl); } - - allocator_type - get_allocator() const - { return _M_get_Tp_allocator(); } - - _List_base(const allocator_type& __a) - : _M_impl(__a) - { _M_init(); } - - // 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 Containers - * @ingroup Sequences - * - * Meets the requirements of a container, a - * reversible container, and a - * sequence, including the - * optional sequence requirements 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. - * - * @if maint - * A couple points on memory allocation for list: - * - * First, we never actually allocate a Tp, we allocate - * List_node's and trust [20.1.5]/4 to DTRT. This is to ensure - * that after elements from %list are spliced into - * %list, 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. @endif - */ - template > - 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_reverse_iterator; - typedef std::reverse_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; - - /** @if maint - * One data member plus two memory-handling functions. If the - * _Alloc type requires separate instances, then one of those - * will also be included, accumulated from the topmost parent. - * @endif - */ - using _Base::_M_impl; - using _Base::_M_put_node; - using _Base::_M_get_node; - using _Base::_M_get_Tp_allocator; - - /** - * @if maint - * @param x An instance of user data. - * - * Allocates space for a new node and constructs a copy of @a x in it. - * @endif - */ - _Node* - _M_create_node(const value_type& __x) - { - _Node* __p = this->_M_get_node(); - try - { - _M_get_Tp_allocator().construct(&__p->_M_data, __x); - } - catch(...) - { - _M_put_node(__p); - __throw_exception_again; - } - return __p; - } - - public: - // [23.2.2.1] construct/copy/destroy - // (assign() and get_allocator() are also listed in this section) - /** - * @brief Default constructor creates no elements. - */ - explicit - list(const allocator_type& __a = allocator_type()) - : _Base(__a) { } - - /** - * @brief Create a %list with copies of an exemplar element. - * @param n The number of elements to initially create. - * @param value An element to copy. - * - * 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) - { this->insert(begin(), __n, __value); } - - /** - * @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.get_allocator()) - { this->insert(begin(), __x.begin(), __x.end()); } - - /** - * @brief Builds a %list from a range. - * @param first An input iterator. - * @param last An input iterator. - * - * 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)). - * - * @if maint - * We don't need any dispatching tricks here, because insert does all of - * that anyway. - * @endif - */ - template - list(_InputIterator __first, _InputIterator __last, - const allocator_type& __a = allocator_type()) - : _Base(__a) - { this->insert(begin(), __first, __last); } - - /** - * 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 responsibilty. - */ - - /** - * @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); - - /** - * @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 - 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()); - } - - /// 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()); } - - // [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 size_type(-1); } - - /** - * @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()); - - // 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); } - - /** - * @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); } - - /** - * @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)); } - - /** - * @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); - - /** - * @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. - * - * Due to the nature of a %list this operation can be done in - * constant time, and does not invalidate iterators and - * references. - */ - void - insert(iterator __position, size_type __n, const value_type& __x) - { _M_fill_insert(__position, __n, __x); } - - /** - * @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. - * - * Due to the nature of a %list this operation can be done in - * constant time, and does not invalidate iterators and - * references. - */ - template - 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 %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 responsibilty. - */ - 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. - * - * 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 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 - * responsibilty. - */ - 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) - { _List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node); } - - /** - * 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 responsibilty. - */ - 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. - */ - void - splice(iterator __position, list& __x) - { - if (!__x.empty()) - this->_M_transfer(__position, __x.begin(), __x.end()); - } - - /** - * @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 - splice(iterator __position, list&, iterator __i) - { - iterator __j = __i; - ++__j; - if (__position == __i || __position == __j) - return; - this->_M_transfer(__position, __i, __j); - } - - /** - * @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 - splice(iterator __position, list&, iterator __first, iterator __last) - { - if (__first != __last) - this->_M_transfer(__position, __first, __last); - } - - /** - * @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 - * responsibilty. - */ - 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 - * responsibilty. - */ - template - 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 responsibilty. - */ - 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 responsibilty. - */ - template - 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. - */ - void - merge(list& __x); - - /** - * @brief Merge sorted lists according to comparison function. - * @param x Sorted list to merge. - * @param StrictWeakOrdering Comparison function definining - * 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(). - */ - template - void - merge(list&, _StrictWeakOrdering); - - /** - * @brief Reverse the elements in list. - * - * Reverse the order of elements in the list in linear time. - */ - void - reverse() - { this->_M_impl._M_node.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 - void - sort(_StrictWeakOrdering); - - protected: - // Internal assign functions follow. - - // Called by the range assign to implement [23.1.1]/9 - template - void - _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { - _M_fill_assign(static_cast(__n), - static_cast(__val)); - } - - // Called by the range assign to implement [23.1.1]/9 - template - 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); - - - // Internal insert functions follow. - - // Called by the range insert to implement [23.1.1]/9 - template - void - _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - __true_type) - { - _M_fill_insert(__pos, static_cast(__n), - static_cast(__x)); - } - - // Called by the range insert to implement [23.1.1]/9 - template - void - _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - __false_type) - { - for (; __first != __last; ++__first) - _M_insert(__pos, *__first); - } - - // 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) - { - for (; __n > 0; --__n) - _M_insert(__pos, __x); - } - - - // Moves the elements from [first,last) before position. - void - _M_transfer(iterator __position, iterator __first, iterator __last) - { __position._M_node->transfer(__first._M_node, __last._M_node); } - - // Inserts new element at position given and with value given. - void - _M_insert(iterator __position, const value_type& __x) - { - _Node* __tmp = _M_create_node(__x); - __tmp->hook(__position._M_node); - } - - // Erases element at position given. - void - _M_erase(iterator __position) - { - __position._M_node->unhook(); - _Node* __n = static_cast<_Node*>(__position._M_node); - _M_get_Tp_allocator().destroy(&__n->_M_data); - _M_put_node(__n); - } - }; - - /** - * @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 - 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 - 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 - inline bool - operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) - { return !(__x == __y); } - - /// Based on operator< - template - inline bool - operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) - { return __y < __x; } - - /// Based on operator< - template - inline bool - operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) - { return !(__y < __x); } - - /// Based on operator< - template - inline bool - operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) - { return !(__x < __y); } - - /// See std::list::swap(). - template - inline void - swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y) - { __x.swap(__y); } -} // namespace std - -#endif /* _LIST_H */ - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_map.h deleted file mode 100644 index 4d4dd7edf..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_map.h +++ /dev/null @@ -1,731 +0,0 @@ -// Map implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_map.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _MAP_H -#define _MAP_H 1 - -#include -#include - -namespace _GLIBCXX_STD -{ - /** - * @brief A standard container made up of (key,value) pairs, which can be - * retrieved based on a key, in logarithmic time. - * - * @ingroup Containers - * @ingroup Assoc_containers - * - * Meets the requirements of a container, a - * reversible container, and an - * associative container (using unique keys). - * For a @c map the key_type is Key, the mapped_type is T, and the - * value_type is std::pair. - * - * Maps support bidirectional iterators. - * - * @if maint - * 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). - * @endif - */ - template , - typename _Alloc = std::allocator > > - class map - { - public: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef std::pair 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 - { - 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: - /// @if maint This turns a red-black tree into a [multi]map. @endif - typedef typename _Alloc::template rebind::other - _Pair_alloc_type; - - typedef _Rb_tree, - key_compare, _Pair_alloc_type> _Rep_type; - - /// @if maint The actual tree structure. @endif - _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(_Compare(), allocator_type()) { } - - // for some reason this was made a separate function - /** - * @brief Default constructor creates no elements. - */ - 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) { } - - /** - * @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 - map(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.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 - map(_InputIterator __first, _InputIterator __last, - const _Compare& __comp, const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) - { _M_t.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 responsibilty. - */ - - /** - * @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; - } - - /// 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(); } - - // 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) - - 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; - } - - // _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 - insert(const value_type& __x) - { return _M_t.insert_unique(__x); } - - /** - * @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++/23_containers/howto.html#4 - * for more on "hinting". - * - * Insertion requires logarithmic time (if the hint is not taken). - */ - iterator - insert(iterator position, const value_type& __x) - { return _M_t.insert_unique(position, __x); } - - /** - * @brief A template function that attemps 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 - void - insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_unique(__first, __last); } - - /** - * @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 responsibilty. - */ - void - erase(iterator __position) - { _M_t.erase(__position); } - - /** - * @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 responsibilty. - */ - size_type - erase(const key_type& __x) - { return _M_t.erase(__x); } - - /** - * @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 responsibilty. - */ - void - erase(iterator __first, iterator __last) - { _M_t.erase(__first, __last); } - - /** - * @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 responsibilty. - */ - 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 - 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 - equal_range(const key_type& __x) const - { return _M_t.equal_range(__x); } - - template - friend bool - operator== (const map<_K1, _T1, _C1, _A1>&, - const map<_K1, _T1, _C1, _A1>&); - - template - 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 - 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 - 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 - inline bool - operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x, - const map<_Key, _Tp, _Compare, _Alloc>& __y) - { return !(__x == __y); } - - /// Based on operator< - template - inline bool - operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x, - const map<_Key, _Tp, _Compare, _Alloc>& __y) - { return __y < __x; } - - /// Based on operator< - template - inline bool - operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x, - const map<_Key, _Tp, _Compare, _Alloc>& __y) - { return !(__y < __x); } - - /// Based on operator< - template - 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 - inline void - swap(map<_Key, _Tp, _Compare, _Alloc>& __x, - map<_Key, _Tp, _Compare, _Alloc>& __y) - { __x.swap(__y); } -} // namespace std - -#endif /* _MAP_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multimap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multimap.h deleted file mode 100644 index 5c6622751..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multimap.h +++ /dev/null @@ -1,684 +0,0 @@ -// Multimap implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_multimap.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _MULTIMAP_H -#define _MULTIMAP_H 1 - -#include - -namespace _GLIBCXX_STD -{ - // Forward declaration of operators < and ==, needed for friend declaration. - - template , - typename _Alloc = std::allocator > > - class multimap; - - template - inline bool - operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, - const multimap<_Key, _Tp, _Compare, _Alloc>& __y); - - template - inline bool - operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, - const multimap<_Key, _Tp, _Compare, _Alloc>& __y); - - /** - * @brief A standard container made up of (key,value) pairs, which can be - * retrieved based on a key, in logarithmic time. - * - * @ingroup Containers - * @ingroup Assoc_containers - * - * Meets the requirements of a container, a - * reversible container, and an - * associative container (using equivalent - * keys). For a @c multimap the key_type is Key, the mapped_type - * is T, and the value_type is std::pair. - * - * Multimaps support bidirectional iterators. - * - * @if maint - * 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). - * @endif - */ - template - class multimap - { - public: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef std::pair 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 - { - 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: - /// @if maint This turns a red-black tree into a [multi]map. @endif - typedef typename _Alloc::template rebind::other - _Pair_alloc_type; - - typedef _Rb_tree, - key_compare, _Pair_alloc_type> _Rep_type; - /// @if maint The actual tree structure. @endif - _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(_Compare(), allocator_type()) { } - - // for some reason this was made a separate function - /** - * @brief Default constructor creates no elements. - */ - 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) { } - - /** - * @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 - multimap(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.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 - multimap(_InputIterator __first, _InputIterator __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) - { _M_t.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 responsibilty. - */ - - /** - * @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; - } - - /// 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(); } - - // 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.insert_equal(__x); } - - /** - * @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. - * - * See http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html#4 - * for more on "hinting". - * - * Insertion requires logarithmic time (if the hint is not taken). - */ - iterator - insert(iterator __position, const value_type& __x) - { return _M_t.insert_equal(__position, __x); } - - /** - * @brief A template function that attemps 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 - void - insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_equal(__first, __last); } - - /** - * @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 - * responsibilty. - */ - void - erase(iterator __position) - { _M_t.erase(__position); } - - /** - * @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 responsibilty. - */ - size_type - erase(const key_type& __x) - { return _M_t.erase(__x); } - - /** - * @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 responsibilty. - */ - void - erase(iterator __first, iterator __last) - { _M_t.erase(__first, __last); } - - /** - * @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 responsibilty. - */ - 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 - 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 - equal_range(const key_type& __x) const - { return _M_t.equal_range(__x); } - - template - friend bool - operator== (const multimap<_K1, _T1, _C1, _A1>&, - const multimap<_K1, _T1, _C1, _A1>&); - - template - 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 - 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 - 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 - inline bool - operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, - const multimap<_Key, _Tp, _Compare, _Alloc>& __y) - { return !(__x == __y); } - - /// Based on operator< - template - inline bool - operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, - const multimap<_Key, _Tp, _Compare, _Alloc>& __y) - { return __y < __x; } - - /// Based on operator< - template - inline bool - operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, - const multimap<_Key, _Tp, _Compare, _Alloc>& __y) - { return !(__y < __x); } - - /// Based on operator< - template - 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 - inline void - swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x, - multimap<_Key, _Tp, _Compare, _Alloc>& __y) - { __x.swap(__y); } -} // namespace std - -#endif /* _MULTIMAP_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multiset.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multiset.h deleted file mode 100644 index 185f51ce9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_multiset.h +++ /dev/null @@ -1,580 +0,0 @@ -// Multiset implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_multiset.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _MULTISET_H -#define _MULTISET_H 1 - -#include - -namespace _GLIBCXX_STD -{ - - // Forward declaration of operators < and ==, needed for friend declaration. - template , - class _Alloc = std::allocator<_Key> > - class multiset; - - template - inline bool - operator==(const multiset<_Key, _Compare, _Alloc>& __x, - const multiset<_Key, _Compare, _Alloc>& __y); - - template - inline bool - operator<(const multiset<_Key, _Compare, _Alloc>& __x, - const multiset<_Key, _Compare, _Alloc>& __y); - - /** - * @brief A standard container made up of elements, which can be retrieved - * in logarithmic time. - * - * @ingroup Containers - * @ingroup Assoc_containers - * - * Meets the requirements of a container, a - * reversible container, and an - * associative container (using equivalent - * keys). For a @c multiset the key_type and value_type are Key. - * - * Multisets support bidirectional iterators. - * - * @if maint - * 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). - * @endif - */ - template - 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: - /// @if maint This turns a red-black tree into a [multi]set. @endif - typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type; - - typedef _Rb_tree, - key_compare, _Key_alloc_type> _Rep_type; - /// @if maint The actual tree structure. @endif - _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(_Compare(), allocator_type()) { } - - 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 - multiset(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.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 - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) - { _M_t.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<_Key,_Compare,_Alloc>& __x) - : _M_t(__x._M_t) { } - - /** - * @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<_Key,_Compare,_Alloc>& - operator=(const multiset<_Key,_Compare,_Alloc>& __x) - { - _M_t = __x._M_t; - return *this; - } - - // 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/write 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/write 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/write 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/write 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(); } - - /// 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<_Key, _Compare, _Alloc>& __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.insert_equal(__x); } - - /** - * @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++/23_containers/howto.html#4 - * for more on "hinting". - * - * Insertion requires logarithmic time (if the hint is not taken). - */ - iterator - insert(iterator __position, const value_type& __x) - { return _M_t.insert_equal(__position, __x); } - - /** - * @brief A template function that attemps 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 - void - insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_equal(__first, __last); } - - /** - * @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 - * responsibilty. - */ - void - erase(iterator __position) - { _M_t.erase(__position); } - - /** - * @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 responsibilty. - */ - size_type - erase(const key_type& __x) - { return _M_t.erase(__x); } - - /** - * @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 responsibilty. - */ - void - erase(iterator __first, iterator __last) - { _M_t.erase(__first, __last); } - - /** - * 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 responsibilty. - */ - 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 - equal_range(const key_type& __x) - { return _M_t.equal_range(__x); } - - std::pair - equal_range(const key_type& __x) const - { return _M_t.equal_range(__x); } - - template - friend bool - operator== (const multiset<_K1, _C1, _A1>&, - const multiset<_K1, _C1, _A1>&); - - template - 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 - 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 - 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 - inline bool - operator!=(const multiset<_Key, _Compare, _Alloc>& __x, - const multiset<_Key, _Compare, _Alloc>& __y) - { return !(__x == __y); } - - /// Returns y < x. - template - inline bool - operator>(const multiset<_Key,_Compare,_Alloc>& __x, - const multiset<_Key,_Compare,_Alloc>& __y) - { return __y < __x; } - - /// Returns !(y < x) - template - inline bool - operator<=(const multiset<_Key, _Compare, _Alloc>& __x, - const multiset<_Key, _Compare, _Alloc>& __y) - { return !(__y < __x); } - - /// Returns !(x < y) - template - inline bool - operator>=(const multiset<_Key, _Compare, _Alloc>& __x, - const multiset<_Key, _Compare, _Alloc>& __y) - { return !(__x < __y); } - - /// See std::multiset::swap(). - template - inline void - swap(multiset<_Key, _Compare, _Alloc>& __x, - multiset<_Key, _Compare, _Alloc>& __y) - { __x.swap(__y); } - -} // namespace std - -#endif /* _MULTISET_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_numeric.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_numeric.h deleted file mode 100644 index 79706806d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_numeric.h +++ /dev/null @@ -1,340 +0,0 @@ -// Numeric functions implementation -*- C++ -*- - -// Copyright (C) 2001, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_numeric.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STL_NUMERIC_H -#define _STL_NUMERIC_H 1 - -#include - -namespace std -{ - - /** - * @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 - _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 - _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 - _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 - _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 - _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 - _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. - */ - template - _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 = __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. - */ - template - _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 = __tmp; - } - return ++__result; - } - -} // namespace std - -#endif /* _STL_NUMERIC_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_pair.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_pair.h deleted file mode 100644 index b97de3327..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_pair.h +++ /dev/null @@ -1,148 +0,0 @@ -// Pair implementation -*- C++ -*- - -// Copyright (C) 2001, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_pair.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _PAIR_H -#define _PAIR_H 1 - -namespace std -{ - /// pair holds two objects of arbitrary type. - template - 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. */ - pair() - : first(), second() { } - - /** Two objects may be passed to a @c pair constructor to be copied. */ - 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 - pair(const pair<_U1, _U2>& __p) - : first(__p.first), second(__p.second) { } - }; - - /// Two pairs of the same type are equal iff their members are equal. - template - inline bool - operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) - { return __x.first == __y.first && __x.second == __y.second; } - - /// - template - inline 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 - inline bool - operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) - { return !(__x == __y); } - - /// Uses @c operator< to find the result. - template - inline bool - operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) - { return __y < __x; } - - /// Uses @c operator< to find the result. - template - inline bool - operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) - { return !(__y < __x); } - - /// Uses @c operator< to find the result. - template - inline bool - operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) - { return !(__x < __y); } - - /** - * @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 - template - inline pair<_T1, _T2> - make_pair(_T1 __x, _T2 __y) - { return pair<_T1, _T2>(__x, __y); } -} // namespace std - -#endif /* _PAIR_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_queue.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_queue.h deleted file mode 100644 index b7d03b8ab..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_queue.h +++ /dev/null @@ -1,470 +0,0 @@ -// Queue implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_queue.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _QUEUE_H -#define _QUEUE_H 1 - -#include -#include - -namespace std -{ - // Forward declarations of operators < and ==, needed for friend declaration. - template > - class queue; - - template - inline bool - operator==(const queue<_Tp,_Seq>&, const queue<_Tp,_Seq>&); - - template - inline bool - operator<(const queue<_Tp,_Seq>&, const queue<_Tp,_Seq>&); - - /** - * @brief A standard container giving FIFO behavior. - * - * @ingroup Containers - * @ingroup Sequences - * - * Meets many of the requirements of a - * container, - * 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 "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 - 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 - friend bool - operator==(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&); - - template - 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. - */ - explicit - queue(const _Sequence& __c = _Sequence()) : c(__c) {} - - /** - * 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); } - - /** - * @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(); - } - }; - - - /** - * @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 - inline bool - operator==(const queue<_Tp,_Sequence>& __x, - const queue<_Tp,_Sequence>& __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 - inline bool - operator<(const queue<_Tp,_Sequence>& __x, const queue<_Tp,_Sequence>& __y) - { return __x.c < __y.c; } - - /// Based on operator== - template - inline bool - operator!=(const queue<_Tp,_Sequence>& __x, - const queue<_Tp,_Sequence>& __y) - { return !(__x == __y); } - - /// Based on operator< - template - inline bool - operator>(const queue<_Tp,_Sequence>& __x, const queue<_Tp,_Sequence>& __y) - { return __y < __x; } - - /// Based on operator< - template - inline bool - operator<=(const queue<_Tp,_Sequence>& __x, - const queue<_Tp,_Sequence>& __y) - { return !(__y < __x); } - - /// Based on operator< - template - inline bool - operator>=(const queue<_Tp,_Sequence>& __x, - const queue<_Tp,_Sequence>& __y) - { return !(__x < __y); } - - /** - * @brief A standard container automatically sorting its contents. - * - * @ingroup Containers - * @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 but - * can be anything defining a strict weak ordering. - * - * Members not found in "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 _Compare = less > - 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. - */ - explicit - priority_queue(const _Compare& __x = _Compare(), - const _Sequence& __s = _Sequence()) - : c(__s), comp(__x) - { std::make_heap(c.begin(), c.end(), comp); } - - /** - * @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 s20_3_1_base functor base - * classes@endlink. - */ - template - 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); - } - - /** - * 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) - { - try - { - c.push_back(__x); - std::push_heap(c.begin(), c.end(), comp); - } - catch(...) - { - c.clear(); - __throw_exception_again; - } - } - - /** - * @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(); - try - { - std::pop_heap(c.begin(), c.end(), comp); - c.pop_back(); - } - catch(...) - { - c.clear(); - __throw_exception_again; - } - } - }; - - // No equality/comparison operators are provided for priority_queue. -} // namespace std - -#endif /* _QUEUE_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_raw_storage_iter.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_raw_storage_iter.h deleted file mode 100644 index 40577655b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_raw_storage_iter.h +++ /dev/null @@ -1,113 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_raw_storage_iter.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STL_RAW_STORAGE_ITERATOR_H -#define _STL_RAW_STORAGE_ITERATOR_H 1 - -namespace std -{ - /** - * This iterator class lets algorithms store their results into - * uninitialized memory. - */ - template - class raw_storage_iterator - : public iterator - { - protected: - _ForwardIterator _M_iter; - - public: - explicit - raw_storage_iterator(_ForwardIterator __x) - : _M_iter(__x) {} - - raw_storage_iterator& - operator*() { return *this; } - - raw_storage_iterator& - operator=(const _Tp& __element) - { - std::_Construct(&*_M_iter, __element); - return *this; - } - - raw_storage_iterator<_ForwardIterator, _Tp>& - operator++() - { - ++_M_iter; - return *this; - } - - raw_storage_iterator<_ForwardIterator, _Tp> - operator++(int) - { - raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this; - ++_M_iter; - return __tmp; - } - }; -} // namespace std - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_relops.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_relops.h deleted file mode 100644 index 1395472d0..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_relops.h +++ /dev/null @@ -1,137 +0,0 @@ -// std::rel_ops implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_relops.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - * - * @if maint - * 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 the - * FAQ at http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_4 . - * - * Short summary: the rel_ops operators should be avoided for the present. - * @endif - */ - -#ifndef _STL_RELOPS_H -#define _STL_RELOPS_H 1 - -namespace std -{ - namespace rel_ops - { - /** @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 - 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 - 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 - 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 - inline bool - operator>=(const _Tp& __x, const _Tp& __y) - { return !(__x < __y); } - - } // namespace rel_ops -} // namespace std - -#endif /* _STL_RELOPS_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_set.h deleted file mode 100644 index 1172e5093..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_set.h +++ /dev/null @@ -1,592 +0,0 @@ -// Set implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_set.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _SET_H -#define _SET_H 1 - -#include - -namespace _GLIBCXX_STD -{ - // Forward declarations of operators < and ==, needed for friend declaration. - template, - class _Alloc = std::allocator<_Key> > - class set; - - template - inline bool - operator==(const set<_Key, _Compare, _Alloc>& __x, - const set<_Key, _Compare, _Alloc>& __y); - - template - inline bool - operator<(const set<_Key, _Compare, _Alloc>& __x, - const set<_Key, _Compare, _Alloc>& __y); - - /** - * @brief A standard container made up of unique keys, which can be - * retrieved in logarithmic time. - * - * @ingroup Containers - * @ingroup Assoc_containers - * - * Meets the requirements of a container, a - * reversible container, and an - * associative container (using unique keys). - * - * Sets support bidirectional iterators. - * - * @param Key Type of key objects. - * @param Compare Comparison function object type, defaults to less. - * @param Alloc Allocator type, defaults to allocator. - * - * @if maint - * 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). - * @endif - */ - template - 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_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 - /// Default constructor creates no elements. - set() - : _M_t(_Compare(), allocator_type()) {} - - /** - * @brief Default constructor creates no elements. - * - * @param comp Comparator to use. - * @param a Allocator to use. - */ - 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 - set(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.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 - set(_InputIterator __first, _InputIterator __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) - { _M_t.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<_Key,_Compare,_Alloc>& __x) - : _M_t(__x._M_t) { } - - /** - * @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<_Key,_Compare,_Alloc>& - operator=(const set<_Key, _Compare, _Alloc>& __x) - { - _M_t = __x._M_t; - return *this; - } - - // 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/write 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/write 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/write reverse 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 %map. Iteration is done in descending order - * according to the keys. - */ - reverse_iterator - rend() const - { return _M_t.rend(); } - - /// 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<_Key,_Compare,_Alloc>& __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 - insert(const value_type& __x) - { - std::pair __p = - _M_t.insert_unique(__x); - return std::pair(__p.first, __p.second); - } - - /** - * @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. - * - * See http://gcc.gnu.org/onlinedocs/libstdc++/23_containers/howto.html#4 - * for more on "hinting". - * - * Insertion requires logarithmic time (if the hint is not taken). - */ - iterator - insert(iterator __position, const value_type& __x) - { return _M_t.insert_unique(__position, __x); } - - /** - * @brief A template function that attemps 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 - void - insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_unique(__first, __last); } - - /** - * @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 responsibilty. - */ - void - erase(iterator __position) - { _M_t.erase(__position); } - - /** - * @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 responsibilty. - */ - size_type - erase(const key_type& __x) - { return _M_t.erase(__x); } - - /** - * @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 responsibilty. - */ - void - erase(iterator __first, iterator __last) - { _M_t.erase(__first, __last); } - - /** - * 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 responsibilty. - */ - 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 - equal_range(const key_type& __x) - { return _M_t.equal_range(__x); } - - std::pair - equal_range(const key_type& __x) const - { return _M_t.equal_range(__x); } - //@} - - template - friend bool - operator== (const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); - - template - 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 - 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 - 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 - inline bool - operator!=(const set<_Key, _Compare, _Alloc>& __x, - const set<_Key, _Compare, _Alloc>& __y) - { return !(__x == __y); } - - /// Returns y < x. - template - inline bool - operator>(const set<_Key, _Compare, _Alloc>& __x, - const set<_Key, _Compare, _Alloc>& __y) - { return __y < __x; } - - /// Returns !(y < x) - template - inline bool - operator<=(const set<_Key, _Compare, _Alloc>& __x, - const set<_Key, _Compare, _Alloc>& __y) - { return !(__y < __x); } - - /// Returns !(x < y) - template - inline bool - operator>=(const set<_Key, _Compare, _Alloc>& __x, - const set<_Key, _Compare, _Alloc>& __y) - { return !(__x < __y); } - - /// See std::set::swap(). - template - inline void - swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y) - { __x.swap(__y); } - -} // namespace std - -#endif /* _SET_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_stack.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_stack.h deleted file mode 100644 index c3a527543..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_stack.h +++ /dev/null @@ -1,272 +0,0 @@ -// Stack implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_stack.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STACK_H -#define _STACK_H 1 - -#include -#include - -namespace std -{ - // Forward declarations of operators == and <, needed for friend - // declaration. - template > - class stack; - - template - inline bool - operator==(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y); - - template - inline bool - operator<(const stack<_Tp,_Seq>& __x, const stack<_Tp,_Seq>& __y); - - /** - * @brief A standard container giving FILO behavior. - * - * @ingroup Containers - * @ingroup Sequences - * - * Meets many of the requirements of a - * container, - * 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 "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 - 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 - friend bool - operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&); - - template - 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. - */ - explicit - stack(const _Sequence& __c = _Sequence()) - : c(__c) {} - - /** - * 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); } - - /** - * @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(); - } - }; - - /** - * @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 - 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 - inline bool - operator<(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) - { return __x.c < __y.c; } - - /// Based on operator== - template - inline bool - operator!=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) - { return !(__x == __y); } - - /// Based on operator< - template - inline bool - operator>(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) - { return __y < __x; } - - /// Based on operator< - template - inline bool - operator<=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) - { return !(__y < __x); } - - /// Based on operator< - template - inline bool - operator>=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) - { return !(__x < __y); } -} // namespace std - -#endif /* _STACK_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tempbuf.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tempbuf.h deleted file mode 100644 index 7263099d7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tempbuf.h +++ /dev/null @@ -1,170 +0,0 @@ -// Temporary buffer implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_tempbuf.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _TEMPBUF_H -#define _TEMPBUF_H 1 - -#include - -namespace std -{ - /** - * @if maint - * 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. - * @endif - */ - template - 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; - - void - _M_initialize_buffer(const _Tp&, __true_type) { } - - void - _M_initialize_buffer(const _Tp& val, __false_type) - { std::uninitialized_fill_n(_M_buffer, _M_len, val); } - - 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 - _Temporary_buffer<_ForwardIterator, _Tp>:: - _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) - : _M_original_len(std::distance(__first, __last)), - _M_len(0), _M_buffer(0) - { - // Workaround for a __type_traits bug in the pre-7.3 compiler. - typedef typename std::__is_scalar<_Tp>::__type _Trivial; - - try - { - pair __p(get_temporary_buffer< - value_type>(_M_original_len)); - _M_buffer = __p.first; - _M_len = __p.second; - if (_M_len > 0) - _M_initialize_buffer(*__first, _Trivial()); - } - catch(...) - { - std::return_temporary_buffer(_M_buffer); - _M_buffer = 0; - _M_len = 0; - __throw_exception_again; - } - } -} // namespace std - -#endif /* _TEMPBUF_H */ - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tree.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tree.h deleted file mode 100644 index 13088ca75..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_tree.h +++ /dev/null @@ -1,1497 +0,0 @@ -// RB tree implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_tree.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _TREE_H -#define _TREE_H 1 - -#include -#include -#include -#include -#include - -namespace std -{ - // 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 - struct _Rb_tree_node : public _Rb_tree_node_base - { - typedef _Rb_tree_node<_Val>* _Link_type; - _Val _M_value_field; - }; - - _Rb_tree_node_base* - _Rb_tree_increment(_Rb_tree_node_base* __x); - - const _Rb_tree_node_base* - _Rb_tree_increment(const _Rb_tree_node_base* __x); - - _Rb_tree_node_base* - _Rb_tree_decrement(_Rb_tree_node_base* __x); - - const _Rb_tree_node_base* - _Rb_tree_decrement(const _Rb_tree_node_base* __x); - - template - 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 &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 - 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) { } - - reference - operator*() const - { return static_cast<_Link_type>(_M_node)->_M_value_field; } - - pointer - operator->() const - { return &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 - inline bool - operator==(const _Rb_tree_iterator<_Val>& __x, - const _Rb_tree_const_iterator<_Val>& __y) - { return __x._M_node == __y._M_node; } - - template - 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_rotate_left(_Rb_tree_node_base* const __x, - _Rb_tree_node_base*& __root); - - void - _Rb_tree_rotate_right(_Rb_tree_node_base* const __x, - _Rb_tree_node_base*& __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); - - _Rb_tree_node_base* - _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, - _Rb_tree_node_base& __header); - - - template > - 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; - typedef _Rb_tree_node<_Val> _Rb_tree_node; - - 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* _Link_type; - typedef const _Rb_tree_node* _Const_Link_type; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef _Alloc allocator_type; - - allocator_type - get_allocator() const - { return *static_cast(&this->_M_impl); } - - protected: - _Rb_tree_node* - _M_get_node() - { return _M_impl._Node_allocator::allocate(1); } - - void - _M_put_node(_Rb_tree_node* __p) - { _M_impl._Node_allocator::deallocate(__p, 1); } - - _Link_type - _M_create_node(const value_type& __x) - { - _Link_type __tmp = _M_get_node(); - try - { get_allocator().construct(&__tmp->_M_value_field, __x); } - catch(...) - { - _M_put_node(__tmp); - __throw_exception_again; - } - return __tmp; - } - - _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; - } - - void - destroy_node(_Link_type __p) - { - get_allocator().destroy(&__p->_M_value_field); - _M_put_node(__p); - } - - protected: - template::__value> - 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(const _Node_allocator& __a = _Node_allocator(), - const _Key_compare& __comp = _Key_compare()) - : _Node_allocator(__a), _M_key_compare(__comp), _M_header(), - _M_node_count(0) - { - 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; - } - }; - - // Specialization for _Comparison types that are not capable of - // being base classes / super classes. - template - struct _Rb_tree_impl<_Key_compare, true> : 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(const _Node_allocator& __a = _Node_allocator(), - const _Key_compare& __comp = _Key_compare()) - : _Node_allocator(__a), _M_key_compare(__comp), _M_header(), - _M_node_count(0) - { - 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 iterator; - typedef _Rb_tree_const_iterator const_iterator; - - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - private: - iterator - _M_insert(_Base_ptr __x, _Base_ptr __y, const value_type& __v); - - const_iterator - _M_insert(_Const_Base_ptr __x, _Const_Base_ptr __y, - const value_type& __v); - - _Link_type - _M_copy(_Const_Link_type __x, _Link_type __p); - - void - _M_erase(_Link_type __x); - - public: - // allocation/deallocation - _Rb_tree() - { } - - _Rb_tree(const _Compare& __comp) - : _M_impl(allocator_type(), __comp) - { } - - _Rb_tree(const _Compare& __comp, const allocator_type& __a) - : _M_impl(__a, __comp) - { } - - _Rb_tree(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x) - : _M_impl(__x.get_allocator(), __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; - } - } - - ~_Rb_tree() - { _M_erase(_M_begin()); } - - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& - operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __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 size_type(-1); } - - void - swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t); - - // Insert/erase. - pair - insert_unique(const value_type& __x); - - iterator - insert_equal(const value_type& __x); - - iterator - insert_unique(iterator __position, const value_type& __x); - - const_iterator - insert_unique(const_iterator __position, const value_type& __x); - - iterator - insert_equal(iterator __position, const value_type& __x); - - const_iterator - insert_equal(const_iterator __position, const value_type& __x); - - template - void - insert_unique(_InputIterator __first, _InputIterator __last); - - template - void - insert_equal(_InputIterator __first, _InputIterator __last); - - void - erase(iterator __position); - - void - erase(const_iterator __position); - - size_type - erase(const key_type& __x); - - void - erase(iterator __first, iterator __last); - - void - erase(const_iterator __first, const_iterator __last); - - 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& __x); - - const_iterator - find(const key_type& __x) const; - - size_type - count(const key_type& __x) const; - - iterator - lower_bound(const key_type& __x); - - const_iterator - lower_bound(const key_type& __x) const; - - iterator - upper_bound(const key_type& __x); - - const_iterator - upper_bound(const key_type& __x) const; - - pair - equal_range(const key_type& __x); - - pair - equal_range(const key_type& __x) const; - - // Debugging. - bool - __rb_verify() const; - }; - - template - 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 - 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 - 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 - 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 - 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 - 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 - inline void - swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) - { __x.swap(__y); } - - template - _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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - _M_insert(_Base_ptr __x, _Base_ptr __p, const _Val& __v) - { - bool __insert_left = (__x != 0 || __p == _M_end() - || _M_impl._M_key_compare(_KeyOfValue()(__v), - _S_key(__p))); - - _Link_type __z = _M_create_node(__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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - _M_insert(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v) - { - bool __insert_left = (__x != 0 || __p == _M_end() - || _M_impl._M_key_compare(_KeyOfValue()(__v), - _S_key(__p))); - - _Link_type __z = _M_create_node(__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 const_iterator(__z); - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - insert_equal(const _Val& __v) - { - _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, __v); - } - - template - 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); - } - - template - pair::iterator, bool> - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - insert_unique(const _Val& __v) - { - _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(_M_insert(__x, __y, __v), true); - else - --__j; - if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v))) - return pair(_M_insert(__x, __y, __v), true); - return pair(__j, false); - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - insert_unique(iterator __position, const _Val& __v) - { - // 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(), __v); - else - return insert_unique(__v).first; - } - else if (_M_impl._M_key_compare(_KeyOfValue()(__v), - _S_key(__position._M_node))) - { - // First, try before... - iterator __before = __position; - if (__position._M_node == _M_leftmost()) // begin() - return _M_insert(_M_leftmost(), _M_leftmost(), __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, __v); - else - return _M_insert(__position._M_node, - __position._M_node, __v); - } - else - return insert_unique(__v).first; - } - else if (_M_impl._M_key_compare(_S_key(__position._M_node), - _KeyOfValue()(__v))) - { - // ... then try after. - iterator __after = __position; - if (__position._M_node == _M_rightmost()) - return _M_insert(0, _M_rightmost(), __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, __v); - else - return _M_insert(__after._M_node, __after._M_node, __v); - } - else - return insert_unique(__v).first; - } - else - return __position; // Equivalent keys. - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - insert_unique(const_iterator __position, const _Val& __v) - { - // 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(), __v); - else - return const_iterator(insert_unique(__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(), __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, __v); - else - return _M_insert(__position._M_node, - __position._M_node, __v); - } - else - return const_iterator(insert_unique(__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(), __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, __v); - else - return _M_insert(__after._M_node, __after._M_node, __v); - } - else - return const_iterator(insert_unique(__v).first); - } - else - return __position; // Equivalent keys. - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - insert_equal(iterator __position, const _Val& __v) - { - // 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(), __v); - else - return insert_equal(__v); - } - else if (!_M_impl._M_key_compare(_S_key(__position._M_node), - _KeyOfValue()(__v))) - { - // First, try before... - iterator __before = __position; - if (__position._M_node == _M_leftmost()) // begin() - return _M_insert(_M_leftmost(), _M_leftmost(), __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, __v); - else - return _M_insert(__position._M_node, - __position._M_node, __v); - } - else - return insert_equal(__v); - } - else - { - // ... then try after. - iterator __after = __position; - if (__position._M_node == _M_rightmost()) - return _M_insert(0, _M_rightmost(), __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, __v); - else - return _M_insert(__after._M_node, __after._M_node, __v); - } - else - return insert_equal(__v); - } - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - insert_equal(const_iterator __position, const _Val& __v) - { - // 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(), __v); - else - return const_iterator(insert_equal(__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(), __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, __v); - else - return _M_insert(__position._M_node, - __position._M_node, __v); - } - else - return const_iterator(insert_equal(__v)); - } - else - { - // ... then try after. - const_iterator __after = __position; - if (__position._M_node == _M_rightmost()) - return _M_insert(0, _M_rightmost(), __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, __v); - else - return _M_insert(__after._M_node, __after._M_node, __v); - } - else - return const_iterator(insert_equal(__v)); - } - } - - template - template - void - _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: - insert_equal(_II __first, _II __last) - { - for (; __first != __last; ++__first) - insert_equal(end(), *__first); - } - - template - template - void - _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: - insert_unique(_II __first, _II __last) - { - for (; __first != __last; ++__first) - insert_unique(end(), *__first); - } - - template - inline void - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - erase(iterator __position) - { - _Link_type __y = - static_cast<_Link_type>(_Rb_tree_rebalance_for_erase - (__position._M_node, - this->_M_impl._M_header)); - destroy_node(__y); - --_M_impl._M_node_count; - } - - template - inline void - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - erase(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)); - destroy_node(__y); - --_M_impl._M_node_count; - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - erase(const _Key& __x) - { - pair __p = equal_range(__x); - size_type __n = std::distance(__p.first, __p.second); - erase(__p.first, __p.second); - return __n; - } - - template - 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 - 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); - destroy_node(__x); - __x = __y; - } - } - - template - void - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - erase(iterator __first, iterator __last) - { - if (__first == begin() && __last == end()) - clear(); - else - while (__first != __last) - erase(__first++); - } - - template - void - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - erase(const_iterator __first, const_iterator __last) - { - if (__first == begin() && __last == end()) - clear(); - else - while (__first != __last) - erase(__first++); - } - - template - void - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - erase(const _Key* __first, const _Key* __last) - { - while (__first != __last) - erase(*__first++); - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - find(const _Key& __k) - { - _Link_type __x = _M_begin(); // Current node. - _Link_type __y = _M_end(); // Last node which is not less than __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); - - iterator __j = iterator(__y); - return (__j == end() - || _M_impl._M_key_compare(__k, - _S_key(__j._M_node))) ? end() : __j; - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - find(const _Key& __k) const - { - _Const_Link_type __x = _M_begin(); // Current node. - _Const_Link_type __y = _M_end(); // Last node which is not less than __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); - } - const_iterator __j = const_iterator(__y); - return (__j == end() - || _M_impl._M_key_compare(__k, - _S_key(__j._M_node))) ? end() : __j; - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - count(const _Key& __k) const - { - pair __p = equal_range(__k); - const size_type __n = std::distance(__p.first, __p.second); - return __n; - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - lower_bound(const _Key& __k) - { - _Link_type __x = _M_begin(); // Current node. - _Link_type __y = _M_end(); // Last node which is not less than __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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - lower_bound(const _Key& __k) const - { - _Const_Link_type __x = _M_begin(); // Current node. - _Const_Link_type __y = _M_end(); // Last node which is not less than __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 const_iterator(__y); - } - - template - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - upper_bound(const _Key& __k) - { - _Link_type __x = _M_begin(); // Current node. - _Link_type __y = _M_end(); // Last node which is greater than __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 _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - upper_bound(const _Key& __k) const - { - _Const_Link_type __x = _M_begin(); // Current node. - _Const_Link_type __y = _M_end(); // Last node which is greater than __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 const_iterator(__y); - } - - template - inline - pair::iterator, - typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator> - _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: - equal_range(const _Key& __k) - { return pair(lower_bound(__k), upper_bound(__k)); } - - template - inline - pair::const_iterator, - typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::const_iterator> - _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>:: - equal_range(const _Key& __k) const - { return pair(lower_bound(__k), - upper_bound(__k)); } - - unsigned int - _Rb_tree_black_count(const _Rb_tree_node_base* __node, - const _Rb_tree_node_base* __root); - - template - 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; - } -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_uninitialized.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_uninitialized.h deleted file mode 100644 index 6b06ad064..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_uninitialized.h +++ /dev/null @@ -1,397 +0,0 @@ -// Raw memory manipulators -*- C++ -*- - -// Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_uninitialized.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STL_UNINITIALIZED_H -#define _STL_UNINITIALIZED_H 1 - -#include - -namespace std -{ - // uninitialized_copy - template - inline _ForwardIterator - __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last, - _ForwardIterator __result, - __true_type) - { return std::copy(__first, __last, __result); } - - template - inline _ForwardIterator - __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last, - _ForwardIterator __result, - __false_type) - { - _ForwardIterator __cur = __result; - try - { - for (; __first != __last; ++__first, ++__cur) - std::_Construct(&*__cur, *__first); - return __cur; - } - catch(...) - { - std::_Destroy(__result, __cur); - __throw_exception_again; - } - } - - /** - * @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 - inline _ForwardIterator - uninitialized_copy(_InputIterator __first, _InputIterator __last, - _ForwardIterator __result) - { - typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; - typedef typename std::__is_scalar<_ValueType>::__type _Is_POD; - return std::__uninitialized_copy_aux(__first, __last, __result, - _Is_POD()); - } - - inline char* - uninitialized_copy(const char* __first, const char* __last, char* __result) - { - std::memmove(__result, __first, __last - __first); - return __result + (__last - __first); - } - - inline wchar_t* - uninitialized_copy(const wchar_t* __first, const wchar_t* __last, - wchar_t* __result) - { - std::memmove(__result, __first, sizeof(wchar_t) * (__last - __first)); - return __result + (__last - __first); - } - - // Valid if copy construction is equivalent to assignment, and if the - // destructor is trivial. - template - inline void - __uninitialized_fill_aux(_ForwardIterator __first, - _ForwardIterator __last, - const _Tp& __x, __true_type) - { std::fill(__first, __last, __x); } - - template - void - __uninitialized_fill_aux(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __x, __false_type) - { - _ForwardIterator __cur = __first; - try - { - for (; __cur != __last; ++__cur) - std::_Construct(&*__cur, __x); - } - catch(...) - { - std::_Destroy(__first, __cur); - __throw_exception_again; - } - } - - /** - * @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 - inline void - uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __x) - { - typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; - typedef typename std::__is_scalar<_ValueType>::__type _Is_POD; - std::__uninitialized_fill_aux(__first, __last, __x, _Is_POD()); - } - - // Valid if copy construction is equivalent to assignment, and if the - // destructor is trivial. - template - inline void - __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n, - const _Tp& __x, __true_type) - { std::fill_n(__first, __n, __x); } - - template - void - __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n, - const _Tp& __x, __false_type) - { - _ForwardIterator __cur = __first; - try - { - for (; __n > 0; --__n, ++__cur) - std::_Construct(&*__cur, __x); - } - catch(...) - { - std::_Destroy(__first, __cur); - __throw_exception_again; - } - } - - /** - * @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 - inline void - uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x) - { - typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType; - typedef typename std::__is_scalar<_ValueType>::__type _Is_POD; - std::__uninitialized_fill_n_aux(__first, __n, __x, _Is_POD()); - } - - // 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 - _ForwardIterator - __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, - _ForwardIterator __result, - _Allocator __alloc) - { - _ForwardIterator __cur = __result; - try - { - for (; __first != __last; ++__first, ++__cur) - __alloc.construct(&*__cur, *__first); - return __cur; - } - catch(...) - { - std::_Destroy(__result, __cur, __alloc); - __throw_exception_again; - } - } - - template - inline _ForwardIterator - __uninitialized_copy_a(_InputIterator __first, _InputIterator __last, - _ForwardIterator __result, - allocator<_Tp>) - { - return std::uninitialized_copy(__first, __last, __result); - } - - template - void - __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __x, _Allocator __alloc) - { - _ForwardIterator __cur = __first; - try - { - for (; __cur != __last; ++__cur) - __alloc.construct(&*__cur, __x); - } - catch(...) - { - std::_Destroy(__first, __cur, __alloc); - __throw_exception_again; - } - } - - template - inline void - __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __x, allocator<_Tp2>) - { - std::uninitialized_fill(__first, __last, __x); - } - - template - 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(&*__cur, __x); - } - catch(...) - { - std::_Destroy(__first, __cur, __alloc); - __throw_exception_again; - } - } - - template - void - __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n, - const _Tp& __x, - allocator<_Tp2>) - { - std::uninitialized_fill_n(__first, __n, __x); - } - - - // Extensions: __uninitialized_copy_copy, __uninitialized_copy_fill, - // __uninitialized_fill_copy. All of these algorithms take a user- - // supplied allocator, which is used for construction and destruction. - - // __uninitialized_copy_copy - // Copies [first1, last1) into [result, result + (last1 - first1)), and - // copies [first2, last2) into - // [result, result + (last1 - first1) + (last2 - first2)). - - template - inline _ForwardIterator - __uninitialized_copy_copy(_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_copy_a(__first2, __last2, __mid, __alloc); - } - catch(...) - { - std::_Destroy(__result, __mid, __alloc); - __throw_exception_again; - } - } - - // __uninitialized_fill_copy - // Fills [result, mid) with x, and copies [first, last) into - // [mid, mid + (last - first)). - template - inline _ForwardIterator - __uninitialized_fill_copy(_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_copy_a(__first, __last, __mid, __alloc); - } - catch(...) - { - std::_Destroy(__result, __mid, __alloc); - __throw_exception_again; - } - } - - // __uninitialized_copy_fill - // Copies [first1, last1) into [first2, first2 + (last1 - first1)), and - // fills [first2 + (last1 - first1), last2) with x. - template - inline void - __uninitialized_copy_fill(_InputIterator __first1, _InputIterator __last1, - _ForwardIterator __first2, - _ForwardIterator __last2, const _Tp& __x, - _Allocator __alloc) - { - _ForwardIterator __mid2 = std::__uninitialized_copy_a(__first1, __last1, - __first2, - __alloc); - try - { - std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc); - } - catch(...) - { - std::_Destroy(__first2, __mid2, __alloc); - __throw_exception_again; - } - } - -} // namespace std - -#endif /* _STL_UNINITIALIZED_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_vector.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_vector.h deleted file mode 100644 index d673b9a28..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stl_vector.h +++ /dev/null @@ -1,984 +0,0 @@ -// Vector implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 stl_vector.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _VECTOR_H -#define _VECTOR_H 1 - -#include -#include -#include - -namespace _GLIBCXX_STD -{ - /** - * @if maint - * See bits/stl_deque.h's _Deque_base for an explanation. - * @endif - */ - template - struct _Vector_base - { - typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type; - - struct _Vector_impl - : public _Tp_alloc_type - { - _Tp* _M_start; - _Tp* _M_finish; - _Tp* _M_end_of_storage; - _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(&this->_M_impl); } - - allocator_type - get_allocator() const - { return _M_get_Tp_allocator(); } - - _Vector_base(const allocator_type& __a) - : _M_impl(__a) - { } - - _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; - } - - ~_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; - - _Tp* - _M_allocate(size_t __n) - { return _M_impl.allocate(__n); } - - void - _M_deallocate(_Tp* __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 Containers - * @ingroup Sequences - * - * Meets the requirements of a container, a - * reversible container, and a - * sequence, including the - * optional sequence requirements 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 > - 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 vector<_Tp, _Alloc> vector_type; - 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 iterator; - typedef __gnu_cxx::__normal_iterator - const_iterator; - typedef std::reverse_iterator const_reverse_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef _Alloc allocator_type; - - protected: - /** @if maint - * These two functions and three data members are all from the - * base class. They should be pretty self-explanatory, as - * %vector uses a simple contiguous allocation scheme. @endif - */ - 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. - */ - explicit - vector(const allocator_type& __a = allocator_type()) - : _Base(__a) - { } - - /** - * @brief Create a %vector with copies of an exemplar element. - * @param n The number of elements to initially create. - * @param value An element to copy. - * - * 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) - { - 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_start + __n; - } - - /** - * @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.get_allocator()) - { this->_M_impl._M_finish = - std::__uninitialized_copy_a(__x.begin(), __x.end(), - this->_M_impl._M_start, - _M_get_Tp_allocator()); - } - - /** - * @brief Builds a %vector from a range. - * @param first An input iterator. - * @param last An input iterator. - * - * 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 - 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 - * responsibilty. - */ - ~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); - - /** - * @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 - 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()); - } - - /// 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()); } - - // [23.2.4.2] capacity - /** Returns the number of elements in the %vector. */ - size_type - size() const - { return size_type(end() - begin()); } - - /** Returns the size() of the largest possible %vector. */ - size_type - max_size() const - { return size_type(-1) / sizeof(value_type); } - - /** - * @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()) - erase(begin() + __new_size, end()); - else - insert(end(), __new_size - size(), __x); - } - - /** - * Returns the total number of elements that the %vector can - * hold before needing to allocate more memory. - */ - size_type - capacity() const - { return size_type(const_iterator(this->_M_impl._M_end_of_storage) - - begin()); } - - /** - * 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 *(begin() + __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 *(begin() + __n); } - - protected: - /// @if maint Safety check used only from at(). @endif - 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(). - */ - pointer - data() - { return pointer(this->_M_impl._M_start); } - - const_pointer - data() const - { return const_pointer(this->_M_impl._M_start); } - - // [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); - } - - /** - * @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); - } - - /** - * @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); - - /** - * @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 - 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 responsibilty. - */ - 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 responsibilty. - */ - 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); - } - - /** - * 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 responsibilty. - */ - void - clear() - { - std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, - _M_get_Tp_allocator()); - this->_M_impl._M_finish = this->_M_impl._M_start; - } - - protected: - /** - * @if maint - * Memory expansion handler. Uses the member allocation function to - * obtain @a n bytes of memory, and then copies [first,last) into it. - * @endif - */ - template - 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 - template - void - _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type) - { - this->_M_impl._M_start = _M_allocate(__n); - this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n; - 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; - } - - // Called by the range constructor to implement [23.1.1]/9 - template - 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 - 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 - 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()); - } - - - // 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 - template - void - _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { - _M_fill_assign(static_cast(__n), - static_cast(__val)); - } - - // Called by the range assign to implement [23.1.1]/9 - template - 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 - void - _M_assign_aux(_InputIterator __first, _InputIterator __last, - std::input_iterator_tag); - - // Called by the second assign_dispatch above - template - 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 - template - void - _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, - __true_type) - { - _M_fill_insert(__pos, static_cast(__n), - static_cast(__val)); - } - - // Called by the range insert to implement [23.1.1]/9 - template - 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 - void - _M_range_insert(iterator __pos, _InputIterator __first, - _InputIterator __last, std::input_iterator_tag); - - // Called by the second insert_dispatch above - template - 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); - - // Called by insert(p,x) - void - _M_insert_aux(iterator __position, const value_type& __x); - }; - - - /** - * @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 - 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 - 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 - inline bool - operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) - { return !(__x == __y); } - - /// Based on operator< - template - inline bool - operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) - { return __y < __x; } - - /// Based on operator< - template - inline bool - operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) - { return !(__y < __x); } - - /// Based on operator< - template - inline bool - operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) - { return !(__x < __y); } - - /// See std::vector::swap(). - template - inline void - swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y) - { __x.swap(__y); } -} // namespace std - -#endif /* _VECTOR_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stream_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stream_iterator.h deleted file mode 100644 index 4745e76f2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stream_iterator.h +++ /dev/null @@ -1,214 +0,0 @@ -// Stream iterators - -// Copyright (C) 2001, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 stream_iterator.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STREAM_ITERATOR_H -#define _STREAM_ITERATOR_H 1 - -#pragma GCC system_header - -#include - -namespace std -{ - /// Provides input iterator semantics for streams. - template, typename _Dist = ptrdiff_t> - class istream_iterator - : public iterator - { - 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. - 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 - 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 - 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 > - class ostream_iterator - : public iterator - { - 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; } - }; -} // namespace std -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf.tcc deleted file mode 100644 index e6c54ed08..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf.tcc +++ /dev/null @@ -1,154 +0,0 @@ -// Stream buffer classes -*- C++ -*- - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 streambuf.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -// -// ISO C++ 14882: 27.5 Stream buffers -// - -#ifndef _STREAMBUF_TCC -#define _STREAMBUF_TCC 1 - -#pragma GCC system_header - -namespace std -{ - template - 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->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 - 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->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 - streamsize - __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin, - basic_streambuf<_CharT, _Traits>* __sbout) - { - streamsize __ret = 0; - 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())) - break; - ++__ret; - __c = __sbin->snextc(); - } - return __ret; - } - - // 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 class basic_streambuf; - extern template - streamsize - __copy_streambufs(basic_streambuf*, basic_streambuf*); - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template class basic_streambuf; - extern template - streamsize - __copy_streambufs(basic_streambuf*, basic_streambuf*); -#endif -#endif -} // namespace std - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf_iterator.h deleted file mode 100644 index 0de592202..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/streambuf_iterator.h +++ /dev/null @@ -1,258 +0,0 @@ -// Streambuf iterators - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 streambuf_iterator.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STREAMBUF_ITERATOR_H -#define _STREAMBUF_ITERATOR_H 1 - -#pragma GCC system_header - -#include -#include - -// NB: Should specialize copy, find algorithms for streambuf iterators. - -namespace std -{ - // 24.5.3 Template class istreambuf_iterator - /// Provides input iterator semantics for streambufs. - template - class istreambuf_iterator - : public iterator - { - 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; - //@} - - 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. - 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 - { - const bool __thiseof = _M_at_eof(); - const bool __beof = __b._M_at_eof(); - return (__thiseof && __beof || (!__thiseof && !__beof)); - } - - 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 - inline bool - operator==(const istreambuf_iterator<_CharT, _Traits>& __a, - const istreambuf_iterator<_CharT, _Traits>& __b) - { return __a.equal(__b); } - - template - 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 - class ostreambuf_iterator - : public iterator - { - 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; - //@} - - 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; - } - }; -} // namespace std -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stringfwd.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stringfwd.h deleted file mode 100644 index 8bb59d96c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/stringfwd.h +++ /dev/null @@ -1,69 +0,0 @@ -// String support -*- C++ -*- - -// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -// -// ISO C++ 14882: 21 Strings library -// - -/** @file stringfwd.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _STRINGFWD_H -#define _STRINGFWD_H 1 - -#pragma GCC system_header - -#include - -namespace std -{ - template - class allocator; - - template - struct char_traits; - - template, - typename _Alloc = allocator<_CharT> > - class basic_string; - - template<> struct char_traits; - - typedef basic_string string; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> struct char_traits; - - typedef basic_string wstring; -#endif -} // namespace std - -#endif // _STRINGFWD_H diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_after.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_after.h deleted file mode 100644 index 8d73d42f2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_after.h +++ /dev/null @@ -1,558 +0,0 @@ -// The template and inlines for the -*- C++ -*- internal _Meta class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file valarray_after.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _VALARRAY_AFTER_H -#define _VALARRAY_AFTER_H 1 - -#pragma GCC system_header - -namespace std -{ - // - // gslice_array closure. - // - template - class _GBase - { - public: - typedef typename _Dom::value_type value_type; - - _GBase (const _Dom& __e, const valarray& __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& _M_index; - }; - - template - class _GBase<_Array<_Tp> > - { - public: - typedef _Tp value_type; - - _GBase (_Array<_Tp> __a, const valarray& __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& _M_index; - }; - - template - struct _GClos<_Expr, _Dom> - : _GBase<_Dom> - { - typedef _GBase<_Dom> _Base; - typedef typename _Base::value_type value_type; - - _GClos (const _Dom& __e, const valarray& __i) - : _Base (__e, __i) {} - }; - - template - 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& __i) - : _Base (__a, __i) {} - }; - - // - // indirect_array closure - // - template - class _IBase - { - public: - typedef typename _Dom::value_type value_type; - - _IBase (const _Dom& __e, const valarray& __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& _M_index; - }; - - template - struct _IClos<_Expr, _Dom> - : _IBase<_Dom> - { - typedef _IBase<_Dom> _Base; - typedef typename _Base::value_type value_type; - - _IClos (const _Dom& __e, const valarray& __i) - : _Base (__e, __i) {} - }; - - template - struct _IClos<_ValArray, _Tp> - : _IBase > - { - typedef _IBase > _Base; - typedef _Tp value_type; - - _IClos (const valarray<_Tp>& __a, const valarray& __i) - : _Base (__a, __i) {} - }; - - // - // class _Expr - // - template - class _Expr - { - public: - typedef _Tp value_type; - - _Expr(const _Clos&); - - const _Clos& operator()() const; - - value_type operator[](size_t) const; - valarray operator[](slice) const; - valarray operator[](const gslice&) const; - valarray operator[](const valarray&) const; - valarray operator[](const valarray&) 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 shift(int) const; - valarray cshift(int) const; - - value_type min() const; - value_type max() const; - - valarray apply(value_type (*)(const value_type&)) const; - valarray apply(value_type (*)(value_type)) const; - - private: - const _Clos _M_closure; - }; - - template - inline - _Expr<_Clos, _Tp>::_Expr(const _Clos& __c) : _M_closure(__c) {} - - template - inline const _Clos& - _Expr<_Clos, _Tp>::operator()() const - { return _M_closure; } - - template - inline _Tp - _Expr<_Clos, _Tp>::operator[](size_t __i) const - { return _M_closure[__i]; } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::operator[](slice __s) const - { - valarray<_Tp> __v = valarray<_Tp>(*this)[__s]; - return __v; - } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::operator[](const gslice& __gs) const - { - valarray<_Tp> __v = valarray<_Tp>(*this)[__gs]; - return __v; - } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::operator[](const valarray& __m) const - { - valarray<_Tp> __v = valarray<_Tp>(*this)[__m]; - return __v; - } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::operator[](const valarray& __i) const - { - valarray<_Tp> __v = valarray<_Tp>(*this)[__i]; - return __v; - } - - template - inline size_t - _Expr<_Clos, _Tp>::size() const - { return _M_closure.size(); } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::shift(int __n) const - { - valarray<_Tp> __v = valarray<_Tp>(*this).shift(__n); - return __v; - } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::cshift(int __n) const - { - valarray<_Tp> __v = valarray<_Tp>(*this).cshift(__n); - return __v; - } - - template - inline valarray<_Tp> - _Expr<_Clos, _Tp>::apply(_Tp __f(const _Tp&)) const - { - valarray<_Tp> __v = valarray<_Tp>(*this).apply(__f); - return __v; - } - - template - 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 - 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 - inline _Tp - _Expr<_Clos, _Tp>::min() const - { return __valarray_min(_M_closure); } - - template - inline _Tp - _Expr<_Clos, _Tp>::max() const - { return __valarray_max(_M_closure); } - - template - inline _Expr<_UnClos<__logical_not, _Expr, _Dom>, bool> - _Expr<_Dom, _Tp>::operator!() const - { - typedef _UnClos<__logical_not, std::_Expr, _Dom> _Closure; - return _Expr<_Closure, _Tp>(_Closure(this->_M_closure)); - } - -#define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ - template \ - 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 \ - 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 \ - 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 \ - 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 \ - 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& __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 \ - inline _Expr<_BinClos<_Name, _ValArray, _Expr, \ - typename _Dom::value_type, _Dom>, \ - typename __fun<_Name, typename _Dom::value_type>::result_type> \ - operator _Op(const valarray& __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) \ - template \ - inline _Expr<_UnClos<__##_Name, _Expr, _Dom>, \ - typename _Dom::value_type> \ - _Name(const _Expr<_Dom, typename _Dom::value_type>& __e) \ - { \ - typedef typename _Dom::value_type _Tp; \ - typedef _UnClos<__##_Name, _Expr, _Dom> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__e())); \ - } \ - \ - template \ - inline _Expr<_UnClos<__##_Name, _ValArray, _Tp>, _Tp> \ - _Name(const valarray<_Tp>& __v) \ - { \ - typedef _UnClos<__##_Name, _ValArray, _Tp> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__v)); \ - } - - _DEFINE_EXPR_UNARY_FUNCTION(abs) - _DEFINE_EXPR_UNARY_FUNCTION(cos) - _DEFINE_EXPR_UNARY_FUNCTION(acos) - _DEFINE_EXPR_UNARY_FUNCTION(cosh) - _DEFINE_EXPR_UNARY_FUNCTION(sin) - _DEFINE_EXPR_UNARY_FUNCTION(asin) - _DEFINE_EXPR_UNARY_FUNCTION(sinh) - _DEFINE_EXPR_UNARY_FUNCTION(tan) - _DEFINE_EXPR_UNARY_FUNCTION(tanh) - _DEFINE_EXPR_UNARY_FUNCTION(atan) - _DEFINE_EXPR_UNARY_FUNCTION(exp) - _DEFINE_EXPR_UNARY_FUNCTION(log) - _DEFINE_EXPR_UNARY_FUNCTION(log10) - _DEFINE_EXPR_UNARY_FUNCTION(sqrt) - -#undef _DEFINE_EXPR_UNARY_FUNCTION - -#define _DEFINE_EXPR_BINARY_FUNCTION(_Fun) \ - template \ - inline _Expr<_BinClos<__##_Fun, _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<__##_Fun, _Expr, _Expr, _Dom1, _Dom2> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__e1(), __e2())); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _Expr, _ValArray, _Dom, \ - typename _Dom::value_type>, \ - typename _Dom::value_type> \ - _Fun(const _Expr<_Dom, typename _Dom::value_type>& __e, \ - const valarray& __v) \ - { \ - typedef typename _Dom::value_type _Tp; \ - typedef _BinClos<__##_Fun, _Expr, _ValArray, _Dom, _Tp> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__e(), __v)); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _ValArray, _Expr, \ - typename _Dom::value_type, _Dom>, \ - typename _Dom::value_type> \ - _Fun(const valarray& __v, \ - const _Expr<_Dom, typename _Dom::value_type>& __e) \ - { \ - typedef typename _Dom::value_type _Tp; \ - typedef _BinClos<__##_Fun, _ValArray, _Expr, _Tp, _Dom> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__v, __e())); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _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<__##_Fun, _Expr, _Constant, _Dom, _Tp> _Closure;\ - return _Expr<_Closure, _Tp>(_Closure(__e(), __t)); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _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<__##_Fun, _Constant, _Expr, _Tp, _Dom> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__t, __e())); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _ValArray, _ValArray, _Tp, _Tp>, _Tp> \ - _Fun(const valarray<_Tp>& __v, const valarray<_Tp>& __w) \ - { \ - typedef _BinClos<__##_Fun, _ValArray, _ValArray, _Tp, _Tp> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__v, __w)); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _ValArray, _Constant, _Tp, _Tp>, _Tp> \ - _Fun(const valarray<_Tp>& __v, const _Tp& __t) \ - { \ - typedef _BinClos<__##_Fun, _ValArray, _Constant, _Tp, _Tp> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__v, __t)); \ - } \ - \ - template \ - inline _Expr<_BinClos<__##_Fun, _Constant, _ValArray, _Tp, _Tp>, _Tp> \ - _Fun(const _Tp& __t, const valarray<_Tp>& __v) \ - { \ - typedef _BinClos<__##_Fun, _Constant, _ValArray, _Tp, _Tp> _Closure; \ - return _Expr<_Closure, _Tp>(_Closure(__t, __v)); \ - } - -_DEFINE_EXPR_BINARY_FUNCTION(atan2) -_DEFINE_EXPR_BINARY_FUNCTION(pow) - -#undef _DEFINE_EXPR_BINARY_FUNCTION - -} // std:: - -#endif /* _CPP_VALARRAY_AFTER_H */ - -// Local Variables: -// mode:c++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.h deleted file mode 100644 index 940d886c4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.h +++ /dev/null @@ -1,691 +0,0 @@ -// The template and inlines for the -*- C++ -*- internal _Array helper class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file valarray_array.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _VALARRAY_ARRAY_H -#define _VALARRAY_ARRAY_H 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include - -namespace std -{ - // - // 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 - 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 v(n);' - template - 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* __restrict__ __b, _Tp* __restrict__ __e) - { - while (__b != __e) - new(__b++) _Tp(); - } - }; - - template - struct _Array_default_ctor<_Tp, true> - { - // For fundamental types, it suffices to say 'memset()' - inline static void - _S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e) - { std::memset(__b, 0, (__e - __b) * sizeof(_Tp)); } - }; - - template - inline void - __valarray_default_construct(_Tp* __restrict__ __b, _Tp* __restrict__ __e) - { - _Array_default_ctor<_Tp, __is_fundamental<_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 v(n, t). Also - // used in valarray<>::resize(). - template - 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* __restrict__ __b, _Tp* __restrict__ __e, const _Tp __t) - { - while (__b != __e) - new(__b++) _Tp(__t); - } - }; - - template - struct _Array_init_ctor<_Tp, true> - { - inline static void - _S_do_it(_Tp* __restrict__ __b, _Tp* __restrict__ __e, const _Tp __t) - { - while (__b != __e) - *__b++ = __t; - } - }; - - template - inline void - __valarray_fill_construct(_Tp* __restrict__ __b, _Tp* __restrict__ __e, - const _Tp __t) - { - _Array_init_ctor<_Tp, __is_fundamental<_Tp>::__value>:: - _S_do_it(__b, __e, __t); - } - - // - // copy-construct raw array [__o, *) from plain array [__b, __e) - // We can't just say 'memcpy()' - // - template - 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* __restrict__ __b, const _Tp* __restrict__ __e, - _Tp* __restrict__ __o) - { - while (__b != __e) - new(__o++) _Tp(*__b++); - } - }; - - template - struct _Array_copy_ctor<_Tp, true> - { - inline static void - _S_do_it(const _Tp* __restrict__ __b, const _Tp* __restrict__ __e, - _Tp* __restrict__ __o) - { std::memcpy(__o, __b, (__e - __b)*sizeof(_Tp)); } - }; - - template - inline void - __valarray_copy_construct(const _Tp* __restrict__ __b, - const _Tp* __restrict__ __e, - _Tp* __restrict__ __o) - { - _Array_copy_ctor<_Tp, __is_fundamental<_Tp>::__value>:: - _S_do_it(__b, __e, __o); - } - - // copy-construct raw array [__o, *) from strided array __a[<__n : __s>] - template - inline void - __valarray_copy_construct (const _Tp* __restrict__ __a, size_t __n, - size_t __s, _Tp* __restrict__ __o) - { - if (__is_fundamental<_Tp>::__value) - 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 - inline void - __valarray_copy_construct (const _Tp* __restrict__ __a, - const size_t* __restrict__ __i, - _Tp* __restrict__ __o, size_t __n) - { - if (__is_fundamental<_Tp>::__value) - while (__n--) - *__o++ = __a[*__i++]; - else - while (__n--) - new (__o++) _Tp(__a[*__i++]); - } - - // Do the necessary cleanup when we're done with arrays. - template - inline void - __valarray_destroy_elements(_Tp* __restrict__ __b, _Tp* __restrict__ __e) - { - if (!__is_fundamental<_Tp>::__value) - while (__b != __e) - { - __b->~_Tp(); - ++__b; - } - } - - // Fill a plain array __a[<__n>] with __t - template - 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 - 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 indir ect array __a[__i[<__n>]] with __i - template - 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 - struct _Array_copier - { - inline static void - _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b) - { - while(__n--) - *__b++ = *__a++; - } - }; - - template - struct _Array_copier<_Tp, true> - { - inline static void - _S_do_it(const _Tp* __restrict__ __a, size_t __n, _Tp* __restrict__ __b) - { std::memcpy (__b, __a, __n * sizeof (_Tp)); } - }; - - // Copy a plain array __a[<__n>] into a play array __b[<>] - template - inline void - __valarray_copy(const _Tp* __restrict__ __a, size_t __n, - _Tp* __restrict__ __b) - { - _Array_copier<_Tp, __is_fundamental<_Tp>::__value>:: - _S_do_it(__a, __n, __b); - } - - // Copy strided array __a[<__n : __s>] in plain __b[<__n>] - template - 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 - 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 - 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 - 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 - 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 - 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 - inline _Tp - __valarray_sum(const _Tp* __restrict__ __f, const _Tp* __restrict__ __l) - { - _Tp __r = _Tp(); - while (__f != __l) - __r += *__f++; - return __r; - } - - // Compute the product of all elements in range [__f, __l) - template - inline _Tp - __valarray_product(const _Tp* __restrict__ __f, - const _Tp* __restrict__ __l) - { - _Tp __r = _Tp(1); - while (__f != __l) - __r = __r * *__f++; - return __r; - } - - // Compute the min/max of an array-expression - template - 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 - 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 - 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; - }; - - template - inline void - __valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t) - { std::__valarray_fill(__a._M_data, __n, __t); } - - template - 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 - inline void - __valarray_fill(_Array<_Tp> __a, _Array __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 - 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 - 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 - 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 - 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 - inline void - __valarray_copy(_Array<_Tp> __a, _Array __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 - inline void - __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, - _Array __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 - inline void - __valarray_copy(_Array<_Tp> __src, size_t __n, _Array __i, - _Array<_Tp> __dst, _Array __j) - { - std::__valarray_copy(__src._M_data, __n, __i._M_data, - __dst._M_data, __j._M_data); - } - - template - inline - _Array<_Tp>::_Array(size_t __n) - : _M_data(__valarray_get_storage<_Tp>(__n)) - { std::__valarray_default_construct(_M_data, _M_data + __n); } - - template - inline - _Array<_Tp>::_Array(_Tp* const __restrict__ __p) - : _M_data (__p) {} - - template - inline - _Array<_Tp>::_Array(const valarray<_Tp>& __v) - : _M_data (__v._M_data) {} - - template - 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 - inline _Tp* - _Array<_Tp>::begin () const - { return _M_data; } - -#define _DEFINE_ARRAY_FUNCTION(_Op, _Name) \ - template \ - 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 \ - 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 \ - 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 \ - 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 \ - 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 \ - 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 \ - inline void \ - _Array_augmented_##_Name(_Array<_Tp> __a, _Array __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 \ - inline void \ - _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, \ - _Array<_Tp> __b, _Array __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 \ - void \ - _Array_augmented_##_Name(_Array<_Tp> __a, _Array __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 \ - void \ - _Array_augmented_##_Name(_Array<_Tp> __a, _Array __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 \ - void \ - _Array_augmented_##_Name(_Array<_Tp> __a, size_t __n, \ - _Array<_Tp> __b, _Array __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 \ - void \ - _Array_augmented_##_Name(_Array<_Tp> __a, _Array __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_VALARRAY_FUNCTION -} // namespace std - -#ifndef _GLIBCXX_EXPORT_TEMPLATE -# include -#endif - -#endif /* _ARRAY_H */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.tcc deleted file mode 100644 index b4be2c7d0..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_array.tcc +++ /dev/null @@ -1,245 +0,0 @@ -// The template and inlines for the -*- C++ -*- internal _Array helper class. - -// Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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 valarray_array.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -// Written by Gabriel Dos Reis - -#ifndef _VALARRAY_ARRAY_TCC -#define _VALARRAY_ARRAY_TCC 1 - -namespace std -{ - template - void - __valarray_fill(_Array<_Tp> __a, size_t __n, _Array __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 - void - __valarray_copy(_Array<_Tp> __a, _Array __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 - void - __valarray_copy(_Array<_Tp> __a, size_t __n, _Array<_Tp> __b, - _Array __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 - void - __valarray_copy(_Array<_Tp> __a, _Array __m, size_t __n, - _Array<_Tp> __b, _Array __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 - 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 - 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 - void - __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, - _Array<_Tp> __a, _Array __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 - void - __valarray_copy(_Array<_Tp> __e, _Array __f, - size_t __n, - _Array<_Tp> __a, _Array __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 - void - __valarray_copy(const _Expr<_Dom, _Tp>& __e, size_t __n, - _Array<_Tp> __a, _Array __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 - 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 - void - __valarray_copy_construct(_Array<_Tp> __a, _Array __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); - } - } -} // namespace std - -#endif /* _VALARRAY_ARRAY_TCC */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_before.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_before.h deleted file mode 100644 index 2f1a64f82..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/valarray_before.h +++ /dev/null @@ -1,739 +0,0 @@ -// The template and inlines for the -*- C++ -*- internal _Meta class. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// Written by Gabriel Dos Reis - -/** @file valarray_before.h - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _VALARRAY_BEFORE_H -#define _VALARRAY_BEFORE_H 1 - -#pragma GCC system_header - -#include - -namespace std -{ - // - // 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 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 - _Tp operator()(const _Tp& __t) const - { return abs(__t); } - }; - - struct __cos - { - template - _Tp operator()(const _Tp& __t) const - { return cos(__t); } - }; - - struct __acos - { - template - _Tp operator()(const _Tp& __t) const - { return acos(__t); } - }; - - struct __cosh - { - template - _Tp operator()(const _Tp& __t) const - { return cosh(__t); } - }; - - struct __sin - { - template - _Tp operator()(const _Tp& __t) const - { return sin(__t); } - }; - - struct __asin - { - template - _Tp operator()(const _Tp& __t) const - { return asin(__t); } - }; - - struct __sinh - { - template - _Tp operator()(const _Tp& __t) const - { return sinh(__t); } - }; - - struct __tan - { - template - _Tp operator()(const _Tp& __t) const - { return tan(__t); } - }; - - struct __atan - { - template - _Tp operator()(const _Tp& __t) const - { return atan(__t); } - }; - - struct __tanh - { - template - _Tp operator()(const _Tp& __t) const - { return tanh(__t); } - }; - - struct __exp - { - template - _Tp operator()(const _Tp& __t) const - { return exp(__t); } - }; - - struct __log - { - template - _Tp operator()(const _Tp& __t) const - { return log(__t); } - }; - - struct __log10 - { - template - _Tp operator()(const _Tp& __t) const - { return log10(__t); } - }; - - struct __sqrt - { - template - _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 - _Tp operator()(const _Tp& __t) const - { return +__t; } - }; - - struct __negate - { - template - _Tp operator()(const _Tp& __t) const - { return -__t; } - }; - - struct __bitwise_not - { - template - _Tp operator()(const _Tp& __t) const - { return ~__t; } - }; - - struct __plus - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x + __y; } - }; - - struct __minus - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x - __y; } - }; - - struct __multiplies - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x * __y; } - }; - - struct __divides - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x / __y; } - }; - - struct __modulus - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x % __y; } - }; - - struct __bitwise_xor - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x ^ __y; } - }; - - struct __bitwise_and - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x & __y; } - }; - - struct __bitwise_or - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x | __y; } - }; - - struct __shift_left - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x << __y; } - }; - - struct __shift_right - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return __x >> __y; } - }; - - struct __logical_and - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x && __y; } - }; - - struct __logical_or - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x || __y; } - }; - - struct __logical_not - { - template - bool operator()(const _Tp& __x) const { return !__x; } - }; - - struct __equal_to - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x == __y; } - }; - - struct __not_equal_to - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x != __y; } - }; - - struct __less - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x < __y; } - }; - - struct __greater - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x > __y; } - }; - - struct __less_equal - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x <= __y; } - }; - - struct __greater_equal - { - template - bool operator()(const _Tp& __x, const _Tp& __y) const - { return __x >= __y; } - }; - - // The few binary functions we miss. - struct __atan2 - { - template - _Tp operator()(const _Tp& __x, const _Tp& __y) const - { return atan2(__x, __y); } - }; - - struct __pow - { - template - _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 - struct __fun - { - typedef _Tp result_type; - }; - - // several specializations for relational operators. - template - struct __fun<__logical_not, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__logical_and, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__logical_or, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__less, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__greater, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__less_equal, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__greater_equal, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__equal_to, _Tp> - { - typedef bool result_type; - }; - - template - struct __fun<__not_equal_to, _Tp> - { - typedef bool result_type; - }; - - // - // Apply function taking a value/const reference closure - // - - template - 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 - 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 - struct _ValFunClos<_ValArray,_Tp> : _FunBase, _Tp> - { - typedef _FunBase, _Tp> _Base; - typedef _Tp value_type; - - _ValFunClos(const valarray<_Tp>& __v, _Tp __f(_Tp)) : _Base(__v, __f) {} - }; - - template - 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 - struct _RefFunClos<_ValArray, _Tp> - : _FunBase, const _Tp&> - { - typedef _FunBase, const _Tp&> _Base; - typedef _Tp value_type; - - _RefFunClos(const valarray<_Tp>& __v, _Tp __f(const _Tp&)) - : _Base(__v, __f) {} - }; - - // - // Unary expression closure. - // - - template - 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 - 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 - 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 _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 _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 _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 - 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 - struct _BinClos<_Oper,_ValArray, _ValArray, _Tp, _Tp> - : _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> > - { - typedef _BinBase<_Oper, valarray<_Tp>, valarray<_Tp> > _Base; - typedef _Tp value_type; - - _BinClos(const valarray<_Tp>& __v, const valarray<_Tp>& __w) - : _Base(__v, __w) {} - }; - - template - struct _BinClos<_Oper, _Expr, _ValArray, _Dom, typename _Dom::value_type> - : _BinBase<_Oper, _Dom, valarray > - { - 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 - struct _BinClos<_Oper, _ValArray, _Expr, typename _Dom::value_type, _Dom> - : _BinBase<_Oper, valarray,_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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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) {} - }; - -} // std:: - -#endif /* _CPP_VALARRAY_BEFORE_H */ - -// Local Variables: -// mode:c++ -// End: diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/vector.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/vector.tcc deleted file mode 100644 index 3a9b66e1d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/bits/vector.tcc +++ /dev/null @@ -1,494 +0,0 @@ -// Vector implementation (out of line) -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 vector.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _VECTOR_TCC -#define _VECTOR_TCC 1 - -namespace _GLIBCXX_STD -{ - template - 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, - this->_M_impl._M_start, - 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; - } - } - - template - 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 - _M_insert_aux(__position, __x); - return begin() + __n; - } - - template - typename vector<_Tp, _Alloc>::iterator - vector<_Tp, _Alloc>:: - erase(iterator __position) - { - if (__position + 1 != end()) - std::copy(__position + 1, end(), __position); - --this->_M_impl._M_finish; - this->_M_impl.destroy(this->_M_impl._M_finish); - return __position; - } - - template - typename vector<_Tp, _Alloc>::iterator - vector<_Tp, _Alloc>:: - erase(iterator __first, iterator __last) - { - iterator __i(std::copy(__last, end(), __first)); - std::_Destroy(__i, end(), _M_get_Tp_allocator()); - this->_M_impl._M_finish = this->_M_impl._M_finish - (__last - __first); - return __first; - } - - template - 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) - { - iterator __i(std::copy(__x.begin(), __x.end(), begin())); - std::_Destroy(__i, end(), _M_get_Tp_allocator()); - } - else - { - std::copy(__x.begin(), __x.begin() + size(), - this->_M_impl._M_start); - std::__uninitialized_copy_a(__x.begin() + size(), - __x.end(), this->_M_impl._M_finish, - _M_get_Tp_allocator()); - } - this->_M_impl._M_finish = this->_M_impl._M_start + __xlen; - } - return *this; - } - - template - 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 - erase(std::fill_n(begin(), __n, __val), end()); - } - - template - template - void - vector<_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) - erase(__cur, end()); - else - insert(end(), __first, __last); - } - - template - template - 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) - { - iterator __new_finish(std::copy(__first, __last, - this->_M_impl._M_start)); - std::_Destroy(__new_finish, end(), _M_get_Tp_allocator()); - this->_M_impl._M_finish = __new_finish.base(); - } - 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()); - } - } - - template - void - vector<_Tp, _Alloc>:: - _M_insert_aux(iterator __position, const _Tp& __x) - { - if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) - { - this->_M_impl.construct(this->_M_impl._M_finish, - *(this->_M_impl._M_finish - 1)); - ++this->_M_impl._M_finish; - _Tp __x_copy = __x; - std::copy_backward(__position, - iterator(this->_M_impl._M_finish-2), - iterator(this->_M_impl._M_finish-1)); - *__position = __x_copy; - } - else - { - const size_type __old_size = size(); - if (__old_size == this->max_size()) - __throw_length_error(__N("vector::_M_insert_aux")); - - // When sizeof(value_type) == 1 and __old_size > size_type(-1)/2 - // __len overflows: if we don't notice and _M_allocate doesn't - // throw we crash badly later. - size_type __len = __old_size != 0 ? 2 * __old_size : 1; - if (__len < __old_size) - __len = this->max_size(); - - iterator __new_start(this->_M_allocate(__len)); - iterator __new_finish(__new_start); - try - { - __new_finish = - std::__uninitialized_copy_a(iterator(this->_M_impl._M_start), - __position, - __new_start, - _M_get_Tp_allocator()); - this->_M_impl.construct(__new_finish.base(), __x); - ++__new_finish; - __new_finish = - std::__uninitialized_copy_a(__position, - iterator(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.base(),__len); - __throw_exception_again; - } - std::_Destroy(begin(), end(), _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.base(); - this->_M_impl._M_finish = __new_finish.base(); - this->_M_impl._M_end_of_storage = __new_start.base() + __len; - } - } - - template - 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; - iterator __old_finish(this->_M_impl._M_finish); - if (__elems_after > __n) - { - std::__uninitialized_copy_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; - std::copy_backward(__position, __old_finish - __n, - __old_finish); - std::fill(__position, __position + __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_copy_a(__position, __old_finish, - this->_M_impl._M_finish, - _M_get_Tp_allocator()); - this->_M_impl._M_finish += __elems_after; - std::fill(__position, __old_finish, __x_copy); - } - } - else - { - const size_type __old_size = size(); - if (this->max_size() - __old_size < __n) - __throw_length_error(__N("vector::_M_fill_insert")); - - // See _M_insert_aux above. - size_type __len = __old_size + std::max(__old_size, __n); - if (__len < __old_size) - __len = this->max_size(); - - iterator __new_start(this->_M_allocate(__len)); - iterator __new_finish(__new_start); - try - { - __new_finish = - std::__uninitialized_copy_a(begin(), __position, - __new_start, - _M_get_Tp_allocator()); - std::__uninitialized_fill_n_a(__new_finish, __n, __x, - _M_get_Tp_allocator()); - __new_finish += __n; - __new_finish = - std::__uninitialized_copy_a(__position, end(), __new_finish, - _M_get_Tp_allocator()); - } - catch(...) - { - std::_Destroy(__new_start, __new_finish, - _M_get_Tp_allocator()); - _M_deallocate(__new_start.base(), __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.base(); - this->_M_impl._M_finish = __new_finish.base(); - this->_M_impl._M_end_of_storage = __new_start.base() + __len; - } - } - } - - template template - 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 - template - 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; - iterator __old_finish(this->_M_impl._M_finish); - if (__elems_after > __n) - { - std::__uninitialized_copy_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; - std::copy_backward(__position, __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_copy_a(__position, __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 __old_size = size(); - if (this->max_size() - __old_size < __n) - __throw_length_error(__N("vector::_M_range_insert")); - - // See _M_insert_aux above. - size_type __len = __old_size + std::max(__old_size, __n); - if (__len < __old_size) - __len = this->max_size(); - - iterator __new_start(this->_M_allocate(__len)); - iterator __new_finish(__new_start); - try - { - __new_finish = - std::__uninitialized_copy_a(iterator(this->_M_impl._M_start), - __position, - __new_start, - _M_get_Tp_allocator()); - __new_finish = - std::__uninitialized_copy_a(__first, __last, __new_finish, - _M_get_Tp_allocator()); - __new_finish = - std::__uninitialized_copy_a(__position, - iterator(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.base(), __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.base(); - this->_M_impl._M_finish = __new_finish.base(); - this->_M_impl._M_end_of_storage = __new_start.base() + __len; - } - } - } -} // namespace std - -#endif /* _VECTOR_TCC */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cassert.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cassert.h deleted file mode 100644 index 873eeef6b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cassert.h +++ /dev/null @@ -1,38 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -// -// ISO C++ 14882: 19.2 Assertions -// - -// No include guards on this header... - -#pragma GCC system_header - -#include_next diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cctype.h deleted file mode 100644 index 103dd379b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cctype.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: -// - -#ifndef _GLIBCXX_CCTYPE -#define _GLIBCXX_CCTYPE 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cerrno.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cerrno.h deleted file mode 100644 index ed71e9ae8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cerrno.h +++ /dev/null @@ -1,55 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 19.3 Error numbers -// - -/** @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. - */ - -#ifndef _GLIBCXX_CERRNO -#define _GLIBCXX_CERRNO 1 - -#pragma GCC system_header - -#include_next - -// 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.1.0/include/c/std_cfloat.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cfloat.h deleted file mode 100644 index 3cf6b9b0b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cfloat.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 18.2.2 Implementation properties: C library -// - -#ifndef _GLIBCXX_CFLOAT -#define _GLIBCXX_CFLOAT 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ciso646.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ciso646.h deleted file mode 100644 index 4ffd3bb1a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ciso646.h +++ /dev/null @@ -1,37 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2001 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 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.1.0/include/c/std_climits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_climits.h deleted file mode 100644 index ca9db692e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_climits.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 18.2.2 Implementation properties: C library -// - -#ifndef _GLIBCXX_CLIMITS -#define _GLIBCXX_CLIMITS 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_clocale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_clocale.h deleted file mode 100644 index 7642222b2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_clocale.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 18.2.2 Implementation properties: C library -// - -#ifndef _GLIBCXX_CLOCALE -#define _GLIBCXX_CLOCALE 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cmath.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cmath.h deleted file mode 100644 index 18c1fb2e5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cmath.h +++ /dev/null @@ -1,124 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 26.5 C library -// - -#ifndef _GLIBCXX_CMATH -#define _GLIBCXX_CMATH 1 - -#pragma GCC system_header - -#include - -#include_next - -// Get rid of those macros defined in 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 -{ - 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(__x), &__tmp); - *__iptr = static_cast(__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(__x), &__tmp); - * __iptr = static_cast(__tmp); - return __res; - } -#endif -} -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_csetjmp.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_csetjmp.h deleted file mode 100644 index 1926bccfb..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_csetjmp.h +++ /dev/null @@ -1,49 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -#ifndef _GLIBCXX_CSETJMP -#define _GLIBCXX_CSETJMP 1 - -#pragma GCC system_header - -#include_next - -// Get rid of those macros defined in 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.1.0/include/c/std_csignal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_csignal.h deleted file mode 100644 index 37bacaeca..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_csignal.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -#ifndef _GLIBCXX_CSIGNAL -#define _GLIBCXX_CSIGNAL 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdarg.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdarg.h deleted file mode 100644 index 00aa001d4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdarg.h +++ /dev/null @@ -1,42 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// 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 - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstddef.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstddef.h deleted file mode 100644 index 33269af6b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstddef.h +++ /dev/null @@ -1,45 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// 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 - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdio.h deleted file mode 100644 index 5cb8bcfcf..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdio.h +++ /dev/null @@ -1,84 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 27.8.2 C Library files -// - -#ifndef _GLIBCXX_CSTDIO -#define _GLIBCXX_CSTDIO 1 - -#pragma GCC system_header - -#include_next - -// Get rid of those macros defined in 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.1.0/include/c/std_cstdlib.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdlib.h deleted file mode 100644 index 85f5bf762..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstdlib.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -#ifndef _GLIBCXX_CSTDLIB -#define _GLIBCXX_CSTDLIB 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstring.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstring.h deleted file mode 100644 index ed7719c31..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cstring.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -#ifndef _GLIBCXX_CSTRING -#define _GLIBCXX_CSTRING 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ctime.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ctime.h deleted file mode 100644 index 1d2bd3fd4..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_ctime.h +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 20.5 Date and time -// - -#ifndef _GLIBCXX_CTIME -#define _GLIBCXX_CTIME 1 - -#pragma GCC system_header - -#include_next - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwchar.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwchar.h deleted file mode 100644 index 69576b503..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwchar.h +++ /dev/null @@ -1,62 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: 21.4 -// - -#ifndef _GLIBCXX_CWCHAR -#define _GLIBCXX_CWCHAR 1 - -#pragma GCC system_header - -#include -#include -#include - -#if _GLIBCXX_HAVE_WCHAR_H -#include_next -#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 -{ - extern "C" - { - typedef struct - { - int __fill[6]; - } mbstate_t; - } -} -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwctype.h deleted file mode 100644 index a91676006..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c/std_cwctype.h +++ /dev/null @@ -1,45 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -// -// ISO C++ 14882: -// - -#ifndef _GLIBCXX_CWCTYPE -#define _GLIBCXX_CWCTYPE 1 - -#pragma GCC system_header - -#include - -#if _GLIBCXX_HAVE_WCTYPE_H -#include_next -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/assert.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/assert.h deleted file mode 100644 index fc14c0f4b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/assert.h +++ /dev/null @@ -1,30 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#include diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/ctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/ctype.h deleted file mode 100644 index 1bd379dee..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/ctype.h +++ /dev/null @@ -1,49 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_CTYPE_H -#define _GLIBCXX_CTYPE_H 1 - -#include - -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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/errno.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/errno.h deleted file mode 100644 index d7cc82945..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/errno.h +++ /dev/null @@ -1,35 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_ERRNO_H -#define _GLIBCXX_ERRNO_H 1 - -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/float.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/float.h deleted file mode 100644 index adeb73fef..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/float.h +++ /dev/null @@ -1,35 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_FLOAT_H -#define _GLIBCXX_FLOAT_H 1 - -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/iso646.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/iso646.h deleted file mode 100644 index d5097ca72..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/iso646.h +++ /dev/null @@ -1,35 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_ISO646_H -#define _GLIBCXX_ISO646_H 1 - -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/limits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/limits.h deleted file mode 100644 index e7abd017f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/limits.h +++ /dev/null @@ -1,35 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_LIMITS_H -#define _GLIBCXX_LIMITS_H 1 - -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/locale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/locale.h deleted file mode 100644 index 8baf041e2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/locale.h +++ /dev/null @@ -1,39 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_LOCALE_H -#define _GLIBCXX_LOCALE_H 1 - -#include - -using std::lconv; -using std::setlocale; -using std::localeconv; - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/math.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/math.h deleted file mode 100644 index 38636e60c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/math.h +++ /dev/null @@ -1,74 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_MATH_H -#define _GLIBCXX_MATH_H 1 - -#include - -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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/setjmp.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/setjmp.h deleted file mode 100644 index f2d481ae1..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/setjmp.h +++ /dev/null @@ -1,38 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_SETJMP_H -#define _GLIBCXX_SETJMP_H 1 - -#include - -using std::jmp_buf; -using std::longjmp; - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/signal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/signal.h deleted file mode 100644 index ae1d23d56..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/signal.h +++ /dev/null @@ -1,40 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_SIGNAL_H -#define _GLIBCXX_SIGNAL_H 1 - -#include - -using std::sig_atomic_t; - -using std::raise; -using std::signal; - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdarg.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdarg.h deleted file mode 100644 index 9b92a93f9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdarg.h +++ /dev/null @@ -1,37 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_STDARG_H -#define _GLIBCXX_STDARG_H 1 - -#include - -using std::va_list; - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stddef.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stddef.h deleted file mode 100644 index 457cd0062..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stddef.h +++ /dev/null @@ -1,38 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_STDDEF_H -#define _GLIBCXX_STDDEF_H 1 - -#include - -using std::size_t; -using std::ptrdiff_t; - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdio.h deleted file mode 100644 index 270852f53..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdio.h +++ /dev/null @@ -1,85 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_STDIO_H -#define _GLIBCXX_STDIO_H 1 - -#include - -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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdlib.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdlib.h deleted file mode 100644 index dbf99b4a5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/stdlib.h +++ /dev/null @@ -1,67 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_STDLIB_H -#define _GLIBCXX_STDLIB_H 1 - -#include - -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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/string.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/string.h deleted file mode 100644 index 09e59cfef..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/string.h +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_STRING_H -#define _GLIBCXX_STRING_H 1 - -#include - -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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/time.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/time.h deleted file mode 100644 index d5684adf2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/time.h +++ /dev/null @@ -1,60 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_TIME_H -#define _GLIBCXX_TIME_H 1 - -#include - -// Get rid of those macros defined in 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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wchar.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wchar.h deleted file mode 100644 index 2071ae436..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wchar.h +++ /dev/null @@ -1,114 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -#ifndef _GLIBCXX_WCHAR_H -#define _GLIBCXX_WCHAR_H 1 - -#include - -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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wctype.h deleted file mode 100644 index c7ddc903a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_compatibility/wctype.h +++ /dev/null @@ -1,55 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 2, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING. If not, write to the Free -// Software Foundation, 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. - -#ifndef _GLIBCXX_CWCTYPE_H -#define _GLIBCXX_CWCTYPE_H 1 - -#include - -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 diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/cmath.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/cmath.tcc deleted file mode 100644 index 737b58c7d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/cmath.tcc +++ /dev/null @@ -1,54 +0,0 @@ -// -*- C++ -*- C math library. - -// Copyright (C) 2000, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// This file was written by Gabriel Dos Reis - -#ifndef _GLIBCXX_CMATH_TCC -#define _GLIBCXX_CMATH_TCC 1 - -namespace std -{ - template - inline _Tp - __cmath_power(_Tp __x, unsigned int __n) - { - _Tp __y = __n % 2 ? __x : 1; - - while (__n >>= 1) - { - __x = __x * __x; - if (__n % 2) - __y = __y * __x; - } - - return __y; - } -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cassert.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cassert.h deleted file mode 100644 index ae2f49837..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cassert.h +++ /dev/null @@ -1,49 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 19.2 Assertions -// - -/** @file cassert - * 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 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). - */ - -// No include guards on this header... - -#pragma GCC system_header - -#include diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cctype.h deleted file mode 100644 index 008f7069f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cctype.h +++ /dev/null @@ -1,85 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: -// - -/** @file cctype - * 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 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). - */ - -#ifndef _GLIBCXX_CCTYPE -#define _GLIBCXX_CCTYPE 1 - -#pragma GCC system_header - -#include -#include - -// Get rid of those macros defined in 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; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cerrno.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cerrno.h deleted file mode 100644 index 5d4b9d772..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cerrno.h +++ /dev/null @@ -1,57 +0,0 @@ -// The -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 19.3 Error numbers -// - -/** @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 (except for names which are defined - * as macros in C). - */ - -#ifndef _GLIBCXX_CERRNO -#define _GLIBCXX_CERRNO 1 - -#pragma GCC system_header - -#include - -// 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.1.0/include/c_std/std_cfloat.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cfloat.h deleted file mode 100644 index e28b6499a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cfloat.h +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 18.2.2 Implementation properties: C library -// - -/** @file cfloat - * 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 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). - */ - -#ifndef _GLIBCXX_CFLOAT -#define _GLIBCXX_CFLOAT 1 - -#pragma GCC system_header - -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ciso646.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ciso646.h deleted file mode 100644 index 3e391b410..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ciso646.h +++ /dev/null @@ -1,38 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 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 (except for names which are defined - * as macros in C). - */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_climits.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_climits.h deleted file mode 100644 index ddd53a3af..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_climits.h +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 18.2.2 Implementation properties: C library -// - -/** @file climits - * 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 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). - */ - -#ifndef _GLIBCXX_CLIMITS -#define _GLIBCXX_CLIMITS 1 - -#pragma GCC system_header - -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_clocale.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_clocale.h deleted file mode 100644 index 9a3e516e7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_clocale.h +++ /dev/null @@ -1,63 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 18.2.2 Implementation properties: C library -// - -/** @file clocale - * 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 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). - */ - -#ifndef _GLIBCXX_CLOCALE -#define _GLIBCXX_CLOCALE 1 - -#pragma GCC system_header - -#include - -// Get rid of those macros defined in in lieu of real functions. -#undef setlocale -#undef localeconv - -namespace std -{ - using ::lconv; - using ::setlocale; - using ::localeconv; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cmath.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cmath.h deleted file mode 100644 index 115fe4710..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cmath.h +++ /dev/null @@ -1,578 +0,0 @@ -// -*- C++ -*- C forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 26.5 C library -// - -/** @file cmath - * 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 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). - */ - -#ifndef _GLIBCXX_CMATH -#define _GLIBCXX_CMATH 1 - -#pragma GCC system_header - -#include -#include - -#include - -// Get rid of those macros defined in 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 -{ - // Forward declaration of a helper function. This really should be - // an `exported' forward declaration. - template _Tp __cmath_power(_Tp, unsigned int); - - 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); } - - using ::acos; - - inline float - acos(float __x) - { return __builtin_acosf(__x); } - - inline long double - acos(long double __x) - { return __builtin_acosl(__x); } - - template - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value - && __is_integer<_Up>::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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); } - - template - inline _Tp - __pow_helper(_Tp __x, int __n) - { - return __n < 0 - ? _Tp(1)/__cmath_power(__x, -__n) - : __cmath_power(__x, __n); - } - - 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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__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 - inline typename __enable_if::__value>::__type - tanh(_Tp __x) - { return __builtin_tanh(__x); } -} - -#if _GLIBCXX_USE_C99_MATH -#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC -// These are possible macros imported from C99-land. For strict -// conformance, remove possible C99-injected names from the global -// namespace, and sequester them in the __gnu_cxx extension namespace. -namespace __gnu_cxx -{ - template - inline int - __capture_fpclassify(_Tp __f) { return fpclassify(__f); } - - template - inline int - __capture_isfinite(_Tp __f) { return isfinite(__f); } - - template - inline int - __capture_isinf(_Tp __f) { return isinf(__f); } - - template - inline int - __capture_isnan(_Tp __f) { return isnan(__f); } - - template - inline int - __capture_isnormal(_Tp __f) { return isnormal(__f); } - - template - inline int - __capture_signbit(_Tp __f) { return signbit(__f); } - - template - inline int - __capture_isgreater(_Tp __f1, _Tp __f2) - { return isgreater(__f1, __f2); } - - template - inline int - __capture_isgreaterequal(_Tp __f1, _Tp __f2) - { return isgreaterequal(__f1, __f2); } - - template - inline int - __capture_isless(_Tp __f1, _Tp __f2) { return isless(__f1, __f2); } - - template - inline int - __capture_islessequal(_Tp __f1, _Tp __f2) - { return islessequal(__f1, __f2); } - - template - inline int - __capture_islessgreater(_Tp __f1, _Tp __f2) - { return islessgreater(__f1, __f2); } - - template - inline int - __capture_isunordered(_Tp __f1, _Tp __f2) - { return isunordered(__f1, __f2); } -} - -// Only undefine the C99 FP macros, if actually captured for namespace movement -#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 -{ - template - inline int - fpclassify(_Tp __f) { return __gnu_cxx::__capture_fpclassify(__f); } - - template - inline int - isfinite(_Tp __f) { return __gnu_cxx::__capture_isfinite(__f); } - - template - inline int - isinf(_Tp __f) { return __gnu_cxx::__capture_isinf(__f); } - - template - inline int - isnan(_Tp __f) { return __gnu_cxx::__capture_isnan(__f); } - - template - inline int - isnormal(_Tp __f) { return __gnu_cxx::__capture_isnormal(__f); } - - template - inline int - signbit(_Tp __f) { return __gnu_cxx::__capture_signbit(__f); } - - template - inline int - isgreater(_Tp __f1, _Tp __f2) - { return __gnu_cxx::__capture_isgreater(__f1, __f2); } - - template - inline int - isgreaterequal(_Tp __f1, _Tp __f2) - { return __gnu_cxx::__capture_isgreaterequal(__f1, __f2); } - - template - inline int - isless(_Tp __f1, _Tp __f2) - { return __gnu_cxx::__capture_isless(__f1, __f2); } - - template - inline int - islessequal(_Tp __f1, _Tp __f2) - { return __gnu_cxx::__capture_islessequal(__f1, __f2); } - - template - inline int - islessgreater(_Tp __f1, _Tp __f2) - { return __gnu_cxx::__capture_islessgreater(__f1, __f2); } - - template - inline int - isunordered(_Tp __f1, _Tp __f2) - { return __gnu_cxx::__capture_isunordered(__f1, __f2); } -} -#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */ -#endif - -#ifndef _GLIBCXX_EXPORT_TEMPLATE -# include -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csetjmp.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csetjmp.h deleted file mode 100644 index 290f2e9e6..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csetjmp.h +++ /dev/null @@ -1,66 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -/** @file csetjmp - * 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 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). - */ - -#ifndef _GLIBCXX_CSETJMP -#define _GLIBCXX_CSETJMP 1 - -#pragma GCC system_header - -#include - -// Get rid of those macros defined in 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; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csignal.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csignal.h deleted file mode 100644 index 0db1c11ab..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_csignal.h +++ /dev/null @@ -1,62 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -/** @file csignal - * 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 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). - */ - -#ifndef _GLIBCXX_CSIGNAL -#define _GLIBCXX_CSIGNAL 1 - -#pragma GCC system_header - -#include - -// Get rid of those macros defined in in lieu of real functions. -#undef raise - -namespace std -{ - using ::sig_atomic_t; - using ::signal; - using ::raise; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdarg.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdarg.h deleted file mode 100644 index c98b5dbf8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdarg.h +++ /dev/null @@ -1,62 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -/** @file cstdarg - * 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 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). - */ - -#ifndef _GLIBCXX_CSTDARG -#define _GLIBCXX_CSTDARG 1 - -#pragma GCC system_header - -#include - -// 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; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstddef.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstddef.h deleted file mode 100644 index f1860a761..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstddef.h +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 18.1 Types -// - -/** @file cstddef - * 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 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). - */ - -#ifndef _GLIBCXX_CSTDDEF -#define _GLIBCXX_CSTDDEF 1 - -#pragma GCC system_header - -#include - -namespace std -{ - using ::ptrdiff_t; - using ::size_t; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdio.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdio.h deleted file mode 100644 index 9f5f7dd3a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdio.h +++ /dev/null @@ -1,187 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 27.8.2 C Library files -// - -/** @file cstdio - * 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 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). - */ - -#ifndef _GLIBCXX_CSTDIO -#define _GLIBCXX_CSTDIO 1 - -#pragma GCC system_header - -#include -#include - -#include - -// Get rid of those macros defined in 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; -} - -#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, size_t, const char * restrict, ...); - 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, size_t, const char * restrict, __gnuc_va_list); - extern "C" int - (vsscanf)(const char * restrict, const char * restrict, __gnuc_va_list); -#endif - -#if !_GLIBCXX_USE_C99_DYNAMIC - using ::snprintf; - using ::vfscanf; - using ::vscanf; - using ::vsnprintf; - using ::vsscanf; -#endif -} - -namespace std -{ - using __gnu_cxx::snprintf; - using __gnu_cxx::vfscanf; - using __gnu_cxx::vscanf; - using __gnu_cxx::vsnprintf; - using __gnu_cxx::vsscanf; -} -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdlib.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdlib.h deleted file mode 100644 index 2139092f5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstdlib.h +++ /dev/null @@ -1,223 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -/** @file cstdlib - * 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 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). - */ - -#ifndef _GLIBCXX_CSTDLIB -#define _GLIBCXX_CSTDLIB 1 - -#pragma GCC system_header - -#include -#include - -#if !_GLIBCXX_HOSTED -// The C standard does not require a freestanding implementation to -// provide . However, the C++ standard does still require -// -- 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); - extern "C" int atexit(void (*)()); - extern "C" void exit(int); -} // namespace std - -#else - -#include - -// Get rid of those macros defined in 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 -{ - 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); } -} // namespace std - -#if _GLIBCXX_USE_C99 - -#undef _Exit -#undef llabs -#undef lldiv -#undef atoll -#undef strtoll -#undef strtoull -#undef strtof -#undef strtold - -namespace __gnu_cxx -{ -#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); -#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 *); - extern "C" long long int - (strtoll)(const char * restrict, char ** restrict, int); - extern "C" unsigned long long int - (strtoull)(const char * restrict, char ** restrict, int); -#endif -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::atoll; - using ::strtoll; - using ::strtoull; -#endif - using ::strtof; - using ::strtold; -} - -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; -} - -#endif // _GLIBCXX_USE_C99 - -#endif // !_GLIBCXX_HOSTED - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstring.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstring.h deleted file mode 100644 index 7efbf8f32..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cstring.h +++ /dev/null @@ -1,129 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 20.4.6 C library -// - -/** @file cstring - * 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 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). - */ - -#ifndef _GLIBCXX_CSTRING -#define _GLIBCXX_CSTRING 1 - -#pragma GCC system_header - -#include - -#include - -// Get rid of those macros defined in 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 -{ - 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; - - inline void* - memchr(void* __p, int __c, size_t __n) - { return memchr(const_cast(__p), __c, __n); } - - using ::strchr; - - inline char* - strchr(char* __s1, int __n) - { return __builtin_strchr(const_cast(__s1), __n); } - - using ::strpbrk; - - inline char* - strpbrk(char* __s1, const char* __s2) - { return __builtin_strpbrk(const_cast(__s1), __s2); } - - using ::strrchr; - - inline char* - strrchr(char* __s1, int __n) - { return __builtin_strrchr(const_cast(__s1), __n); } - - using ::strstr; - - inline char* - strstr(char* __s1, const char* __s2) - { return __builtin_strstr(const_cast(__s1), __s2); } -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ctime.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ctime.h deleted file mode 100644 index ef3307e1e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_ctime.h +++ /dev/null @@ -1,82 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 20.5 Date and time -// - -/** @file ctime - * 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 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). - */ - -#ifndef _GLIBCXX_CTIME -#define _GLIBCXX_CTIME 1 - -#pragma GCC system_header - -#include - -#include - -// Get rid of those macros defined in 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; -} - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwchar.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwchar.h deleted file mode 100644 index 5e3ab9099..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwchar.h +++ /dev/null @@ -1,274 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 21.4 -// - -/** @file cwchar - * 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 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). - */ - -#ifndef _GLIBCXX_CWCHAR -#define _GLIBCXX_CWCHAR 1 - -#pragma GCC system_header - -#include -#include -#include - -#if _GLIBCXX_HAVE_WCHAR_H -#include -#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; -} - -// Get rid of those macros defined in 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 -{ - 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; - - inline wchar_t* - wcschr(wchar_t* __p, wchar_t __c) - { return wcschr(const_cast(__p), __c); } - - using ::wcspbrk; - - inline wchar_t* - wcspbrk(wchar_t* __s1, const wchar_t* __s2) - { return wcspbrk(const_cast(__s1), __s2); } - - using ::wcsrchr; - - inline wchar_t* - wcsrchr(wchar_t* __p, wchar_t __c) - { return wcsrchr(const_cast(__p), __c); } - - using ::wcsstr; - - inline wchar_t* - wcsstr(wchar_t* __s1, const wchar_t* __s2) - { return wcsstr(const_cast(__s1), __s2); } - - using ::wmemchr; - - inline wchar_t* - wmemchr(wchar_t* __p, wchar_t __c, size_t __n) - { return wmemchr(const_cast(__p), __c, __n); } -} - -#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); -#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); - extern "C" unsigned long long int - (wcstoull)(const wchar_t * restrict, wchar_t ** restrict, int); -#endif -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::wcstoll; - using ::wcstoull; -#endif -} - -namespace std -{ - using __gnu_cxx::wcstold; - using __gnu_cxx::wcstoll; - using __gnu_cxx::wcstoull; -} -#endif - -#endif //_GLIBCXX_USE_WCHAR_T - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwctype.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwctype.h deleted file mode 100644 index 9f297c42e..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/c_std/std_cwctype.h +++ /dev/null @@ -1,109 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: -// - -/** @file cwctype - * 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 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). - */ - -#ifndef _GLIBCXX_CWCTYPE -#define _GLIBCXX_CWCTYPE 1 - -#pragma GCC system_header - -#include - -#if _GLIBCXX_HAVE_WCTYPE_H -#include -#endif - -// Get rid of those macros defined in 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; -} -#endif //_GLIBCXX_USE_WCHAR_T - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/bitset b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/bitset deleted file mode 100644 index 2bdca187b..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/bitset +++ /dev/null @@ -1,321 +0,0 @@ -// Debugging bitset implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_BITSET -#define _GLIBCXX_DEBUG_BITSET - -#include -#include -#include - -namespace __gnu_debug_def -{ - template - class bitset - : public _GLIBCXX_STD::bitset<_Nb>, - public __gnu_debug::_Safe_sequence_base - { - typedef _GLIBCXX_STD::bitset<_Nb> _Base; - typedef __gnu_debug::_Safe_sequence_base _Safe_base; - - public: - // 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) - : _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(this)); - } - - operator bool() const - { - _GLIBCXX_DEBUG_VERIFY(! this->_M_singular(), - _M_message(::__gnu_debug::__msg_bad_bitset_read) - ._M_iterator(*this)); - return *static_cast(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; - } - }; - - // 23.3.5.1 constructors: - bitset() : _Base() { } - - bitset(unsigned long __val) : _Base(__val) { } - - template - explicit - bitset(const std::basic_string<_CharT,_Traits,_Allocator>& __str, - typename std::basic_string<_CharT,_Traits,_Allocator>::size_type - __pos = 0, - typename std::basic_string<_CharT,_Traits,_Allocator>::size_type - __n = (std::basic_string<_CharT,_Traits,_Allocator>::npos)) - : _Base(__str, __pos, __n) { } - - bitset(const _Base& __x) : _Base(__x), _Safe_base() { } - - // 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); - return reference(_M_base()[__pos], this); - } - - // _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; - - template - std::basic_string<_CharT, _Traits, _Allocator> - to_string() const - { return _M_base().template to_string<_CharT, _Traits, _Allocator>(); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 434. bitset::to_string() hard to use. - template - std::basic_string<_CharT, _Traits, std::allocator<_CharT> > - to_string() const - { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); } - - template - 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> >(); - } - - std::basic_string, std::allocator > - to_string() const - { - return to_string,std::allocator >(); - } - - 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::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 - bitset<_Nb> - operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) - { return bitset<_Nb>(__x) &= __y; } - - template - bitset<_Nb> - operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) - { return bitset<_Nb>(__x) |= __y; } - - template - bitset<_Nb> - operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) - { return bitset<_Nb>(__x) ^= __y; } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) - { return __is >> __x._M_base(); } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const bitset<_Nb>& __x) - { return __os << __x._M_base(); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/debug.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/debug.h deleted file mode 100644 index c29109681..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/debug.h +++ /dev/null @@ -1,116 +0,0 @@ -// Debugging support implementation -*- C++ -*- - -// Copyright (C) 2003, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_DEBUG_H -#define _GLIBCXX_DEBUG_DEBUG_H 1 - -/** Macros 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. -*/ - -#ifdef _GLIBCXX_DEBUG - -# include -# include -# include - -// Avoid the use of assert, because we're trying to keep the -// include out of the mix. -namespace __gnu_debug -{ - inline void - __replacement_assert(const char* __file, int __line, const char* __function, - const char* __condition) - { - std::printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - std::abort(); - } -} - -#define _GLIBCXX_DEBUG_ASSERT(_Condition) \ - do { \ - if (! (_Condition)) \ - ::__gnu_debug::__replacement_assert(__FILE__, __LINE__, \ - __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) - -# ifdef _GLIBCXX_DEBUG_PEDANTIC -# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) _GLIBCXX_DEBUG_ASSERT(_Condition) -# else -# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) -# endif - -# 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_partitioned(_First,_Last,_Value) \ - __glibcxx_check_partitioned(_First,_Last,_Value) -# define __glibcxx_requires_partitioned_pred(_First,_Last,_Value,_Pred) \ - __glibcxx_check_partitioned_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 -# include -#else -# define _GLIBCXX_DEBUG_ASSERT(_Condition) -# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) -# 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_partitioned(_First,_Last,_Value) -# define __glibcxx_requires_partitioned_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) -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/deque b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/deque deleted file mode 100644 index a69ce6219..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/deque +++ /dev/null @@ -1,386 +0,0 @@ -// Debugging deque implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_DEQUE -#define _GLIBCXX_DEBUG_DEQUE 1 - -#include -#include -#include - -namespace __gnu_debug_def -{ - template > - class deque - : public _GLIBCXX_STD::deque<_Tp, _Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef _GLIBCXX_STD::deque<_Tp, _Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator - iterator; - typedef __gnu_debug::_Safe_iterator - 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 reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.2.1.1 construct/copy/destroy: - explicit deque(const _Allocator& __a = _Allocator()) - : _Base(__a) { } - - explicit deque(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } - - template - deque(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__first, __last), __last, __a) - { } - - deque(const deque<_Tp,_Allocator>& __x) : _Base(__x), _Safe_base() { } - - deque(const _Base& __x) : _Base(__x), _Safe_base() { } - - ~deque() { } - - deque<_Tp,_Allocator>& - operator=(const deque<_Tp,_Allocator>& __x) - { - *static_cast<_Base*>(this) = __x; - this->_M_invalidate_all(); - return *this; - } - - template - void - assign(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::assign(__first, __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()); } - - // 23.2.1.2 capacity: - using _Base::size; - using _Base::max_size; - - void - resize(size_type __sz, _Tp __c = _Tp()) - { - typedef typename _Base::const_iterator _Base_const_iterator; - typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; - - bool __invalidate_all = __sz > this->size(); - if (__sz < this->size()) - this->_M_invalidate_if(_After_nth(__sz, _M_base().begin())); - - _Base::resize(__sz, __c); - - if (__invalidate_all) - this->_M_invalidate_all(); - } - - 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(); - } - - iterator - insert(iterator __position, const _Tp& __x) - { - __glibcxx_check_insert(__position); - typename _Base::iterator __res = _Base::insert(__position.base(), __x); - this->_M_invalidate_all(); - return iterator(__res, this); - } - - 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 - void - insert(iterator __position, - _InputIterator __first, _InputIterator __last) - { - __glibcxx_check_insert_range(__position, __first, __last); - _Base::insert(__position.base(), __first, __last); - this->_M_invalidate_all(); - } - - void - pop_front() - { - __glibcxx_check_nonempty(); - iterator __victim = begin(); - __victim._M_invalidate(); - _Base::pop_front(); - } - - void - pop_back() - { - __glibcxx_check_nonempty(); - iterator __victim = end(); - --__victim; - __victim._M_invalidate(); - _Base::pop_back(); - } - - iterator - erase(iterator __position) - { - __glibcxx_check_erase(__position); - if (__position == begin() || __position == end()-1) - { - __position._M_invalidate(); - return iterator(_Base::erase(__position.base()), this); - } - else - { - 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); - if (__first == begin() || __last == end()) - { - this->_M_detach_singular(); - for (iterator __position = __first; __position != __last; ) - { - iterator __victim = __position++; - __victim._M_invalidate(); - } - try - { - return iterator(_Base::erase(__first.base(), __last.base()), - this); - } - catch (...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } - else - { - typename _Base::iterator __res = _Base::erase(__first.base(), - __last.base()); - this->_M_invalidate_all(); - return iterator(__res, this); - } - } - - void - swap(deque<_Tp,_Allocator>& __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 - inline bool - operator==(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const deque<_Tp, _Alloc>& __lhs, const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const deque<_Tp, _Alloc>& __lhs, const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs) - { __lhs.swap(__rhs); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/formatter.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/formatter.h deleted file mode 100644 index 2c2035ea8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/formatter.h +++ /dev/null @@ -1,390 +0,0 @@ -// Debug-mode error formatting implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_FORMATTER_H -#define _GLIBCXX_DEBUG_FORMATTER_H 1 - -#include -#include - -namespace __gnu_debug -{ - using std::type_info; - - /** Determine if the two types are the same. */ - template - struct __is_same - { - static const bool value = false; - }; - - template - struct __is_same<_Type, _Type> - { - static const bool value = true; - }; - - template struct __truth { }; - - class _Safe_sequence_base; - - template - class _Safe_iterator; - - template - 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 - }; - - 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 - __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 - _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; - _M_variant._M_iterator._M_type = &typeid(__it); - _M_variant._M_iterator._M_constness = - __is_same<_Safe_iterator<_Iterator, _Sequence>, - typename _Sequence::iterator>:: - value? __mutable_iterator : __const_iterator; - _M_variant._M_iterator._M_sequence = __it._M_get_sequence(); - _M_variant._M_iterator._M_seq_type = &typeid(_Sequence); - - if (__it._M_singular()) - _M_variant._M_iterator._M_state = __singular; - else - { - bool __is_begin = __it._M_is_begin(); - bool __is_end = __it._M_is_end(); - if (__is_end) - _M_variant._M_iterator._M_state = __end; - else if (__is_begin) - _M_variant._M_iterator._M_state = __begin; - else - _M_variant._M_iterator._M_state = __middle; - } - } - - template - _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; - _M_variant._M_iterator._M_type = &typeid(__it); - _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 - _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; - _M_variant._M_iterator._M_type = &typeid(__it); - _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 - _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; - _M_variant._M_iterator._M_type = &typeid(__it); - _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 - _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(&__seq); - _M_variant._M_sequence._M_type = &typeid(_Sequence); - } - - template - _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; - _M_variant._M_sequence._M_type = &typeid(_Sequence); - } - - 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 - const _Error_formatter& - _M_iterator(const _Iterator& __it, const char* __name = 0) const - { - if (_M_num_parameters < 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 < 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 < size_t(__max_parameters)) - _M_parameters[_M_num_parameters++] = _Parameter(__value, __name); - return *this; - } - - template - const _Error_formatter& - _M_sequence(const _Sequence& __seq, const char* __name = 0) const - { - if (_M_num_parameters < 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; - - void - _M_error() const; - - private: - _Error_formatter(const char* __file, 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) - { } - - template - void - _M_format_word(char*, int, const char*, _Tp) const; - - void - _M_print_word(const char* __word) const; - - void - _M_print_string(const char* __string) const; - - enum { __max_parameters = 9 }; - - const char* _M_file; - size_t _M_line; - mutable _Parameter _M_parameters[__max_parameters]; - mutable size_t _M_num_parameters; - mutable const char* _M_text; - mutable size_t _M_max_length; - enum { _M_indent = 4 } ; - mutable size_t _M_column; - mutable bool _M_first_line; - mutable bool _M_wordwrap; - - public: - static _Error_formatter - _M_at(const char* __file, size_t __line) - { return _Error_formatter(__file, __line); } - }; -} // namespace __gnu_debug - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/functions.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/functions.h deleted file mode 100644 index 6a0d89212..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/functions.h +++ /dev/null @@ -1,288 +0,0 @@ -// Debugging support implementation -*- C++ -*- - -// Copyright (C) 2003, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_FUNCTIONS_H -#define _GLIBCXX_DEBUG_FUNCTIONS_H 1 - -#include // for ptrdiff_t -#include // for iterator_traits, categories -#include // for __is_integer - -namespace __gnu_debug -{ - template - 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 - inline bool - __check_singular(_Iterator& __x) - { return __gnu_debug::__check_singular_aux(&__x); } - - /** Non-NULL pointers are nonsingular. */ - template - inline bool - __check_singular(const _Tp* __ptr) - { return __ptr == 0; } - - /** Safe iterators know if they are singular. */ - template - 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 - inline bool - __check_dereferenceable(_Iterator&) - { return true; } - - /** Non-NULL pointers are dereferenceable. */ - template - inline bool - __check_dereferenceable(const _Tp* __ptr) - { return __ptr; } - - /** Safe iterators know if they are singular. */ - template - 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 - 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 - 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 - inline bool - __valid_range_aux(const _Integral&, const _Integral&, __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 - inline bool - __valid_range_aux(const _InputIterator& __first, - const _InputIterator& __last, __false_type) - { - typedef typename std::iterator_traits<_InputIterator>::iterator_category - _Category; - return __gnu_debug::__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 - inline bool - __valid_range(const _InputIterator& __first, const _InputIterator& __last) - { - typedef typename std::__is_integer<_InputIterator>::__type _Integral; - return __gnu_debug::__valid_range_aux(__first, __last, _Integral()); - } - - /** Safe iterators know how to check if they form a valid range. */ - template - 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 - inline _InputIterator - __check_valid_range(const _InputIterator& __first, - const _InputIterator& __last - __attribute__((__unused__))) - { - _GLIBCXX_DEBUG_ASSERT(__gnu_debug::__valid_range(__first, __last)); - return __first; - } - - /** Checks that __s is non-NULL or __n == 0, and then returns __s. */ - template - inline const _CharT* - __check_string(const _CharT* __s, - const _Integer& __n __attribute__((__unused__))) - { -#ifdef _GLIBCXX_DEBUG_PEDANTIC - _GLIBCXX_DEBUG_ASSERT(__s != 0 || __n == 0); -#endif - return __s; - } - - /** Checks that __s is non-NULL and then returns __s. */ - template - inline const _CharT* - __check_string(const _CharT* __s) - { -#ifdef _GLIBCXX_DEBUG_PEDANTIC - _GLIBCXX_DEBUG_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 - 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 - 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 - 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 - 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 - inline bool - __check_sorted(const _InputIterator& __first, const _InputIterator& __last) - { - typedef typename std::iterator_traits<_InputIterator>::iterator_category - _Category; - return __gnu_debug::__check_sorted_aux(__first, __last, _Category()); - } - - template - inline bool - __check_sorted(const _InputIterator& __first, const _InputIterator& __last, - _Predicate __pred) - { - typedef typename std::iterator_traits<_InputIterator>::iterator_category - _Category; - return __gnu_debug::__check_sorted_aux(__first, __last, __pred, - _Category()); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 270. Binary search requirements overly strict - // Determine if a sequence is partitioned w.r.t. this element. - template - inline bool - __check_partitioned(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __value) - { - while (__first != __last && *__first < __value) - ++__first; - while (__first != __last && !(*__first < __value)) - ++__first; - return __first == __last; - } - - // Determine if a sequence is partitioned w.r.t. this element. - template - inline bool - __check_partitioned(_ForwardIterator __first, _ForwardIterator __last, - const _Tp& __value, _Pred __pred) - { - while (__first != __last && __pred(*__first, __value)) - ++__first; - while (__first != __last && !__pred(*__first, __value)) - ++__first; - return __first == __last; - } -} // namespace __gnu_debug - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map deleted file mode 100644 index fe2af59e8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map +++ /dev/null @@ -1,38 +0,0 @@ -// Debugging hash_map/hash_multimap implementation -*- C++ -*- - -// Copyright (C) 2003, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_HASH_MAP -#define _GLIBCXX_DEBUG_HASH_MAP 1 - -#include -#include -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map.h deleted file mode 100644 index a6900b5f3..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_map.h +++ /dev/null @@ -1,270 +0,0 @@ -// Debugging hash_map implementation -*- C++ -*- - -// Copyright (C) 2003 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -#ifndef _GLIBCXX_DEBUG_HASH_MAP_H -#define _GLIBCXX_DEBUG_HASH_MAP_H 1 - -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _EqualKey = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value> > - class hash_map - : public __gnu_cxx::hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>, - public __gnu_debug::_Safe_sequence > - { - typedef __gnu_cxx::hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc> - _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - typedef typename _Base::key_type key_type; - typedef typename _Base::data_type data_type; - typedef typename _Base::mapped_type mapped_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - 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 typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator - iterator; - typedef __gnu_debug::_Safe_iterator - const_iterator; - - typedef typename _Base::allocator_type allocator_type; - - using _Base::hash_funct; - using _Base::key_eq; - using _Base::get_allocator; - - hash_map() { } - - explicit hash_map(size_type __n) : _Base(__n) { } - - hash_map(size_type __n, const hasher& __hf) : _Base(__n, __hf) { } - - hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - hash_map(_InputIterator __f, _InputIterator __l) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l) { } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n) { } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf) { } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf, - __eql, __a) { } - - hash_map(const _Base& __x) : _Base(__x), _Safe_base() { } - - using _Base::size; - using _Base::max_size; - using _Base::empty; - - void - swap(hash_map& __x) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - iterator - begin() { return iterator(_Base::begin(), this); } - - iterator - end() { return iterator(_Base::end(), this); } - - const_iterator - begin() const - { return const_iterator(_Base::begin(), this); } - - const_iterator - end() const - { return const_iterator(_Base::end(), this); } - - std::pair - insert(const value_type& __obj) - { - std::pair __res = _Base::insert(__obj); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first.base(), __last.base()); - } - - - std::pair - insert_noresize(const value_type& __obj) - { - std::pair __res = - _Base::insert_noresize(__obj); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - 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); } - - using _Base::operator[]; - using _Base::count; - - std::pair - equal_range(const key_type& __key) - { - typedef typename _Base::iterator _Base_iterator; - 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 - equal_range(const key_type& __key) const - { - typedef typename _Base::const_iterator _Base_iterator; - std::pair<_Base_iterator, _Base_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) - { - iterator __victim(_Base::find(__key), this); - if (__victim != end()) - return this->erase(__victim), 1; - else - return 0; - } - - void - erase(iterator __it) - { - __glibcxx_check_erase(__it); - __it._M_invalidate(); - _Base::erase(__it.base()); - } - - void - erase(iterator __first, iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (iterator __tmp = __first; __tmp != __last;) - { - iterator __victim = __tmp++; - __victim._M_invalidate(); - } - _Base::erase(__first.base(), __last.base()); - } - - void - clear() - { - _Base::clear(); - this->_M_invalidate_all(); - } - - using _Base::resize; - using _Base::bucket_count; - using _Base::max_bucket_count; - using _Base::elems_in_bucket; - - _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 - inline bool - operator==(const hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __x, - const hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - - template - inline bool - operator!=(const hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __x, - const hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __y) - { return __x._M_base() != __y._M_base(); } - - template - inline void - swap(hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __x, - hash_map<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __y) - { __x.swap(__y); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multimap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multimap.h deleted file mode 100644 index a6db0f2f2..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multimap.h +++ /dev/null @@ -1,261 +0,0 @@ -// Debugging hash_multimap implementation -*- C++ -*- - -// Copyright (C) 2003 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -#ifndef _GLIBCXX_DEBUG_HASH_MULTIMAP_H -#define _GLIBCXX_DEBUG_HASH_MULTIMAP_H 1 - -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _EqualKey = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value> > - class hash_multimap - : public __gnu_cxx::hash_multimap<_Value,_Tp,_HashFcn, _EqualKey,_Alloc>, - public __gnu_debug::_Safe_sequence > - { - typedef __gnu_cxx::hash_multimap<_Value,_Tp,_HashFcn, _EqualKey,_Alloc> - _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - typedef typename _Base::key_type key_type; - typedef typename _Base::data_type data_type; - typedef typename _Base::mapped_type mapped_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - 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 typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator iterator; - typedef __gnu_debug::_Safe_iterator const_iterator; - - typedef typename _Base::allocator_type allocator_type; - - using _Base::hash_funct; - using _Base::key_eq; - using _Base::get_allocator; - - hash_multimap() { } - - explicit hash_multimap(size_type __n) : _Base(__n) { } - - hash_multimap(size_type __n, const hasher& __hf) : _Base(__n, __hf) { } - - hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - hash_multimap(_InputIterator __f, _InputIterator __l) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l) { } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n) { } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf) { } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf, - __eql, __a) { } - - using _Base::size; - using _Base::max_size; - using _Base::empty; - - void - swap(hash_multimap& __x) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - iterator - begin() { return iterator(_Base::begin(), this); } - - iterator - end() { return iterator(_Base::end(), this); } - - const_iterator - begin() const - { return const_iterator(_Base::begin(), this); } - - const_iterator - end() const - { return const_iterator(_Base::end(), this); } - - iterator - insert(const value_type& __obj) - { return iterator(_Base::insert(__obj), this); } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first.base(), __last.base()); - } - - iterator - insert_noresize(const value_type& __obj) - { return iterator(_Base::insert_noresize(__obj), this); } - - 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); } - - using _Base::count; - - std::pair - equal_range(const key_type& __key) - { - typedef typename _Base::iterator _Base_iterator; - 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 - equal_range(const key_type& __key) const - { - typedef typename _Base::const_iterator _Base_iterator; - std::pair<_Base_iterator, _Base_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) - { - std::pair __victims = this->equal_range(__key); - size_t __num_victims = 0; - while (__victims.first != __victims.second) - { - this->erase(__victims.first++); - ++__num_victims; - } - return __num_victims; - } - - void - erase(iterator __it) - { - __glibcxx_check_erase(__it); - __it._M_invalidate(); - _Base::erase(__it.base()); - } - - void - erase(iterator __first, iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (iterator __tmp = __first; __tmp != __last;) - { - iterator __victim = __tmp++; - __victim._M_invalidate(); - } - _Base::erase(__first.base(), __last.base()); - } - - void - clear() - { - _Base::clear(); - this->_M_invalidate_all(); - } - - using _Base::resize; - using _Base::bucket_count; - using _Base::max_bucket_count; - using _Base::elems_in_bucket; - - _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 - inline bool - operator==(const hash_multimap<_Value,_Tp,_HashFcn,_EqualKey,_Alloc>& __x, - const hash_multimap<_Value,_Tp,_HashFcn,_EqualKey,_Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - - template - inline bool - operator!=(const hash_multimap<_Value,_Tp,_HashFcn,_EqualKey,_Alloc>& __x, - const hash_multimap<_Value,_Tp,_HashFcn,_EqualKey,_Alloc>& __y) - { return __x._M_base() != __y._M_base(); } - - template - inline void - swap(hash_multimap<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __x, - hash_multimap<_Value, _Tp, _HashFcn, _EqualKey, _Alloc>& __y) - { __x.swap(__y); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multiset.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multiset.h deleted file mode 100644 index a1ad151af..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_multiset.h +++ /dev/null @@ -1,236 +0,0 @@ -// Debugging hash_multiset implementation -*- C++ -*- - -// Copyright (C) 2003 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -#ifndef _GLIBCXX_DEBUG_HASH_MULTISET_H -#define _GLIBCXX_DEBUG_HASH_MULTISET_H 1 - -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _EqualKey = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value> > - class hash_multiset - : public __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>, - public __gnu_debug::_Safe_sequence > - { - typedef __gnu_cxx:: hash_multiset<_Value,_HashFcn, _EqualKey,_Alloc> - _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - 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 typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator iterator; - typedef __gnu_debug::_Safe_iterator const_iterator; - - typedef typename _Base::allocator_type allocator_type; - - using _Base::hash_funct; - using _Base::key_eq; - using _Base::get_allocator; - - hash_multiset() { } - - explicit hash_multiset(size_type __n) : _Base(__n) { } - - hash_multiset(size_type __n, const hasher& __hf) : _Base(__n, __hf) { } - - hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) - { } - - template - hash_multiset(_InputIterator __f, _InputIterator __l) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l) - { } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n) - { } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf) - { } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf, - __eql, __a) - { } - - hash_multiset(const _Base& __x) : _Base(__x), _Safe_base() { } - - using _Base::size; - using _Base::max_size; - using _Base::empty; - - void - swap(hash_multiset& __x) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - iterator begin() const { return iterator(_Base::begin(), this); } - iterator end() const { return iterator(_Base::end(), this); } - - iterator - insert(const value_type& __obj) - { return iterator(_Base::insert(__obj), this); } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first.base(), __last.base()); - } - - - iterator - insert_noresize(const value_type& __obj) - { return iterator(_Base::insert_noresize(__obj), this); } - - iterator - find(const key_type& __key) const - { return iterator(_Base::find(__key), this); } - - using _Base::count; - - std::pair - equal_range(const key_type& __key) const - { - typedef typename _Base::iterator _Base_iterator; - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__key); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - size_type - erase(const key_type& __key) - { - size_type __count = 0; - std::pair __victims = this->equal_range(__key); - while (__victims.first != __victims.second) - { - this->erase(__victims++); - ++__count; - } - return __count; - } - - void - erase(iterator __it) - { - __glibcxx_check_erase(__it); - __it._M_invalidate(); - _Base::erase(__it.base()); - } - - void - erase(iterator __first, iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (iterator __tmp = __first; __tmp != __last;) - { - iterator __victim = __tmp++; - __victim._M_invalidate(); - } - _Base::erase(__first.base(), __last.base()); - } - - void - clear() - { - _Base::clear(); - this->_M_invalidate_all(); - } - - using _Base::resize; - using _Base::bucket_count; - using _Base::max_bucket_count; - using _Base::elems_in_bucket; - - _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 - inline bool - operator==(const hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>& __x, - const hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - -template - inline bool - operator!=(const hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>& __x, - const hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>& __y) - { return __x._M_base() != __y._M_base(); } - -template - inline void - swap(hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>& __x, - hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc>& __y) - { __x.swap(__y); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set deleted file mode 100644 index fad5bddda..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set +++ /dev/null @@ -1,38 +0,0 @@ -// Debugging hash_set/hash_multiset implementation -*- C++ -*- - -// Copyright (C) 2003, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_HASH_SET -#define _GLIBCXX_DEBUG_HASH_SET 1 - -#include -#include -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set.h deleted file mode 100644 index aa62a2ea7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/hash_set.h +++ /dev/null @@ -1,245 +0,0 @@ -// Debugging hash_set implementation -*- C++ -*- - -// Copyright (C) 2003 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -#ifndef _GLIBCXX_DEBUG_HASH_SET_H -#define _GLIBCXX_DEBUG_HASH_SET_H 1 - -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _EqualKey = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value> > - class hash_set - : public __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc>, - public __gnu_debug::_Safe_sequence > - { - typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - 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 typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator - iterator; - typedef __gnu_debug::_Safe_iterator - const_iterator; - - typedef typename _Base::allocator_type allocator_type; - - using _Base::hash_funct; - using _Base::key_eq; - using _Base::get_allocator; - - hash_set() { } - - explicit hash_set(size_type __n) : _Base(__n) { } - - hash_set(size_type __n, const hasher& __hf) : _Base(__n, __hf) { } - - hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - hash_set(_InputIterator __f, _InputIterator __l) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l) { } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n) { } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf) { } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__check_valid_range(__f, __l), __l, __n, __hf, - __eql, __a) { } - - hash_set(const _Base& __x) : _Base(__x), _Safe_base() { } - - using _Base::size; - using _Base::max_size; - using _Base::empty; - - void - swap(hash_set& __x) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - iterator - begin() const { return iterator(_Base::begin(), this); } - - iterator - end() const { return iterator(_Base::end(), this); } - - std::pair - insert(const value_type& __obj) - { - std::pair __res = - _Base::insert(__obj); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first.base(), __last.base()); - } - - - std::pair - insert_noresize(const value_type& __obj) - { - std::pair __res = - _Base::insert_noresize(__obj); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - iterator - find(const key_type& __key) const - { return iterator(_Base::find(__key), this); } - - using _Base::count; - - std::pair - equal_range(const key_type& __key) const - { - typedef typename _Base::iterator _Base_iterator; - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__key); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - size_type - erase(const key_type& __key) - { - iterator __victim(_Base::find(__key), this); - if (__victim != end()) - return this->erase(__victim), 1; - else - return 0; - } - - void - erase(iterator __it) - { - __glibcxx_check_erase(__it); - __it._M_invalidate(); - _Base::erase(__it.base()); - } - - void - erase(iterator __first, iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (iterator __tmp = __first; __tmp != __last;) - { - iterator __victim = __tmp++; - __victim._M_invalidate(); - } - _Base::erase(__first.base(), __last.base()); - } - - void - clear() - { - _Base::clear(); - this->_M_invalidate_all(); - } - - using _Base::resize; - using _Base::bucket_count; - using _Base::max_bucket_count; - using _Base::elems_in_bucket; - - _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 - inline bool - operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __x, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - - template - inline bool - operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __x, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __y) - { return __x._M_base() != __y._M_base(); } - - template - inline void - swap(hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __x, - hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __y) - { __x.swap(__y); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/list b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/list deleted file mode 100644 index 2e6d0fa51..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/list +++ /dev/null @@ -1,505 +0,0 @@ -// Debugging list implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_LIST -#define _GLIBCXX_DEBUG_LIST 1 - -#include -#include -#include -#include - -namespace __gnu_debug_def -{ - template > - class list - : public _GLIBCXX_STD::list<_Tp, _Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef _GLIBCXX_STD::list<_Tp, _Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator - iterator; - typedef __gnu_debug::_Safe_iterator - 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 reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.2.2.1 construct/copy/destroy: - explicit list(const _Allocator& __a = _Allocator()) - : _Base(__a) { } - - explicit list(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } - - template - list(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__first, __last), __last, __a) - { } - - - list(const list& __x) : _Base(__x), _Safe_base() { } - - list(const _Base& __x) : _Base(__x), _Safe_base() { } - - ~list() { } - - list& - operator=(const list& __x) - { - static_cast<_Base&>(*this) = __x; - this->_M_invalidate_all(); - return *this; - } - - template - void - assign(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::assign(__first, __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()); } - - // 23.2.2.2 capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - void - resize(size_type __sz, _Tp __c = _Tp()) - { - this->_M_detach_singular(); - - // if __sz < size(), invalidate all iterators in [begin+__sz, end()) - iterator __victim = begin(); - iterator __end = end(); - for (size_type __i = __sz; __victim != __end && __i > 0; --__i) - ++__victim; - - while (__victim != __end) - { - iterator __real_victim = __victim++; - __real_victim._M_invalidate(); - } - - try - { - _Base::resize(__sz, __c); - } - catch(...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } - - // 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; - - void - pop_front() - { - __glibcxx_check_nonempty(); - iterator __victim = begin(); - __victim._M_invalidate(); - _Base::pop_front(); - } - - using _Base::push_back; - - void - pop_back() - { - __glibcxx_check_nonempty(); - iterator __victim = end(); - --__victim; - __victim._M_invalidate(); - _Base::pop_back(); - } - - iterator - insert(iterator __position, const _Tp& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - - void - insert(iterator __position, size_type __n, const _Tp& __x) - { - __glibcxx_check_insert(__position); - _Base::insert(__position.base(), __n, __x); - } - - template - void - insert(iterator __position, _InputIterator __first, - _InputIterator __last) - { - __glibcxx_check_insert_range(__position, __first, __last); - _Base::insert(__position.base(), __first, __last); - } - - iterator - erase(iterator __position) - { - __glibcxx_check_erase(__position); - __position._M_invalidate(); - return iterator(_Base::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 (iterator __victim = __position; __victim != __last; ) - { - iterator __old = __victim; - ++__victim; - __old._M_invalidate(); - } - 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 - splice(iterator __position, list& __x) - { - _GLIBCXX_DEBUG_VERIFY(&__x != this, - _M_message(::__gnu_debug::__msg_self_splice) - ._M_sequence(*this, "this")); - this->splice(__position, __x, __x.begin(), __x.end()); - } - - void - splice(iterator __position, list& __x, iterator __i) - { - __glibcxx_check_insert(__position); - _GLIBCXX_DEBUG_VERIFY(__x.get_allocator() == this->get_allocator(), - _M_message(::__gnu_debug::__msg_splice_alloc) - ._M_sequence(*this)._M_sequence(__x, "__x")); - _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_iter(__i); - _Base::splice(__position.base(), __x._M_base(), __i.base()); - } - - void - splice(iterator __position, list& __x, iterator __first, iterator __last) - { - __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")); - _GLIBCXX_DEBUG_VERIFY(__x.get_allocator() == this->get_allocator(), - _M_message(::__gnu_debug::__msg_splice_alloc) - ._M_sequence(*this)._M_sequence(__x)); - - for (iterator __tmp = __first; __tmp != __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")); - iterator __victim = __tmp++; - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 250. splicing invalidates iterators - this->_M_transfer_iter(__victim); - } - - _Base::splice(__position.base(), __x._M_base(), __first.base(), - __last.base()); - } - - void - remove(const _Tp& __value) - { - for (iterator __x = begin(); __x.base() != _Base::end(); ) - { - if (*__x == __value) - __x = erase(__x); - else - ++__x; - } - } - - template - void - remove_if(_Predicate __pred) - { - for (iterator __x = begin(); __x.base() != _Base::end(); ) - { - 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) - { - if (*__first == *__next) - erase(__next); - else - __first = __next; - __next = __first; - } - } - - template - void - 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)) - erase(__next); - else - __first = __next; - __next = __first; - } - } - - void - merge(list& __x) - { - __glibcxx_check_sorted(_Base::begin(), _Base::end()); - __glibcxx_check_sorted(__x.begin().base(), __x.end().base()); - for (iterator __tmp = __x.begin(); __tmp != __x.end(); ) - { - iterator __victim = __tmp++; - __victim._M_attach(&__x); - } - _Base::merge(__x._M_base()); - } - - template - void - merge(list& __x, _Compare __comp) - { - __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp); - __glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(), - __comp); - for (iterator __tmp = __x.begin(); __tmp != __x.end(); ) - { - iterator __victim = __tmp++; - __victim._M_attach(&__x); - } - _Base::merge(__x._M_base(), __comp); - } - - void - sort() { _Base::sort(); } - - template - 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() - { - 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 - inline bool - operator==(const list<_Tp, _Alloc>& __lhs, const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const list<_Tp, _Alloc>& __lhs, const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const list<_Tp, _Alloc>& __lhs, const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const list<_Tp, _Alloc>& __lhs, const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const list<_Tp, _Alloc>& __lhs, const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const list<_Tp, _Alloc>& __lhs, const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs) - { __lhs.swap(__rhs); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/macros.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/macros.h deleted file mode 100644 index 9b279cbf3..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/macros.h +++ /dev/null @@ -1,219 +0,0 @@ -// Debugging support implementation -*- C++ -*- - -// Copyright (C) 2003, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#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 - * "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 (i.e., 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 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. - * - * @tbd 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_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 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 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 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 < operator for elements in the sequence is a -// StrictWeakOrdering by checking that it is irreflexive. -#define __glibcxx_check_strict_weak_ordering(_First,_Last) \ -_GLIBCXX_DEBUG_ASSERT(_First == _Last || !(*_First < *_First)) - -// Verify that the predicate is StrictWeakOrdering by checking that it -// is irreflexive. -#define __glibcxx_check_strict_weak_ordering_pred(_First,_Last,_Pred) \ -_GLIBCXX_DEBUG_ASSERT(_First == _Last || !_Pred(*_First, *_First)) - - -// Verify that the iterator range [_First, _Last) is sorted -#define __glibcxx_check_sorted(_First,_Last) \ -__glibcxx_check_valid_range(_First,_Last); \ -__glibcxx_check_strict_weak_ordering(_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_check_strict_weak_ordering_pred(_First,_Last,_Pred); \ -_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)) - -/** Verify that the iterator range [_First, _Last) is partitioned - w.r.t. the value _Value. */ -#define __glibcxx_check_partitioned(_First,_Last,_Value) \ -__glibcxx_check_valid_range(_First,_Last); \ -_GLIBCXX_DEBUG_VERIFY(::__gnu_debug::__check_partitioned(_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_pred(_First,_Last,_Value,_Pred) \ -__glibcxx_check_valid_range(_First,_Last); \ -_GLIBCXX_DEBUG_VERIFY(::__gnu_debug::__check_partitioned(_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_check_valid_range(_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_check_valid_range(_First,_Last); \ -_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.1.0/include/debug/map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/map deleted file mode 100644 index ae74e7e7f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/map +++ /dev/null @@ -1,38 +0,0 @@ -// Debugging map/multimap implementation -*- C++ -*- - -// Copyright (C) 2003 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -#ifndef _GLIBCXX_DEBUG_MAP -#define _GLIBCXX_DEBUG_MAP 1 - -#include -#include -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/map.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/map.h deleted file mode 100644 index e0722db6c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/map.h +++ /dev/null @@ -1,327 +0,0 @@ -// Debugging map implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_MAP_H -#define _GLIBCXX_DEBUG_MAP_H 1 - -#include -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _Allocator = std::allocator > > - class map - : public _GLIBCXX_STD::map<_Key, _Tp, _Compare, _Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef _GLIBCXX_STD::map<_Key, _Tp, _Compare, _Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef std::pair 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 - iterator; - typedef __gnu_debug::_Safe_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 reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - using _Base::value_compare; - - // 23.3.1.1 construct/copy/destroy: - explicit map(const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - - template - map(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__first, __last), __last, - __comp, __a), _Safe_base() { } - - map(const map<_Key,_Tp,_Compare,_Allocator>& __x) - : _Base(__x), _Safe_base() { } - - map(const _Base& __x) : _Base(__x), _Safe_base() { } - - ~map() { } - - map<_Key,_Tp,_Compare,_Allocator>& - operator=(const map<_Key,_Tp,_Compare,_Allocator>& __x) - { - *static_cast<_Base*>(this) = __x; - this->_M_invalidate_all(); - return *this; - } - - // _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()); } - - // 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 - insert(const value_type& __x) - { - typedef typename _Base::iterator _Base_iterator; - std::pair<_Base_iterator, bool> __res = _Base::insert(__x); - return std::pair(iterator(__res.first, this), - __res.second); - } - - iterator - insert(iterator __position, const value_type& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first, __last); - } - - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - __position._M_invalidate(); - _Base::erase(__position.base()); - } - - size_type - erase(const key_type& __x) - { - iterator __victim = find(__x); - if (__victim == end()) - return 0; - else - { - __victim._M_invalidate(); - _Base::erase(__victim.base()); - return 1; - } - } - - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - while (__first != __last) - this->erase(__first++); - } - - void - swap(map<_Key,_Tp,_Compare,_Allocator>& __x) - { - _Base::swap(__x); - this->_M_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) - { 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - inline void - swap(map<_Key,_Tp,_Compare,_Allocator>& __lhs, - map<_Key,_Tp,_Compare,_Allocator>& __rhs) - { __lhs.swap(__rhs); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multimap.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multimap.h deleted file mode 100644 index 89f5e87ad..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multimap.h +++ /dev/null @@ -1,314 +0,0 @@ -// Debugging multimap implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_MULTIMAP_H -#define _GLIBCXX_DEBUG_MULTIMAP_H 1 - -#include -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _Allocator = std::allocator > > - class multimap - : public _GLIBCXX_STD::multimap<_Key, _Tp, _Compare, _Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef _GLIBCXX_STD::multimap<_Key, _Tp, _Compare, _Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef std::pair 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 - iterator; - typedef __gnu_debug::_Safe_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 reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - using _Base::value_compare; - - // 23.3.1.1 construct/copy/destroy: - explicit multimap(const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - - template - multimap(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__first, __last), __last, - __comp, __a) { } - - multimap(const multimap<_Key,_Tp,_Compare,_Allocator>& __x) - : _Base(__x), _Safe_base() { } - - multimap(const _Base& __x) : _Base(__x), _Safe_base() { } - - ~multimap() { } - - multimap<_Key,_Tp,_Compare,_Allocator>& - operator=(const multimap<_Key,_Tp,_Compare,_Allocator>& __x) - { - *static_cast<_Base*>(this) = __x; - this->_M_invalidate_all(); - return *this; - } - - 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()); } - - // capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - // modifiers: - iterator - insert(const value_type& __x) - { return iterator(_Base::insert(__x), this); } - - iterator - insert(iterator __position, const value_type& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first, __last); - } - - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - __position._M_invalidate(); - _Base::erase(__position.base()); - } - - size_type - erase(const key_type& __x) - { - std::pair __victims = this->equal_range(__x); - size_type __count = 0; - while (__victims.first != __victims.second) - { - iterator __victim = __victims.first++; - __victim._M_invalidate(); - _Base::erase(__victim.base()); - ++__count; - } - return __count; - } - - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - while (__first != __last) - this->erase(__first++); - } - - void - swap(multimap<_Key,_Tp,_Compare,_Allocator>& __x) - { - _Base::swap(__x); - this->_M_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), 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - inline void - swap(multimap<_Key,_Tp,_Compare,_Allocator>& __lhs, - multimap<_Key,_Tp,_Compare,_Allocator>& __rhs) - { __lhs.swap(__rhs); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multiset.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multiset.h deleted file mode 100644 index 7353be94d..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/multiset.h +++ /dev/null @@ -1,320 +0,0 @@ -// Debugging multiset implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_MULTISET_H -#define _GLIBCXX_DEBUG_MULTISET_H 1 - -#include -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _Allocator = std::allocator<_Key> > - class multiset - : public _GLIBCXX_STD::multiset<_Key, _Compare, _Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef _GLIBCXX_STD::multiset<_Key, _Compare, _Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_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 __gnu_debug::_Safe_iterator - iterator; - typedef __gnu_debug::_Safe_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 reverse_iterator; - typedef std::reverse_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 - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__first, __last), __last, - __comp, __a) { } - - multiset(const multiset<_Key,_Compare,_Allocator>& __x) - : _Base(__x), _Safe_base() { } - - multiset(const _Base& __x) : _Base(__x), _Safe_base() { } - - ~multiset() { } - - multiset<_Key,_Compare,_Allocator>& - operator=(const multiset<_Key,_Compare,_Allocator>& __x) - { - *static_cast<_Base*>(this) = __x; - this->_M_invalidate_all(); - return *this; - } - - 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()); } - - // capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - // modifiers: - iterator - insert(const value_type& __x) - { return iterator(_Base::insert(__x), this); } - - iterator - insert(iterator __position, const value_type& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first, __last); - } - - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - __position._M_invalidate(); - _Base::erase(__position.base()); - } - - size_type - erase(const key_type& __x) - { - std::pair __victims = this->equal_range(__x); - size_type __count = 0; - while (__victims.first != __victims.second) - { - iterator __victim = __victims.first++; - __victim._M_invalidate(); - _Base::erase(__victim.base()); - ++__count; - } - return __count; - } - - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - while (__first != __last) - this->erase(__first++); - } - - void - swap(multiset<_Key,_Compare,_Allocator>& __x) - { - _Base::swap(__x); - this->_M_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), 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 - 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)); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - std::pair - 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, 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 - inline bool - operator==(const multiset<_Key,_Compare,_Allocator>& __lhs, - const multiset<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const multiset<_Key,_Compare,_Allocator>& __lhs, - const multiset<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const multiset<_Key,_Compare,_Allocator>& __lhs, - const multiset<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const multiset<_Key,_Compare,_Allocator>& __lhs, - const multiset<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const multiset<_Key,_Compare,_Allocator>& __lhs, - const multiset<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const multiset<_Key,_Compare,_Allocator>& __lhs, - const multiset<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - void - swap(multiset<_Key,_Compare,_Allocator>& __x, - multiset<_Key,_Compare,_Allocator>& __y) - { return __x.swap(__y); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_base.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_base.h deleted file mode 100644 index b42a6c9c9..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_base.h +++ /dev/null @@ -1,207 +0,0 @@ -// Safe sequence/iterator base implementation -*- C++ -*- - -// Copyright (C) 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_SAFE_BASE_H -#define _GLIBCXX_DEBUG_SAFE_BASE_H 1 - -namespace __gnu_debug -{ - class _Safe_sequence_base; - - /** \brief Basic functionality for 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(); } - - 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); - - /** Detach the iterator for whatever sequence it is attached to, - * if any. - */ - void _M_detach(); - - /** 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? */ - bool _M_singular() const; - - /** Can we compare this iterator to the given iterator @p __x? - Returns true if both iterators are nonsingular and reference - the same sequence. */ - bool _M_can_compare(const _Safe_iterator_base& __x) const; - }; - - /** - * @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 "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 reasion, 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); - - public: - /** Invalidates all iterators. */ - void - _M_invalidate_all() const - { if (++_M_version == 0) _M_version = 1; } - }; -} // namespace __gnu_debug - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.h deleted file mode 100644 index 0ff967eea..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.h +++ /dev/null @@ -1,621 +0,0 @@ -// Safe iterator implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_H -#define _GLIBCXX_DEBUG_SAFE_ITERATOR_H 1 - -#include -#include -#include -#include -#include -#include -#include - -namespace __gnu_debug -{ - using std::iterator_traits; - using std::pair; - - /** 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 - 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 __is_same::value; - } - - typedef 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; - - /// @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. - * @pre @p x is not singular - */ - _Safe_iterator(const _Safe_iterator& __x) - : _Safe_iterator_base(__x, _M_constant()), _M_current(__x._M_current) - { - _GLIBCXX_DEBUG_VERIFY(!__x._M_singular(), - _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. - * - * @pre @p x is not singular - */ - template - _Safe_iterator( - const _Safe_iterator<_MutableIterator, - typename std::__enable_if< - _Sequence, - (std::__are_same<_MutableIterator, - typename _Sequence::iterator::_Base_iterator>::__value) - >::__type>& __x) - : _Safe_iterator_base(__x, _M_constant()), _M_current(__x.base()) - { - _GLIBCXX_DEBUG_VERIFY(!__x._M_singular(), - _M_message(__msg_init_const_singular) - ._M_iterator(*this, "this") - ._M_iterator(__x, "other")); - } - - /** - * @brief Copy assignment. - * @pre @p x is not singular - */ - _Safe_iterator& - operator=(const _Safe_iterator& __x) - { - _GLIBCXX_DEBUG_VERIFY(!__x._M_singular(), - _M_message(__msg_copy_singular) - ._M_iterator(*this, "this") - ._M_iterator(__x, "other")); - _M_current = __x._M_current; - this->_M_attach(static_cast<_Sequence*>(__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(const _Sequence* __seq) - { - _Safe_iterator_base::_M_attach(const_cast<_Sequence*>(__seq), - _M_constant()); - } - - /** Invalidate the iterator, making it singular. */ - void - _M_invalidate(); - - /// Is the iterator dereferenceable? - bool - _M_dereferenceable() const - { return !this->_M_singular() && !_M_is_end(); } - - /// Is the iterator incrementable? - bool - _M_incrementable() const { return this->_M_dereferenceable(); } - - // 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 - 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(_M_sequence); } - - /** Determine the distance between two iterators with some known - * precision. - */ - template - static pair - _M_get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs) - { - typedef typename iterator_traits<_Iterator1>::iterator_category - _Category; - return _M_get_distance(__lhs, __rhs, _Category()); - } - - template - static pair - _M_get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs, - std::random_access_iterator_tag) - { - return std::make_pair(__rhs.base() - __lhs.base(), __dp_exact); - } - - template - static pair - _M_get_distance(const _Iterator1& __lhs, const _Iterator2& __rhs, - std::forward_iterator_tag) - { - return std::make_pair(__lhs.base() == __rhs.base()? 0 : 1, - __dp_equality); - } - - /// Is this iterator equal to the sequence's begin() iterator? - bool _M_is_begin() const - { return *this == static_cast(_M_sequence)->begin(); } - - /// Is this iterator equal to the sequence's end() iterator? - bool _M_is_end() const - { return *this == static_cast(_M_sequence)->end(); } - }; - - template - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - inline _Safe_iterator<_Iterator, _Sequence> - operator+(typename _Safe_iterator<_Iterator,_Sequence>::difference_type __n, - const _Safe_iterator<_Iterator, _Sequence>& __i) - { return __i + __n; } -} // namespace __gnu_debug - -#ifndef _GLIBCXX_EXPORT_TEMPLATE -# include -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.tcc b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.tcc deleted file mode 100644 index da4d413b7..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_iterator.tcc +++ /dev/null @@ -1,140 +0,0 @@ -// Debugging iterator implementation (out of line) -*- C++ -*- - -// Copyright (C) 2003, 2004 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 safe_iterator.tcc - * This is an internal header file, included by other library headers. - * You should not attempt to use it directly. - */ - -#ifndef _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC -#define _GLIBCXX_DEBUG_SAFE_ITERATOR_TCC 1 - -namespace __gnu_debug -{ - template - bool - _Safe_iterator<_Iterator, _Sequence>:: - _M_can_advance(const difference_type& __n) const - { - typedef typename _Sequence::const_iterator const_iterator; - - if (this->_M_singular()) - return false; - if (__n == 0) - return true; - if (__n < 0) - { - const_iterator __begin = - static_cast(_M_sequence)->begin(); - pair __dist = - this->_M_get_distance(__begin, *this); - bool __ok = (__dist.second == __dp_exact && __dist.first >= -__n - || __dist.second != __dp_exact && __dist.first > 0); - return __ok; - } - else - { - const_iterator __end = - static_cast(_M_sequence)->end(); - pair __dist = - this->_M_get_distance(*this, __end); - bool __ok = (__dist.second == __dp_exact && __dist.first >= __n - || __dist.second != __dp_exact && __dist.first > 0); - return __ok; - } - } - - template - template - 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 */ - pair __dist = - this->_M_get_distance(*this, __rhs); - 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. */ - if (_M_is_begin() || __rhs._M_is_end()) - return true; - else 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; - } - - template - void - _Safe_iterator<_Iterator, _Sequence>:: - _M_invalidate() - { - typedef typename _Sequence::iterator iterator; - typedef typename _Sequence::const_iterator const_iterator; - - if (!this->_M_singular()) - { - for (_Safe_iterator_base* iter = _M_sequence->_M_iterators; iter; ) - { - iterator* __victim = static_cast(iter); - iter = iter->_M_next; - if (this->base() == __victim->base()) - __victim->_M_version = 0; - } - for (_Safe_iterator_base* iter2 = _M_sequence->_M_const_iterators; - iter2; /* increment in loop */) - { - const_iterator* __victim = static_cast(iter2); - iter2 = iter2->_M_next; - if (this->base() == __victim->base()) - __victim->_M_version = 0; - } - _M_version = 0; - } - } -} // namespace __gnu_debug - -#endif - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_sequence.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_sequence.h deleted file mode 100644 index 82c5ae004..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/safe_sequence.h +++ /dev/null @@ -1,182 +0,0 @@ -// Safe sequence implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_SAFE_SEQUENCE_H -#define _GLIBCXX_DEBUG_SAFE_SEQUENCE_H 1 - -#include -#include -#include -#include - -namespace __gnu_debug -{ - template - 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 - 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 function object that returns true when the given random access - iterator is at least @c n steps away from the given iterator. */ - template - 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 "safe" sequence type that - * tracks iterators that reference it. - * - * The class template %_Safe_sequence simplifies the construction of - * "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 - 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. The user of this routine should be careful not to make - copies of the iterators passed to @p pred, as the copies may - interfere with the invalidation. */ - template - void - _M_invalidate_if(_Predicate __pred); - - /** Transfers all iterators that reference this memory location - to this sequence from whatever sequence they are attached - to. */ - template - void - _M_transfer_iter(const _Safe_iterator<_Iterator, _Sequence>& __x); - }; - - template - template - void - _Safe_sequence<_Sequence>:: - _M_invalidate_if(_Predicate __pred) - { - typedef typename _Sequence::iterator iterator; - typedef typename _Sequence::const_iterator const_iterator; - - for (_Safe_iterator_base* __iter = _M_iterators; __iter; ) - { - iterator* __victim = static_cast(__iter); - __iter = __iter->_M_next; - if (!__victim->_M_singular()) - { - if (__pred(__victim->base())) - __victim->_M_invalidate(); - } - } - - for (_Safe_iterator_base* __iter2 = _M_const_iterators; __iter2; ) - { - const_iterator* __victim = static_cast(__iter2); - __iter2 = __iter2->_M_next; - if (!__victim->_M_singular()) - { - if (__pred(__victim->base())) - __victim->_M_invalidate(); - } - } - } - - template - template - void - _Safe_sequence<_Sequence>:: - _M_transfer_iter(const _Safe_iterator<_Iterator, _Sequence>& __x) - { - _Safe_sequence_base* __from = __x._M_sequence; - if (!__from) - return; - - typedef typename _Sequence::iterator iterator; - typedef typename _Sequence::const_iterator const_iterator; - - for (_Safe_iterator_base* __iter = __from->_M_iterators; __iter; ) - { - iterator* __victim = static_cast(__iter); - __iter = __iter->_M_next; - if (!__victim->_M_singular() && __victim->base() == __x.base()) - __victim->_M_attach(static_cast<_Sequence*>(this)); - } - - for (_Safe_iterator_base* __iter2 = __from->_M_const_iterators; - __iter2;) - { - const_iterator* __victim = static_cast(__iter2); - __iter2 = __iter2->_M_next; - if (!__victim->_M_singular() && __victim->base() == __x.base()) - __victim->_M_attach(static_cast<_Sequence*>(this)); - } - } -} // namespace __gnu_debug - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set deleted file mode 100644 index 002b32434..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set +++ /dev/null @@ -1,38 +0,0 @@ -// Debugging set/multiset implementation -*- C++ -*- - -// Copyright (C) 2003 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// 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. - -#ifndef _GLIBCXX_DEBUG_SET -#define _GLIBCXX_DEBUG_SET 1 - -#include -#include -#include - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set.h deleted file mode 100644 index d89a165ee..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/set.h +++ /dev/null @@ -1,325 +0,0 @@ -// Debugging set implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_SET_H -#define _GLIBCXX_DEBUG_SET_H 1 - -#include -#include -#include - -namespace __gnu_debug_def -{ - template, - typename _Allocator = std::allocator<_Key> > - class set - : public _GLIBCXX_STD::set<_Key,_Compare,_Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef _GLIBCXX_STD::set<_Key,_Compare,_Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_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 __gnu_debug::_Safe_iterator - iterator; - typedef __gnu_debug::_Safe_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 reverse_iterator; - typedef std::reverse_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 - set(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__first, __last), __last, - __comp, __a) { } - - set(const set<_Key,_Compare,_Allocator>& __x) - : _Base(__x), _Safe_base() { } - - set(const _Base& __x) : _Base(__x), _Safe_base() { } - - ~set() { } - - set<_Key,_Compare,_Allocator>& - operator=(const set<_Key,_Compare,_Allocator>& __x) - { - *static_cast<_Base*>(this) = __x; - this->_M_invalidate_all(); - return *this; - } - - 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()); } - - // capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - // modifiers: - std::pair - insert(const value_type& __x) - { - typedef typename _Base::iterator _Base_iterator; - std::pair<_Base_iterator, bool> __res = _Base::insert(__x); - return std::pair(iterator(__res.first, this), - __res.second); - } - - iterator - insert(iterator __position, const value_type& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::insert(__first, __last); - } - - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - __position._M_invalidate(); - _Base::erase(__position.base()); - } - - size_type - erase(const key_type& __x) - { - iterator __victim = find(__x); - if (__victim == end()) - return 0; - else - { - __victim._M_invalidate(); - _Base::erase(__victim.base()); - return 1; - } - } - - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - - while (__first != __last) - this->erase(__first++); - } - - void - swap(set<_Key,_Compare,_Allocator>& __x) - { - _Base::swap(__x); - this->_M_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), 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 - 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)); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - std::pair - 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, 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 - inline bool - operator==(const set<_Key,_Compare,_Allocator>& __lhs, - const set<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const set<_Key,_Compare,_Allocator>& __lhs, - const set<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const set<_Key,_Compare,_Allocator>& __lhs, - const set<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const set<_Key,_Compare,_Allocator>& __lhs, - const set<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const set<_Key,_Compare,_Allocator>& __lhs, - const set<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const set<_Key,_Compare,_Allocator>& __lhs, - const set<_Key,_Compare,_Allocator>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - void - swap(set<_Key,_Compare,_Allocator>& __x, - set<_Key,_Compare,_Allocator>& __y) - { return __x.swap(__y); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/string b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/string deleted file mode 100644 index 18f90d068..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/string +++ /dev/null @@ -1,1018 +0,0 @@ -// Debugging string implementation -*- C++ -*- - -// Copyright (C) 2003, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_STRING -#define _GLIBCXX_DEBUG_STRING 1 - -#include -#include -#include - -namespace __gnu_debug -{ -template, - typename _Allocator = std::allocator<_CharT> > - class basic_string - : public std::basic_string<_CharT, _Traits, _Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef std::basic_string<_CharT, _Traits, _Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _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 - iterator; - typedef __gnu_debug::_Safe_iterator const_iterator; - - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_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 - basic_string(_InputIterator __begin, _InputIterator __end, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__begin, __end), __end, __a) - { } - - ~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; - } - - // 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()); } - - 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; - - // 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; - } - - 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 - basic_string& - append(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::append(__first, __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; - } - - 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 - basic_string& - assign(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::assign(__first, __last); - this->_M_invalidate_all(); - return *this; - } - - 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 - void - insert(iterator __p, _InputIterator __first, _InputIterator __last) - { - __glibcxx_check_insert_range(__p, __first, __last); - _Base::insert(__p.base(), __first, __last); - this->_M_invalidate_all(); - } - - 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 - 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; - } - - 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 - 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 - 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 - 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 - 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 - 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 - 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 - inline bool - operator==(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs == __rhs._M_base(); - } - - template - inline bool - operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() == __rhs; - } - - template - 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 - inline bool - operator!=(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs != __rhs._M_base(); - } - - template - inline bool - operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() != __rhs; - } - - template - 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 - inline bool - operator<(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs < __rhs._M_base(); - } - - template - inline bool - operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() < __rhs; - } - - template - 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 - inline bool - operator<=(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs <= __rhs._M_base(); - } - - template - inline bool - operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() <= __rhs; - } - - template - 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 - inline bool - operator>=(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs >= __rhs._M_base(); - } - - template - inline bool - operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() >= __rhs; - } - - template - 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 - inline bool - operator>(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs > __rhs._M_base(); - } - - template - 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 - inline void - swap(basic_string<_CharT,_Traits,_Allocator>& __lhs, - basic_string<_CharT,_Traits,_Allocator>& __rhs) - { __lhs.swap(__rhs); } - - template - 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 - 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 - 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 - 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 string; - -#ifdef _GLIBCXX_USE_WCHAR_T - typedef basic_string wstring; -#endif - -} // namespace __gnu_debug - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/vector b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/vector deleted file mode 100644 index f2b361824..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/debug/vector +++ /dev/null @@ -1,416 +0,0 @@ -// Debugging vector implementation -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -#ifndef _GLIBCXX_DEBUG_VECTOR -#define _GLIBCXX_DEBUG_VECTOR 1 - -#include -#include -#include -#include - -namespace __gnu_debug_def -{ - template > - class vector - : public _GLIBCXX_STD::vector<_Tp, _Allocator>, - public __gnu_debug::_Safe_sequence > - { - typedef _GLIBCXX_STD::vector<_Tp, _Allocator> _Base; - typedef __gnu_debug::_Safe_sequence _Safe_base; - - typedef typename _Base::const_iterator _Base_const_iterator; - typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator - iterator; - typedef __gnu_debug::_Safe_iterator - 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 reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.2.4.1 construct/copy/destroy: - explicit vector(const _Allocator& __a = _Allocator()) - : _Base(__a), _M_guaranteed_capacity(0) { } - - explicit vector(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a), _M_guaranteed_capacity(__n) { } - - template - vector(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_valid_range(__first, __last), - __last, __a), - _M_guaranteed_capacity(0) - { _M_update_guaranteed_capacity(); } - - vector(const vector<_Tp,_Allocator>& __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()) { } - - ~vector() { } - - vector<_Tp,_Allocator>& - operator=(const vector<_Tp,_Allocator>& __x) - { - static_cast<_Base&>(*this) = __x; - this->_M_invalidate_all(); - _M_update_guaranteed_capacity(); - return *this; - } - - template - void - assign(_InputIterator __first, _InputIterator __last) - { - __glibcxx_check_valid_range(__first, __last); - _Base::assign(__first, __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(); - } - - 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()); } - - // 23.2.4.2 capacity: - using _Base::size; - using _Base::max_size; - - void - resize(size_type __sz, _Tp __c = _Tp()) - { - bool __realloc = _M_requires_reallocation(__sz); - if (__sz < this->size()) - this->_M_invalidate_if(_After_nth(__sz, _M_base().begin())); - _Base::resize(__sz, __c); - if (__realloc) - this->_M_invalidate_all(); - } - - using _Base::capacity; - 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(); - } - - void - pop_back() - { - __glibcxx_check_nonempty(); - iterator __victim = end() - 1; - __victim._M_invalidate(); - _Base::pop_back(); - } - - iterator - insert(iterator __position, const _Tp& __x) - { - __glibcxx_check_insert(__position); - bool __realloc = _M_requires_reallocation(this->size() + 1); - difference_type __offset = __position - begin(); - typename _Base::iterator __res = _Base::insert(__position.base(),__x); - if (__realloc) - this->_M_invalidate_all(); - else - this->_M_invalidate_if(_After_nth(__offset, _M_base().begin())); - _M_update_guaranteed_capacity(); - return iterator(__res, this); - } - - 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 - begin(); - _Base::insert(__position.base(), __n, __x); - if (__realloc) - this->_M_invalidate_all(); - else - this->_M_invalidate_if(_After_nth(__offset, _M_base().begin())); - _M_update_guaranteed_capacity(); - } - - template - 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. */ - typename _Base::iterator __old_begin = _M_base().begin(); - difference_type __offset = __position - begin(); - _Base::insert(__position.base(), __first, __last); - - if (_M_base().begin() != __old_begin) - this->_M_invalidate_all(); - else - this->_M_invalidate_if(_After_nth(__offset, _M_base().begin())); - _M_update_guaranteed_capacity(); - } - - iterator - erase(iterator __position) - { - __glibcxx_check_erase(__position); - difference_type __offset = __position - begin(); - typename _Base::iterator __res = _Base::erase(__position.base()); - this->_M_invalidate_if(_After_nth(__offset, _M_base().begin())); - 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 - begin(); - typename _Base::iterator __res = _Base::erase(__first.base(), - __last.base()); - this->_M_invalidate_if(_After_nth(__offset, _M_base().begin())); - return iterator(__res, this); - } - - void - swap(vector<_Tp,_Allocator>& __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) - { -#ifdef _GLIBCXX_DEBUG_PEDANTIC - return __elements > this->capacity(); -#else - return __elements > _M_guaranteed_capacity; -#endif - } - - void - _M_update_guaranteed_capacity() - { - if (this->size() > _M_guaranteed_capacity) - _M_guaranteed_capacity = this->size(); - } - }; - - template - inline bool - operator==(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs) - { __lhs.swap(__rhs); } -} // namespace __gnu_debug_def - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/algorithm b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/algorithm deleted file mode 100644 index 440262095..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/algorithm +++ /dev/null @@ -1,526 +0,0 @@ -// Algorithm extensions -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 - -namespace __gnu_cxx -{ - 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 - 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 - 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 - 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 __copy_n(__first, __count, __result, - std::__iterator_category(__first)); - } - - template - 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 = std::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 - * "lexigraphically less than" the second, greater than zero if the second - * range is "lexigraphically less than" the first, and zero otherwise. - * This is an SGI extension. - * @ingroup SGIextensions - */ - template - 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 - 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 - 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 - _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 - _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 - _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 - _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 - 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 - 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); - } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - 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 - 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); - } - - // 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 - 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 - 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; - } -} // namespace __gnu_cxx - -#endif /* _EXT_ALGORITHM */ diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/array_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/array_allocator.h deleted file mode 100644 index 77f5b5cc8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/array_allocator.h +++ /dev/null @@ -1,145 +0,0 @@ -// array allocator -*- C++ -*- - -// Copyright (C) 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 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 -#include -#include -#include - -namespace __gnu_cxx -{ - /// @brief Base class. - template - 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 &__x; } - - const_pointer - address(const_reference __x) const { return &__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(__p) value_type(__val); } - - void - destroy(pointer __p) { __p->~_Tp(); } - }; - - /** - * @brief An allocator that uses previously allocated memory. - * This memory can be externally, globally, or otherwise allocated. - */ - template > - 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; - - array_type* _M_array; - - template - struct rebind - { typedef array_allocator<_Tp1, _Array1> other; }; - - array_allocator(array_type* __array = NULL) throw() - : _M_array(__array) - { } - - array_allocator(const array_allocator& __o) throw() - : _M_array(__o._M_array) { } - - template - array_allocator(const array_allocator<_Tp1, _Array1>&) throw() - : _M_array(NULL) { } - - ~array_allocator() throw() { } - - pointer - allocate(size_type __n, const void* = 0) - { - static size_type __array_used; - if (_M_array == 0 || __array_used + __n > _M_array->size()) - std::__throw_bad_alloc(); - pointer __ret = _M_array->begin() + __array_used; - __array_used += __n; - return __ret; - } - }; - - template - inline bool - operator==(const array_allocator<_Tp, _Array>&, - const array_allocator<_Tp, _Array>&) - { return true; } - - template - inline bool - operator!=(const array_allocator<_Tp, _Array>&, - const array_allocator<_Tp, _Array>&) - { return false; } -} // namespace __gnu_cxx - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/bitmap_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/bitmap_allocator.h deleted file mode 100644 index 7860b6dbf..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/bitmap_allocator.h +++ /dev/null @@ -1,1294 +0,0 @@ -// Bitmap Allocator. -*- C++ -*- - -// Copyright (C) 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 ext/bitmap_allocator.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _BITMAP_ALLOCATOR_H -#define _BITMAP_ALLOCATOR_H 1 - -// For std::size_t, and ptrdiff_t. -#include - -// For __throw_bad_alloc(). -#include - -// For std::pair. -#include - -// For greater_equal, and less_equal. -#include - -// For operator new. -#include - -// For __gthread_mutex_t, __gthread_mutex_lock and __gthread_mutex_unlock. -#include - -// Define this to enable error checking withing the allocator -// itself(to debug the allocator itself). -//#define _BALLOC_SANITY_CHECK - -/** @brief The constant in the expression below is the alignment - * required in bytes. - */ -#define _BALLOC_ALIGN_BYTES 8 - -#if defined _BALLOC_SANITY_CHECK -#include -#define _BALLOC_ASSERT(_EXPR) assert(_EXPR) -#else -#define _BALLOC_ASSERT(_EXPR) -#endif - - -namespace __gnu_cxx -{ -#if defined __GTHREADS - namespace - { - /** @brief If true, then the application being compiled will be - * using threads, so use mutexes as a synchronization primitive, - * else do no use any synchronization primitives. - */ - bool const __threads_enabled = __gthread_active_p(); - } -#endif - -#if defined __GTHREADS - /** @class _Mutex bitmap_allocator.h bitmap_allocator.h - * - * @brief _Mutex is an OO-Wrapper for __gthread_mutex_t. - * - * It does not allow you to copy or assign an already initialized - * mutex. This is used merely as a convenience for the locking - * classes. - */ - class _Mutex - { - __gthread_mutex_t _M_mut; - - // Prevent Copying and assignment. - _Mutex(_Mutex const&); - _Mutex& operator=(_Mutex const&); - - public: - _Mutex() - { - if (__threads_enabled) - { -#if !defined __GTHREAD_MUTEX_INIT - __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mut); -#else - __gthread_mutex_t __mtemp = __GTHREAD_MUTEX_INIT; - _M_mut = __mtemp; -#endif - } - } - - ~_Mutex() - { - // Gthreads does not define a Mutex Destruction Function. - } - - __gthread_mutex_t* - _M_get() { return &_M_mut; } - }; - - /** @class _Lock bitmap_allocator.h bitmap_allocator.h - * - * @brief _Lock is a simple manual locking class which allows you to - * manually lock and unlock a mutex associated with the lock. - * - * There is no automatic locking or unlocking happening without the - * programmer's explicit instructions. This class unlocks the mutex - * ONLY if it has not been locked. However, this check does not - * apply for locking, and wayward use may cause dead-locks. - */ - class _Lock - { - _Mutex* _M_pmt; - bool _M_locked; - - // Prevent Copying and assignment. - _Lock(_Lock const&); - _Lock& operator=(_Lock const&); - - public: - _Lock(_Mutex* __mptr) - : _M_pmt(__mptr), _M_locked(false) - { } - - void - _M_lock() - { - if (__threads_enabled) - { - _M_locked = true; - __gthread_mutex_lock(_M_pmt->_M_get()); - } - } - - void - _M_unlock() - { - if (__threads_enabled) - { - if (__builtin_expect(_M_locked, true)) - { - __gthread_mutex_unlock(_M_pmt->_M_get()); - _M_locked = false; - } - } - } - - ~_Lock() { } - }; - - /** @class _Auto_Lock bitmap_allocator.h bitmap_allocator.h - * - * @brief _Auto_Lock locks the associated mutex on construction, and - * unlocks on destruction. - * - * There are no checks performed, and this class follows the RAII - * principle. - */ - class _Auto_Lock - { - _Mutex* _M_pmt; - // Prevent Copying and assignment. - _Auto_Lock(_Auto_Lock const&); - _Auto_Lock& operator=(_Auto_Lock const&); - - void - _M_lock() - { - if (__threads_enabled) - __gthread_mutex_lock(_M_pmt->_M_get()); - } - - void - _M_unlock() - { - if (__threads_enabled) - __gthread_mutex_unlock(_M_pmt->_M_get()); - } - - public: - _Auto_Lock(_Mutex* __mptr) : _M_pmt(__mptr) - { this->_M_lock(); } - - ~_Auto_Lock() { this->_M_unlock(); } - }; -#endif - - namespace balloc - { - /** @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 - 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 std::size_t size_type; - typedef std::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(::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) - { } - -#if 0 - ~__mini_vector() - { - if (this->_M_start) - { - this->deallocate(this->_M_start, this->_M_end_of_storage - - this->_M_start); - } - } -#endif - - 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 - 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 - void __mini_vector<_Tp>:: - erase(iterator __pos) throw() - { - while (__pos + 1 != this->end()) - { - *__pos = __pos[1]; - ++__pos; - } - --this->_M_finish; - } - - - template - struct __mv_iter_traits - { - typedef typename _Tp::value_type value_type; - typedef typename _Tp::difference_type difference_type; - }; - - template - struct __mv_iter_traits<_Tp*> - { - typedef _Tp value_type; - typedef std::ptrdiff_t difference_type; - }; - - enum - { - bits_per_byte = 8, - bits_per_block = sizeof(size_t) * size_t(bits_per_byte) - }; - - template - _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; - } - - template - inline _InputIterator - __find_if(_InputIterator __first, _InputIterator __last, _Predicate __p) - { - while (__first != __last && !__p(*__first)) - ++__first; - return __first; - } - - /** @brief The number of Blocks pointed to by the address pair - * passed to the function. - */ - template - 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 - inline size_t - __num_bitmaps(_AddrPair __ap) - { return __num_blocks(__ap) / size_t(bits_per_block); } - - // _Tp should be a pointer type. - template - class _Inclusive_between - : public std::unary_function, 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()(_M_ptr_value, __bp.second) - && std::greater_equal()(_M_ptr_value, __bp.first)) - return true; - else - return false; - } - }; - - // Used to pass a Functor to functions by reference. - template - class _Functor_Ref - : public std::unary_function - { - _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 - class _Ffit_finder - : public std::unary_function, bool> - { - typedef typename std::pair<_Tp, _Tp> _Block_pair; - typedef typename balloc::__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 bimaps, - // 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 = - __gnu_cxx::balloc::__num_bitmaps(__bp); - - if (*(reinterpret_cast - (__bp.first) - (__diff + 1)) - == __gnu_cxx::balloc::__num_blocks(__bp)) - return false; - - size_t* __rover = reinterpret_cast(__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 - class _Bitmap_counter - { - typedef typename balloc::__mini_vector > - _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 - (_M_vbp[_M_curr_index].first) - 1; - - _BALLOC_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(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; - } - } // namespace balloc - - /** @brief Generic Version of the bsf instruction. - */ - inline size_t - _Bit_scan_forward(size_t __num) - { return static_cast(__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 - { - typedef size_t* value_type; - typedef balloc::__mini_vector vector_type; - typedef vector_type::iterator iterator; - - struct _LT_pointer_compare - { - bool - operator()(const size_t* __pui, - const size_t __cui) const throw() - { return *__pui < __cui; } - }; - -#if defined __GTHREADS - _Mutex* - _M_get_mutex() - { - static _Mutex _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(__addr)); - return; - } - else - { - // Deallocate the last block in the list of free lists, - // and insert the new one in it's correct position. - ::operator delete(static_cast(__free_list.back())); - __free_list.pop_back(); - } - } - - // Just add the block to the list of free lists unconditionally. - iterator __temp = __gnu_cxx::balloc::__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 - _Auto_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(__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 - class bitmap_allocator; - - // Specialize for void: - template<> - class bitmap_allocator - { - public: - typedef void* pointer; - typedef const void* const_pointer; - - // Reference-to-void members are impossible. - typedef void value_type; - template - struct rebind - { - typedef bitmap_allocator<_Tp1> other; - }; - }; - - template - class bitmap_allocator : private free_list - { - public: - typedef std::size_t size_type; - typedef std::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 - struct rebind - { - typedef bitmap_allocator<_Tp1> other; - }; - - private: - template - struct aligned_size - { - enum - { - modulus = _BSize % _AlignSize, - value = _BSize + (modulus ? _AlignSize - (modulus) : 0) - }; - }; - - struct _Alloc_block - { - char __M_unused[aligned_size::value]; - }; - - - typedef typename std::pair<_Alloc_block*, _Alloc_block*> _Block_pair; - - typedef typename - balloc::__mini_vector<_Block_pair> _BPVector; - -#if defined _BALLOC_SANITY_CHECK - // 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 - __gnu_cxx::balloc::_Ffit_finder<_Alloc_block*> _FFF; - _FFF __fff; - typedef typename _BPVector::iterator _BPiter; - _BPiter __bpi = - __gnu_cxx::balloc::__find_if - (_S_mem_blocks.begin(), _S_mem_blocks.end(), - __gnu_cxx::balloc::_Functor_Ref<_FFF>(__fff)); - - _BALLOC_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 _BALLOC_SANITY_CHECK - _S_check_for_free_blocks(); -#endif - - const size_t __num_bitmaps = (_S_block_size - / size_t(balloc::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 - (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); - - size_t __bit_mask = 0; // 0 Indicates all Allocated. - __bit_mask = ~__bit_mask; // 1 Indicates all Free. - - for (size_t __i = 0; __i < __num_bitmaps; ++__i) - __temp[__i] = __bit_mask; - - _S_block_size *= 2; - } - - - static _BPVector _S_mem_blocks; - static size_t _S_block_size; - static __gnu_cxx::balloc:: - _Bitmap_counter<_Alloc_block*> _S_last_request; - static typename _BPVector::size_type _S_last_dealloc_index; -#if defined __GTHREADS - static _Mutex _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 - _Auto_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 - __gnu_cxx::balloc::_Ffit_finder<_Alloc_block*> _FFF; - _FFF __fff; - typedef typename _BPVector::iterator _BPiter; - _BPiter __bpi = - __gnu_cxx::balloc::__find_if - (_S_mem_blocks.begin(), _S_mem_blocks.end(), - __gnu_cxx::balloc::_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()); - balloc::__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 - (__bpi->first + __fff._M_offset() + __nz_bit); - size_t* __puse_count = - reinterpret_cast - (__bpi->first) - - (__gnu_cxx::balloc::__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()); - balloc::__bit_allocate(_S_last_request._M_get(), __nz_bit); - - pointer __ret = reinterpret_cast - (_S_last_request._M_base() + _S_last_request._M_offset() + __nz_bit); - - size_t* __puse_count = reinterpret_cast - (_S_mem_blocks[_S_last_request._M_where()].first) - - (__gnu_cxx::balloc:: - __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 - _Auto_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; - - _BALLOC_ASSERT(_S_last_dealloc_index >= 0); - - - if (__gnu_cxx::balloc::_Inclusive_between<_Alloc_block*> - (__real_p) - (_S_mem_blocks[_S_last_dealloc_index])) - { - _BALLOC_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 = - __gnu_cxx::balloc:: - __find_if(_S_mem_blocks.begin(), - _S_mem_blocks.end(), - __gnu_cxx::balloc:: - _Inclusive_between<_Alloc_block*>(__real_p)); - - _BALLOC_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(balloc::bits_per_block)); - size_t* __bitmapC = - reinterpret_cast - (_S_mem_blocks[__diff].first) - 1; - __bitmapC -= (__displacement / size_t(balloc::bits_per_block)); - - balloc::__bit_free(__bitmapC, __rotate); - size_t* __puse_count = reinterpret_cast - (_S_mem_blocks[__diff].first) - - (__gnu_cxx::balloc::__num_bitmaps(_S_mem_blocks[__diff]) + 1); - - _BALLOC_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); - _BALLOC_ASSERT(_S_last_dealloc_index >= 0); - } - } - } - - public: - bitmap_allocator() throw() - { } - - bitmap_allocator(const bitmap_allocator&) - { } - - template - bitmap_allocator(const bitmap_allocator<_Tp1>&) throw() - { } - - ~bitmap_allocator() throw() - { } - - pointer - allocate(size_type __n) - { - if (__builtin_expect(__n > this->max_size(), false)) - 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(::operator new(__b)); - } - } - - pointer - allocate(size_type __n, typename bitmap_allocator::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 &__r; } - - const_pointer - address(const_reference __r) const - { return &__r; } - - size_type - max_size() const throw() - { return size_type(-1) / sizeof(value_type); } - - void - construct(pointer __p, const_reference __data) - { ::new(__p) value_type(__data); } - - void - destroy(pointer __p) - { __p->~value_type(); } - }; - - template - bool - operator==(const bitmap_allocator<_Tp1>&, - const bitmap_allocator<_Tp2>&) throw() - { return true; } - - template - bool - operator!=(const bitmap_allocator<_Tp1>&, - const bitmap_allocator<_Tp2>&) throw() - { return false; } - - // Static member definitions. - template - typename bitmap_allocator<_Tp>::_BPVector - bitmap_allocator<_Tp>::_S_mem_blocks; - - template - size_t bitmap_allocator<_Tp>::_S_block_size = - 2 * size_t(balloc::bits_per_block); - - template - typename __gnu_cxx::bitmap_allocator<_Tp>::_BPVector::size_type - bitmap_allocator<_Tp>::_S_last_dealloc_index = 0; - - template - __gnu_cxx::balloc::_Bitmap_counter - ::_Alloc_block*> - bitmap_allocator<_Tp>::_S_last_request(_S_mem_blocks); - -#if defined __GTHREADS - template - __gnu_cxx::_Mutex - bitmap_allocator<_Tp>::_S_mut; -#endif - - -} - -#endif - -// LocalWords: namespace GTHREADS bool const gthread endif Mutex mutex diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/codecvt_specializations.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/codecvt_specializations.h deleted file mode 100644 index 82a5a7b08..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/codecvt_specializations.h +++ /dev/null @@ -1,505 +0,0 @@ -// Locale support (codecvt) -*- C++ -*- - -// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 -// Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -// -// ISO C++ 14882: 22.2.1.5 Template class codecvt -// - -// Written by Benjamin Kosnik - -/** @file bits/codecvt_specializations.h - * This file is a GNU extension to the Standard C++ Library. - */ - - // XXX - // Define this here so codecvt.cc can have _S_max_size definition. -#define _GLIBCXX_USE_ENCODING_STATE 1 - -namespace __gnu_cxx -{ - /// @brief Extension to use icov 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 preseve 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 = reinterpret_cast(-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 = reinterpret_cast(-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 = reinterpret_cast(-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; - } - } - }; - - /// @brief encoding_char_traits. - // Custom traits type with encoding_state for the state type, and the - // associated fpos for the position type, all other - // bits equivalent to the required char_traits instantiations. - template - struct encoding_char_traits : public std::char_traits<_CharT> - { - typedef encoding_state state_type; - typedef typename std::fpos pos_type; - }; -} // namespace __gnu_cxx - -namespace std -{ - using __gnu_cxx::encoding_state; - - /// @brief codecvt specialization. - // This partial specialization takes advantage of iconv to provide - // code conversions between a large number of character encodings. - template - 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(__refs) - { } - - explicit - codecvt(state_type& __enc, size_t __refs = 0) - : __codecvt_abstract_base(__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 - 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 - inline size_t - __iconv_adaptor(size_t(*__func)(iconv_t, _T, size_t*, char**, size_t*), - iconv_t __cd, char** __inbuf, size_t* __inbytes, - char** __outbuf, size_t* __outbytes) - { return __func(__cd, (_T)__inbuf, __inbytes, __outbuf, __outbytes); } - - template - 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(__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 - (__builtin_alloca(sizeof(intern_type) * (__size + 1))); - __cfixed[0] = static_cast(__int_bom); - char_traits::copy(__cfixed + 1, __from, __size); - __cfrom = reinterpret_cast(__cfixed); - __conv = __iconv_adaptor(iconv, __desc, &__cfrom, - &__fbytes, &__cto, &__tbytes); - } - else - { - intern_type* __cfixed = const_cast(__from); - __cfrom = reinterpret_cast(__cfixed); - __conv = __iconv_adaptor(iconv, __desc, &__cfrom, &__fbytes, - &__cto, &__tbytes); - } - - if (__conv != size_t(-1)) - { - __from_next = reinterpret_cast(__cfrom); - __to_next = reinterpret_cast(__cto); - __ret = codecvt_base::ok; - } - else - { - if (__fbytes < __fmultiple * (__from_end - __from)) - { - __from_next = reinterpret_cast(__cfrom); - __to_next = reinterpret_cast(__cto); - __ret = codecvt_base::partial; - } - else - __ret = codecvt_base::error; - } - } - return __ret; - } - - template - 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(__to); - size_t __conv = __iconv_adaptor(iconv,__desc, NULL, NULL, - &__cto, &__tlen); - - if (__conv != size_t(-1)) - { - __to_next = reinterpret_cast(__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 - 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(__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 - (__builtin_alloca(sizeof(extern_type) * (__size + 1))); - __cfixed[0] = static_cast(__ext_bom); - char_traits::copy(__cfixed + 1, __from, __size); - __cfrom = reinterpret_cast(__cfixed); - __conv = __iconv_adaptor(iconv, __desc, &__cfrom, - &__flen, &__cto, &__tlen); - } - else - { - extern_type* __cfixed = const_cast(__from); - __cfrom = reinterpret_cast(__cfixed); - __conv = __iconv_adaptor(iconv, __desc, &__cfrom, - &__flen, &__cto, &__tlen); - } - - - if (__conv != size_t(-1)) - { - __from_next = reinterpret_cast(__cfrom); - __to_next = reinterpret_cast(__cto); - __ret = codecvt_base::ok; - } - else - { - if (__flen < static_cast(__from_end - __from)) - { - __from_next = reinterpret_cast(__cfrom); - __to_next = reinterpret_cast(__cto); - __ret = codecvt_base::partial; - } - else - __ret = codecvt_base::error; - } - } - return __ret; - } - - template - 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 - bool - codecvt<_InternT, _ExternT, encoding_state>:: - do_always_noconv() const throw() - { return false; } - - template - 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(__end - __from)); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 74. Garbled text for codecvt::do_max_length - template - int - codecvt<_InternT, _ExternT, encoding_state>:: - do_max_length() const throw() - { return 1; } -} // namespace std - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/debug_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/debug_allocator.h deleted file mode 100644 index a0187a003..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/debug_allocator.h +++ /dev/null @@ -1,125 +0,0 @@ -// Allocators -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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. - * You should only include this header if you are using GCC 3 or later. - */ - -#ifndef _DEBUG_ALLOCATOR_H -#define _DEBUG_ALLOCATOR_H 1 - -#include - -namespace __gnu_cxx -{ - /** - * @brief A meta-allocator with debugging bits, as per [20.4]. - * - * This is precisely the allocator defined in the C++ Standard. - * - all allocation calls operator new - * - all deallocation calls operator delete - */ - template - 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(__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(__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(__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"); - } - }; -} // namespace __gnu_cxx - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/functional b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/functional deleted file mode 100644 index 18132c371..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/functional +++ /dev/null @@ -1,425 +0,0 @@ -// Functional extensions -*- C++ -*- - -// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 - -namespace __gnu_cxx -{ - 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 - inline _Tp - identity_element(std::plus<_Tp>) - { return _Tp(0); } - - /// An \link SGIextensions SGI extension \endlink. - template - 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 unary_compose - : public unary_function - { - 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 - 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 binary_compose - : public unary_function - { - 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 - 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 - 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 "strip" data from a sequence before - * performing the remainder of an algorithm. - * - * @addtogroup SGIextensions - * @{ - */ - /// An \link SGIextensions SGI extension \endlink. - template - struct select1st : public std::_Select1st<_Pair> {}; - - /// An \link SGIextensions SGI extension \endlink. - template - struct select2nd : public std::_Select2nd<_Pair> {}; - /** @} */ - - // extension documented next - template - struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> - { - _Arg1 - operator()(const _Arg1& __x, const _Arg2&) const - { return __x; } - }; - - template - 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 - struct project1st : public _Project1st<_Arg1, _Arg2> {}; - - /// An \link SGIextensions SGI extension \endlink. - template - struct project2nd : public _Project2nd<_Arg1, _Arg2> {}; - /** @} */ - - // extension documented next - template - 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 - 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 - 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 "result" argument and construct variables of - * the appropriate functor type. - * - * @addtogroup SGIextensions - * @{ - */ - /// An \link SGIextensions SGI extension \endlink. - template - 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 - 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 - 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 - inline constant_void_fun<_Result> - constant0(const _Result& __val) - { return constant_void_fun<_Result>(__val); } - - /// An \link SGIextensions SGI extension \endlink. - template - inline constant_unary_fun<_Result, _Result> - constant1(const _Result& __val) - { return constant_unary_fun<_Result, _Result>(__val); } - - /// An \link SGIextensions SGI extension \endlink. - template - 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 - * SGI's site. - * Note that this code assumes that @c int is 32 bits. - * - * @ingroup SGIextensions - */ - class subtractive_rng - : public unary_function - { - 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 - inline mem_fun1_t<_Ret, _Tp, _Arg> - mem_fun1(_Ret (_Tp::*__f)(_Arg)) - { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } - - template - 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 - 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 - 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); } -} // namespace __gnu_cxx -#endif - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_fun.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_fun.h deleted file mode 100644 index 6933fea64..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_fun.h +++ /dev/null @@ -1,171 +0,0 @@ -// 'struct hash' from SGI -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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 ext/hash_fun.h - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _HASH_FUN_H -#define _HASH_FUN_H 1 - -#include - -namespace __gnu_cxx -{ - using std::size_t; - - template - 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 - { - size_t - operator()(const char* __s) const - { return __stl_hash_string(__s); } - }; - - template<> - struct hash - { - size_t - operator()(const char* __s) const - { return __stl_hash_string(__s); } - }; - - template<> - struct hash - { - size_t - operator()(char __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(unsigned char __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(unsigned char __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(short __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(unsigned short __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(int __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(unsigned int __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(long __x) const - { return __x; } - }; - - template<> - struct hash - { - size_t - operator()(unsigned long __x) const - { return __x; } - }; -} // namespace __gnu_cxx - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_map b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_map deleted file mode 100644 index 3340cc36a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_map +++ /dev/null @@ -1,625 +0,0 @@ -// Hashing map implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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 ext/hash_map - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _HASH_MAP -#define _HASH_MAP 1 - -#include -#include - -namespace __gnu_cxx -{ - using std::equal_to; - using std::allocator; - using std::pair; - using std::_Select1st; - - // Forward declaration of equality operator; needed for friend - // declaration. - template, - class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > - class hash_map; - - template - inline bool - operator==(const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&, - const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&); - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - class hash_map - { - private: - typedef hashtable,_Key, _HashFcn, - _Select1st >, - _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(); } - - public: - 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 - hash_map(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - 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 - 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); } - - public: - 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 - 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(); } - - public: - pair - insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_unique(__f, __l); } - - pair - 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 - equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - - pair - 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 - inline bool - operator==(const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1, - const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2) - { return __hm1._M_ht == __hm2._M_ht; } - - template - inline bool - operator!=(const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1, - const hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2) - { return !(__hm1 == __hm2); } - - template - inline void - swap(hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1, - hash_map<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2) - { __hm1.swap(__hm2); } - - // Forward declaration of equality operator; needed for friend declaration. - - template , - class _EqualKey = equal_to<_Key>, - class _Alloc = allocator<_Tp> > - class hash_multimap; - - template - inline bool - operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, - const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2); - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - class hash_multimap - { - // concept requirements - __glibcxx_class_requires(_Key, _SGIAssignableConcept) - __glibcxx_class_requires(_Tp, _SGIAssignableConcept) - __glibcxx_class_requires3(_HashFcn, size_t, _Key, _UnaryFunctionConcept) - __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept) - - private: - typedef hashtable, _Key, _HashFcn, - _Select1st >, _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(); } - - public: - 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 - hash_multimap(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - 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 - 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); } - - public: - 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 - 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(); } - -public: - iterator - insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - - template - 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 - equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - - pair - 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(); } - - public: - 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 - 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 - 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 - inline void - swap(hash_multimap<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm1, - hash_multimap<_Key, _Tp, _HashFcn, _EqlKey, _Alloc>& __hm2) - { __hm1.swap(__hm2); } - -} // namespace __gnu_cxx - -namespace std -{ -// Specialization of insert_iterator so that it will work for hash_map -// and hash_multimap. - - template - 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 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; } - }; -} // namespace std - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_set b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_set deleted file mode 100644 index 1179e885a..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hash_set +++ /dev/null @@ -1,591 +0,0 @@ -// Hashing set implementation -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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 ext/hash_set - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _HASH_SET -#define _HASH_SET 1 - -#include -#include - -namespace __gnu_cxx -{ - using std::equal_to; - using std::allocator; - using std::pair; - using std::_Identity; - - // Forward declaration of equality operator; needed for friend - // declaration. - template , - class _EqualKey = equal_to<_Value>, - class _Alloc = allocator<_Value> > - class hash_set; - - template - inline bool - operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2); - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - 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(); } - - public: - 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 - hash_set(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - 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 - 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); } - - public: - 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 - 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(); } - - public: - pair - insert(const value_type& __obj) - { - pair __p = _M_ht.insert_unique(__obj); - return pair(__p.first, __p.second); - } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_unique(__f, __l); } - - pair - insert_noresize(const value_type& __obj) - { - pair __p - = _M_ht.insert_unique_noresize(__obj); - return pair(__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 - 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(); } - -public: - 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 - 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 - inline bool - operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return !(__hs1 == __hs2); } - - template - inline void - swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { __hs1.swap(__hs2); } - - template , - class _EqualKey = equal_to<_Value>, - class _Alloc = allocator<_Value> > - class hash_multiset; - - template - inline bool - operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2); - - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - 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(); } - - public: - 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 - hash_multiset(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - 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 - 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); } - - public: - 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 - 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(); } - -public: - iterator - insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - - template - 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 - 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(); } - - public: - 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 - 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 - inline bool - operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return !(__hs1 == __hs2); } - - template - inline void - swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { __hs1.swap(__hs2); } - -} // namespace __gnu_cxx - -namespace std -{ - // Specialization of insert_iterator so that it will work for hash_set - // and hash_multiset. - - template - 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 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; } - }; -} // namespace std - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hashtable.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hashtable.h deleted file mode 100644 index f6e3fd66c..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/hashtable.h +++ /dev/null @@ -1,1130 +0,0 @@ -// Hashtable implementation used by containers -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * 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 ext/hashtable.h - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _HASHTABLE_H -#define _HASHTABLE_H 1 - -// Hashtable class, used to implement the hashed associative containers -// hash_set, hash_map, hash_multiset, and hash_multimap. - -#include -#include -#include -#include -#include - -namespace __gnu_cxx -{ - 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 - struct _Hashtable_node - { - _Hashtable_node* _M_next; - _Val _M_val; - }; - - template > - class hashtable; - - template - struct _Hashtable_iterator; - - template - struct _Hashtable_const_iterator; - - template - 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 - 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 = 28 }; - - static const unsigned long __stl_prime_list[_S_num_primes] = - { - 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 hashtable; - - template - 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 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::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 - 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* __cur = _M_buckets[__bucket]; __cur; __cur = __cur->_M_next) - __result += 1; - return __result; - } - - pair - 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 - insert_unique_noresize(const value_type& __obj); - - iterator - insert_equal_noresize(const value_type& __obj); - - template - void - insert_unique(_InputIterator __f, _InputIterator __l) - { insert_unique(__f, __l, __iterator_category(__f)); } - - template - void - insert_equal(_InputIterator __f, _InputIterator __l) - { insert_equal(__f, __l, __iterator_category(__f)); } - - template - void - insert_unique(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_unique(*__f); - } - - template - void - insert_equal(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_equal(*__f); - } - - template - 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 - 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 - equal_range(const key_type& __key); - - pair - 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 - _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 - 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 - _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 - 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 - 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 (_Node* __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 - 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 - inline void - swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1, - hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) - { __ht1.swap(__ht2); } - - template - pair::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(__cur, this), false); - - _Node* __tmp = _M_new_node(__obj); - __tmp->_M_next = __first; - _M_buckets[__n] = __tmp; - ++_M_num_elements; - return pair(iterator(__tmp, this), true); - } - - template - 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 - 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 - pair::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 _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 - pair::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 _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 - 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]; - 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)) - { - __cur->_M_next = __next->_M_next; - _M_delete_node(__next); - __next = __cur->_M_next; - ++__erased; - --_M_num_elements; - } - 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; - } - } - return __erased; - } - - template - 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 - 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 - 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(__first._M_ht)), - iterator(const_cast<_Node*>(__last._M_cur), - const_cast(__last._M_ht))); - } - - template - inline void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - erase(const const_iterator& __it) - { erase(iterator(const_cast<_Node*>(__it._M_cur), - const_cast(__it._M_ht))); } - - template - 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 - 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 - 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 - void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - clear() - { - 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 - 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; - } - } -} // namespace __gnu_cxx - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/iterator b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/iterator deleted file mode 100644 index e6334ad0f..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/iterator +++ /dev/null @@ -1,117 +0,0 @@ -// HP/SGI iterator extensions -*- C++ -*- - -// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 -#include - -namespace __gnu_cxx -{ - // 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 - 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 - 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 - inline void - distance(_InputIterator __first, _InputIterator __last, - _Distance& __n) - { - // concept requirements -- taken care of in __distance - __distance(__first, __last, __n, std::__iterator_category(__first)); - } -} // namespace __gnu_cxx - -#endif - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/malloc_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/malloc_allocator.h deleted file mode 100644 index 6d66c26d8..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/malloc_allocator.h +++ /dev/null @@ -1,125 +0,0 @@ -// Allocator that wraps "C" malloc -*- C++ -*- - -// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 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 -#include -#include - -namespace __gnu_cxx -{ - /** - * @brief An allocator that uses malloc. - * - * This is precisely the allocator defined in the C++ Standard. - * - all allocation calls malloc - * - all deallocation calls free - */ - template - 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 - struct rebind - { typedef malloc_allocator<_Tp1> other; }; - - malloc_allocator() throw() { } - - malloc_allocator(const malloc_allocator&) throw() { } - - template - malloc_allocator(const malloc_allocator<_Tp1>&) throw() { } - - ~malloc_allocator() throw() { } - - pointer - address(reference __x) const { return &__x; } - - const_pointer - address(const_reference __x) const { return &__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 (__builtin_expect(__n > this->max_size(), false)) - std::__throw_bad_alloc(); - - pointer __ret = static_cast<_Tp*>(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) - { free(static_cast(__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(__p) value_type(__val); } - - void - destroy(pointer __p) { __p->~_Tp(); } - }; - - template - inline bool - operator==(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&) - { return true; } - - template - inline bool - operator!=(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&) - { return false; } -} // namespace __gnu_cxx - -#endif diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/memory b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/memory deleted file mode 100644 index b6770dba5..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/memory +++ /dev/null @@ -1,199 +0,0 @@ -// Memory extensions -*- C++ -*- - -// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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. - -/* - * - * 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 -#include -#include - -namespace __gnu_cxx -{ - using std::ptrdiff_t; - using std::pair; - using std::__iterator_category; - using std::_Temporary_buffer; - - template - 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 - 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 - inline pair<_InputIter, _ForwardIter> - __uninitialized_copy_n(_InputIter __first, _Size __count, - _ForwardIter __result) - { return __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 - inline pair<_InputIter, _ForwardIter> - uninitialized_copy_n(_InputIter __first, _Size __count, - _ForwardIter __result) - { return __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 - 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 - inline pair<_InputIter, _ForwardIter> - __uninitialized_copy_n_a(_InputIter __first, _Size __count, - _ForwardIter __result, - std::allocator<_Tp>) - { - return 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 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 ::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() { } - }; -} // namespace __gnu_cxx - -#endif - diff --git a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/mt_allocator.h b/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/mt_allocator.h deleted file mode 100644 index cdfbb1774..000000000 --- a/l4/pkg/libstdc++-v3/contrib/libstdc++-v3-4.1.0/include/ext/mt_allocator.h +++ /dev/null @@ -1,734 +0,0 @@ -// MT-optimized allocator -*- C++ -*- - -// Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can 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 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 -#include -#include -#include -#include - -namespace __gnu_cxx -{ - typedef void (*__destroy_handler)(void*); - - /// @brief Base class for pool object. - struct __pool_base - { - // Using short int as type for the binmap implies we are never - // caching blocks larger than 65535 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. - size_t _M_max_bytes; - - // Size in bytes of the smallest bin. - // NB: Must be a power of 2 and >= _M_align. - 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 choosen the value below. - // See http://gcc.gnu.org/ml/libstdc++/2001-07/msg00077.html - 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(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]; } - - const size_t - _M_get_align() - { return _M_options._M_align; } - - explicit - __pool_base() - : _M_options(_Tune()), _M_binmap(NULL), _M_init(false) { } - - explicit - __pool_base(const _Tune& __options) - : _M_options(__options), _M_binmap(NULL), _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 - class __pool; - - /// Specialization for single thread. - template<> - class __pool : public __pool_base - { - public: - union _Block_record - { - // Points to the block_record of the next free block. - _Block_record* volatile _M_next; - }; - - struct _Bin_record - { - // An "array" of pointers to the first free block. - _Block_record** volatile _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); - - 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(NULL), _M_bin_size(1) { } - - explicit __pool(const __pool_base::_Tune& __tune) - : __pool_base(__tune), _M_bin(NULL), _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* volatile _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 : 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* volatile _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* volatile _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** volatile _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. - // Memory to these "arrays" is allocated in _S_initialize() for - // _S_max_threads + global pool 0. - size_t* volatile _M_free; - size_t* volatile _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); - - 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 - void - _M_destroy_thread_key(void*); - - size_t - _M_get_thread_id(); - - explicit __pool() - : _M_bin(NULL), _M_bin_size(1), _M_thread_freelist(NULL) - { } - - explicit __pool(const __pool_base::_Tune& __tune) - : __pool_base(__tune), _M_bin(NULL), _M_bin_size(1), - _M_thread_freelist(NULL) - { } - - 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* volatile _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
      -
    1. -ds_trait.hpp - - -
    2. - -
    -No problem is insoluble in all conceivable circumstances.
    --- The Cosmic AC, -
    The -Last Question, by Isaac Asimov -