GAS LISTING /tmp/ccrG9BDx.s 			page 1


   1              		.file	"rethrow.cpp"
   2              		.text
   3              	.Ltext0:
   4              		.align 2
   5              		.globl	_ZNK12MyExceptionB4whatEv
   7              	_ZNK12MyExceptionB4whatEv:
   8              	.LFB1250:
   9              		.file 1 "rethrow.cpp"
   1:rethrow.cpp   **** #include <exception>
   2:rethrow.cpp   **** #include <string>
   3:rethrow.cpp   **** #include <iostream>
   4:rethrow.cpp   **** 
   5:rethrow.cpp   **** using namespace std;
   6:rethrow.cpp   **** 
   7:rethrow.cpp   **** class MyExceptionB : public exception {
   8:rethrow.cpp   ****   private:
   9:rethrow.cpp   ****     string _what;
  10:rethrow.cpp   ****   public:
  11:rethrow.cpp   ****     MyExceptionB(string what) throw ();
  12:rethrow.cpp   ****     ~MyExceptionB() throw ();
  13:rethrow.cpp   **** 
  14:rethrow.cpp   ****     virtual const char *what() const throw ();
  15:rethrow.cpp   ****     string as_string() const;
  16:rethrow.cpp   **** };
  17:rethrow.cpp   **** 
  18:rethrow.cpp   **** MyExceptionB::MyExceptionB(string what) throw ():
  19:rethrow.cpp   ****     _what(what)
  20:rethrow.cpp   **** {}
  21:rethrow.cpp   **** 
  22:rethrow.cpp   **** MyExceptionB::~MyExceptionB() throw () {
  23:rethrow.cpp   **** }
  24:rethrow.cpp   **** 
  25:rethrow.cpp   **** const char *MyExceptionB::what() const throw () {
  10              		.loc 1 25 0
  11              		.cfi_startproc
  12              	.LVL0:
  13 0000 4883EC08 		subq	$8, %rsp
  14              		.cfi_def_cfa_offset 16
  26:rethrow.cpp   ****     return _what.c_str();
  15              		.loc 1 26 0
  16 0004 4883C708 		addq	$8, %rdi
  17              	.LVL1:
  18 0008 E8000000 		call	_ZNKSs5c_strEv
  18      00
  19              	.LVL2:
  27:rethrow.cpp   **** }
  20              		.loc 1 27 0
  21 000d 4883C408 		addq	$8, %rsp
  22              		.cfi_def_cfa_offset 8
  23 0011 C3       		ret
  24              		.cfi_endproc
  25              	.LFE1250:
  27              		.align 2
  28              		.globl	_ZN12MyExceptionBD2Ev
  30              	_ZN12MyExceptionBD2Ev:
  31              	.LFB1247:
  22:rethrow.cpp   **** }
GAS LISTING /tmp/ccrG9BDx.s 			page 2


  32              		.loc 1 22 0
  33              		.cfi_startproc
  34              	.LVL3:
  35 0012 53       		pushq	%rbx
  36              		.cfi_def_cfa_offset 16
  37              		.cfi_offset 3, -16
  38 0013 4889FB   		movq	%rdi, %rbx
  39              	.LBB2:
  22:rethrow.cpp   **** }
  40              		.loc 1 22 0
  41 0016 48C70700 		movq	$_ZTV12MyExceptionB+16, (%rdi)
  41      000000
  42 001d 488D7F08 		leaq	8(%rdi), %rdi
  43              	.LVL4:
  44 0021 E8000000 		call	_ZNSsD1Ev
  44      00
  45              	.LVL5:
  46 0026 4889DF   		movq	%rbx, %rdi
  47 0029 E8000000 		call	_ZNSt9exceptionD2Ev
  47      00
  48              	.LVL6:
  49              	.LBE2:
  23:rethrow.cpp   **** 
  50              		.loc 1 23 0
  51 002e 5B       		popq	%rbx
  52              		.cfi_def_cfa_offset 8
  53              	.LVL7:
  54 002f C3       		ret
  55              		.cfi_endproc
  56              	.LFE1247:
  58              		.globl	_ZN12MyExceptionBD1Ev
  59              		.set	_ZN12MyExceptionBD1Ev,_ZN12MyExceptionBD2Ev
  60              		.align 2
  61              		.globl	_ZN12MyExceptionBD0Ev
  63              	_ZN12MyExceptionBD0Ev:
  64              	.LFB1249:
  22:rethrow.cpp   **** }
  65              		.loc 1 22 0
  66              		.cfi_startproc
  67              	.LVL8:
  68 0030 53       		pushq	%rbx
  69              		.cfi_def_cfa_offset 16
  70              		.cfi_offset 3, -16
  71 0031 4889FB   		movq	%rdi, %rbx
  23:rethrow.cpp   **** 
  72              		.loc 1 23 0
  73 0034 E8000000 		call	_ZN12MyExceptionBD1Ev
  73      00
  74              	.LVL9:
  75 0039 4889DF   		movq	%rbx, %rdi
  76 003c E8000000 		call	_ZdlPv
  76      00
  77              	.LVL10:
  78 0041 5B       		popq	%rbx
  79              		.cfi_def_cfa_offset 8
  80              	.LVL11:
  81 0042 C3       		ret
GAS LISTING /tmp/ccrG9BDx.s 			page 3


  82              		.cfi_endproc
  83              	.LFE1249:
  86              	_Z41__static_initialization_and_destruction_0ii:
  87              	.LFB1426:
  28:rethrow.cpp   **** 
  29:rethrow.cpp   **** string MyExceptionB::as_string() const {
  30:rethrow.cpp   ****     return "MyExceptionB(" + _what + ")";
  31:rethrow.cpp   **** }
  32:rethrow.cpp   **** 
  33:rethrow.cpp   **** 
  34:rethrow.cpp   **** void throw_MyExceptionB(string message) throw (MyExceptionB) {
  35:rethrow.cpp   ****     throw MyExceptionB(message);
  36:rethrow.cpp   **** }
  37:rethrow.cpp   **** 
  38:rethrow.cpp   **** void catch_and_rethrow() throw (MyExceptionB) {
  39:rethrow.cpp   ****     try {
  40:rethrow.cpp   ****         throw_MyExceptionB("Foo");
  41:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  42:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " rethrowing..." << endl;
  43:rethrow.cpp   ****         throw;
  44:rethrow.cpp   ****     }
  45:rethrow.cpp   **** }
  46:rethrow.cpp   **** 
  47:rethrow.cpp   **** void catch_and_throw_another() throw (MyExceptionB) {
  48:rethrow.cpp   ****     try {
  49:rethrow.cpp   ****         throw_MyExceptionB("Baz");
  50:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  51:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " throwing another..." << endl;
  52:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
  53:rethrow.cpp   ****     }
  54:rethrow.cpp   **** }
  55:rethrow.cpp   **** 
  56:rethrow.cpp   **** void doesnt_throw() throw () {
  57:rethrow.cpp   ****     throw_MyExceptionB("Bar");
  58:rethrow.cpp   **** }
  59:rethrow.cpp   **** 
  60:rethrow.cpp   **** void doRethrow() {
  61:rethrow.cpp   ****     try {
  62:rethrow.cpp   ****         catch_and_rethrow();
  63:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  64:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
  65:rethrow.cpp   ****     }
  66:rethrow.cpp   **** 
  67:rethrow.cpp   ****     try {
  68:rethrow.cpp   ****         catch_and_throw_another();
  69:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  70:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
  71:rethrow.cpp   ****     }
  72:rethrow.cpp   **** 
  73:rethrow.cpp   ****     try {
  74:rethrow.cpp   ****         doesnt_throw();
  75:rethrow.cpp   ****     } catch (MyExceptionB &e) {
  76:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
  77:rethrow.cpp   ****     }
  78:rethrow.cpp   **** }
  88              		.loc 1 78 0
  89              		.cfi_startproc
GAS LISTING /tmp/ccrG9BDx.s 			page 4


  90              	.LVL12:
  91 0043 83FF01   		cmpl	$1, %edi
  92 0046 752E     		jne	.L11
  93              		.loc 1 78 0 discriminator 1
  94 0048 81FEFFFF 		cmpl	$65535, %esi
  94      0000
  95 004e 7526     		jne	.L11
  96              		.loc 1 78 0 is_stmt 0
  97 0050 4883EC08 		subq	$8, %rsp
  98              		.cfi_def_cfa_offset 16
  99              		.file 2 "/usr/include/c++/4.8/iostream"
   1:/usr/include/c++/4.8/iostream **** // Standard iostream objects -*- C++ -*-
   2:/usr/include/c++/4.8/iostream **** 
   3:/usr/include/c++/4.8/iostream **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/iostream **** //
   5:/usr/include/c++/4.8/iostream **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/iostream **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/iostream **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/iostream **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/iostream **** // any later version.
  10:/usr/include/c++/4.8/iostream **** 
  11:/usr/include/c++/4.8/iostream **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/iostream **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/iostream **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/iostream **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/iostream **** 
  16:/usr/include/c++/4.8/iostream **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/iostream **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/iostream **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/iostream **** 
  20:/usr/include/c++/4.8/iostream **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/iostream **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/iostream **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/iostream **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/iostream **** 
  25:/usr/include/c++/4.8/iostream **** /** @file include/iostream
  26:/usr/include/c++/4.8/iostream ****  *  This is a Standard C++ Library header.
  27:/usr/include/c++/4.8/iostream ****  */
  28:/usr/include/c++/4.8/iostream **** 
  29:/usr/include/c++/4.8/iostream **** //
  30:/usr/include/c++/4.8/iostream **** // ISO C++ 14882: 27.3  Standard iostream objects
  31:/usr/include/c++/4.8/iostream **** //
  32:/usr/include/c++/4.8/iostream **** 
  33:/usr/include/c++/4.8/iostream **** #ifndef _GLIBCXX_IOSTREAM
  34:/usr/include/c++/4.8/iostream **** #define _GLIBCXX_IOSTREAM 1
  35:/usr/include/c++/4.8/iostream **** 
  36:/usr/include/c++/4.8/iostream **** #pragma GCC system_header
  37:/usr/include/c++/4.8/iostream **** 
  38:/usr/include/c++/4.8/iostream **** #include <bits/c++config.h>
  39:/usr/include/c++/4.8/iostream **** #include <ostream>
  40:/usr/include/c++/4.8/iostream **** #include <istream>
  41:/usr/include/c++/4.8/iostream **** 
  42:/usr/include/c++/4.8/iostream **** namespace std _GLIBCXX_VISIBILITY(default)
  43:/usr/include/c++/4.8/iostream **** {
  44:/usr/include/c++/4.8/iostream **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  45:/usr/include/c++/4.8/iostream **** 
  46:/usr/include/c++/4.8/iostream ****   /**
GAS LISTING /tmp/ccrG9BDx.s 			page 5


  47:/usr/include/c++/4.8/iostream ****    *  @name Standard Stream Objects
  48:/usr/include/c++/4.8/iostream ****    *
  49:/usr/include/c++/4.8/iostream ****    *  The &lt;iostream&gt; header declares the eight <em>standard stream
  50:/usr/include/c++/4.8/iostream ****    *  objects</em>.  For other declarations, see
  51:/usr/include/c++/4.8/iostream ****    *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html
  52:/usr/include/c++/4.8/iostream ****    *  and the @link iosfwd I/O forward declarations @endlink
  53:/usr/include/c++/4.8/iostream ****    *
  54:/usr/include/c++/4.8/iostream ****    *  They are required by default to cooperate with the global C
  55:/usr/include/c++/4.8/iostream ****    *  library's @c FILE streams, and to be available during program
  56:/usr/include/c++/4.8/iostream ****    *  startup and termination. For more information, see the HOWTO
  57:/usr/include/c++/4.8/iostream ****    *  linked to above.
  58:/usr/include/c++/4.8/iostream ****   */
  59:/usr/include/c++/4.8/iostream ****   //@{
  60:/usr/include/c++/4.8/iostream ****   extern istream cin;		/// Linked to standard input
  61:/usr/include/c++/4.8/iostream ****   extern ostream cout;		/// Linked to standard output
  62:/usr/include/c++/4.8/iostream ****   extern ostream cerr;		/// Linked to standard error (unbuffered)
  63:/usr/include/c++/4.8/iostream ****   extern ostream clog;		/// Linked to standard error (buffered)
  64:/usr/include/c++/4.8/iostream **** 
  65:/usr/include/c++/4.8/iostream **** #ifdef _GLIBCXX_USE_WCHAR_T
  66:/usr/include/c++/4.8/iostream ****   extern wistream wcin;		/// Linked to standard input
  67:/usr/include/c++/4.8/iostream ****   extern wostream wcout;	/// Linked to standard output
  68:/usr/include/c++/4.8/iostream ****   extern wostream wcerr;	/// Linked to standard error (unbuffered)
  69:/usr/include/c++/4.8/iostream ****   extern wostream wclog;	/// Linked to standard error (buffered)
  70:/usr/include/c++/4.8/iostream **** #endif
  71:/usr/include/c++/4.8/iostream ****   //@}
  72:/usr/include/c++/4.8/iostream **** 
  73:/usr/include/c++/4.8/iostream ****   // For construction of filebuffers for cout, cin, cerr, clog et. al.
  74:/usr/include/c++/4.8/iostream ****   static ios_base::Init __ioinit;
 100              		.loc 2 74 0 is_stmt 1
 101 0054 BF000000 		movl	$_ZStL8__ioinit, %edi
 101      00
 102              	.LVL13:
 103 0059 E8000000 		call	_ZNSt8ios_base4InitC1Ev
 103      00
 104              	.LVL14:
 105 005e BA000000 		movl	$__dso_handle, %edx
 105      00
 106 0063 BE000000 		movl	$_ZStL8__ioinit, %esi
 106      00
 107 0068 BF000000 		movl	$_ZNSt8ios_base4InitD1Ev, %edi
 107      00
 108 006d E8000000 		call	__cxa_atexit
 108      00
 109              	.LVL15:
 110              		.loc 1 78 0
 111 0072 4883C408 		addq	$8, %rsp
 112              		.cfi_def_cfa_offset 8
 113              	.L11:
 114 0076 C3       		ret
 115              		.cfi_endproc
 116              	.LFE1426:
 118              		.section	.text._ZNSt9exceptionC2Ev,"axG",@progbits,_ZNSt9exceptionC5Ev,comdat
 119              		.align 2
 120              		.weak	_ZNSt9exceptionC2Ev
 122              	_ZNSt9exceptionC2Ev:
 123              	.LFB1:
 124              		.file 3 "/usr/include/c++/4.8/exception"
GAS LISTING /tmp/ccrG9BDx.s 			page 6


   1:/usr/include/c++/4.8/exception **** // Exception Handling support header for -*- C++ -*-
   2:/usr/include/c++/4.8/exception **** 
   3:/usr/include/c++/4.8/exception **** // Copyright (C) 1995-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/exception **** //
   5:/usr/include/c++/4.8/exception **** // This file is part of GCC.
   6:/usr/include/c++/4.8/exception **** //
   7:/usr/include/c++/4.8/exception **** // GCC is free software; you can redistribute it and/or modify
   8:/usr/include/c++/4.8/exception **** // it under the terms of the GNU General Public License as published by
   9:/usr/include/c++/4.8/exception **** // the Free Software Foundation; either version 3, or (at your option)
  10:/usr/include/c++/4.8/exception **** // any later version.
  11:/usr/include/c++/4.8/exception **** //
  12:/usr/include/c++/4.8/exception **** // GCC is distributed in the hope that it will be useful,
  13:/usr/include/c++/4.8/exception **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  14:/usr/include/c++/4.8/exception **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15:/usr/include/c++/4.8/exception **** // GNU General Public License for more details.
  16:/usr/include/c++/4.8/exception **** //
  17:/usr/include/c++/4.8/exception **** // Under Section 7 of GPL version 3, you are granted additional
  18:/usr/include/c++/4.8/exception **** // permissions described in the GCC Runtime Library Exception, version
  19:/usr/include/c++/4.8/exception **** // 3.1, as published by the Free Software Foundation.
  20:/usr/include/c++/4.8/exception **** 
  21:/usr/include/c++/4.8/exception **** // You should have received a copy of the GNU General Public License and
  22:/usr/include/c++/4.8/exception **** // a copy of the GCC Runtime Library Exception along with this program;
  23:/usr/include/c++/4.8/exception **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  24:/usr/include/c++/4.8/exception **** // <http://www.gnu.org/licenses/>.
  25:/usr/include/c++/4.8/exception **** 
  26:/usr/include/c++/4.8/exception **** /** @file exception
  27:/usr/include/c++/4.8/exception ****  *  This is a Standard C++ Library header.
  28:/usr/include/c++/4.8/exception ****  */
  29:/usr/include/c++/4.8/exception **** 
  30:/usr/include/c++/4.8/exception **** #ifndef __EXCEPTION__
  31:/usr/include/c++/4.8/exception **** #define __EXCEPTION__
  32:/usr/include/c++/4.8/exception **** 
  33:/usr/include/c++/4.8/exception **** #pragma GCC system_header
  34:/usr/include/c++/4.8/exception **** 
  35:/usr/include/c++/4.8/exception **** #pragma GCC visibility push(default)
  36:/usr/include/c++/4.8/exception **** 
  37:/usr/include/c++/4.8/exception **** #include <bits/c++config.h>
  38:/usr/include/c++/4.8/exception **** #include <bits/atomic_lockfree_defines.h>
  39:/usr/include/c++/4.8/exception **** 
  40:/usr/include/c++/4.8/exception **** extern "C++" {
  41:/usr/include/c++/4.8/exception **** 
  42:/usr/include/c++/4.8/exception **** namespace std
  43:/usr/include/c++/4.8/exception **** {
  44:/usr/include/c++/4.8/exception ****   /**
  45:/usr/include/c++/4.8/exception ****    * @defgroup exceptions Exceptions
  46:/usr/include/c++/4.8/exception ****    * @ingroup diagnostics
  47:/usr/include/c++/4.8/exception ****    *
  48:/usr/include/c++/4.8/exception ****    * Classes and functions for reporting errors via exception classes.
  49:/usr/include/c++/4.8/exception ****    * @{
  50:/usr/include/c++/4.8/exception ****    */
  51:/usr/include/c++/4.8/exception **** 
  52:/usr/include/c++/4.8/exception ****   /**
  53:/usr/include/c++/4.8/exception ****    *  @brief Base class for all library exceptions.
  54:/usr/include/c++/4.8/exception ****    *
  55:/usr/include/c++/4.8/exception ****    *  This is the base class for all exceptions thrown by the standard
  56:/usr/include/c++/4.8/exception ****    *  library, and by certain language expressions.  You are free to derive
  57:/usr/include/c++/4.8/exception ****    *  your own %exception classes, or use a different hierarchy, or to
GAS LISTING /tmp/ccrG9BDx.s 			page 7


  58:/usr/include/c++/4.8/exception ****    *  throw non-class data (e.g., fundamental types).
  59:/usr/include/c++/4.8/exception ****    */
  60:/usr/include/c++/4.8/exception ****   class exception
  61:/usr/include/c++/4.8/exception ****   {
  62:/usr/include/c++/4.8/exception ****   public:
  63:/usr/include/c++/4.8/exception ****     exception() _GLIBCXX_USE_NOEXCEPT { }
 125              		.loc 3 63 0
 126              		.cfi_startproc
 127              	.LVL16:
 128              	.LBB3:
 129              		.loc 3 63 0
 130 0000 48C70700 		movq	$_ZTVSt9exception+16, (%rdi)
 130      000000
 131 0007 C3       		ret
 132              	.LBE3:
 133              		.cfi_endproc
 134              	.LFE1:
 136              		.weak	_ZNSt9exceptionC1Ev
 137              		.set	_ZNSt9exceptionC1Ev,_ZNSt9exceptionC2Ev
 138              		.section	.text._ZNSt11char_traitsIcE6lengthEPKc,"axG",@progbits,_ZNSt11char_traitsIcE6lengthEPKc,c
 139              		.weak	_ZNSt11char_traitsIcE6lengthEPKc
 141              	_ZNSt11char_traitsIcE6lengthEPKc:
 142              	.LFB299:
 143              		.file 4 "/usr/include/c++/4.8/bits/char_traits.h"
   1:/usr/include/c++/4.8/bits/char_traits.h **** // Character Traits for use by standard string and iostream -*- C++ -*-
   2:/usr/include/c++/4.8/bits/char_traits.h **** 
   3:/usr/include/c++/4.8/bits/char_traits.h **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/char_traits.h **** //
   5:/usr/include/c++/4.8/bits/char_traits.h **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/char_traits.h **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/char_traits.h **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/char_traits.h **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/char_traits.h **** // any later version.
  10:/usr/include/c++/4.8/bits/char_traits.h **** 
  11:/usr/include/c++/4.8/bits/char_traits.h **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/char_traits.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/char_traits.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/char_traits.h **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/char_traits.h **** 
  16:/usr/include/c++/4.8/bits/char_traits.h **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/char_traits.h **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/char_traits.h **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/char_traits.h **** 
  20:/usr/include/c++/4.8/bits/char_traits.h **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/char_traits.h **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/char_traits.h **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/bits/char_traits.h **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/bits/char_traits.h **** 
  25:/usr/include/c++/4.8/bits/char_traits.h **** /** @file bits/char_traits.h
  26:/usr/include/c++/4.8/bits/char_traits.h ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/char_traits.h ****  *  Do not attempt to use it directly. @headername{string}
  28:/usr/include/c++/4.8/bits/char_traits.h ****  */
  29:/usr/include/c++/4.8/bits/char_traits.h **** 
  30:/usr/include/c++/4.8/bits/char_traits.h **** //
  31:/usr/include/c++/4.8/bits/char_traits.h **** // ISO C++ 14882: 21  Strings library
  32:/usr/include/c++/4.8/bits/char_traits.h **** //
  33:/usr/include/c++/4.8/bits/char_traits.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 8


  34:/usr/include/c++/4.8/bits/char_traits.h **** #ifndef _CHAR_TRAITS_H
  35:/usr/include/c++/4.8/bits/char_traits.h **** #define _CHAR_TRAITS_H 1
  36:/usr/include/c++/4.8/bits/char_traits.h **** 
  37:/usr/include/c++/4.8/bits/char_traits.h **** #pragma GCC system_header
  38:/usr/include/c++/4.8/bits/char_traits.h **** 
  39:/usr/include/c++/4.8/bits/char_traits.h **** #include <bits/stl_algobase.h>  // std::copy, std::fill_n
  40:/usr/include/c++/4.8/bits/char_traits.h **** #include <bits/postypes.h>      // For streampos
  41:/usr/include/c++/4.8/bits/char_traits.h **** #include <cwchar>               // For WEOF, wmemmove, wmemset, etc.
  42:/usr/include/c++/4.8/bits/char_traits.h **** 
  43:/usr/include/c++/4.8/bits/char_traits.h **** namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
  44:/usr/include/c++/4.8/bits/char_traits.h **** {
  45:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  46:/usr/include/c++/4.8/bits/char_traits.h **** 
  47:/usr/include/c++/4.8/bits/char_traits.h ****   /**
  48:/usr/include/c++/4.8/bits/char_traits.h ****    *  @brief  Mapping from character type to associated types.
  49:/usr/include/c++/4.8/bits/char_traits.h ****    *
  50:/usr/include/c++/4.8/bits/char_traits.h ****    *  @note This is an implementation class for the generic version
  51:/usr/include/c++/4.8/bits/char_traits.h ****    *  of char_traits.  It defines int_type, off_type, pos_type, and
  52:/usr/include/c++/4.8/bits/char_traits.h ****    *  state_type.  By default these are unsigned long, streamoff,
  53:/usr/include/c++/4.8/bits/char_traits.h ****    *  streampos, and mbstate_t.  Users who need a different set of
  54:/usr/include/c++/4.8/bits/char_traits.h ****    *  types, but who don't need to change the definitions of any function
  55:/usr/include/c++/4.8/bits/char_traits.h ****    *  defined in char_traits, can specialize __gnu_cxx::_Char_types
  56:/usr/include/c++/4.8/bits/char_traits.h ****    *  while leaving __gnu_cxx::char_traits alone. */
  57:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
  58:/usr/include/c++/4.8/bits/char_traits.h ****     struct _Char_types
  59:/usr/include/c++/4.8/bits/char_traits.h ****     {
  60:/usr/include/c++/4.8/bits/char_traits.h ****       typedef unsigned long   int_type;
  61:/usr/include/c++/4.8/bits/char_traits.h ****       typedef std::streampos  pos_type;
  62:/usr/include/c++/4.8/bits/char_traits.h ****       typedef std::streamoff  off_type;
  63:/usr/include/c++/4.8/bits/char_traits.h ****       typedef std::mbstate_t  state_type;
  64:/usr/include/c++/4.8/bits/char_traits.h ****     };
  65:/usr/include/c++/4.8/bits/char_traits.h **** 
  66:/usr/include/c++/4.8/bits/char_traits.h **** 
  67:/usr/include/c++/4.8/bits/char_traits.h ****   /**
  68:/usr/include/c++/4.8/bits/char_traits.h ****    *  @brief  Base class used to implement std::char_traits.
  69:/usr/include/c++/4.8/bits/char_traits.h ****    *
  70:/usr/include/c++/4.8/bits/char_traits.h ****    *  @note For any given actual character type, this definition is
  71:/usr/include/c++/4.8/bits/char_traits.h ****    *  probably wrong.  (Most of the member functions are likely to be
  72:/usr/include/c++/4.8/bits/char_traits.h ****    *  right, but the int_type and state_type typedefs, and the eof()
  73:/usr/include/c++/4.8/bits/char_traits.h ****    *  member function, are likely to be wrong.)  The reason this class
  74:/usr/include/c++/4.8/bits/char_traits.h ****    *  exists is so users can specialize it.  Classes in namespace std
  75:/usr/include/c++/4.8/bits/char_traits.h ****    *  may not be specialized for fundamental types, but classes in
  76:/usr/include/c++/4.8/bits/char_traits.h ****    *  namespace __gnu_cxx may be.
  77:/usr/include/c++/4.8/bits/char_traits.h ****    *
  78:/usr/include/c++/4.8/bits/char_traits.h ****    *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html
  79:/usr/include/c++/4.8/bits/char_traits.h ****    *  for advice on how to make use of this class for @a unusual character
  80:/usr/include/c++/4.8/bits/char_traits.h ****    *  types. Also, check out include/ext/pod_char_traits.h.  
  81:/usr/include/c++/4.8/bits/char_traits.h ****    */
  82:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
  83:/usr/include/c++/4.8/bits/char_traits.h ****     struct char_traits
  84:/usr/include/c++/4.8/bits/char_traits.h ****     {
  85:/usr/include/c++/4.8/bits/char_traits.h ****       typedef _CharT                                    char_type;
  86:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::int_type    int_type;
  87:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::pos_type    pos_type;
  88:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::off_type    off_type;
  89:/usr/include/c++/4.8/bits/char_traits.h ****       typedef typename _Char_types<_CharT>::state_type  state_type;
  90:/usr/include/c++/4.8/bits/char_traits.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 9


  91:/usr/include/c++/4.8/bits/char_traits.h ****       static void
  92:/usr/include/c++/4.8/bits/char_traits.h ****       assign(char_type& __c1, const char_type& __c2)
  93:/usr/include/c++/4.8/bits/char_traits.h ****       { __c1 = __c2; }
  94:/usr/include/c++/4.8/bits/char_traits.h **** 
  95:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
  96:/usr/include/c++/4.8/bits/char_traits.h ****       eq(const char_type& __c1, const char_type& __c2)
  97:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 == __c2; }
  98:/usr/include/c++/4.8/bits/char_traits.h **** 
  99:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 100:/usr/include/c++/4.8/bits/char_traits.h ****       lt(const char_type& __c1, const char_type& __c2)
 101:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 < __c2; }
 102:/usr/include/c++/4.8/bits/char_traits.h **** 
 103:/usr/include/c++/4.8/bits/char_traits.h ****       static int
 104:/usr/include/c++/4.8/bits/char_traits.h ****       compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
 105:/usr/include/c++/4.8/bits/char_traits.h **** 
 106:/usr/include/c++/4.8/bits/char_traits.h ****       static std::size_t
 107:/usr/include/c++/4.8/bits/char_traits.h ****       length(const char_type* __s);
 108:/usr/include/c++/4.8/bits/char_traits.h **** 
 109:/usr/include/c++/4.8/bits/char_traits.h ****       static const char_type*
 110:/usr/include/c++/4.8/bits/char_traits.h ****       find(const char_type* __s, std::size_t __n, const char_type& __a);
 111:/usr/include/c++/4.8/bits/char_traits.h **** 
 112:/usr/include/c++/4.8/bits/char_traits.h ****       static char_type*
 113:/usr/include/c++/4.8/bits/char_traits.h ****       move(char_type* __s1, const char_type* __s2, std::size_t __n);
 114:/usr/include/c++/4.8/bits/char_traits.h **** 
 115:/usr/include/c++/4.8/bits/char_traits.h ****       static char_type*
 116:/usr/include/c++/4.8/bits/char_traits.h ****       copy(char_type* __s1, const char_type* __s2, std::size_t __n);
 117:/usr/include/c++/4.8/bits/char_traits.h **** 
 118:/usr/include/c++/4.8/bits/char_traits.h ****       static char_type*
 119:/usr/include/c++/4.8/bits/char_traits.h ****       assign(char_type* __s, std::size_t __n, char_type __a);
 120:/usr/include/c++/4.8/bits/char_traits.h **** 
 121:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR char_type
 122:/usr/include/c++/4.8/bits/char_traits.h ****       to_char_type(const int_type& __c)
 123:/usr/include/c++/4.8/bits/char_traits.h ****       { return static_cast<char_type>(__c); }
 124:/usr/include/c++/4.8/bits/char_traits.h **** 
 125:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR int_type
 126:/usr/include/c++/4.8/bits/char_traits.h ****       to_int_type(const char_type& __c)
 127:/usr/include/c++/4.8/bits/char_traits.h ****       { return static_cast<int_type>(__c); }
 128:/usr/include/c++/4.8/bits/char_traits.h **** 
 129:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 130:/usr/include/c++/4.8/bits/char_traits.h ****       eq_int_type(const int_type& __c1, const int_type& __c2)
 131:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 == __c2; }
 132:/usr/include/c++/4.8/bits/char_traits.h **** 
 133:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR int_type
 134:/usr/include/c++/4.8/bits/char_traits.h ****       eof()
 135:/usr/include/c++/4.8/bits/char_traits.h ****       { return static_cast<int_type>(_GLIBCXX_STDIO_EOF); }
 136:/usr/include/c++/4.8/bits/char_traits.h **** 
 137:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR int_type
 138:/usr/include/c++/4.8/bits/char_traits.h ****       not_eof(const int_type& __c)
 139:/usr/include/c++/4.8/bits/char_traits.h ****       { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
 140:/usr/include/c++/4.8/bits/char_traits.h ****     };
 141:/usr/include/c++/4.8/bits/char_traits.h **** 
 142:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 143:/usr/include/c++/4.8/bits/char_traits.h ****     int
 144:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 145:/usr/include/c++/4.8/bits/char_traits.h ****     compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
 146:/usr/include/c++/4.8/bits/char_traits.h ****     {
 147:/usr/include/c++/4.8/bits/char_traits.h ****       for (std::size_t __i = 0; __i < __n; ++__i)
GAS LISTING /tmp/ccrG9BDx.s 			page 10


 148:/usr/include/c++/4.8/bits/char_traits.h **** 	if (lt(__s1[__i], __s2[__i]))
 149:/usr/include/c++/4.8/bits/char_traits.h **** 	  return -1;
 150:/usr/include/c++/4.8/bits/char_traits.h **** 	else if (lt(__s2[__i], __s1[__i]))
 151:/usr/include/c++/4.8/bits/char_traits.h **** 	  return 1;
 152:/usr/include/c++/4.8/bits/char_traits.h ****       return 0;
 153:/usr/include/c++/4.8/bits/char_traits.h ****     }
 154:/usr/include/c++/4.8/bits/char_traits.h **** 
 155:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 156:/usr/include/c++/4.8/bits/char_traits.h ****     std::size_t
 157:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 158:/usr/include/c++/4.8/bits/char_traits.h ****     length(const char_type* __p)
 159:/usr/include/c++/4.8/bits/char_traits.h ****     {
 160:/usr/include/c++/4.8/bits/char_traits.h ****       std::size_t __i = 0;
 161:/usr/include/c++/4.8/bits/char_traits.h ****       while (!eq(__p[__i], char_type()))
 162:/usr/include/c++/4.8/bits/char_traits.h ****         ++__i;
 163:/usr/include/c++/4.8/bits/char_traits.h ****       return __i;
 164:/usr/include/c++/4.8/bits/char_traits.h ****     }
 165:/usr/include/c++/4.8/bits/char_traits.h **** 
 166:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 167:/usr/include/c++/4.8/bits/char_traits.h ****     const typename char_traits<_CharT>::char_type*
 168:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 169:/usr/include/c++/4.8/bits/char_traits.h ****     find(const char_type* __s, std::size_t __n, const char_type& __a)
 170:/usr/include/c++/4.8/bits/char_traits.h ****     {
 171:/usr/include/c++/4.8/bits/char_traits.h ****       for (std::size_t __i = 0; __i < __n; ++__i)
 172:/usr/include/c++/4.8/bits/char_traits.h ****         if (eq(__s[__i], __a))
 173:/usr/include/c++/4.8/bits/char_traits.h ****           return __s + __i;
 174:/usr/include/c++/4.8/bits/char_traits.h ****       return 0;
 175:/usr/include/c++/4.8/bits/char_traits.h ****     }
 176:/usr/include/c++/4.8/bits/char_traits.h **** 
 177:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 178:/usr/include/c++/4.8/bits/char_traits.h ****     typename char_traits<_CharT>::char_type*
 179:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 180:/usr/include/c++/4.8/bits/char_traits.h ****     move(char_type* __s1, const char_type* __s2, std::size_t __n)
 181:/usr/include/c++/4.8/bits/char_traits.h ****     {
 182:/usr/include/c++/4.8/bits/char_traits.h ****       return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
 183:/usr/include/c++/4.8/bits/char_traits.h **** 						    __n * sizeof(char_type)));
 184:/usr/include/c++/4.8/bits/char_traits.h ****     }
 185:/usr/include/c++/4.8/bits/char_traits.h **** 
 186:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 187:/usr/include/c++/4.8/bits/char_traits.h ****     typename char_traits<_CharT>::char_type*
 188:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 189:/usr/include/c++/4.8/bits/char_traits.h ****     copy(char_type* __s1, const char_type* __s2, std::size_t __n)
 190:/usr/include/c++/4.8/bits/char_traits.h ****     {
 191:/usr/include/c++/4.8/bits/char_traits.h ****       // NB: Inline std::copy so no recursive dependencies.
 192:/usr/include/c++/4.8/bits/char_traits.h ****       std::copy(__s2, __s2 + __n, __s1);
 193:/usr/include/c++/4.8/bits/char_traits.h ****       return __s1;
 194:/usr/include/c++/4.8/bits/char_traits.h ****     }
 195:/usr/include/c++/4.8/bits/char_traits.h **** 
 196:/usr/include/c++/4.8/bits/char_traits.h ****   template<typename _CharT>
 197:/usr/include/c++/4.8/bits/char_traits.h ****     typename char_traits<_CharT>::char_type*
 198:/usr/include/c++/4.8/bits/char_traits.h ****     char_traits<_CharT>::
 199:/usr/include/c++/4.8/bits/char_traits.h ****     assign(char_type* __s, std::size_t __n, char_type __a)
 200:/usr/include/c++/4.8/bits/char_traits.h ****     {
 201:/usr/include/c++/4.8/bits/char_traits.h ****       // NB: Inline std::fill_n so no recursive dependencies.
 202:/usr/include/c++/4.8/bits/char_traits.h ****       std::fill_n(__s, __n, __a);
 203:/usr/include/c++/4.8/bits/char_traits.h ****       return __s;
 204:/usr/include/c++/4.8/bits/char_traits.h ****     }
GAS LISTING /tmp/ccrG9BDx.s 			page 11


 205:/usr/include/c++/4.8/bits/char_traits.h **** 
 206:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_END_NAMESPACE_VERSION
 207:/usr/include/c++/4.8/bits/char_traits.h **** } // namespace
 208:/usr/include/c++/4.8/bits/char_traits.h **** 
 209:/usr/include/c++/4.8/bits/char_traits.h **** namespace std _GLIBCXX_VISIBILITY(default)
 210:/usr/include/c++/4.8/bits/char_traits.h **** {
 211:/usr/include/c++/4.8/bits/char_traits.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
 212:/usr/include/c++/4.8/bits/char_traits.h **** 
 213:/usr/include/c++/4.8/bits/char_traits.h ****   // 21.1
 214:/usr/include/c++/4.8/bits/char_traits.h ****   /**
 215:/usr/include/c++/4.8/bits/char_traits.h ****    *  @brief  Basis for explicit traits specializations.
 216:/usr/include/c++/4.8/bits/char_traits.h ****    *
 217:/usr/include/c++/4.8/bits/char_traits.h ****    *  @note  For any given actual character type, this definition is
 218:/usr/include/c++/4.8/bits/char_traits.h ****    *  probably wrong.  Since this is just a thin wrapper around
 219:/usr/include/c++/4.8/bits/char_traits.h ****    *  __gnu_cxx::char_traits, it is possible to achieve a more
 220:/usr/include/c++/4.8/bits/char_traits.h ****    *  appropriate definition by specializing __gnu_cxx::char_traits.
 221:/usr/include/c++/4.8/bits/char_traits.h ****    *
 222:/usr/include/c++/4.8/bits/char_traits.h ****    *  See http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt05ch13s03.html
 223:/usr/include/c++/4.8/bits/char_traits.h ****    *  for advice on how to make use of this class for @a unusual character
 224:/usr/include/c++/4.8/bits/char_traits.h ****    *  types. Also, check out include/ext/pod_char_traits.h.
 225:/usr/include/c++/4.8/bits/char_traits.h ****   */
 226:/usr/include/c++/4.8/bits/char_traits.h ****   template<class _CharT>
 227:/usr/include/c++/4.8/bits/char_traits.h ****     struct char_traits : public __gnu_cxx::char_traits<_CharT>
 228:/usr/include/c++/4.8/bits/char_traits.h ****     { };
 229:/usr/include/c++/4.8/bits/char_traits.h **** 
 230:/usr/include/c++/4.8/bits/char_traits.h **** 
 231:/usr/include/c++/4.8/bits/char_traits.h ****   /// 21.1.3.1  char_traits specializations
 232:/usr/include/c++/4.8/bits/char_traits.h ****   template<>
 233:/usr/include/c++/4.8/bits/char_traits.h ****     struct char_traits<char>
 234:/usr/include/c++/4.8/bits/char_traits.h ****     {
 235:/usr/include/c++/4.8/bits/char_traits.h ****       typedef char              char_type;
 236:/usr/include/c++/4.8/bits/char_traits.h ****       typedef int               int_type;
 237:/usr/include/c++/4.8/bits/char_traits.h ****       typedef streampos         pos_type;
 238:/usr/include/c++/4.8/bits/char_traits.h ****       typedef streamoff         off_type;
 239:/usr/include/c++/4.8/bits/char_traits.h ****       typedef mbstate_t         state_type;
 240:/usr/include/c++/4.8/bits/char_traits.h **** 
 241:/usr/include/c++/4.8/bits/char_traits.h ****       static void
 242:/usr/include/c++/4.8/bits/char_traits.h ****       assign(char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT
 243:/usr/include/c++/4.8/bits/char_traits.h ****       { __c1 = __c2; }
 244:/usr/include/c++/4.8/bits/char_traits.h **** 
 245:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 246:/usr/include/c++/4.8/bits/char_traits.h ****       eq(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT
 247:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 == __c2; }
 248:/usr/include/c++/4.8/bits/char_traits.h **** 
 249:/usr/include/c++/4.8/bits/char_traits.h ****       static _GLIBCXX_CONSTEXPR bool
 250:/usr/include/c++/4.8/bits/char_traits.h ****       lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT
 251:/usr/include/c++/4.8/bits/char_traits.h ****       { return __c1 < __c2; }
 252:/usr/include/c++/4.8/bits/char_traits.h **** 
 253:/usr/include/c++/4.8/bits/char_traits.h ****       static int
 254:/usr/include/c++/4.8/bits/char_traits.h ****       compare(const char_type* __s1, const char_type* __s2, size_t __n)
 255:/usr/include/c++/4.8/bits/char_traits.h ****       { return __builtin_memcmp(__s1, __s2, __n); }
 256:/usr/include/c++/4.8/bits/char_traits.h **** 
 257:/usr/include/c++/4.8/bits/char_traits.h ****       static size_t
 258:/usr/include/c++/4.8/bits/char_traits.h ****       length(const char_type* __s)
 144              		.loc 4 258 0
 145              		.cfi_startproc
 146              	.LVL17:
GAS LISTING /tmp/ccrG9BDx.s 			page 12


 259:/usr/include/c++/4.8/bits/char_traits.h ****       { return __builtin_strlen(__s); }
 147              		.loc 4 259 0
 148 0000 B8000000 		movl	$0, %eax
 148      00
 149 0005 48C7C1FF 		movq	$-1, %rcx
 149      FFFFFF
 150 000c F2AE     		repnz scasb
 151              	.LVL18:
 152 000e 48F7D1   		notq	%rcx
 153 0011 488D41FF 		leaq	-1(%rcx), %rax
 154 0015 C3       		ret
 155              		.cfi_endproc
 156              	.LFE299:
 158              		.text
 159 0077 90       		.align 2
 160              		.globl	_ZN12MyExceptionBC2ESs
 162              	_ZN12MyExceptionBC2ESs:
 163              	.LFB1244:
  18:rethrow.cpp   ****     _what(what)
 164              		.loc 1 18 0
 165              		.cfi_startproc
 166              		.cfi_personality 0x3,__gxx_personality_v0
 167              		.cfi_lsda 0x3,.LLSDA1244
 168              	.LVL19:
 169 0078 4154     		pushq	%r12
 170              		.cfi_def_cfa_offset 16
 171              		.cfi_offset 12, -16
 172 007a 55       		pushq	%rbp
 173              		.cfi_def_cfa_offset 24
 174              		.cfi_offset 6, -24
 175 007b 53       		pushq	%rbx
 176              		.cfi_def_cfa_offset 32
 177              		.cfi_offset 3, -32
 178 007c 4889FB   		movq	%rdi, %rbx
 179 007f 4889F5   		movq	%rsi, %rbp
 180              	.LBB4:
  19:rethrow.cpp   **** {}
 181              		.loc 1 19 0
 182 0082 E8000000 		call	_ZNSt9exceptionC2Ev
 182      00
 183              	.LVL20:
 184 0087 48C70300 		movq	$_ZTV12MyExceptionB+16, (%rbx)
 184      000000
 185 008e 488D7B08 		leaq	8(%rbx), %rdi
 186 0092 4889EE   		movq	%rbp, %rsi
 187              	.LEHB0:
 188 0095 E8000000 		call	_ZNSsC1ERKSs
 188      00
 189              	.LEHE0:
 190              	.LVL21:
 191 009a EB24     		jmp	.L18
 192              	.L17:
 193 009c 4889C5   		movq	%rax, %rbp
 194              	.LVL22:
 195 009f 4989D4   		movq	%rdx, %r12
 196 00a2 4889DF   		movq	%rbx, %rdi
 197 00a5 E8000000 		call	_ZNSt9exceptionD2Ev
GAS LISTING /tmp/ccrG9BDx.s 			page 13


 197      00
 198              	.LVL23:
 199 00aa 4983FCFF 		cmpq	$-1, %r12
 200 00ae 7408     		je	.L16
 201 00b0 4889EF   		movq	%rbp, %rdi
 202              	.LEHB1:
 203 00b3 E8000000 		call	_Unwind_Resume
 203      00
 204              	.LVL24:
 205              	.L16:
 206              	.LBE4:
  18:rethrow.cpp   ****     _what(what)
 207              		.loc 1 18 0
 208 00b8 4889EF   		movq	%rbp, %rdi
 209 00bb E8000000 		call	__cxa_call_unexpected
 209      00
 210              	.LEHE1:
 211              	.LVL25:
 212              	.L18:
  20:rethrow.cpp   **** 
 213              		.loc 1 20 0
 214 00c0 5B       		popq	%rbx
 215              		.cfi_def_cfa_offset 24
 216              	.LVL26:
 217 00c1 5D       		popq	%rbp
 218              		.cfi_def_cfa_offset 16
 219              	.LVL27:
 220 00c2 415C     		popq	%r12
 221              		.cfi_def_cfa_offset 8
 222 00c4 C3       		ret
 223              		.cfi_endproc
 224              	.LFE1244:
 225              		.globl	__gxx_personality_v0
 226              		.section	.gcc_except_table,"a",@progbits
 227              		.align 4
 228              	.LLSDA1244:
 229 0000 FF       		.byte	0xff
 230 0001 03       		.byte	0x3
 231 0002 11       		.uleb128 .LLSDATT1244-.LLSDATTD1244
 232              	.LLSDATTD1244:
 233 0003 01       		.byte	0x1
 234 0004 08       		.uleb128 .LLSDACSE1244-.LLSDACSB1244
 235              	.LLSDACSB1244:
 236 0005 1D       		.uleb128 .LEHB0-.LFB1244
 237 0006 05       		.uleb128 .LEHE0-.LEHB0
 238 0007 24       		.uleb128 .L17-.LFB1244
 239 0008 03       		.uleb128 0x3
 240 0009 3B       		.uleb128 .LEHB1-.LFB1244
 241 000a 0D       		.uleb128 .LEHE1-.LEHB1
 242 000b 00       		.uleb128 0
 243 000c 00       		.uleb128 0
 244              	.LLSDACSE1244:
 245 000d 7F       		.byte	0x7f
 246 000e 00       		.byte	0
 247 000f 00       		.byte	0
 248 0010 7D       		.byte	0x7d
 249 0011 000000   		.align 4
GAS LISTING /tmp/ccrG9BDx.s 			page 14


 250              	.LLSDATT1244:
 251 0014 00       		.byte	0
 252              		.text
 254              		.globl	_ZN12MyExceptionBC1ESs
 255              		.set	_ZN12MyExceptionBC1ESs,_ZN12MyExceptionBC2ESs
 256              		.globl	_Z18throw_MyExceptionBSs
 258              	_Z18throw_MyExceptionBSs:
 259              	.LFB1252:
  34:rethrow.cpp   ****     throw MyExceptionB(message);
 260              		.loc 1 34 0
 261              		.cfi_startproc
 262              		.cfi_personality 0x3,__gxx_personality_v0
 263              		.cfi_lsda 0x3,.LLSDA1252
 264              	.LVL28:
 265 00c5 4154     		pushq	%r12
 266              		.cfi_def_cfa_offset 16
 267              		.cfi_offset 12, -16
 268 00c7 55       		pushq	%rbp
 269              		.cfi_def_cfa_offset 24
 270              		.cfi_offset 6, -24
 271 00c8 53       		pushq	%rbx
 272              		.cfi_def_cfa_offset 32
 273              		.cfi_offset 3, -32
 274 00c9 4883EC10 		subq	$16, %rsp
 275              		.cfi_def_cfa_offset 48
 276 00cd 4889FD   		movq	%rdi, %rbp
  35:rethrow.cpp   **** }
 277              		.loc 1 35 0
 278 00d0 BF100000 		movl	$16, %edi
 278      00
 279              	.LVL29:
 280 00d5 E8000000 		call	__cxa_allocate_exception
 280      00
 281              	.LVL30:
 282 00da 4889C3   		movq	%rax, %rbx
 283 00dd 4889EE   		movq	%rbp, %rsi
 284 00e0 4889E7   		movq	%rsp, %rdi
 285              	.LEHB2:
 286 00e3 E8000000 		call	_ZNSsC1ERKSs
 286      00
 287              	.LEHE2:
 288              	.LVL31:
  35:rethrow.cpp   **** }
 289              		.loc 1 35 0 is_stmt 0 discriminator 1
 290 00e8 4889E6   		movq	%rsp, %rsi
 291 00eb 4889DF   		movq	%rbx, %rdi
 292 00ee E8000000 		call	_ZN12MyExceptionBC1ESs
 292      00
 293              	.LVL32:
 294 00f3 4889E7   		movq	%rsp, %rdi
 295 00f6 E8000000 		call	_ZNSsD1Ev
 295      00
 296              	.LVL33:
 297 00fb BA000000 		movl	$_ZN12MyExceptionBD1Ev, %edx
 297      00
 298 0100 BE000000 		movl	$_ZTI12MyExceptionB, %esi
 298      00
GAS LISTING /tmp/ccrG9BDx.s 			page 15


 299 0105 4889DF   		movq	%rbx, %rdi
 300              	.LEHB3:
 301 0108 E8000000 		call	__cxa_throw
 301      00
 302              	.LEHE3:
 303              	.LVL34:
 304              	.L24:
 305 010d 4989C4   		movq	%rax, %r12
 306 0110 4889D5   		movq	%rdx, %rbp
 307              	.LVL35:
  35:rethrow.cpp   **** }
 308              		.loc 1 35 0
 309 0113 4889DF   		movq	%rbx, %rdi
 310 0116 E8000000 		call	__cxa_free_exception
 310      00
 311              	.LVL36:
 312 011b 4C89E7   		movq	%r12, %rdi
 313 011e 4889EA   		movq	%rbp, %rdx
 314 0121 EB03     		jmp	.L22
 315              	.LVL37:
 316              	.L25:
 317 0123 4889C7   		movq	%rax, %rdi
 318              	.LVL38:
 319              	.L22:
 320 0126 4883FAFF 		cmpq	$-1, %rdx
 321 012a 7405     		je	.L23
 322              	.LEHB4:
 323 012c E8000000 		call	_Unwind_Resume
 323      00
 324              	.LVL39:
 325              	.L23:
  34:rethrow.cpp   ****     throw MyExceptionB(message);
 326              		.loc 1 34 0 is_stmt 1
 327 0131 E8000000 		call	__cxa_call_unexpected
 327      00
 328              	.LEHE4:
 329              	.LVL40:
 330              		.cfi_endproc
 331              	.LFE1252:
 332              		.section	.gcc_except_table
 333 0015 000000   		.align 4
 334              	.LLSDA1252:
 335 0018 FF       		.byte	0xff
 336 0019 03       		.byte	0x3
 337 001a 19       		.uleb128 .LLSDATT1252-.LLSDATTD1252
 338              	.LLSDATTD1252:
 339 001b 01       		.byte	0x1
 340 001c 0C       		.uleb128 .LLSDACSE1252-.LLSDACSB1252
 341              	.LLSDACSB1252:
 342 001d 1E       		.uleb128 .LEHB2-.LFB1252
 343 001e 05       		.uleb128 .LEHE2-.LEHB2
 344 001f 48       		.uleb128 .L24-.LFB1252
 345 0020 03       		.uleb128 0x3
 346 0021 43       		.uleb128 .LEHB3-.LFB1252
 347 0022 05       		.uleb128 .LEHE3-.LEHB3
 348 0023 5E       		.uleb128 .L25-.LFB1252
 349 0024 01       		.uleb128 0x1
GAS LISTING /tmp/ccrG9BDx.s 			page 16


 350 0025 67       		.uleb128 .LEHB4-.LFB1252
 351 0026 0A       		.uleb128 .LEHE4-.LEHB4
 352 0027 00       		.uleb128 0
 353 0028 00       		.uleb128 0
 354              	.LLSDACSE1252:
 355 0029 7F       		.byte	0x7f
 356 002a 00       		.byte	0
 357 002b 00       		.byte	0
 358 002c 7D       		.byte	0x7d
 359 002d 000000   		.align 4
 360 0030 00000000 		.long	_ZTI12MyExceptionB
 361              	.LLSDATT1252:
 362 0034 01       		.byte	0x1
 363 0035 00       		.byte	0
 364              		.text
 366              		.section	.rodata.str1.1,"aMS",@progbits,1
 367              	.LC0:
 368 0000 42617200 		.string	"Bar"
 369              		.text
 370              		.globl	_Z12doesnt_throwv
 372              	_Z12doesnt_throwv:
 373              	.LFB1261:
  56:rethrow.cpp   ****     throw_MyExceptionB("Bar");
 374              		.loc 1 56 0
 375              		.cfi_startproc
 376              		.cfi_personality 0x3,__gxx_personality_v0
 377              		.cfi_lsda 0x3,.LLSDA1261
 378 0136 55       		pushq	%rbp
 379              		.cfi_def_cfa_offset 16
 380              		.cfi_offset 6, -16
 381 0137 53       		pushq	%rbx
 382              		.cfi_def_cfa_offset 24
 383              		.cfi_offset 3, -24
 384 0138 4883EC28 		subq	$40, %rsp
 385              		.cfi_def_cfa_offset 64
  57:rethrow.cpp   **** }
 386              		.loc 1 57 0
 387 013c 488D5424 		leaq	15(%rsp), %rdx
 387      0F
 388 0141 BE000000 		movl	$.LC0, %esi
 388      00
 389 0146 488D7C24 		leaq	16(%rsp), %rdi
 389      10
 390              	.LEHB5:
 391 014b E8000000 		call	_ZNSsC1EPKcRKSaIcE
 391      00
 392              	.LEHE5:
 393              	.LVL41:
  57:rethrow.cpp   **** }
 394              		.loc 1 57 0 is_stmt 0 discriminator 1
 395 0150 488D7C24 		leaq	16(%rsp), %rdi
 395      10
 396              	.LEHB6:
 397 0155 E8000000 		call	_Z18throw_MyExceptionBSs
 397      00
 398              	.LEHE6:
 399              	.LVL42:
GAS LISTING /tmp/ccrG9BDx.s 			page 17


 400              	.L32:
 401 015a 4889C5   		movq	%rax, %rbp
 402 015d 4889D3   		movq	%rdx, %rbx
  57:rethrow.cpp   **** }
 403              		.loc 1 57 0
 404 0160 488D7C24 		leaq	16(%rsp), %rdi
 404      10
 405 0165 E8000000 		call	_ZNSsD1Ev
 405      00
 406              	.LVL43:
 407 016a 4889EF   		movq	%rbp, %rdi
 408 016d 4889DA   		movq	%rbx, %rdx
 409 0170 EB03     		jmp	.L29
 410              	.L31:
 411 0172 4889C7   		movq	%rax, %rdi
 412              	.L29:
 413 0175 4883FAFF 		cmpq	$-1, %rdx
 414 0179 7405     		je	.L30
 415              	.LEHB7:
 416 017b E8000000 		call	_Unwind_Resume
 416      00
 417              	.LVL44:
 418              	.L30:
  56:rethrow.cpp   ****     throw_MyExceptionB("Bar");
 419              		.loc 1 56 0 is_stmt 1
 420 0180 E8000000 		call	__cxa_call_unexpected
 420      00
 421              	.LEHE7:
 422              	.LVL45:
 423              		.cfi_endproc
 424              	.LFE1261:
 425              		.section	.gcc_except_table
 426 0036 0000     		.align 4
 427              	.LLSDA1261:
 428 0038 FF       		.byte	0xff
 429 0039 03       		.byte	0x3
 430 003a 15       		.uleb128 .LLSDATT1261-.LLSDATTD1261
 431              	.LLSDATTD1261:
 432 003b 01       		.byte	0x1
 433 003c 0C       		.uleb128 .LLSDACSE1261-.LLSDACSB1261
 434              	.LLSDACSB1261:
 435 003d 15       		.uleb128 .LEHB5-.LFB1261
 436 003e 05       		.uleb128 .LEHE5-.LEHB5
 437 003f 3C       		.uleb128 .L31-.LFB1261
 438 0040 01       		.uleb128 0x1
 439 0041 1F       		.uleb128 .LEHB6-.LFB1261
 440 0042 05       		.uleb128 .LEHE6-.LEHB6
 441 0043 24       		.uleb128 .L32-.LFB1261
 442 0044 03       		.uleb128 0x3
 443 0045 45       		.uleb128 .LEHB7-.LFB1261
 444 0046 0A       		.uleb128 .LEHE7-.LEHB7
 445 0047 00       		.uleb128 0
 446 0048 00       		.uleb128 0
 447              	.LLSDACSE1261:
 448 0049 7F       		.byte	0x7f
 449 004a 00       		.byte	0
 450 004b 00       		.byte	0
GAS LISTING /tmp/ccrG9BDx.s 			page 18


 451 004c 7D       		.byte	0x7d
 452 004d 000000   		.align 4
 453              	.LLSDATT1261:
 454 0050 00       		.byte	0
 455              		.text
 457              		.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11
 458              		.weak	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
 460              	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:
 461              	.LFB1317:
 462              		.file 5 "/usr/include/c++/4.8/bits/basic_string.tcc"
   1:/usr/include/c++/4.8/bits/basic_string.tcc **** // Components for manipulating sequences of characters -*- C++ -*-
   2:/usr/include/c++/4.8/bits/basic_string.tcc **** 
   3:/usr/include/c++/4.8/bits/basic_string.tcc **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/basic_string.tcc **** //
   5:/usr/include/c++/4.8/bits/basic_string.tcc **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/basic_string.tcc **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/basic_string.tcc **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/basic_string.tcc **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/basic_string.tcc **** // any later version.
  10:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  11:/usr/include/c++/4.8/bits/basic_string.tcc **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/basic_string.tcc **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/basic_string.tcc **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/basic_string.tcc **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  16:/usr/include/c++/4.8/bits/basic_string.tcc **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/basic_string.tcc **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/basic_string.tcc **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  20:/usr/include/c++/4.8/bits/basic_string.tcc **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/basic_string.tcc **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/basic_string.tcc **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/bits/basic_string.tcc **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  25:/usr/include/c++/4.8/bits/basic_string.tcc **** /** @file bits/basic_string.tcc
  26:/usr/include/c++/4.8/bits/basic_string.tcc ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/basic_string.tcc ****  *  Do not attempt to use it directly. @headername{string}
  28:/usr/include/c++/4.8/bits/basic_string.tcc ****  */
  29:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  30:/usr/include/c++/4.8/bits/basic_string.tcc **** //
  31:/usr/include/c++/4.8/bits/basic_string.tcc **** // ISO C++ 14882: 21  Strings library
  32:/usr/include/c++/4.8/bits/basic_string.tcc **** //
  33:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  34:/usr/include/c++/4.8/bits/basic_string.tcc **** // Written by Jason Merrill based upon the specification by Takanori Adachi
  35:/usr/include/c++/4.8/bits/basic_string.tcc **** // in ANSI X3J16/94-0013R2.  Rewritten by Nathan Myers to ISO-14882.
  36:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  37:/usr/include/c++/4.8/bits/basic_string.tcc **** #ifndef _BASIC_STRING_TCC
  38:/usr/include/c++/4.8/bits/basic_string.tcc **** #define _BASIC_STRING_TCC 1
  39:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  40:/usr/include/c++/4.8/bits/basic_string.tcc **** #pragma GCC system_header
  41:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  42:/usr/include/c++/4.8/bits/basic_string.tcc **** #include <bits/cxxabi_forced.h>
  43:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  44:/usr/include/c++/4.8/bits/basic_string.tcc **** namespace std _GLIBCXX_VISIBILITY(default)
  45:/usr/include/c++/4.8/bits/basic_string.tcc **** {
  46:/usr/include/c++/4.8/bits/basic_string.tcc **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  47:/usr/include/c++/4.8/bits/basic_string.tcc **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 19


  48:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  49:/usr/include/c++/4.8/bits/basic_string.tcc ****     const typename basic_string<_CharT, _Traits, _Alloc>::size_type
  50:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
  51:/usr/include/c++/4.8/bits/basic_string.tcc ****     _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
  52:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  53:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  54:/usr/include/c++/4.8/bits/basic_string.tcc ****     const _CharT
  55:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
  56:/usr/include/c++/4.8/bits/basic_string.tcc ****     _Rep::_S_terminal = _CharT();
  57:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  58:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  59:/usr/include/c++/4.8/bits/basic_string.tcc ****     const typename basic_string<_CharT, _Traits, _Alloc>::size_type
  60:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::npos;
  61:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  62:/usr/include/c++/4.8/bits/basic_string.tcc ****   // Linker sets _S_empty_rep_storage to all 0s (one reference, empty string)
  63:/usr/include/c++/4.8/bits/basic_string.tcc ****   // at static init time (before static ctors are run).
  64:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  65:/usr/include/c++/4.8/bits/basic_string.tcc ****     typename basic_string<_CharT, _Traits, _Alloc>::size_type
  66:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
  67:/usr/include/c++/4.8/bits/basic_string.tcc ****     (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
  68:/usr/include/c++/4.8/bits/basic_string.tcc ****       sizeof(size_type)];
  69:/usr/include/c++/4.8/bits/basic_string.tcc **** 
  70:/usr/include/c++/4.8/bits/basic_string.tcc ****   // NB: This is the special case for Input Iterators, used in
  71:/usr/include/c++/4.8/bits/basic_string.tcc ****   // istreambuf_iterators, etc.
  72:/usr/include/c++/4.8/bits/basic_string.tcc ****   // Input Iterators have a cost structure very different from
  73:/usr/include/c++/4.8/bits/basic_string.tcc ****   // pointers, calling for a different coding style.
  74:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
  75:/usr/include/c++/4.8/bits/basic_string.tcc ****     template<typename _InIterator>
  76:/usr/include/c++/4.8/bits/basic_string.tcc ****       _CharT*
  77:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>::
  78:/usr/include/c++/4.8/bits/basic_string.tcc ****       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
  79:/usr/include/c++/4.8/bits/basic_string.tcc **** 		   input_iterator_tag)
  80:/usr/include/c++/4.8/bits/basic_string.tcc ****       {
  81:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
  82:/usr/include/c++/4.8/bits/basic_string.tcc **** 	if (__beg == __end && __a == _Alloc())
  83:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  return _S_empty_rep()._M_refdata();
  84:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
  85:/usr/include/c++/4.8/bits/basic_string.tcc **** 	// Avoid reallocation for common case.
  86:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_CharT __buf[128];
  87:/usr/include/c++/4.8/bits/basic_string.tcc **** 	size_type __len = 0;
  88:/usr/include/c++/4.8/bits/basic_string.tcc **** 	while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
  89:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
  90:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __buf[__len++] = *__beg;
  91:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    ++__beg;
  92:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
  93:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
  94:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_copy(__r->_M_refdata(), __buf, __len);
  95:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__try
  96:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
  97:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    while (__beg != __end)
  98:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      {
  99:/usr/include/c++/4.8/bits/basic_string.tcc **** 		if (__len == __r->_M_capacity)
 100:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  {
 101:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    // Allocate more space.
 102:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
 103:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
 104:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    __r->_M_destroy(__a);
GAS LISTING /tmp/ccrG9BDx.s 			page 20


 105:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    __r = __another;
 106:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  }
 107:/usr/include/c++/4.8/bits/basic_string.tcc **** 		__r->_M_refdata()[__len++] = *__beg;
 108:/usr/include/c++/4.8/bits/basic_string.tcc **** 		++__beg;
 109:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      }
 110:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
 111:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__catch(...)
 112:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
 113:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __r->_M_destroy(__a);
 114:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __throw_exception_again;
 115:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
 116:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__r->_M_set_length_and_sharable(__len);
 117:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return __r->_M_refdata();
 118:/usr/include/c++/4.8/bits/basic_string.tcc ****       }
 119:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 120:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 121:/usr/include/c++/4.8/bits/basic_string.tcc ****     template <typename _InIterator>
 122:/usr/include/c++/4.8/bits/basic_string.tcc ****       _CharT*
 123:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>::
 124:/usr/include/c++/4.8/bits/basic_string.tcc ****       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
 125:/usr/include/c++/4.8/bits/basic_string.tcc **** 		   forward_iterator_tag)
 126:/usr/include/c++/4.8/bits/basic_string.tcc ****       {
 127:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 128:/usr/include/c++/4.8/bits/basic_string.tcc **** 	if (__beg == __end && __a == _Alloc())
 129:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  return _S_empty_rep()._M_refdata();
 130:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 131:/usr/include/c++/4.8/bits/basic_string.tcc **** 	// NB: Not required, but considered best practice.
 132:/usr/include/c++/4.8/bits/basic_string.tcc **** 	if (__gnu_cxx::__is_null_pointer(__beg) && __beg != __end)
 133:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __throw_logic_error(__N("basic_string::_S_construct null not valid"));
 134:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 135:/usr/include/c++/4.8/bits/basic_string.tcc **** 	const size_type __dnew = static_cast<size_type>(std::distance(__beg,
 136:/usr/include/c++/4.8/bits/basic_string.tcc **** 								      __end));
 137:/usr/include/c++/4.8/bits/basic_string.tcc **** 	// Check for out_of_range and length_error exceptions.
 138:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
 139:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__try
 140:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
 141:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__catch(...)
 142:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  {
 143:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __r->_M_destroy(__a);
 144:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __throw_exception_again;
 145:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  }
 146:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__r->_M_set_length_and_sharable(__dnew);
 147:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return __r->_M_refdata();
 148:/usr/include/c++/4.8/bits/basic_string.tcc ****       }
 149:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 150:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 151:/usr/include/c++/4.8/bits/basic_string.tcc ****     _CharT*
 152:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 153:/usr/include/c++/4.8/bits/basic_string.tcc ****     _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
 154:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 155:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 156:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n == 0 && __a == _Alloc())
 157:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return _S_empty_rep()._M_refdata();
 158:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 159:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Check for out_of_range and length_error exceptions.
 160:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
 161:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
GAS LISTING /tmp/ccrG9BDx.s 			page 21


 162:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_assign(__r->_M_refdata(), __n, __c);
 163:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 164:/usr/include/c++/4.8/bits/basic_string.tcc ****       __r->_M_set_length_and_sharable(__n);
 165:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __r->_M_refdata();
 166:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 167:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 168:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 169:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 170:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const basic_string& __str)
 171:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
 172:/usr/include/c++/4.8/bits/basic_string.tcc **** 					  __str.get_allocator()),
 173:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  __str.get_allocator())
 174:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 175:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 176:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 177:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 178:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const _Alloc& __a)
 179:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
 180:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 181:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 182:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 183:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 184:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const basic_string& __str, size_type __pos, size_type __n)
 185:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__str._M_data()
 186:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __str._M_check(__pos,
 187:/usr/include/c++/4.8/bits/basic_string.tcc **** 						"basic_string::basic_string"),
 188:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __str._M_data() + __str._M_limit(__pos, __n)
 189:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __pos, _Alloc()), _Alloc())
 190:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 191:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 192:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 193:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 194:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const basic_string& __str, size_type __pos,
 195:/usr/include/c++/4.8/bits/basic_string.tcc **** 		 size_type __n, const _Alloc& __a)
 196:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__str._M_data()
 197:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __str._M_check(__pos,
 198:/usr/include/c++/4.8/bits/basic_string.tcc **** 						"basic_string::basic_string"),
 199:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __str._M_data() + __str._M_limit(__pos, __n)
 200:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       + __pos, __a), __a)
 201:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 202:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 203:/usr/include/c++/4.8/bits/basic_string.tcc ****   // TBD: DPG annotate
 204:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 205:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 206:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
 207:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
 208:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 209:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 210:/usr/include/c++/4.8/bits/basic_string.tcc ****   // TBD: DPG annotate
 211:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 212:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 213:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(const _CharT* __s, const _Alloc& __a)
 214:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
 215:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __s + npos, __a), __a)
 216:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 217:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 218:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
GAS LISTING /tmp/ccrG9BDx.s 			page 22


 219:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 220:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(size_type __n, _CharT __c, const _Alloc& __a)
 221:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__n, __c, __a), __a)
 222:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 223:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 224:/usr/include/c++/4.8/bits/basic_string.tcc ****   // TBD: DPG annotate
 225:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 226:/usr/include/c++/4.8/bits/basic_string.tcc ****     template<typename _InputIterator>
 227:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 228:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
 229:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__beg, __end, __a), __a)
 230:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 231:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 232:/usr/include/c++/4.8/bits/basic_string.tcc **** #if __cplusplus >= 201103L
 233:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 234:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 235:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string(initializer_list<_CharT> __l, const _Alloc& __a)
 236:/usr/include/c++/4.8/bits/basic_string.tcc ****     : _M_dataplus(_S_construct(__l.begin(), __l.end(), __a), __a)
 237:/usr/include/c++/4.8/bits/basic_string.tcc ****     { }
 238:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 239:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 240:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 241:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 242:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 243:/usr/include/c++/4.8/bits/basic_string.tcc ****     assign(const basic_string& __str)
 244:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 245:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep() != __str._M_rep())
 246:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 247:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // XXX MT
 248:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const allocator_type __a = this->get_allocator();
 249:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
 250:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_dispose(__a);
 251:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__tmp);
 252:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 253:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 254:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 255:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 256:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 257:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 258:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 259:/usr/include/c++/4.8/bits/basic_string.tcc ****     assign(const _CharT* __s, size_type __n)
 260:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 261:/usr/include/c++/4.8/bits/basic_string.tcc ****       __glibcxx_requires_string_len(__s, __n);
 262:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_check_length(this->size(), __n, "basic_string::assign");
 263:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
 264:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return _M_replace_safe(size_type(0), this->size(), __s, __n);
 265:/usr/include/c++/4.8/bits/basic_string.tcc ****       else
 266:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 267:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Work in-place.
 268:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __pos = __s - _M_data();
 269:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__pos >= __n)
 270:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_copy(_M_data(), __s, __n);
 271:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  else if (__pos)
 272:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_move(_M_data(), __s, __n);
 273:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__n);
 274:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  return *this;
 275:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
GAS LISTING /tmp/ccrG9BDx.s 			page 23


 276:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 277:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 278:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 279:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 280:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 281:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(size_type __n, _CharT __c)
 282:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 283:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
 284:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 285:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_check_length(size_type(0), __n, "basic_string::append");	  
 286:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __n + this->size();
 287:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 288:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    this->reserve(__len);
 289:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_assign(_M_data() + this->size(), __n, __c);
 290:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);
 291:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 292:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 293:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 294:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 295:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 296:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 297:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 298:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(const _CharT* __s, size_type __n)
 299:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 300:/usr/include/c++/4.8/bits/basic_string.tcc ****       __glibcxx_requires_string_len(__s, __n);
 301:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
 302:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 303:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_check_length(size_type(0), __n, "basic_string::append");
 304:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __n + this->size();
 305:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 306:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    {
 307:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      if (_M_disjunct(__s))
 308:/usr/include/c++/4.8/bits/basic_string.tcc **** 		this->reserve(__len);
 309:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      else
 310:/usr/include/c++/4.8/bits/basic_string.tcc **** 		{
 311:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  const size_type __off = __s - _M_data();
 312:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  this->reserve(__len);
 313:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  __s = _M_data() + __off;
 314:/usr/include/c++/4.8/bits/basic_string.tcc **** 		}
 315:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    }
 316:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_copy(_M_data() + this->size(), __s, __n);
 317:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);
 318:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 319:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 320:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 321:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 322:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 323:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 324:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 325:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(const basic_string& __str)
 326:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 327:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __size = __str.size();
 328:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__size)
 329:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 330:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __size + this->size();
 331:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 332:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    this->reserve(__len);
GAS LISTING /tmp/ccrG9BDx.s 			page 24


 333:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_copy(_M_data() + this->size(), __str._M_data(), __size);
 334:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);
 335:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 336:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 337:/usr/include/c++/4.8/bits/basic_string.tcc ****     }    
 338:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 339:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 340:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 341:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 342:/usr/include/c++/4.8/bits/basic_string.tcc ****     append(const basic_string& __str, size_type __pos, size_type __n)
 343:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 344:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str._M_check(__pos, "basic_string::append");
 345:/usr/include/c++/4.8/bits/basic_string.tcc ****       __n = __str._M_limit(__pos, __n);
 346:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n)
 347:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 348:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __len = __n + this->size();
 349:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__len > this->capacity() || _M_rep()->_M_is_shared())
 350:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    this->reserve(__len);
 351:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
 352:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_set_length_and_sharable(__len);	  
 353:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 354:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 355:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 356:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 357:/usr/include/c++/4.8/bits/basic_string.tcc ****    template<typename _CharT, typename _Traits, typename _Alloc>
 358:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>&
 359:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>::
 360:/usr/include/c++/4.8/bits/basic_string.tcc ****      insert(size_type __pos, const _CharT* __s, size_type __n)
 361:/usr/include/c++/4.8/bits/basic_string.tcc ****      {
 362:/usr/include/c++/4.8/bits/basic_string.tcc ****        __glibcxx_requires_string_len(__s, __n);
 363:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check(__pos, "basic_string::insert");
 364:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check_length(size_type(0), __n, "basic_string::insert");
 365:/usr/include/c++/4.8/bits/basic_string.tcc ****        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
 366:/usr/include/c++/4.8/bits/basic_string.tcc ****          return _M_replace_safe(__pos, size_type(0), __s, __n);
 367:/usr/include/c++/4.8/bits/basic_string.tcc ****        else
 368:/usr/include/c++/4.8/bits/basic_string.tcc ****          {
 369:/usr/include/c++/4.8/bits/basic_string.tcc ****            // Work in-place.
 370:/usr/include/c++/4.8/bits/basic_string.tcc ****            const size_type __off = __s - _M_data();
 371:/usr/include/c++/4.8/bits/basic_string.tcc ****            _M_mutate(__pos, 0, __n);
 372:/usr/include/c++/4.8/bits/basic_string.tcc ****            __s = _M_data() + __off;
 373:/usr/include/c++/4.8/bits/basic_string.tcc ****            _CharT* __p = _M_data() + __pos;
 374:/usr/include/c++/4.8/bits/basic_string.tcc ****            if (__s  + __n <= __p)
 375:/usr/include/c++/4.8/bits/basic_string.tcc ****              _M_copy(__p, __s, __n);
 376:/usr/include/c++/4.8/bits/basic_string.tcc ****            else if (__s >= __p)
 377:/usr/include/c++/4.8/bits/basic_string.tcc ****              _M_copy(__p, __s + __n, __n);
 378:/usr/include/c++/4.8/bits/basic_string.tcc ****            else
 379:/usr/include/c++/4.8/bits/basic_string.tcc ****              {
 380:/usr/include/c++/4.8/bits/basic_string.tcc **** 	       const size_type __nleft = __p - __s;
 381:/usr/include/c++/4.8/bits/basic_string.tcc ****                _M_copy(__p, __s, __nleft);
 382:/usr/include/c++/4.8/bits/basic_string.tcc ****                _M_copy(__p + __nleft, __p + __n, __n - __nleft);
 383:/usr/include/c++/4.8/bits/basic_string.tcc ****              }
 384:/usr/include/c++/4.8/bits/basic_string.tcc ****            return *this;
 385:/usr/include/c++/4.8/bits/basic_string.tcc ****          }
 386:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 387:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 388:/usr/include/c++/4.8/bits/basic_string.tcc ****    template<typename _CharT, typename _Traits, typename _Alloc>
 389:/usr/include/c++/4.8/bits/basic_string.tcc ****      typename basic_string<_CharT, _Traits, _Alloc>::iterator
GAS LISTING /tmp/ccrG9BDx.s 			page 25


 390:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>::
 391:/usr/include/c++/4.8/bits/basic_string.tcc ****      erase(iterator __first, iterator __last)
 392:/usr/include/c++/4.8/bits/basic_string.tcc ****      {
 393:/usr/include/c++/4.8/bits/basic_string.tcc ****        _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last
 394:/usr/include/c++/4.8/bits/basic_string.tcc **** 				&& __last <= _M_iend());
 395:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 396:/usr/include/c++/4.8/bits/basic_string.tcc ****        // NB: This isn't just an optimization (bail out early when
 397:/usr/include/c++/4.8/bits/basic_string.tcc ****        // there is nothing to do, really), it's also a correctness
 398:/usr/include/c++/4.8/bits/basic_string.tcc ****        // issue vs MT, see libstdc++/40518.
 399:/usr/include/c++/4.8/bits/basic_string.tcc ****        const size_type __size = __last - __first;
 400:/usr/include/c++/4.8/bits/basic_string.tcc ****        if (__size)
 401:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 {
 402:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   const size_type __pos = __first - _M_ibegin();
 403:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_mutate(__pos, __size, size_type(0));
 404:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_rep()->_M_set_leaked();
 405:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   return iterator(_M_data() + __pos);
 406:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 }
 407:/usr/include/c++/4.8/bits/basic_string.tcc ****        else
 408:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 return __first;
 409:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 410:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 411:/usr/include/c++/4.8/bits/basic_string.tcc ****    template<typename _CharT, typename _Traits, typename _Alloc>
 412:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>&
 413:/usr/include/c++/4.8/bits/basic_string.tcc ****      basic_string<_CharT, _Traits, _Alloc>::
 414:/usr/include/c++/4.8/bits/basic_string.tcc ****      replace(size_type __pos, size_type __n1, const _CharT* __s,
 415:/usr/include/c++/4.8/bits/basic_string.tcc **** 	     size_type __n2)
 416:/usr/include/c++/4.8/bits/basic_string.tcc ****      {
 417:/usr/include/c++/4.8/bits/basic_string.tcc ****        __glibcxx_requires_string_len(__s, __n2);
 418:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check(__pos, "basic_string::replace");
 419:/usr/include/c++/4.8/bits/basic_string.tcc ****        __n1 = _M_limit(__pos, __n1);
 420:/usr/include/c++/4.8/bits/basic_string.tcc ****        _M_check_length(__n1, __n2, "basic_string::replace");
 421:/usr/include/c++/4.8/bits/basic_string.tcc ****        bool __left;
 422:/usr/include/c++/4.8/bits/basic_string.tcc ****        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
 423:/usr/include/c++/4.8/bits/basic_string.tcc ****          return _M_replace_safe(__pos, __n1, __s, __n2);
 424:/usr/include/c++/4.8/bits/basic_string.tcc ****        else if ((__left = __s + __n2 <= _M_data() + __pos)
 425:/usr/include/c++/4.8/bits/basic_string.tcc **** 		|| _M_data() + __pos + __n1 <= __s)
 426:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 {
 427:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   // Work in-place: non-overlapping case.
 428:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   size_type __off = __s - _M_data();
 429:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   __left ? __off : (__off += __n2 - __n1);
 430:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_mutate(__pos, __n1, __n2);
 431:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
 432:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   return *this;
 433:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 }
 434:/usr/include/c++/4.8/bits/basic_string.tcc ****        else
 435:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 {
 436:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   // Todo: overlapping case.
 437:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   const basic_string __tmp(__s, __n2);
 438:/usr/include/c++/4.8/bits/basic_string.tcc **** 	   return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
 439:/usr/include/c++/4.8/bits/basic_string.tcc **** 	 }
 440:/usr/include/c++/4.8/bits/basic_string.tcc ****      }
 441:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 442:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 443:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 444:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::
 445:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_destroy(const _Alloc& __a) throw ()
 446:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
GAS LISTING /tmp/ccrG9BDx.s 			page 26


 447:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __size = sizeof(_Rep_base) +
 448:/usr/include/c++/4.8/bits/basic_string.tcc **** 	                       (this->_M_capacity + 1) * sizeof(_CharT);
 449:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
 450:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 451:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 452:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 453:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 454:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 455:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_leak_hard()
 456:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 457:/usr/include/c++/4.8/bits/basic_string.tcc **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 458:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep() == &_S_empty_rep())
 459:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return;
 460:/usr/include/c++/4.8/bits/basic_string.tcc **** #endif
 461:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep()->_M_is_shared())
 462:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_mutate(0, 0, 0);
 463:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_rep()->_M_set_leaked();
 464:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 465:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 466:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 467:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 468:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 469:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_mutate(size_type __pos, size_type __len1, size_type __len2)
 470:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 471:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __old_size = this->size();
 472:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __new_size = __old_size + __len2 - __len1;
 473:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __how_much = __old_size - __pos - __len1;
 474:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 475:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
 476:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 477:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Must reallocate.
 478:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const allocator_type __a = get_allocator();
 479:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
 480:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 481:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__pos)
 482:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_copy(__r->_M_refdata(), _M_data(), __pos);
 483:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__how_much)
 484:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    _M_copy(__r->_M_refdata() + __pos + __len2,
 485:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    _M_data() + __pos + __len1, __how_much);
 486:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 487:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_dispose(__a);
 488:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__r->_M_refdata());
 489:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 490:/usr/include/c++/4.8/bits/basic_string.tcc ****       else if (__how_much && __len1 != __len2)
 491:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 492:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Work in-place.
 493:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_move(_M_data() + __pos + __len2,
 494:/usr/include/c++/4.8/bits/basic_string.tcc **** 		  _M_data() + __pos + __len1, __how_much);
 495:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 496:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_rep()->_M_set_length_and_sharable(__new_size);
 497:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 498:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 499:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 500:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 501:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 502:/usr/include/c++/4.8/bits/basic_string.tcc ****     reserve(size_type __res)
 503:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
GAS LISTING /tmp/ccrG9BDx.s 			page 27


 504:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__res != this->capacity() || _M_rep()->_M_is_shared())
 505:/usr/include/c++/4.8/bits/basic_string.tcc ****         {
 506:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Make sure we don't shrink below the current size
 507:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__res < this->size())
 508:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __res = this->size();
 509:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const allocator_type __a = get_allocator();
 510:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
 511:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_rep()->_M_dispose(__a);
 512:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__tmp);
 513:/usr/include/c++/4.8/bits/basic_string.tcc ****         }
 514:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 515:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 516:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 517:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 518:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 519:/usr/include/c++/4.8/bits/basic_string.tcc ****     swap(basic_string& __s)
 520:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 521:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (_M_rep()->_M_is_leaked())
 522:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_rep()->_M_set_sharable();
 523:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__s._M_rep()->_M_is_leaked())
 524:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__s._M_rep()->_M_set_sharable();
 525:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (this->get_allocator() == __s.get_allocator())
 526:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 527:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _CharT* __tmp = _M_data();
 528:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  _M_data(__s._M_data());
 529:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __s._M_data(__tmp);
 530:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 531:/usr/include/c++/4.8/bits/basic_string.tcc ****       // The code below can usually be optimized away.
 532:/usr/include/c++/4.8/bits/basic_string.tcc ****       else
 533:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 534:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const basic_string __tmp1(_M_ibegin(), _M_iend(),
 535:/usr/include/c++/4.8/bits/basic_string.tcc **** 				    __s.get_allocator());
 536:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
 537:/usr/include/c++/4.8/bits/basic_string.tcc **** 				    this->get_allocator());
 538:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  *this = __tmp2;
 539:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __s = __tmp1;
 540:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 541:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 542:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 543:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 544:/usr/include/c++/4.8/bits/basic_string.tcc ****     typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
 545:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::
 546:/usr/include/c++/4.8/bits/basic_string.tcc ****     _S_create(size_type __capacity, size_type __old_capacity,
 547:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      const _Alloc& __alloc)
 548:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 549:/usr/include/c++/4.8/bits/basic_string.tcc ****       // _GLIBCXX_RESOLVE_LIB_DEFECTS
 550:/usr/include/c++/4.8/bits/basic_string.tcc ****       // 83.  String::npos vs. string::max_size()
 551:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__capacity > _S_max_size)
 552:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__throw_length_error(__N("basic_string::_S_create"));
 553:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 554:/usr/include/c++/4.8/bits/basic_string.tcc ****       // The standard places no restriction on allocating more memory
 555:/usr/include/c++/4.8/bits/basic_string.tcc ****       // than is strictly needed within this layer at the moment or as
 556:/usr/include/c++/4.8/bits/basic_string.tcc ****       // requested by an explicit application call to reserve().
 557:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 558:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Many malloc implementations perform quite poorly when an
 559:/usr/include/c++/4.8/bits/basic_string.tcc ****       // application attempts to allocate memory in a stepwise fashion
 560:/usr/include/c++/4.8/bits/basic_string.tcc ****       // growing each allocation size by only 1 char.  Additionally,
GAS LISTING /tmp/ccrG9BDx.s 			page 28


 561:/usr/include/c++/4.8/bits/basic_string.tcc ****       // it makes little sense to allocate less linear memory than the
 562:/usr/include/c++/4.8/bits/basic_string.tcc ****       // natural blocking size of the malloc implementation.
 563:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Unfortunately, we would need a somewhat low-level calculation
 564:/usr/include/c++/4.8/bits/basic_string.tcc ****       // with tuned parameters to get this perfect for any particular
 565:/usr/include/c++/4.8/bits/basic_string.tcc ****       // malloc implementation.  Fortunately, generalizations about
 566:/usr/include/c++/4.8/bits/basic_string.tcc ****       // common features seen among implementations seems to suffice.
 567:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 568:/usr/include/c++/4.8/bits/basic_string.tcc ****       // __pagesize need not match the actual VM page size for good
 569:/usr/include/c++/4.8/bits/basic_string.tcc ****       // results in practice, thus we pick a common value on the low
 570:/usr/include/c++/4.8/bits/basic_string.tcc ****       // side.  __malloc_header_size is an estimate of the amount of
 571:/usr/include/c++/4.8/bits/basic_string.tcc ****       // overhead per memory allocation (in practice seen N * sizeof
 572:/usr/include/c++/4.8/bits/basic_string.tcc ****       // (void*) where N is 0, 2 or 4).  According to folklore,
 573:/usr/include/c++/4.8/bits/basic_string.tcc ****       // picking this value on the high side is better than
 574:/usr/include/c++/4.8/bits/basic_string.tcc ****       // low-balling it (especially when this algorithm is used with
 575:/usr/include/c++/4.8/bits/basic_string.tcc ****       // malloc implementations that allocate memory blocks rounded up
 576:/usr/include/c++/4.8/bits/basic_string.tcc ****       // to a size which is a power of 2).
 577:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __pagesize = 4096;
 578:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __malloc_header_size = 4 * sizeof(void*);
 579:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 580:/usr/include/c++/4.8/bits/basic_string.tcc ****       // The below implements an exponential growth policy, necessary to
 581:/usr/include/c++/4.8/bits/basic_string.tcc ****       // meet amortized linear time requirements of the library: see
 582:/usr/include/c++/4.8/bits/basic_string.tcc ****       // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
 583:/usr/include/c++/4.8/bits/basic_string.tcc ****       // It's active for allocations requiring an amount of memory above
 584:/usr/include/c++/4.8/bits/basic_string.tcc ****       // system pagesize. This is consistent with the requirements of the
 585:/usr/include/c++/4.8/bits/basic_string.tcc ****       // standard: http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html
 586:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
 587:/usr/include/c++/4.8/bits/basic_string.tcc **** 	__capacity = 2 * __old_capacity;
 588:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 589:/usr/include/c++/4.8/bits/basic_string.tcc ****       // NB: Need an array of char_type[__capacity], plus a terminating
 590:/usr/include/c++/4.8/bits/basic_string.tcc ****       // null char_type() element, plus enough for the _Rep data structure.
 591:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Whew. Seemingly so needy, yet so elemental.
 592:/usr/include/c++/4.8/bits/basic_string.tcc ****       size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
 593:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 594:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __adj_size = __size + __malloc_header_size;
 595:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__adj_size > __pagesize && __capacity > __old_capacity)
 596:/usr/include/c++/4.8/bits/basic_string.tcc **** 	{
 597:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  const size_type __extra = __pagesize - __adj_size % __pagesize;
 598:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __capacity += __extra / sizeof(_CharT);
 599:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  // Never allocate a string bigger than _S_max_size.
 600:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  if (__capacity > _S_max_size)
 601:/usr/include/c++/4.8/bits/basic_string.tcc **** 	    __capacity = _S_max_size;
 602:/usr/include/c++/4.8/bits/basic_string.tcc **** 	  __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
 603:/usr/include/c++/4.8/bits/basic_string.tcc **** 	}
 604:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 605:/usr/include/c++/4.8/bits/basic_string.tcc ****       // NB: Might throw, but no worries about a leak, mate: _Rep()
 606:/usr/include/c++/4.8/bits/basic_string.tcc ****       // does not throw.
 607:/usr/include/c++/4.8/bits/basic_string.tcc ****       void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
 608:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Rep *__p = new (__place) _Rep;
 609:/usr/include/c++/4.8/bits/basic_string.tcc ****       __p->_M_capacity = __capacity;
 610:/usr/include/c++/4.8/bits/basic_string.tcc ****       // ABI compatibility - 3.4.x set in _S_create both
 611:/usr/include/c++/4.8/bits/basic_string.tcc ****       // _M_refcount and _M_length.  All callers of _S_create
 612:/usr/include/c++/4.8/bits/basic_string.tcc ****       // in basic_string.tcc then set just _M_length.
 613:/usr/include/c++/4.8/bits/basic_string.tcc ****       // In 4.0.x and later both _M_refcount and _M_length
 614:/usr/include/c++/4.8/bits/basic_string.tcc ****       // are initialized in the callers, unfortunately we can
 615:/usr/include/c++/4.8/bits/basic_string.tcc ****       // have 3.4.x compiled code with _S_create callers inlined
 616:/usr/include/c++/4.8/bits/basic_string.tcc ****       // calling 4.0.x+ _S_create.
 617:/usr/include/c++/4.8/bits/basic_string.tcc ****       __p->_M_set_sharable();
GAS LISTING /tmp/ccrG9BDx.s 			page 29


 618:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __p;
 619:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 620:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 621:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 622:/usr/include/c++/4.8/bits/basic_string.tcc ****     _CharT*
 623:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::_Rep::
 624:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_clone(const _Alloc& __alloc, size_type __res)
 625:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 626:/usr/include/c++/4.8/bits/basic_string.tcc ****       // Requested capacity of the clone.
 627:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __requested_cap = this->_M_length + __res;
 628:/usr/include/c++/4.8/bits/basic_string.tcc ****       _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
 629:/usr/include/c++/4.8/bits/basic_string.tcc **** 				  __alloc);
 630:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (this->_M_length)
 631:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
 632:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 633:/usr/include/c++/4.8/bits/basic_string.tcc ****       __r->_M_set_length_and_sharable(this->_M_length);
 634:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __r->_M_refdata();
 635:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 636:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 637:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 638:/usr/include/c++/4.8/bits/basic_string.tcc ****     void
 639:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 640:/usr/include/c++/4.8/bits/basic_string.tcc ****     resize(size_type __n, _CharT __c)
 641:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 642:/usr/include/c++/4.8/bits/basic_string.tcc ****       const size_type __size = this->size();
 643:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_check_length(__size, __n, "basic_string::resize");
 644:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__size < __n)
 645:/usr/include/c++/4.8/bits/basic_string.tcc **** 	this->append(__n - __size, __c);
 646:/usr/include/c++/4.8/bits/basic_string.tcc ****       else if (__n < __size)
 647:/usr/include/c++/4.8/bits/basic_string.tcc **** 	this->erase(__n);
 648:/usr/include/c++/4.8/bits/basic_string.tcc ****       // else nothing (in particular, avoid calling _M_mutate() unnecessarily.)
 649:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 650:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 651:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 652:/usr/include/c++/4.8/bits/basic_string.tcc ****     template<typename _InputIterator>
 653:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>&
 654:/usr/include/c++/4.8/bits/basic_string.tcc ****       basic_string<_CharT, _Traits, _Alloc>::
 655:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
 656:/usr/include/c++/4.8/bits/basic_string.tcc **** 			  _InputIterator __k2, __false_type)
 657:/usr/include/c++/4.8/bits/basic_string.tcc ****       {
 658:/usr/include/c++/4.8/bits/basic_string.tcc **** 	const basic_string __s(__k1, __k2);
 659:/usr/include/c++/4.8/bits/basic_string.tcc **** 	const size_type __n1 = __i2 - __i1;
 660:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
 661:/usr/include/c++/4.8/bits/basic_string.tcc **** 	return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
 662:/usr/include/c++/4.8/bits/basic_string.tcc **** 			       __s.size());
 663:/usr/include/c++/4.8/bits/basic_string.tcc ****       }
 664:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 665:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 666:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 667:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 668:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
 669:/usr/include/c++/4.8/bits/basic_string.tcc **** 		   _CharT __c)
 670:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 671:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
 672:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_mutate(__pos1, __n1, __n2);
 673:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n2)
 674:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_assign(_M_data() + __pos1, __n2, __c);
GAS LISTING /tmp/ccrG9BDx.s 			page 30


 675:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 676:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 677:/usr/include/c++/4.8/bits/basic_string.tcc **** 
 678:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 679:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>&
 680:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>::
 681:/usr/include/c++/4.8/bits/basic_string.tcc ****     _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
 682:/usr/include/c++/4.8/bits/basic_string.tcc **** 		    size_type __n2)
 683:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 684:/usr/include/c++/4.8/bits/basic_string.tcc ****       _M_mutate(__pos1, __n1, __n2);
 685:/usr/include/c++/4.8/bits/basic_string.tcc ****       if (__n2)
 686:/usr/include/c++/4.8/bits/basic_string.tcc **** 	_M_copy(_M_data() + __pos1, __s, __n2);
 687:/usr/include/c++/4.8/bits/basic_string.tcc ****       return *this;
 688:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 689:/usr/include/c++/4.8/bits/basic_string.tcc ****    
 690:/usr/include/c++/4.8/bits/basic_string.tcc ****   template<typename _CharT, typename _Traits, typename _Alloc>
 691:/usr/include/c++/4.8/bits/basic_string.tcc ****     basic_string<_CharT, _Traits, _Alloc>
 692:/usr/include/c++/4.8/bits/basic_string.tcc ****     operator+(const _CharT* __lhs,
 463              		.loc 5 692 0
 464              		.cfi_startproc
 465              		.cfi_personality 0x3,__gxx_personality_v0
 466              		.cfi_lsda 0x3,.LLSDA1317
 467              	.LVL46:
 468 0000 4155     		pushq	%r13
 469              		.cfi_def_cfa_offset 16
 470              		.cfi_offset 13, -16
 471 0002 4154     		pushq	%r12
 472              		.cfi_def_cfa_offset 24
 473              		.cfi_offset 12, -24
 474 0004 55       		pushq	%rbp
 475              		.cfi_def_cfa_offset 32
 476              		.cfi_offset 6, -32
 477 0005 53       		pushq	%rbx
 478              		.cfi_def_cfa_offset 40
 479              		.cfi_offset 3, -40
 480 0006 4883EC08 		subq	$8, %rsp
 481              		.cfi_def_cfa_offset 48
 482 000a 4889FB   		movq	%rdi, %rbx
 483 000d 4989F4   		movq	%rsi, %r12
 484 0010 4889D5   		movq	%rdx, %rbp
 485              	.LBB5:
 693:/usr/include/c++/4.8/bits/basic_string.tcc **** 	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
 694:/usr/include/c++/4.8/bits/basic_string.tcc ****     {
 695:/usr/include/c++/4.8/bits/basic_string.tcc ****       __glibcxx_requires_string(__lhs);
 696:/usr/include/c++/4.8/bits/basic_string.tcc ****       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
 697:/usr/include/c++/4.8/bits/basic_string.tcc ****       typedef typename __string_type::size_type	  __size_type;
 698:/usr/include/c++/4.8/bits/basic_string.tcc ****       const __size_type __len = _Traits::length(__lhs);
 486              		.loc 5 698 0
 487 0013 4889F7   		movq	%rsi, %rdi
 488              	.LVL47:
 489 0016 E8000000 		call	_ZNSt11char_traitsIcE6lengthEPKc
 489      00
 490              	.LVL48:
 491 001b 4989C5   		movq	%rax, %r13
 492              	.LVL49:
 699:/usr/include/c++/4.8/bits/basic_string.tcc ****       __string_type __str;
 493              		.loc 5 699 0
GAS LISTING /tmp/ccrG9BDx.s 			page 31


 494 001e 4889DF   		movq	%rbx, %rdi
 495 0021 E8000000 		call	_ZNSsC1Ev
 495      00
 496              	.LVL50:
 700:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str.reserve(__len + __rhs.size());
 497              		.loc 5 700 0
 498 0026 4889EF   		movq	%rbp, %rdi
 499 0029 E8000000 		call	_ZNKSs4sizeEv
 499      00
 500              	.LVL51:
 501 002e 4A8D3428 		leaq	(%rax,%r13), %rsi
 502 0032 4889DF   		movq	%rbx, %rdi
 503              	.LEHB8:
 504 0035 E8000000 		call	_ZNSs7reserveEm
 504      00
 505              	.LVL52:
 701:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str.append(__lhs, __len);
 506              		.loc 5 701 0
 507 003a 4C89EA   		movq	%r13, %rdx
 508 003d 4C89E6   		movq	%r12, %rsi
 509 0040 4889DF   		movq	%rbx, %rdi
 510 0043 E8000000 		call	_ZNSs6appendEPKcm
 510      00
 511              	.LVL53:
 702:/usr/include/c++/4.8/bits/basic_string.tcc ****       __str.append(__rhs);
 512              		.loc 5 702 0
 513 0048 4889EE   		movq	%rbp, %rsi
 514 004b 4889DF   		movq	%rbx, %rdi
 515 004e E8000000 		call	_ZNSs6appendERKSs
 515      00
 516              	.LEHE8:
 517              	.LVL54:
 518 0053 EB13     		jmp	.L37
 519              	.L36:
 520 0055 4889C5   		movq	%rax, %rbp
 521              	.LVL55:
 522 0058 4889DF   		movq	%rbx, %rdi
 523 005b E8000000 		call	_ZNSsD1Ev
 523      00
 524              	.LVL56:
 525 0060 4889EF   		movq	%rbp, %rdi
 526              	.LEHB9:
 527 0063 E8000000 		call	_Unwind_Resume
 527      00
 528              	.LEHE9:
 529              	.LVL57:
 530              	.L37:
 531              	.LBE5:
 703:/usr/include/c++/4.8/bits/basic_string.tcc ****       return __str;
 704:/usr/include/c++/4.8/bits/basic_string.tcc ****     }
 532              		.loc 5 704 0
 533 0068 4889D8   		movq	%rbx, %rax
 534 006b 4883C408 		addq	$8, %rsp
 535              		.cfi_def_cfa_offset 40
 536 006f 5B       		popq	%rbx
 537              		.cfi_def_cfa_offset 32
 538              	.LVL58:
GAS LISTING /tmp/ccrG9BDx.s 			page 32


 539 0070 5D       		popq	%rbp
 540              		.cfi_def_cfa_offset 24
 541              	.LVL59:
 542 0071 415C     		popq	%r12
 543              		.cfi_def_cfa_offset 16
 544              	.LVL60:
 545 0073 415D     		popq	%r13
 546              		.cfi_def_cfa_offset 8
 547              	.LVL61:
 548 0075 C3       		ret
 549              		.cfi_endproc
 550              	.LFE1317:
 551              		.section	.gcc_except_table
 552              	.LLSDA1317:
 553 0051 FF       		.byte	0xff
 554 0052 FF       		.byte	0xff
 555 0053 01       		.byte	0x1
 556 0054 08       		.uleb128 .LLSDACSE1317-.LLSDACSB1317
 557              	.LLSDACSB1317:
 558 0055 35       		.uleb128 .LEHB8-.LFB1317
 559 0056 1E       		.uleb128 .LEHE8-.LEHB8
 560 0057 55       		.uleb128 .L36-.LFB1317
 561 0058 00       		.uleb128 0
 562 0059 63       		.uleb128 .LEHB9-.LFB1317
 563 005a 05       		.uleb128 .LEHE9-.LEHB9
 564 005b 00       		.uleb128 0
 565 005c 00       		.uleb128 0
 566              	.LLSDACSE1317:
 567              		.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"axG",@progbits,_ZStplIcSt11
 569              		.section	.text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_,"axG",@progbits,_ZSt4moveIRSsEON
 570              		.weak	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
 572              	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_:
 573              	.LFB1319:
 574              		.file 6 "/usr/include/c++/4.8/bits/move.h"
   1:/usr/include/c++/4.8/bits/move.h **** // Move, forward and identity for C++0x + swap -*- C++ -*-
   2:/usr/include/c++/4.8/bits/move.h **** 
   3:/usr/include/c++/4.8/bits/move.h **** // Copyright (C) 2007-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/move.h **** //
   5:/usr/include/c++/4.8/bits/move.h **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/move.h **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/move.h **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/move.h **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/move.h **** // any later version.
  10:/usr/include/c++/4.8/bits/move.h **** 
  11:/usr/include/c++/4.8/bits/move.h **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/move.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/move.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/move.h **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/move.h **** 
  16:/usr/include/c++/4.8/bits/move.h **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/move.h **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/move.h **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/move.h **** 
  20:/usr/include/c++/4.8/bits/move.h **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/move.h **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/move.h **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  23:/usr/include/c++/4.8/bits/move.h **** // <http://www.gnu.org/licenses/>.
GAS LISTING /tmp/ccrG9BDx.s 			page 33


  24:/usr/include/c++/4.8/bits/move.h **** 
  25:/usr/include/c++/4.8/bits/move.h **** /** @file bits/move.h
  26:/usr/include/c++/4.8/bits/move.h ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/move.h ****  *  Do not attempt to use it directly. @headername{utility}
  28:/usr/include/c++/4.8/bits/move.h ****  */
  29:/usr/include/c++/4.8/bits/move.h **** 
  30:/usr/include/c++/4.8/bits/move.h **** #ifndef _MOVE_H
  31:/usr/include/c++/4.8/bits/move.h **** #define _MOVE_H 1
  32:/usr/include/c++/4.8/bits/move.h **** 
  33:/usr/include/c++/4.8/bits/move.h **** #include <bits/c++config.h>
  34:/usr/include/c++/4.8/bits/move.h **** #include <bits/concept_check.h>
  35:/usr/include/c++/4.8/bits/move.h **** 
  36:/usr/include/c++/4.8/bits/move.h **** namespace std _GLIBCXX_VISIBILITY(default)
  37:/usr/include/c++/4.8/bits/move.h **** {
  38:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  39:/usr/include/c++/4.8/bits/move.h **** 
  40:/usr/include/c++/4.8/bits/move.h ****   // Used, in C++03 mode too, by allocators, etc.
  41:/usr/include/c++/4.8/bits/move.h ****   /**
  42:/usr/include/c++/4.8/bits/move.h ****    *  @brief Same as C++11 std::addressof
  43:/usr/include/c++/4.8/bits/move.h ****    *  @ingroup utilities
  44:/usr/include/c++/4.8/bits/move.h ****    */
  45:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
  46:/usr/include/c++/4.8/bits/move.h ****     inline _Tp*
  47:/usr/include/c++/4.8/bits/move.h ****     __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT
  48:/usr/include/c++/4.8/bits/move.h ****     {
  49:/usr/include/c++/4.8/bits/move.h ****       return reinterpret_cast<_Tp*>
  50:/usr/include/c++/4.8/bits/move.h **** 	(&const_cast<char&>(reinterpret_cast<const volatile char&>(__r)));
  51:/usr/include/c++/4.8/bits/move.h ****     }
  52:/usr/include/c++/4.8/bits/move.h **** 
  53:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_END_NAMESPACE_VERSION
  54:/usr/include/c++/4.8/bits/move.h **** } // namespace
  55:/usr/include/c++/4.8/bits/move.h **** 
  56:/usr/include/c++/4.8/bits/move.h **** #if __cplusplus >= 201103L
  57:/usr/include/c++/4.8/bits/move.h **** #include <type_traits> // Brings in std::declval too.
  58:/usr/include/c++/4.8/bits/move.h **** 
  59:/usr/include/c++/4.8/bits/move.h **** namespace std _GLIBCXX_VISIBILITY(default)
  60:/usr/include/c++/4.8/bits/move.h **** {
  61:/usr/include/c++/4.8/bits/move.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  62:/usr/include/c++/4.8/bits/move.h **** 
  63:/usr/include/c++/4.8/bits/move.h ****   /**
  64:/usr/include/c++/4.8/bits/move.h ****    *  @addtogroup utilities
  65:/usr/include/c++/4.8/bits/move.h ****    *  @{
  66:/usr/include/c++/4.8/bits/move.h ****    */
  67:/usr/include/c++/4.8/bits/move.h **** 
  68:/usr/include/c++/4.8/bits/move.h ****   /**
  69:/usr/include/c++/4.8/bits/move.h ****    *  @brief  Forward an lvalue.
  70:/usr/include/c++/4.8/bits/move.h ****    *  @return The parameter cast to the specified type.
  71:/usr/include/c++/4.8/bits/move.h ****    *
  72:/usr/include/c++/4.8/bits/move.h ****    *  This function is used to implement "perfect forwarding".
  73:/usr/include/c++/4.8/bits/move.h ****    */
  74:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
  75:/usr/include/c++/4.8/bits/move.h ****     constexpr _Tp&&
  76:/usr/include/c++/4.8/bits/move.h ****     forward(typename std::remove_reference<_Tp>::type& __t) noexcept
  77:/usr/include/c++/4.8/bits/move.h ****     { return static_cast<_Tp&&>(__t); }
  78:/usr/include/c++/4.8/bits/move.h **** 
  79:/usr/include/c++/4.8/bits/move.h ****   /**
  80:/usr/include/c++/4.8/bits/move.h ****    *  @brief  Forward an rvalue.
GAS LISTING /tmp/ccrG9BDx.s 			page 34


  81:/usr/include/c++/4.8/bits/move.h ****    *  @return The parameter cast to the specified type.
  82:/usr/include/c++/4.8/bits/move.h ****    *
  83:/usr/include/c++/4.8/bits/move.h ****    *  This function is used to implement "perfect forwarding".
  84:/usr/include/c++/4.8/bits/move.h ****    */
  85:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
  86:/usr/include/c++/4.8/bits/move.h ****     constexpr _Tp&&
  87:/usr/include/c++/4.8/bits/move.h ****     forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
  88:/usr/include/c++/4.8/bits/move.h ****     {
  89:/usr/include/c++/4.8/bits/move.h ****       static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument"
  90:/usr/include/c++/4.8/bits/move.h **** 		    " substituting _Tp is an lvalue reference type");
  91:/usr/include/c++/4.8/bits/move.h ****       return static_cast<_Tp&&>(__t);
  92:/usr/include/c++/4.8/bits/move.h ****     }
  93:/usr/include/c++/4.8/bits/move.h **** 
  94:/usr/include/c++/4.8/bits/move.h ****   /**
  95:/usr/include/c++/4.8/bits/move.h ****    *  @brief  Convert a value to an rvalue.
  96:/usr/include/c++/4.8/bits/move.h ****    *  @param  __t  A thing of arbitrary type.
  97:/usr/include/c++/4.8/bits/move.h ****    *  @return The parameter cast to an rvalue-reference to allow moving it.
  98:/usr/include/c++/4.8/bits/move.h ****   */
  99:/usr/include/c++/4.8/bits/move.h ****   template<typename _Tp>
 100:/usr/include/c++/4.8/bits/move.h ****     constexpr typename std::remove_reference<_Tp>::type&&
 101:/usr/include/c++/4.8/bits/move.h ****     move(_Tp&& __t) noexcept
 575              		.loc 6 101 0
 576              		.cfi_startproc
 577              	.LVL62:
 578 0000 4889F8   		movq	%rdi, %rax
 102:/usr/include/c++/4.8/bits/move.h ****     { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
 579              		.loc 6 102 0
 580 0003 C3       		ret
 581              		.cfi_endproc
 582              	.LFE1319:
 584              		.section	.text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_,"axG",@progbits,_ZStplIcSt11c
 585              		.weak	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
 587              	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_:
 588              	.LFB1318:
 589              		.file 7 "/usr/include/c++/4.8/bits/basic_string.h"
   1:/usr/include/c++/4.8/bits/basic_string.h **** // Components for manipulating sequences of characters -*- C++ -*-
   2:/usr/include/c++/4.8/bits/basic_string.h **** 
   3:/usr/include/c++/4.8/bits/basic_string.h **** // Copyright (C) 1997-2013 Free Software Foundation, Inc.
   4:/usr/include/c++/4.8/bits/basic_string.h **** //
   5:/usr/include/c++/4.8/bits/basic_string.h **** // This file is part of the GNU ISO C++ Library.  This library is free
   6:/usr/include/c++/4.8/bits/basic_string.h **** // software; you can redistribute it and/or modify it under the
   7:/usr/include/c++/4.8/bits/basic_string.h **** // terms of the GNU General Public License as published by the
   8:/usr/include/c++/4.8/bits/basic_string.h **** // Free Software Foundation; either version 3, or (at your option)
   9:/usr/include/c++/4.8/bits/basic_string.h **** // any later version.
  10:/usr/include/c++/4.8/bits/basic_string.h **** 
  11:/usr/include/c++/4.8/bits/basic_string.h **** // This library is distributed in the hope that it will be useful,
  12:/usr/include/c++/4.8/bits/basic_string.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:/usr/include/c++/4.8/bits/basic_string.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14:/usr/include/c++/4.8/bits/basic_string.h **** // GNU General Public License for more details.
  15:/usr/include/c++/4.8/bits/basic_string.h **** 
  16:/usr/include/c++/4.8/bits/basic_string.h **** // Under Section 7 of GPL version 3, you are granted additional
  17:/usr/include/c++/4.8/bits/basic_string.h **** // permissions described in the GCC Runtime Library Exception, version
  18:/usr/include/c++/4.8/bits/basic_string.h **** // 3.1, as published by the Free Software Foundation.
  19:/usr/include/c++/4.8/bits/basic_string.h **** 
  20:/usr/include/c++/4.8/bits/basic_string.h **** // You should have received a copy of the GNU General Public License and
  21:/usr/include/c++/4.8/bits/basic_string.h **** // a copy of the GCC Runtime Library Exception along with this program;
  22:/usr/include/c++/4.8/bits/basic_string.h **** // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
GAS LISTING /tmp/ccrG9BDx.s 			page 35


  23:/usr/include/c++/4.8/bits/basic_string.h **** // <http://www.gnu.org/licenses/>.
  24:/usr/include/c++/4.8/bits/basic_string.h **** 
  25:/usr/include/c++/4.8/bits/basic_string.h **** /** @file bits/basic_string.h
  26:/usr/include/c++/4.8/bits/basic_string.h ****  *  This is an internal header file, included by other library headers.
  27:/usr/include/c++/4.8/bits/basic_string.h ****  *  Do not attempt to use it directly. @headername{string}
  28:/usr/include/c++/4.8/bits/basic_string.h ****  */
  29:/usr/include/c++/4.8/bits/basic_string.h **** 
  30:/usr/include/c++/4.8/bits/basic_string.h **** //
  31:/usr/include/c++/4.8/bits/basic_string.h **** // ISO C++ 14882: 21 Strings library
  32:/usr/include/c++/4.8/bits/basic_string.h **** //
  33:/usr/include/c++/4.8/bits/basic_string.h **** 
  34:/usr/include/c++/4.8/bits/basic_string.h **** #ifndef _BASIC_STRING_H
  35:/usr/include/c++/4.8/bits/basic_string.h **** #define _BASIC_STRING_H 1
  36:/usr/include/c++/4.8/bits/basic_string.h **** 
  37:/usr/include/c++/4.8/bits/basic_string.h **** #pragma GCC system_header
  38:/usr/include/c++/4.8/bits/basic_string.h **** 
  39:/usr/include/c++/4.8/bits/basic_string.h **** #include <ext/atomicity.h>
  40:/usr/include/c++/4.8/bits/basic_string.h **** #include <debug/debug.h>
  41:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
  42:/usr/include/c++/4.8/bits/basic_string.h **** #include <initializer_list>
  43:/usr/include/c++/4.8/bits/basic_string.h **** #endif
  44:/usr/include/c++/4.8/bits/basic_string.h **** 
  45:/usr/include/c++/4.8/bits/basic_string.h **** namespace std _GLIBCXX_VISIBILITY(default)
  46:/usr/include/c++/4.8/bits/basic_string.h **** {
  47:/usr/include/c++/4.8/bits/basic_string.h **** _GLIBCXX_BEGIN_NAMESPACE_VERSION
  48:/usr/include/c++/4.8/bits/basic_string.h **** 
  49:/usr/include/c++/4.8/bits/basic_string.h ****   /**
  50:/usr/include/c++/4.8/bits/basic_string.h ****    *  @class basic_string basic_string.h <string>
  51:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Managing sequences of characters and character-like objects.
  52:/usr/include/c++/4.8/bits/basic_string.h ****    *
  53:/usr/include/c++/4.8/bits/basic_string.h ****    *  @ingroup strings
  54:/usr/include/c++/4.8/bits/basic_string.h ****    *  @ingroup sequences
  55:/usr/include/c++/4.8/bits/basic_string.h ****    *
  56:/usr/include/c++/4.8/bits/basic_string.h ****    *  @tparam _CharT  Type of character
  57:/usr/include/c++/4.8/bits/basic_string.h ****    *  @tparam _Traits  Traits for character type, defaults to
  58:/usr/include/c++/4.8/bits/basic_string.h ****    *                   char_traits<_CharT>.
  59:/usr/include/c++/4.8/bits/basic_string.h ****    *  @tparam _Alloc  Allocator type, defaults to allocator<_CharT>.
  60:/usr/include/c++/4.8/bits/basic_string.h ****    *
  61:/usr/include/c++/4.8/bits/basic_string.h ****    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
  62:/usr/include/c++/4.8/bits/basic_string.h ****    *  <a href="tables.html#66">reversible container</a>, and a
  63:/usr/include/c++/4.8/bits/basic_string.h ****    *  <a href="tables.html#67">sequence</a>.  Of the
  64:/usr/include/c++/4.8/bits/basic_string.h ****    *  <a href="tables.html#68">optional sequence requirements</a>, only
  65:/usr/include/c++/4.8/bits/basic_string.h ****    *  @c push_back, @c at, and @c %array access are supported.
  66:/usr/include/c++/4.8/bits/basic_string.h ****    *
  67:/usr/include/c++/4.8/bits/basic_string.h ****    *  @doctodo
  68:/usr/include/c++/4.8/bits/basic_string.h ****    *
  69:/usr/include/c++/4.8/bits/basic_string.h ****    *
  70:/usr/include/c++/4.8/bits/basic_string.h ****    *  Documentation?  What's that?
  71:/usr/include/c++/4.8/bits/basic_string.h ****    *  Nathan Myers <ncm@cantrip.org>.
  72:/usr/include/c++/4.8/bits/basic_string.h ****    *
  73:/usr/include/c++/4.8/bits/basic_string.h ****    *  A string looks like this:
  74:/usr/include/c++/4.8/bits/basic_string.h ****    *
  75:/usr/include/c++/4.8/bits/basic_string.h ****    *  @code
  76:/usr/include/c++/4.8/bits/basic_string.h ****    *                                        [_Rep]
  77:/usr/include/c++/4.8/bits/basic_string.h ****    *                                        _M_length
  78:/usr/include/c++/4.8/bits/basic_string.h ****    *   [basic_string<char_type>]            _M_capacity
  79:/usr/include/c++/4.8/bits/basic_string.h ****    *   _M_dataplus                          _M_refcount
GAS LISTING /tmp/ccrG9BDx.s 			page 36


  80:/usr/include/c++/4.8/bits/basic_string.h ****    *   _M_p ---------------->               unnamed array of char_type
  81:/usr/include/c++/4.8/bits/basic_string.h ****    *  @endcode
  82:/usr/include/c++/4.8/bits/basic_string.h ****    *
  83:/usr/include/c++/4.8/bits/basic_string.h ****    *  Where the _M_p points to the first character in the string, and
  84:/usr/include/c++/4.8/bits/basic_string.h ****    *  you cast it to a pointer-to-_Rep and subtract 1 to get a
  85:/usr/include/c++/4.8/bits/basic_string.h ****    *  pointer to the header.
  86:/usr/include/c++/4.8/bits/basic_string.h ****    *
  87:/usr/include/c++/4.8/bits/basic_string.h ****    *  This approach has the enormous advantage that a string object
  88:/usr/include/c++/4.8/bits/basic_string.h ****    *  requires only one allocation.  All the ugliness is confined
  89:/usr/include/c++/4.8/bits/basic_string.h ****    *  within a single %pair of inline functions, which each compile to
  90:/usr/include/c++/4.8/bits/basic_string.h ****    *  a single @a add instruction: _Rep::_M_data(), and
  91:/usr/include/c++/4.8/bits/basic_string.h ****    *  string::_M_rep(); and the allocation function which gets a
  92:/usr/include/c++/4.8/bits/basic_string.h ****    *  block of raw bytes and with room enough and constructs a _Rep
  93:/usr/include/c++/4.8/bits/basic_string.h ****    *  object at the front.
  94:/usr/include/c++/4.8/bits/basic_string.h ****    *
  95:/usr/include/c++/4.8/bits/basic_string.h ****    *  The reason you want _M_data pointing to the character %array and
  96:/usr/include/c++/4.8/bits/basic_string.h ****    *  not the _Rep is so that the debugger can see the string
  97:/usr/include/c++/4.8/bits/basic_string.h ****    *  contents. (Probably we should add a non-inline member to get
  98:/usr/include/c++/4.8/bits/basic_string.h ****    *  the _Rep for the debugger to use, so users can check the actual
  99:/usr/include/c++/4.8/bits/basic_string.h ****    *  string length.)
 100:/usr/include/c++/4.8/bits/basic_string.h ****    *
 101:/usr/include/c++/4.8/bits/basic_string.h ****    *  Note that the _Rep object is a POD so that you can have a
 102:/usr/include/c++/4.8/bits/basic_string.h ****    *  static <em>empty string</em> _Rep object already @a constructed before
 103:/usr/include/c++/4.8/bits/basic_string.h ****    *  static constructors have run.  The reference-count encoding is
 104:/usr/include/c++/4.8/bits/basic_string.h ****    *  chosen so that a 0 indicates one reference, so you never try to
 105:/usr/include/c++/4.8/bits/basic_string.h ****    *  destroy the empty-string _Rep object.
 106:/usr/include/c++/4.8/bits/basic_string.h ****    *
 107:/usr/include/c++/4.8/bits/basic_string.h ****    *  All but the last paragraph is considered pretty conventional
 108:/usr/include/c++/4.8/bits/basic_string.h ****    *  for a C++ string implementation.
 109:/usr/include/c++/4.8/bits/basic_string.h ****   */
 110:/usr/include/c++/4.8/bits/basic_string.h ****   // 21.3  Template class basic_string
 111:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
 112:/usr/include/c++/4.8/bits/basic_string.h ****     class basic_string
 113:/usr/include/c++/4.8/bits/basic_string.h ****     {
 114:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
 115:/usr/include/c++/4.8/bits/basic_string.h **** 
 116:/usr/include/c++/4.8/bits/basic_string.h ****       // Types:
 117:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 118:/usr/include/c++/4.8/bits/basic_string.h ****       typedef _Traits					    traits_type;
 119:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _Traits::char_type		    value_type;
 120:/usr/include/c++/4.8/bits/basic_string.h ****       typedef _Alloc					    allocator_type;
 121:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::size_type	    size_type;
 122:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::difference_type   difference_type;
 123:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::reference	    reference;
 124:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::const_reference   const_reference;
 125:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::pointer	    pointer;
 126:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename _CharT_alloc_type::const_pointer	    const_pointer;
 127:/usr/include/c++/4.8/bits/basic_string.h ****       typedef __gnu_cxx::__normal_iterator<pointer, basic_string>  iterator;
 128:/usr/include/c++/4.8/bits/basic_string.h ****       typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
 129:/usr/include/c++/4.8/bits/basic_string.h ****                                                             const_iterator;
 130:/usr/include/c++/4.8/bits/basic_string.h ****       typedef std::reverse_iterator<const_iterator>	const_reverse_iterator;
 131:/usr/include/c++/4.8/bits/basic_string.h ****       typedef std::reverse_iterator<iterator>		    reverse_iterator;
 132:/usr/include/c++/4.8/bits/basic_string.h **** 
 133:/usr/include/c++/4.8/bits/basic_string.h ****     private:
 134:/usr/include/c++/4.8/bits/basic_string.h ****       // _Rep: string representation
 135:/usr/include/c++/4.8/bits/basic_string.h ****       //   Invariants:
 136:/usr/include/c++/4.8/bits/basic_string.h ****       //   1. String really contains _M_length + 1 characters: due to 21.3.4
GAS LISTING /tmp/ccrG9BDx.s 			page 37


 137:/usr/include/c++/4.8/bits/basic_string.h ****       //      must be kept null-terminated.
 138:/usr/include/c++/4.8/bits/basic_string.h ****       //   2. _M_capacity >= _M_length
 139:/usr/include/c++/4.8/bits/basic_string.h ****       //      Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).
 140:/usr/include/c++/4.8/bits/basic_string.h ****       //   3. _M_refcount has three states:
 141:/usr/include/c++/4.8/bits/basic_string.h ****       //      -1: leaked, one reference, no ref-copies allowed, non-const.
 142:/usr/include/c++/4.8/bits/basic_string.h ****       //       0: one reference, non-const.
 143:/usr/include/c++/4.8/bits/basic_string.h ****       //     n>0: n + 1 references, operations require a lock, const.
 144:/usr/include/c++/4.8/bits/basic_string.h ****       //   4. All fields==0 is an empty string, given the extra storage
 145:/usr/include/c++/4.8/bits/basic_string.h ****       //      beyond-the-end for a null terminator; thus, the shared
 146:/usr/include/c++/4.8/bits/basic_string.h ****       //      empty string representation needs no constructor.
 147:/usr/include/c++/4.8/bits/basic_string.h **** 
 148:/usr/include/c++/4.8/bits/basic_string.h ****       struct _Rep_base
 149:/usr/include/c++/4.8/bits/basic_string.h ****       {
 150:/usr/include/c++/4.8/bits/basic_string.h **** 	size_type		_M_length;
 151:/usr/include/c++/4.8/bits/basic_string.h **** 	size_type		_M_capacity;
 152:/usr/include/c++/4.8/bits/basic_string.h **** 	_Atomic_word		_M_refcount;
 153:/usr/include/c++/4.8/bits/basic_string.h ****       };
 154:/usr/include/c++/4.8/bits/basic_string.h **** 
 155:/usr/include/c++/4.8/bits/basic_string.h ****       struct _Rep : _Rep_base
 156:/usr/include/c++/4.8/bits/basic_string.h ****       {
 157:/usr/include/c++/4.8/bits/basic_string.h **** 	// Types:
 158:/usr/include/c++/4.8/bits/basic_string.h **** 	typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
 159:/usr/include/c++/4.8/bits/basic_string.h **** 
 160:/usr/include/c++/4.8/bits/basic_string.h **** 	// (Public) Data members:
 161:/usr/include/c++/4.8/bits/basic_string.h **** 
 162:/usr/include/c++/4.8/bits/basic_string.h **** 	// The maximum number of individual char_type elements of an
 163:/usr/include/c++/4.8/bits/basic_string.h **** 	// individual string is determined by _S_max_size. This is the
 164:/usr/include/c++/4.8/bits/basic_string.h **** 	// value that will be returned by max_size().  (Whereas npos
 165:/usr/include/c++/4.8/bits/basic_string.h **** 	// is the maximum number of bytes the allocator can allocate.)
 166:/usr/include/c++/4.8/bits/basic_string.h **** 	// If one was to divvy up the theoretical largest size string,
 167:/usr/include/c++/4.8/bits/basic_string.h **** 	// with a terminating character and m _CharT elements, it'd
 168:/usr/include/c++/4.8/bits/basic_string.h **** 	// look like this:
 169:/usr/include/c++/4.8/bits/basic_string.h **** 	// npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
 170:/usr/include/c++/4.8/bits/basic_string.h **** 	// Solving for m:
 171:/usr/include/c++/4.8/bits/basic_string.h **** 	// m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1
 172:/usr/include/c++/4.8/bits/basic_string.h **** 	// In addition, this implementation quarters this amount.
 173:/usr/include/c++/4.8/bits/basic_string.h **** 	static const size_type	_S_max_size;
 174:/usr/include/c++/4.8/bits/basic_string.h **** 	static const _CharT	_S_terminal;
 175:/usr/include/c++/4.8/bits/basic_string.h **** 
 176:/usr/include/c++/4.8/bits/basic_string.h **** 	// The following storage is init'd to 0 by the linker, resulting
 177:/usr/include/c++/4.8/bits/basic_string.h ****         // (carefully) in an empty string with one reference.
 178:/usr/include/c++/4.8/bits/basic_string.h ****         static size_type _S_empty_rep_storage[];
 179:/usr/include/c++/4.8/bits/basic_string.h **** 
 180:/usr/include/c++/4.8/bits/basic_string.h ****         static _Rep&
 181:/usr/include/c++/4.8/bits/basic_string.h ****         _S_empty_rep()
 182:/usr/include/c++/4.8/bits/basic_string.h ****         { 
 183:/usr/include/c++/4.8/bits/basic_string.h **** 	  // NB: Mild hack to avoid strict-aliasing warnings.  Note that
 184:/usr/include/c++/4.8/bits/basic_string.h **** 	  // _S_empty_rep_storage is never modified and the punning should
 185:/usr/include/c++/4.8/bits/basic_string.h **** 	  // be reasonably safe in this case.
 186:/usr/include/c++/4.8/bits/basic_string.h **** 	  void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
 187:/usr/include/c++/4.8/bits/basic_string.h **** 	  return *reinterpret_cast<_Rep*>(__p);
 188:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 189:/usr/include/c++/4.8/bits/basic_string.h **** 
 190:/usr/include/c++/4.8/bits/basic_string.h ****         bool
 191:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_is_leaked() const
 192:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->_M_refcount < 0; }
 193:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 38


 194:/usr/include/c++/4.8/bits/basic_string.h ****         bool
 195:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_is_shared() const
 196:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->_M_refcount > 0; }
 197:/usr/include/c++/4.8/bits/basic_string.h **** 
 198:/usr/include/c++/4.8/bits/basic_string.h ****         void
 199:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_set_leaked()
 200:/usr/include/c++/4.8/bits/basic_string.h ****         { this->_M_refcount = -1; }
 201:/usr/include/c++/4.8/bits/basic_string.h **** 
 202:/usr/include/c++/4.8/bits/basic_string.h ****         void
 203:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_set_sharable()
 204:/usr/include/c++/4.8/bits/basic_string.h ****         { this->_M_refcount = 0; }
 205:/usr/include/c++/4.8/bits/basic_string.h **** 
 206:/usr/include/c++/4.8/bits/basic_string.h **** 	void
 207:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_set_length_and_sharable(size_type __n)
 208:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 209:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 210:/usr/include/c++/4.8/bits/basic_string.h **** 	  if (__builtin_expect(this != &_S_empty_rep(), false))
 211:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 212:/usr/include/c++/4.8/bits/basic_string.h **** 	    {
 213:/usr/include/c++/4.8/bits/basic_string.h **** 	      this->_M_set_sharable();  // One reference.
 214:/usr/include/c++/4.8/bits/basic_string.h **** 	      this->_M_length = __n;
 215:/usr/include/c++/4.8/bits/basic_string.h **** 	      traits_type::assign(this->_M_refdata()[__n], _S_terminal);
 216:/usr/include/c++/4.8/bits/basic_string.h **** 	      // grrr. (per 21.3.4)
 217:/usr/include/c++/4.8/bits/basic_string.h **** 	      // You cannot leave those LWG people alone for a second.
 218:/usr/include/c++/4.8/bits/basic_string.h **** 	    }
 219:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 220:/usr/include/c++/4.8/bits/basic_string.h **** 
 221:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 222:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_refdata() throw()
 223:/usr/include/c++/4.8/bits/basic_string.h **** 	{ return reinterpret_cast<_CharT*>(this + 1); }
 224:/usr/include/c++/4.8/bits/basic_string.h **** 
 225:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 226:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
 227:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 228:/usr/include/c++/4.8/bits/basic_string.h **** 	  return (!_M_is_leaked() && __alloc1 == __alloc2)
 229:/usr/include/c++/4.8/bits/basic_string.h **** 	          ? _M_refcopy() : _M_clone(__alloc1);
 230:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 231:/usr/include/c++/4.8/bits/basic_string.h **** 
 232:/usr/include/c++/4.8/bits/basic_string.h **** 	// Create & Destroy
 233:/usr/include/c++/4.8/bits/basic_string.h **** 	static _Rep*
 234:/usr/include/c++/4.8/bits/basic_string.h **** 	_S_create(size_type, size_type, const _Alloc&);
 235:/usr/include/c++/4.8/bits/basic_string.h **** 
 236:/usr/include/c++/4.8/bits/basic_string.h **** 	void
 237:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_dispose(const _Alloc& __a)
 238:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 239:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 240:/usr/include/c++/4.8/bits/basic_string.h **** 	  if (__builtin_expect(this != &_S_empty_rep(), false))
 241:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 242:/usr/include/c++/4.8/bits/basic_string.h **** 	    {
 243:/usr/include/c++/4.8/bits/basic_string.h **** 	      // Be race-detector-friendly.  For more info see bits/c++config.
 244:/usr/include/c++/4.8/bits/basic_string.h **** 	      _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount);
 245:/usr/include/c++/4.8/bits/basic_string.h **** 	      if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
 246:/usr/include/c++/4.8/bits/basic_string.h **** 							 -1) <= 0)
 247:/usr/include/c++/4.8/bits/basic_string.h **** 		{
 248:/usr/include/c++/4.8/bits/basic_string.h **** 		  _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount);
 249:/usr/include/c++/4.8/bits/basic_string.h **** 		  _M_destroy(__a);
 250:/usr/include/c++/4.8/bits/basic_string.h **** 		}
GAS LISTING /tmp/ccrG9BDx.s 			page 39


 251:/usr/include/c++/4.8/bits/basic_string.h **** 	    }
 252:/usr/include/c++/4.8/bits/basic_string.h **** 	}  // XXX MT
 253:/usr/include/c++/4.8/bits/basic_string.h **** 
 254:/usr/include/c++/4.8/bits/basic_string.h **** 	void
 255:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_destroy(const _Alloc&) throw();
 256:/usr/include/c++/4.8/bits/basic_string.h **** 
 257:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 258:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_refcopy() throw()
 259:/usr/include/c++/4.8/bits/basic_string.h **** 	{
 260:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 261:/usr/include/c++/4.8/bits/basic_string.h **** 	  if (__builtin_expect(this != &_S_empty_rep(), false))
 262:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 263:/usr/include/c++/4.8/bits/basic_string.h ****             __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
 264:/usr/include/c++/4.8/bits/basic_string.h **** 	  return _M_refdata();
 265:/usr/include/c++/4.8/bits/basic_string.h **** 	}  // XXX MT
 266:/usr/include/c++/4.8/bits/basic_string.h **** 
 267:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT*
 268:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_clone(const _Alloc&, size_type __res = 0);
 269:/usr/include/c++/4.8/bits/basic_string.h ****       };
 270:/usr/include/c++/4.8/bits/basic_string.h **** 
 271:/usr/include/c++/4.8/bits/basic_string.h ****       // Use empty-base optimization: http://www.cantrip.org/emptyopt.html
 272:/usr/include/c++/4.8/bits/basic_string.h ****       struct _Alloc_hider : _Alloc
 273:/usr/include/c++/4.8/bits/basic_string.h ****       {
 274:/usr/include/c++/4.8/bits/basic_string.h **** 	_Alloc_hider(_CharT* __dat, const _Alloc& __a)
 275:/usr/include/c++/4.8/bits/basic_string.h **** 	: _Alloc(__a), _M_p(__dat) { }
 276:/usr/include/c++/4.8/bits/basic_string.h **** 
 277:/usr/include/c++/4.8/bits/basic_string.h **** 	_CharT* _M_p; // The actual data.
 278:/usr/include/c++/4.8/bits/basic_string.h ****       };
 279:/usr/include/c++/4.8/bits/basic_string.h **** 
 280:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 281:/usr/include/c++/4.8/bits/basic_string.h ****       // Data Members (public):
 282:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: This is an unsigned type, and thus represents the maximum
 283:/usr/include/c++/4.8/bits/basic_string.h ****       // size that the allocator can hold.
 284:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Value returned by various member functions when they fail.
 285:/usr/include/c++/4.8/bits/basic_string.h ****       static const size_type	npos = static_cast<size_type>(-1);
 286:/usr/include/c++/4.8/bits/basic_string.h **** 
 287:/usr/include/c++/4.8/bits/basic_string.h ****     private:
 288:/usr/include/c++/4.8/bits/basic_string.h ****       // Data Members (private):
 289:/usr/include/c++/4.8/bits/basic_string.h ****       mutable _Alloc_hider	_M_dataplus;
 290:/usr/include/c++/4.8/bits/basic_string.h **** 
 291:/usr/include/c++/4.8/bits/basic_string.h ****       _CharT*
 292:/usr/include/c++/4.8/bits/basic_string.h ****       _M_data() const
 293:/usr/include/c++/4.8/bits/basic_string.h ****       { return  _M_dataplus._M_p; }
 294:/usr/include/c++/4.8/bits/basic_string.h **** 
 295:/usr/include/c++/4.8/bits/basic_string.h ****       _CharT*
 296:/usr/include/c++/4.8/bits/basic_string.h ****       _M_data(_CharT* __p)
 297:/usr/include/c++/4.8/bits/basic_string.h ****       { return (_M_dataplus._M_p = __p); }
 298:/usr/include/c++/4.8/bits/basic_string.h **** 
 299:/usr/include/c++/4.8/bits/basic_string.h ****       _Rep*
 300:/usr/include/c++/4.8/bits/basic_string.h ****       _M_rep() const
 301:/usr/include/c++/4.8/bits/basic_string.h ****       { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
 302:/usr/include/c++/4.8/bits/basic_string.h **** 
 303:/usr/include/c++/4.8/bits/basic_string.h ****       // For the internal use we have functions similar to `begin'/`end'
 304:/usr/include/c++/4.8/bits/basic_string.h ****       // but they do not call _M_leak.
 305:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 306:/usr/include/c++/4.8/bits/basic_string.h ****       _M_ibegin() const
 307:/usr/include/c++/4.8/bits/basic_string.h ****       { return iterator(_M_data()); }
GAS LISTING /tmp/ccrG9BDx.s 			page 40


 308:/usr/include/c++/4.8/bits/basic_string.h **** 
 309:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 310:/usr/include/c++/4.8/bits/basic_string.h ****       _M_iend() const
 311:/usr/include/c++/4.8/bits/basic_string.h ****       { return iterator(_M_data() + this->size()); }
 312:/usr/include/c++/4.8/bits/basic_string.h **** 
 313:/usr/include/c++/4.8/bits/basic_string.h ****       void
 314:/usr/include/c++/4.8/bits/basic_string.h ****       _M_leak()    // for use in begin() & non-const op[]
 315:/usr/include/c++/4.8/bits/basic_string.h ****       {
 316:/usr/include/c++/4.8/bits/basic_string.h **** 	if (!_M_rep()->_M_is_leaked())
 317:/usr/include/c++/4.8/bits/basic_string.h **** 	  _M_leak_hard();
 318:/usr/include/c++/4.8/bits/basic_string.h ****       }
 319:/usr/include/c++/4.8/bits/basic_string.h **** 
 320:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 321:/usr/include/c++/4.8/bits/basic_string.h ****       _M_check(size_type __pos, const char* __s) const
 322:/usr/include/c++/4.8/bits/basic_string.h ****       {
 323:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__pos > this->size())
 324:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_out_of_range(__N(__s));
 325:/usr/include/c++/4.8/bits/basic_string.h **** 	return __pos;
 326:/usr/include/c++/4.8/bits/basic_string.h ****       }
 327:/usr/include/c++/4.8/bits/basic_string.h **** 
 328:/usr/include/c++/4.8/bits/basic_string.h ****       void
 329:/usr/include/c++/4.8/bits/basic_string.h ****       _M_check_length(size_type __n1, size_type __n2, const char* __s) const
 330:/usr/include/c++/4.8/bits/basic_string.h ****       {
 331:/usr/include/c++/4.8/bits/basic_string.h **** 	if (this->max_size() - (this->size() - __n1) < __n2)
 332:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_length_error(__N(__s));
 333:/usr/include/c++/4.8/bits/basic_string.h ****       }
 334:/usr/include/c++/4.8/bits/basic_string.h **** 
 335:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: _M_limit doesn't check for a bad __pos value.
 336:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 337:/usr/include/c++/4.8/bits/basic_string.h ****       _M_limit(size_type __pos, size_type __off) const
 338:/usr/include/c++/4.8/bits/basic_string.h ****       {
 339:/usr/include/c++/4.8/bits/basic_string.h **** 	const bool __testoff =  __off < this->size() - __pos;
 340:/usr/include/c++/4.8/bits/basic_string.h **** 	return __testoff ? __off : this->size() - __pos;
 341:/usr/include/c++/4.8/bits/basic_string.h ****       }
 342:/usr/include/c++/4.8/bits/basic_string.h **** 
 343:/usr/include/c++/4.8/bits/basic_string.h ****       // True if _Rep and source do not overlap.
 344:/usr/include/c++/4.8/bits/basic_string.h ****       bool
 345:/usr/include/c++/4.8/bits/basic_string.h ****       _M_disjunct(const _CharT* __s) const
 346:/usr/include/c++/4.8/bits/basic_string.h ****       {
 347:/usr/include/c++/4.8/bits/basic_string.h **** 	return (less<const _CharT*>()(__s, _M_data())
 348:/usr/include/c++/4.8/bits/basic_string.h **** 		|| less<const _CharT*>()(_M_data() + this->size(), __s));
 349:/usr/include/c++/4.8/bits/basic_string.h ****       }
 350:/usr/include/c++/4.8/bits/basic_string.h **** 
 351:/usr/include/c++/4.8/bits/basic_string.h ****       // When __n = 1 way faster than the general multichar
 352:/usr/include/c++/4.8/bits/basic_string.h ****       // traits_type::copy/move/assign.
 353:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 354:/usr/include/c++/4.8/bits/basic_string.h ****       _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
 355:/usr/include/c++/4.8/bits/basic_string.h ****       {
 356:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n == 1)
 357:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(*__d, *__s);
 358:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 359:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::copy(__d, __s, __n);
 360:/usr/include/c++/4.8/bits/basic_string.h ****       }
 361:/usr/include/c++/4.8/bits/basic_string.h **** 
 362:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 363:/usr/include/c++/4.8/bits/basic_string.h ****       _M_move(_CharT* __d, const _CharT* __s, size_type __n)
 364:/usr/include/c++/4.8/bits/basic_string.h ****       {
GAS LISTING /tmp/ccrG9BDx.s 			page 41


 365:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n == 1)
 366:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(*__d, *__s);
 367:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 368:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::move(__d, __s, __n);	  
 369:/usr/include/c++/4.8/bits/basic_string.h ****       }
 370:/usr/include/c++/4.8/bits/basic_string.h **** 
 371:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 372:/usr/include/c++/4.8/bits/basic_string.h ****       _M_assign(_CharT* __d, size_type __n, _CharT __c)
 373:/usr/include/c++/4.8/bits/basic_string.h ****       {
 374:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n == 1)
 375:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(*__d, __c);
 376:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 377:/usr/include/c++/4.8/bits/basic_string.h **** 	  traits_type::assign(__d, __n, __c);	  
 378:/usr/include/c++/4.8/bits/basic_string.h ****       }
 379:/usr/include/c++/4.8/bits/basic_string.h **** 
 380:/usr/include/c++/4.8/bits/basic_string.h ****       // _S_copy_chars is a separate template to permit specialization
 381:/usr/include/c++/4.8/bits/basic_string.h ****       // to optimize for the common case of pointers as iterators.
 382:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _Iterator>
 383:/usr/include/c++/4.8/bits/basic_string.h ****         static void
 384:/usr/include/c++/4.8/bits/basic_string.h ****         _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
 385:/usr/include/c++/4.8/bits/basic_string.h ****         {
 386:/usr/include/c++/4.8/bits/basic_string.h **** 	  for (; __k1 != __k2; ++__k1, ++__p)
 387:/usr/include/c++/4.8/bits/basic_string.h **** 	    traits_type::assign(*__p, *__k1); // These types are off.
 388:/usr/include/c++/4.8/bits/basic_string.h **** 	}
 389:/usr/include/c++/4.8/bits/basic_string.h **** 
 390:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 391:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
 392:/usr/include/c++/4.8/bits/basic_string.h ****       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
 393:/usr/include/c++/4.8/bits/basic_string.h **** 
 394:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 395:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
 396:/usr/include/c++/4.8/bits/basic_string.h ****       { _S_copy_chars(__p, __k1.base(), __k2.base()); }
 397:/usr/include/c++/4.8/bits/basic_string.h **** 
 398:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 399:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
 400:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_copy(__p, __k1, __k2 - __k1); }
 401:/usr/include/c++/4.8/bits/basic_string.h **** 
 402:/usr/include/c++/4.8/bits/basic_string.h ****       static void
 403:/usr/include/c++/4.8/bits/basic_string.h ****       _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
 404:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_copy(__p, __k1, __k2 - __k1); }
 405:/usr/include/c++/4.8/bits/basic_string.h **** 
 406:/usr/include/c++/4.8/bits/basic_string.h ****       static int
 407:/usr/include/c++/4.8/bits/basic_string.h ****       _S_compare(size_type __n1, size_type __n2)
 408:/usr/include/c++/4.8/bits/basic_string.h ****       {
 409:/usr/include/c++/4.8/bits/basic_string.h **** 	const difference_type __d = difference_type(__n1 - __n2);
 410:/usr/include/c++/4.8/bits/basic_string.h **** 
 411:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__d > __gnu_cxx::__numeric_traits<int>::__max)
 412:/usr/include/c++/4.8/bits/basic_string.h **** 	  return __gnu_cxx::__numeric_traits<int>::__max;
 413:/usr/include/c++/4.8/bits/basic_string.h **** 	else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
 414:/usr/include/c++/4.8/bits/basic_string.h **** 	  return __gnu_cxx::__numeric_traits<int>::__min;
 415:/usr/include/c++/4.8/bits/basic_string.h **** 	else
 416:/usr/include/c++/4.8/bits/basic_string.h **** 	  return int(__d);
 417:/usr/include/c++/4.8/bits/basic_string.h ****       }
 418:/usr/include/c++/4.8/bits/basic_string.h **** 
 419:/usr/include/c++/4.8/bits/basic_string.h ****       void
 420:/usr/include/c++/4.8/bits/basic_string.h ****       _M_mutate(size_type __pos, size_type __len1, size_type __len2);
 421:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 42


 422:/usr/include/c++/4.8/bits/basic_string.h ****       void
 423:/usr/include/c++/4.8/bits/basic_string.h ****       _M_leak_hard();
 424:/usr/include/c++/4.8/bits/basic_string.h **** 
 425:/usr/include/c++/4.8/bits/basic_string.h ****       static _Rep&
 426:/usr/include/c++/4.8/bits/basic_string.h ****       _S_empty_rep()
 427:/usr/include/c++/4.8/bits/basic_string.h ****       { return _Rep::_S_empty_rep(); }
 428:/usr/include/c++/4.8/bits/basic_string.h **** 
 429:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 430:/usr/include/c++/4.8/bits/basic_string.h ****       // Construct/copy/destroy:
 431:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: We overload ctors in some cases instead of using default
 432:/usr/include/c++/4.8/bits/basic_string.h ****       // arguments, per 17.4.4.4 para. 2 item 2.
 433:/usr/include/c++/4.8/bits/basic_string.h **** 
 434:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 435:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Default constructor creates an empty string.
 436:/usr/include/c++/4.8/bits/basic_string.h ****        */
 437:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string()
 438:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 439:/usr/include/c++/4.8/bits/basic_string.h ****       : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
 440:/usr/include/c++/4.8/bits/basic_string.h **** #else
 441:/usr/include/c++/4.8/bits/basic_string.h ****       : _M_dataplus(_S_construct(size_type(), _CharT(), _Alloc()), _Alloc()){ }
 442:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 443:/usr/include/c++/4.8/bits/basic_string.h **** 
 444:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 445:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct an empty string using allocator @a a.
 446:/usr/include/c++/4.8/bits/basic_string.h ****        */
 447:/usr/include/c++/4.8/bits/basic_string.h ****       explicit
 448:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const _Alloc& __a);
 449:/usr/include/c++/4.8/bits/basic_string.h **** 
 450:/usr/include/c++/4.8/bits/basic_string.h ****       // NB: per LWG issue 42, semantics different from IS:
 451:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 452:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string with copy of value of @a str.
 453:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 454:/usr/include/c++/4.8/bits/basic_string.h ****        */
 455:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const basic_string& __str);
 456:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 457:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a substring.
 458:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 459:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  Index of first character to copy from.
 460:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters to copy (default remainder).
 461:/usr/include/c++/4.8/bits/basic_string.h ****        */
 462:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const basic_string& __str, size_type __pos,
 463:/usr/include/c++/4.8/bits/basic_string.h **** 		   size_type __n = npos);
 464:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 465:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a substring.
 466:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 467:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  Index of first character to copy from.
 468:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters to copy.
 469:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use.
 470:/usr/include/c++/4.8/bits/basic_string.h ****        */
 471:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const basic_string& __str, size_type __pos,
 472:/usr/include/c++/4.8/bits/basic_string.h **** 		   size_type __n, const _Alloc& __a);
 473:/usr/include/c++/4.8/bits/basic_string.h **** 
 474:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 475:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string initialized by a character %array.
 476:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __s  Source character %array.
 477:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters to copy.
 478:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
GAS LISTING /tmp/ccrG9BDx.s 			page 43


 479:/usr/include/c++/4.8/bits/basic_string.h ****        *
 480:/usr/include/c++/4.8/bits/basic_string.h ****        *  NB: @a __s must have at least @a __n characters, &apos;\\0&apos;
 481:/usr/include/c++/4.8/bits/basic_string.h ****        *  has no special meaning.
 482:/usr/include/c++/4.8/bits/basic_string.h ****        */
 483:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const _CharT* __s, size_type __n,
 484:/usr/include/c++/4.8/bits/basic_string.h **** 		   const _Alloc& __a = _Alloc());
 485:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 486:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a C string.
 487:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __s  Source C string.
 488:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 489:/usr/include/c++/4.8/bits/basic_string.h ****        */
 490:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
 491:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 492:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as multiple characters.
 493:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters.
 494:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __c  Character to use.
 495:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 496:/usr/include/c++/4.8/bits/basic_string.h ****        */
 497:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
 498:/usr/include/c++/4.8/bits/basic_string.h **** 
 499:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 500:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 501:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Move construct string.
 502:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 503:/usr/include/c++/4.8/bits/basic_string.h ****        *
 504:/usr/include/c++/4.8/bits/basic_string.h ****        *  The newly-created string contains the exact contents of @a __str.
 505:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __str is a valid, but unspecified string.
 506:/usr/include/c++/4.8/bits/basic_string.h ****        **/
 507:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(basic_string&& __str) noexcept
 508:/usr/include/c++/4.8/bits/basic_string.h ****       : _M_dataplus(__str._M_dataplus)
 509:/usr/include/c++/4.8/bits/basic_string.h ****       {
 510:/usr/include/c++/4.8/bits/basic_string.h **** #if _GLIBCXX_FULLY_DYNAMIC_STRING == 0
 511:/usr/include/c++/4.8/bits/basic_string.h **** 	__str._M_data(_S_empty_rep()._M_refdata());
 512:/usr/include/c++/4.8/bits/basic_string.h **** #else
 513:/usr/include/c++/4.8/bits/basic_string.h **** 	__str._M_data(_S_construct(size_type(), _CharT(), get_allocator()));
 514:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 515:/usr/include/c++/4.8/bits/basic_string.h ****       }
 516:/usr/include/c++/4.8/bits/basic_string.h **** 
 517:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 518:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string from an initializer %list.
 519:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __l  std::initializer_list of characters.
 520:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 521:/usr/include/c++/4.8/bits/basic_string.h ****        */
 522:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string(initializer_list<_CharT> __l, const _Alloc& __a = _Alloc());
 523:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
 524:/usr/include/c++/4.8/bits/basic_string.h **** 
 525:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 526:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Construct string as copy of a range.
 527:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __beg  Start of range.
 528:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __end  End of range.
 529:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __a  Allocator to use (default is default allocator).
 530:/usr/include/c++/4.8/bits/basic_string.h ****        */
 531:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
 532:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string(_InputIterator __beg, _InputIterator __end,
 533:/usr/include/c++/4.8/bits/basic_string.h **** 		     const _Alloc& __a = _Alloc());
 534:/usr/include/c++/4.8/bits/basic_string.h **** 
 535:/usr/include/c++/4.8/bits/basic_string.h ****       /**
GAS LISTING /tmp/ccrG9BDx.s 			page 44


 536:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Destroy the string instance.
 537:/usr/include/c++/4.8/bits/basic_string.h ****        */
 538:/usr/include/c++/4.8/bits/basic_string.h ****       ~basic_string() _GLIBCXX_NOEXCEPT
 539:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_rep()->_M_dispose(this->get_allocator()); }
 540:/usr/include/c++/4.8/bits/basic_string.h **** 
 541:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 542:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Assign the value of @a str to this string.
 543:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 544:/usr/include/c++/4.8/bits/basic_string.h ****        */
 545:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 546:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(const basic_string& __str) 
 547:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__str); }
 548:/usr/include/c++/4.8/bits/basic_string.h **** 
 549:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 550:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Copy contents of @a s into this string.
 551:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __s  Source null-terminated string.
 552:/usr/include/c++/4.8/bits/basic_string.h ****        */
 553:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 554:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(const _CharT* __s) 
 555:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__s); }
 556:/usr/include/c++/4.8/bits/basic_string.h **** 
 557:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 558:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to string of length 1.
 559:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __c  Source character.
 560:/usr/include/c++/4.8/bits/basic_string.h ****        *
 561:/usr/include/c++/4.8/bits/basic_string.h ****        *  Assigning to a character makes this string length 1 and
 562:/usr/include/c++/4.8/bits/basic_string.h ****        *  (*this)[0] == @a c.
 563:/usr/include/c++/4.8/bits/basic_string.h ****        */
 564:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 565:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(_CharT __c) 
 566:/usr/include/c++/4.8/bits/basic_string.h ****       { 
 567:/usr/include/c++/4.8/bits/basic_string.h **** 	this->assign(1, __c); 
 568:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 569:/usr/include/c++/4.8/bits/basic_string.h ****       }
 570:/usr/include/c++/4.8/bits/basic_string.h **** 
 571:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 572:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 573:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Move assign the value of @a str to this string.
 574:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string.
 575:/usr/include/c++/4.8/bits/basic_string.h ****        *
 576:/usr/include/c++/4.8/bits/basic_string.h ****        *  The contents of @a str are moved into this string (without copying).
 577:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a str is a valid, but unspecified string.
 578:/usr/include/c++/4.8/bits/basic_string.h ****        **/
 579:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 580:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(basic_string&& __str)
 581:/usr/include/c++/4.8/bits/basic_string.h ****       {
 582:/usr/include/c++/4.8/bits/basic_string.h **** 	// NB: DR 1204.
 583:/usr/include/c++/4.8/bits/basic_string.h **** 	this->swap(__str);
 584:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 585:/usr/include/c++/4.8/bits/basic_string.h ****       }
 586:/usr/include/c++/4.8/bits/basic_string.h **** 
 587:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 588:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to string constructed from initializer %list.
 589:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __l  std::initializer_list.
 590:/usr/include/c++/4.8/bits/basic_string.h ****        */
 591:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 592:/usr/include/c++/4.8/bits/basic_string.h ****       operator=(initializer_list<_CharT> __l)
GAS LISTING /tmp/ccrG9BDx.s 			page 45


 593:/usr/include/c++/4.8/bits/basic_string.h ****       {
 594:/usr/include/c++/4.8/bits/basic_string.h **** 	this->assign(__l.begin(), __l.size());
 595:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 596:/usr/include/c++/4.8/bits/basic_string.h ****       }
 597:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
 598:/usr/include/c++/4.8/bits/basic_string.h **** 
 599:/usr/include/c++/4.8/bits/basic_string.h ****       // Iterators:
 600:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 601:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write iterator that points to the first character in
 602:/usr/include/c++/4.8/bits/basic_string.h ****        *  the %string.  Unshares the string.
 603:/usr/include/c++/4.8/bits/basic_string.h ****        */
 604:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 605:/usr/include/c++/4.8/bits/basic_string.h ****       begin() _GLIBCXX_NOEXCEPT
 606:/usr/include/c++/4.8/bits/basic_string.h ****       {
 607:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 608:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data());
 609:/usr/include/c++/4.8/bits/basic_string.h ****       }
 610:/usr/include/c++/4.8/bits/basic_string.h **** 
 611:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 612:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points to the first
 613:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.
 614:/usr/include/c++/4.8/bits/basic_string.h ****        */
 615:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 616:/usr/include/c++/4.8/bits/basic_string.h ****       begin() const _GLIBCXX_NOEXCEPT
 617:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(_M_data()); }
 618:/usr/include/c++/4.8/bits/basic_string.h **** 
 619:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 620:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write iterator that points one past the last
 621:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.  Unshares the string.
 622:/usr/include/c++/4.8/bits/basic_string.h ****        */
 623:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
 624:/usr/include/c++/4.8/bits/basic_string.h ****       end() _GLIBCXX_NOEXCEPT
 625:/usr/include/c++/4.8/bits/basic_string.h ****       {
 626:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 627:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data() + this->size());
 628:/usr/include/c++/4.8/bits/basic_string.h ****       }
 629:/usr/include/c++/4.8/bits/basic_string.h **** 
 630:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 631:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points one past the
 632:/usr/include/c++/4.8/bits/basic_string.h ****        *  last character in the %string.
 633:/usr/include/c++/4.8/bits/basic_string.h ****        */
 634:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 635:/usr/include/c++/4.8/bits/basic_string.h ****       end() const _GLIBCXX_NOEXCEPT
 636:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(_M_data() + this->size()); }
 637:/usr/include/c++/4.8/bits/basic_string.h **** 
 638:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 639:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reverse iterator that points to the last
 640:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.  Iteration is done in reverse element
 641:/usr/include/c++/4.8/bits/basic_string.h ****        *  order.  Unshares the string.
 642:/usr/include/c++/4.8/bits/basic_string.h ****        */
 643:/usr/include/c++/4.8/bits/basic_string.h ****       reverse_iterator
 644:/usr/include/c++/4.8/bits/basic_string.h ****       rbegin() _GLIBCXX_NOEXCEPT
 645:/usr/include/c++/4.8/bits/basic_string.h ****       { return reverse_iterator(this->end()); }
 646:/usr/include/c++/4.8/bits/basic_string.h **** 
 647:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 648:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 649:/usr/include/c++/4.8/bits/basic_string.h ****        *  to the last character in the %string.  Iteration is done in
GAS LISTING /tmp/ccrG9BDx.s 			page 46


 650:/usr/include/c++/4.8/bits/basic_string.h ****        *  reverse element order.
 651:/usr/include/c++/4.8/bits/basic_string.h ****        */
 652:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 653:/usr/include/c++/4.8/bits/basic_string.h ****       rbegin() const _GLIBCXX_NOEXCEPT
 654:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->end()); }
 655:/usr/include/c++/4.8/bits/basic_string.h **** 
 656:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 657:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reverse iterator that points to one before the
 658:/usr/include/c++/4.8/bits/basic_string.h ****        *  first character in the %string.  Iteration is done in reverse
 659:/usr/include/c++/4.8/bits/basic_string.h ****        *  element order.  Unshares the string.
 660:/usr/include/c++/4.8/bits/basic_string.h ****        */
 661:/usr/include/c++/4.8/bits/basic_string.h ****       reverse_iterator
 662:/usr/include/c++/4.8/bits/basic_string.h ****       rend() _GLIBCXX_NOEXCEPT
 663:/usr/include/c++/4.8/bits/basic_string.h ****       { return reverse_iterator(this->begin()); }
 664:/usr/include/c++/4.8/bits/basic_string.h **** 
 665:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 666:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 667:/usr/include/c++/4.8/bits/basic_string.h ****        *  to one before the first character in the %string.  Iteration
 668:/usr/include/c++/4.8/bits/basic_string.h ****        *  is done in reverse element order.
 669:/usr/include/c++/4.8/bits/basic_string.h ****        */
 670:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 671:/usr/include/c++/4.8/bits/basic_string.h ****       rend() const _GLIBCXX_NOEXCEPT
 672:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->begin()); }
 673:/usr/include/c++/4.8/bits/basic_string.h **** 
 674:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 675:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 676:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points to the first
 677:/usr/include/c++/4.8/bits/basic_string.h ****        *  character in the %string.
 678:/usr/include/c++/4.8/bits/basic_string.h ****        */
 679:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 680:/usr/include/c++/4.8/bits/basic_string.h ****       cbegin() const noexcept
 681:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(this->_M_data()); }
 682:/usr/include/c++/4.8/bits/basic_string.h **** 
 683:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 684:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) iterator that points one past the
 685:/usr/include/c++/4.8/bits/basic_string.h ****        *  last character in the %string.
 686:/usr/include/c++/4.8/bits/basic_string.h ****        */
 687:/usr/include/c++/4.8/bits/basic_string.h ****       const_iterator
 688:/usr/include/c++/4.8/bits/basic_string.h ****       cend() const noexcept
 689:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_iterator(this->_M_data() + this->size()); }
 690:/usr/include/c++/4.8/bits/basic_string.h **** 
 691:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 692:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 693:/usr/include/c++/4.8/bits/basic_string.h ****        *  to the last character in the %string.  Iteration is done in
 694:/usr/include/c++/4.8/bits/basic_string.h ****        *  reverse element order.
 695:/usr/include/c++/4.8/bits/basic_string.h ****        */
 696:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 697:/usr/include/c++/4.8/bits/basic_string.h ****       crbegin() const noexcept
 698:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->end()); }
 699:/usr/include/c++/4.8/bits/basic_string.h **** 
 700:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 701:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reverse iterator that points
 702:/usr/include/c++/4.8/bits/basic_string.h ****        *  to one before the first character in the %string.  Iteration
 703:/usr/include/c++/4.8/bits/basic_string.h ****        *  is done in reverse element order.
 704:/usr/include/c++/4.8/bits/basic_string.h ****        */
 705:/usr/include/c++/4.8/bits/basic_string.h ****       const_reverse_iterator
 706:/usr/include/c++/4.8/bits/basic_string.h ****       crend() const noexcept
GAS LISTING /tmp/ccrG9BDx.s 			page 47


 707:/usr/include/c++/4.8/bits/basic_string.h ****       { return const_reverse_iterator(this->begin()); }
 708:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 709:/usr/include/c++/4.8/bits/basic_string.h **** 
 710:/usr/include/c++/4.8/bits/basic_string.h ****     public:
 711:/usr/include/c++/4.8/bits/basic_string.h ****       // Capacity:
 712:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Returns the number of characters in the string, not including any
 713:/usr/include/c++/4.8/bits/basic_string.h ****       ///  null-termination.
 714:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 715:/usr/include/c++/4.8/bits/basic_string.h ****       size() const _GLIBCXX_NOEXCEPT
 716:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_rep()->_M_length; }
 717:/usr/include/c++/4.8/bits/basic_string.h **** 
 718:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Returns the number of characters in the string, not including any
 719:/usr/include/c++/4.8/bits/basic_string.h ****       ///  null-termination.
 720:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 721:/usr/include/c++/4.8/bits/basic_string.h ****       length() const _GLIBCXX_NOEXCEPT
 722:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_rep()->_M_length; }
 723:/usr/include/c++/4.8/bits/basic_string.h **** 
 724:/usr/include/c++/4.8/bits/basic_string.h ****       ///  Returns the size() of the largest possible %string.
 725:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 726:/usr/include/c++/4.8/bits/basic_string.h ****       max_size() const _GLIBCXX_NOEXCEPT
 727:/usr/include/c++/4.8/bits/basic_string.h ****       { return _Rep::_S_max_size; }
 728:/usr/include/c++/4.8/bits/basic_string.h **** 
 729:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 730:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Resizes the %string to the specified number of characters.
 731:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters the %string should contain.
 732:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __c  Character to fill any new elements.
 733:/usr/include/c++/4.8/bits/basic_string.h ****        *
 734:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function will %resize the %string to the specified
 735:/usr/include/c++/4.8/bits/basic_string.h ****        *  number of characters.  If the number is smaller than the
 736:/usr/include/c++/4.8/bits/basic_string.h ****        *  %string's current size the %string is truncated, otherwise
 737:/usr/include/c++/4.8/bits/basic_string.h ****        *  the %string is extended and new elements are %set to @a __c.
 738:/usr/include/c++/4.8/bits/basic_string.h ****        */
 739:/usr/include/c++/4.8/bits/basic_string.h ****       void
 740:/usr/include/c++/4.8/bits/basic_string.h ****       resize(size_type __n, _CharT __c);
 741:/usr/include/c++/4.8/bits/basic_string.h **** 
 742:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 743:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Resizes the %string to the specified number of characters.
 744:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __n  Number of characters the %string should contain.
 745:/usr/include/c++/4.8/bits/basic_string.h ****        *
 746:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function will resize the %string to the specified length.  If
 747:/usr/include/c++/4.8/bits/basic_string.h ****        *  the new size is smaller than the %string's current size the %string
 748:/usr/include/c++/4.8/bits/basic_string.h ****        *  is truncated, otherwise the %string is extended and new characters
 749:/usr/include/c++/4.8/bits/basic_string.h ****        *  are default-constructed.  For basic types such as char, this means
 750:/usr/include/c++/4.8/bits/basic_string.h ****        *  setting them to 0.
 751:/usr/include/c++/4.8/bits/basic_string.h ****        */
 752:/usr/include/c++/4.8/bits/basic_string.h ****       void
 753:/usr/include/c++/4.8/bits/basic_string.h ****       resize(size_type __n)
 754:/usr/include/c++/4.8/bits/basic_string.h ****       { this->resize(__n, _CharT()); }
 755:/usr/include/c++/4.8/bits/basic_string.h **** 
 756:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 757:/usr/include/c++/4.8/bits/basic_string.h ****       ///  A non-binding request to reduce capacity() to size().
 758:/usr/include/c++/4.8/bits/basic_string.h ****       void
 759:/usr/include/c++/4.8/bits/basic_string.h ****       shrink_to_fit()
 760:/usr/include/c++/4.8/bits/basic_string.h ****       {
 761:/usr/include/c++/4.8/bits/basic_string.h **** 	if (capacity() > size())
 762:/usr/include/c++/4.8/bits/basic_string.h **** 	  {
 763:/usr/include/c++/4.8/bits/basic_string.h **** 	    __try
GAS LISTING /tmp/ccrG9BDx.s 			page 48


 764:/usr/include/c++/4.8/bits/basic_string.h **** 	      { reserve(0); }
 765:/usr/include/c++/4.8/bits/basic_string.h **** 	    __catch(...)
 766:/usr/include/c++/4.8/bits/basic_string.h **** 	      { }
 767:/usr/include/c++/4.8/bits/basic_string.h **** 	  }
 768:/usr/include/c++/4.8/bits/basic_string.h ****       }
 769:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 770:/usr/include/c++/4.8/bits/basic_string.h **** 
 771:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 772:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns the total number of characters that the %string can hold
 773:/usr/include/c++/4.8/bits/basic_string.h ****        *  before needing to allocate more memory.
 774:/usr/include/c++/4.8/bits/basic_string.h ****        */
 775:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
 776:/usr/include/c++/4.8/bits/basic_string.h ****       capacity() const _GLIBCXX_NOEXCEPT
 777:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_rep()->_M_capacity; }
 778:/usr/include/c++/4.8/bits/basic_string.h **** 
 779:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 780:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Attempt to preallocate enough memory for specified number of
 781:/usr/include/c++/4.8/bits/basic_string.h ****        *          characters.
 782:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __res_arg  Number of characters required.
 783:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If @a __res_arg exceeds @c max_size().
 784:/usr/include/c++/4.8/bits/basic_string.h ****        *
 785:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function attempts to reserve enough memory for the
 786:/usr/include/c++/4.8/bits/basic_string.h ****        *  %string to hold the specified number of characters.  If the
 787:/usr/include/c++/4.8/bits/basic_string.h ****        *  number requested is more than max_size(), length_error is
 788:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
 789:/usr/include/c++/4.8/bits/basic_string.h ****        *
 790:/usr/include/c++/4.8/bits/basic_string.h ****        *  The advantage of this function is that if optimal code is a
 791:/usr/include/c++/4.8/bits/basic_string.h ****        *  necessity and the user can determine the string length that will be
 792:/usr/include/c++/4.8/bits/basic_string.h ****        *  required, the user can reserve the memory in %advance, and thus
 793:/usr/include/c++/4.8/bits/basic_string.h ****        *  prevent a possible reallocation of memory and copying of %string
 794:/usr/include/c++/4.8/bits/basic_string.h ****        *  data.
 795:/usr/include/c++/4.8/bits/basic_string.h ****        */
 796:/usr/include/c++/4.8/bits/basic_string.h ****       void
 797:/usr/include/c++/4.8/bits/basic_string.h ****       reserve(size_type __res_arg = 0);
 798:/usr/include/c++/4.8/bits/basic_string.h **** 
 799:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 800:/usr/include/c++/4.8/bits/basic_string.h ****        *  Erases the string, making it empty.
 801:/usr/include/c++/4.8/bits/basic_string.h ****        */
 802:/usr/include/c++/4.8/bits/basic_string.h ****       void
 803:/usr/include/c++/4.8/bits/basic_string.h ****       clear() _GLIBCXX_NOEXCEPT
 804:/usr/include/c++/4.8/bits/basic_string.h ****       { _M_mutate(0, this->size(), 0); }
 805:/usr/include/c++/4.8/bits/basic_string.h **** 
 806:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 807:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns true if the %string is empty.  Equivalent to 
 808:/usr/include/c++/4.8/bits/basic_string.h ****        *  <code>*this == ""</code>.
 809:/usr/include/c++/4.8/bits/basic_string.h ****        */
 810:/usr/include/c++/4.8/bits/basic_string.h ****       bool
 811:/usr/include/c++/4.8/bits/basic_string.h ****       empty() const _GLIBCXX_NOEXCEPT
 812:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->size() == 0; }
 813:/usr/include/c++/4.8/bits/basic_string.h **** 
 814:/usr/include/c++/4.8/bits/basic_string.h ****       // Element access:
 815:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 816:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Subscript access to the data contained in the %string.
 817:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  The index of the character to access.
 818:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read-only (constant) reference to the character.
 819:/usr/include/c++/4.8/bits/basic_string.h ****        *
 820:/usr/include/c++/4.8/bits/basic_string.h ****        *  This operator allows for easy, array-style, data access.
GAS LISTING /tmp/ccrG9BDx.s 			page 49


 821:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note that data access with this operator is unchecked and
 822:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range lookups are not defined. (For checked lookups
 823:/usr/include/c++/4.8/bits/basic_string.h ****        *  see at().)
 824:/usr/include/c++/4.8/bits/basic_string.h ****        */
 825:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 826:/usr/include/c++/4.8/bits/basic_string.h ****       operator[] (size_type __pos) const
 827:/usr/include/c++/4.8/bits/basic_string.h ****       {
 828:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_ASSERT(__pos <= size());
 829:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__pos];
 830:/usr/include/c++/4.8/bits/basic_string.h ****       }
 831:/usr/include/c++/4.8/bits/basic_string.h **** 
 832:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 833:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Subscript access to the data contained in the %string.
 834:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __pos  The index of the character to access.
 835:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read/write reference to the character.
 836:/usr/include/c++/4.8/bits/basic_string.h ****        *
 837:/usr/include/c++/4.8/bits/basic_string.h ****        *  This operator allows for easy, array-style, data access.
 838:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note that data access with this operator is unchecked and
 839:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range lookups are not defined. (For checked lookups
 840:/usr/include/c++/4.8/bits/basic_string.h ****        *  see at().)  Unshares the string.
 841:/usr/include/c++/4.8/bits/basic_string.h ****        */
 842:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 843:/usr/include/c++/4.8/bits/basic_string.h ****       operator[](size_type __pos)
 844:/usr/include/c++/4.8/bits/basic_string.h ****       {
 845:/usr/include/c++/4.8/bits/basic_string.h ****         // allow pos == size() as v3 extension:
 846:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_ASSERT(__pos <= size());
 847:/usr/include/c++/4.8/bits/basic_string.h ****         // but be strict in pedantic mode:
 848:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__pos < size());
 849:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 850:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__pos];
 851:/usr/include/c++/4.8/bits/basic_string.h ****       }
 852:/usr/include/c++/4.8/bits/basic_string.h **** 
 853:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 854:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Provides access to the data contained in the %string.
 855:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n The index of the character to access.
 856:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read-only (const) reference to the character.
 857:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a n is an invalid index.
 858:/usr/include/c++/4.8/bits/basic_string.h ****        *
 859:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function provides for safer data access.  The parameter is
 860:/usr/include/c++/4.8/bits/basic_string.h ****        *  first checked that it is in the range of the string.  The function
 861:/usr/include/c++/4.8/bits/basic_string.h ****        *  throws out_of_range if the check fails.
 862:/usr/include/c++/4.8/bits/basic_string.h ****        */
 863:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 864:/usr/include/c++/4.8/bits/basic_string.h ****       at(size_type __n) const
 865:/usr/include/c++/4.8/bits/basic_string.h ****       {
 866:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n >= this->size())
 867:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_out_of_range(__N("basic_string::at"));
 868:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__n];
 869:/usr/include/c++/4.8/bits/basic_string.h ****       }
 870:/usr/include/c++/4.8/bits/basic_string.h **** 
 871:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 872:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Provides access to the data contained in the %string.
 873:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n The index of the character to access.
 874:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Read/write reference to the character.
 875:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a n is an invalid index.
 876:/usr/include/c++/4.8/bits/basic_string.h ****        *
 877:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function provides for safer data access.  The parameter is
GAS LISTING /tmp/ccrG9BDx.s 			page 50


 878:/usr/include/c++/4.8/bits/basic_string.h ****        *  first checked that it is in the range of the string.  The function
 879:/usr/include/c++/4.8/bits/basic_string.h ****        *  throws out_of_range if the check fails.  Success results in
 880:/usr/include/c++/4.8/bits/basic_string.h ****        *  unsharing the string.
 881:/usr/include/c++/4.8/bits/basic_string.h ****        */
 882:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 883:/usr/include/c++/4.8/bits/basic_string.h ****       at(size_type __n)
 884:/usr/include/c++/4.8/bits/basic_string.h ****       {
 885:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__n >= size())
 886:/usr/include/c++/4.8/bits/basic_string.h **** 	  __throw_out_of_range(__N("basic_string::at"));
 887:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_leak();
 888:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_data()[__n];
 889:/usr/include/c++/4.8/bits/basic_string.h ****       }
 890:/usr/include/c++/4.8/bits/basic_string.h **** 
 891:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 892:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 893:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reference to the data at the first
 894:/usr/include/c++/4.8/bits/basic_string.h ****        *  element of the %string.
 895:/usr/include/c++/4.8/bits/basic_string.h ****        */
 896:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 897:/usr/include/c++/4.8/bits/basic_string.h ****       front()
 898:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](0); }
 899:/usr/include/c++/4.8/bits/basic_string.h **** 
 900:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 901:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reference to the data at the first
 902:/usr/include/c++/4.8/bits/basic_string.h ****        *  element of the %string.
 903:/usr/include/c++/4.8/bits/basic_string.h ****        */
 904:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 905:/usr/include/c++/4.8/bits/basic_string.h ****       front() const
 906:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](0); }
 907:/usr/include/c++/4.8/bits/basic_string.h **** 
 908:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 909:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read/write reference to the data at the last
 910:/usr/include/c++/4.8/bits/basic_string.h ****        *  element of the %string.
 911:/usr/include/c++/4.8/bits/basic_string.h ****        */
 912:/usr/include/c++/4.8/bits/basic_string.h ****       reference
 913:/usr/include/c++/4.8/bits/basic_string.h ****       back()
 914:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](this->size() - 1); }
 915:/usr/include/c++/4.8/bits/basic_string.h **** 
 916:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 917:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns a read-only (constant) reference to the data at the
 918:/usr/include/c++/4.8/bits/basic_string.h ****        *  last element of the %string.
 919:/usr/include/c++/4.8/bits/basic_string.h ****        */
 920:/usr/include/c++/4.8/bits/basic_string.h ****       const_reference
 921:/usr/include/c++/4.8/bits/basic_string.h ****       back() const
 922:/usr/include/c++/4.8/bits/basic_string.h ****       { return operator[](this->size() - 1); }
 923:/usr/include/c++/4.8/bits/basic_string.h **** #endif
 924:/usr/include/c++/4.8/bits/basic_string.h **** 
 925:/usr/include/c++/4.8/bits/basic_string.h ****       // Modifiers:
 926:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 927:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a string to this string.
 928:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to append.
 929:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 930:/usr/include/c++/4.8/bits/basic_string.h ****        */
 931:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 932:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(const basic_string& __str)
 933:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__str); }
 934:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 51


 935:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 936:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a C string.
 937:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to append.
 938:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 939:/usr/include/c++/4.8/bits/basic_string.h ****        */
 940:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 941:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(const _CharT* __s)
 942:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__s); }
 943:/usr/include/c++/4.8/bits/basic_string.h **** 
 944:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 945:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a character.
 946:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to append.
 947:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 948:/usr/include/c++/4.8/bits/basic_string.h ****        */
 949:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 950:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(_CharT __c)
 951:/usr/include/c++/4.8/bits/basic_string.h ****       { 
 952:/usr/include/c++/4.8/bits/basic_string.h **** 	this->push_back(__c);
 953:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
 954:/usr/include/c++/4.8/bits/basic_string.h ****       }
 955:/usr/include/c++/4.8/bits/basic_string.h **** 
 956:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
 957:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 958:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append an initializer_list of characters.
 959:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to be appended.
 960:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 961:/usr/include/c++/4.8/bits/basic_string.h ****        */
 962:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 963:/usr/include/c++/4.8/bits/basic_string.h ****       operator+=(initializer_list<_CharT> __l)
 964:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__l.begin(), __l.size()); }
 965:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
 966:/usr/include/c++/4.8/bits/basic_string.h **** 
 967:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 968:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a string to this string.
 969:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to append.
 970:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 971:/usr/include/c++/4.8/bits/basic_string.h ****        */
 972:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 973:/usr/include/c++/4.8/bits/basic_string.h ****       append(const basic_string& __str);
 974:/usr/include/c++/4.8/bits/basic_string.h **** 
 975:/usr/include/c++/4.8/bits/basic_string.h ****       /**
 976:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a substring.
 977:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to append.
 978:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of the first character of str to append.
 979:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to append.
 980:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 981:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range if @a __pos is not a valid index.
 982:/usr/include/c++/4.8/bits/basic_string.h ****        *
 983:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function appends @a __n characters from @a __str
 984:/usr/include/c++/4.8/bits/basic_string.h ****        *  starting at @a __pos to this string.  If @a __n is is larger
 985:/usr/include/c++/4.8/bits/basic_string.h ****        *  than the number of available characters in @a __str, the
 986:/usr/include/c++/4.8/bits/basic_string.h ****        *  remainder of @a __str is appended.
 987:/usr/include/c++/4.8/bits/basic_string.h ****        */
 988:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 989:/usr/include/c++/4.8/bits/basic_string.h ****       append(const basic_string& __str, size_type __pos, size_type __n);
 990:/usr/include/c++/4.8/bits/basic_string.h **** 
 991:/usr/include/c++/4.8/bits/basic_string.h ****       /**
GAS LISTING /tmp/ccrG9BDx.s 			page 52


 992:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a C substring.
 993:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to append.
 994:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to append.
 995:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
 996:/usr/include/c++/4.8/bits/basic_string.h ****        */
 997:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
 998:/usr/include/c++/4.8/bits/basic_string.h ****       append(const _CharT* __s, size_type __n);
 999:/usr/include/c++/4.8/bits/basic_string.h **** 
1000:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1001:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a C string.
1002:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to append.
1003:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1004:/usr/include/c++/4.8/bits/basic_string.h ****        */
1005:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1006:/usr/include/c++/4.8/bits/basic_string.h ****       append(const _CharT* __s)
1007:/usr/include/c++/4.8/bits/basic_string.h ****       {
1008:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1009:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->append(__s, traits_type::length(__s));
1010:/usr/include/c++/4.8/bits/basic_string.h ****       }
1011:/usr/include/c++/4.8/bits/basic_string.h **** 
1012:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1013:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append multiple characters.
1014:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to append.
1015:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to use.
1016:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1017:/usr/include/c++/4.8/bits/basic_string.h ****        *
1018:/usr/include/c++/4.8/bits/basic_string.h ****        *  Appends __n copies of __c to this string.
1019:/usr/include/c++/4.8/bits/basic_string.h ****        */
1020:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1021:/usr/include/c++/4.8/bits/basic_string.h ****       append(size_type __n, _CharT __c);
1022:/usr/include/c++/4.8/bits/basic_string.h **** 
1023:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1024:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1025:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append an initializer_list of characters.
1026:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to append.
1027:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1028:/usr/include/c++/4.8/bits/basic_string.h ****        */
1029:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1030:/usr/include/c++/4.8/bits/basic_string.h ****       append(initializer_list<_CharT> __l)
1031:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->append(__l.begin(), __l.size()); }
1032:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1033:/usr/include/c++/4.8/bits/basic_string.h **** 
1034:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1035:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a range of characters.
1036:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __first  Iterator referencing the first character to append.
1037:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __last  Iterator marking the end of the range.
1038:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1039:/usr/include/c++/4.8/bits/basic_string.h ****        *
1040:/usr/include/c++/4.8/bits/basic_string.h ****        *  Appends characters in the range [__first,__last) to this string.
1041:/usr/include/c++/4.8/bits/basic_string.h ****        */
1042:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1043:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string&
1044:/usr/include/c++/4.8/bits/basic_string.h ****         append(_InputIterator __first, _InputIterator __last)
1045:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->replace(_M_iend(), _M_iend(), __first, __last); }
1046:/usr/include/c++/4.8/bits/basic_string.h **** 
1047:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1048:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Append a single character.
GAS LISTING /tmp/ccrG9BDx.s 			page 53


1049:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to append.
1050:/usr/include/c++/4.8/bits/basic_string.h ****        */
1051:/usr/include/c++/4.8/bits/basic_string.h ****       void
1052:/usr/include/c++/4.8/bits/basic_string.h ****       push_back(_CharT __c)
1053:/usr/include/c++/4.8/bits/basic_string.h ****       { 
1054:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __len = 1 + this->size();
1055:/usr/include/c++/4.8/bits/basic_string.h **** 	if (__len > this->capacity() || _M_rep()->_M_is_shared())
1056:/usr/include/c++/4.8/bits/basic_string.h **** 	  this->reserve(__len);
1057:/usr/include/c++/4.8/bits/basic_string.h **** 	traits_type::assign(_M_data()[this->size()], __c);
1058:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_rep()->_M_set_length_and_sharable(__len);
1059:/usr/include/c++/4.8/bits/basic_string.h ****       }
1060:/usr/include/c++/4.8/bits/basic_string.h **** 
1061:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1062:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to contents of another string.
1063:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string to use.
1064:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1065:/usr/include/c++/4.8/bits/basic_string.h ****        */
1066:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1067:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const basic_string& __str);
1068:/usr/include/c++/4.8/bits/basic_string.h **** 
1069:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1070:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1071:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to contents of another string.
1072:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param  __str  Source string to use.
1073:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1074:/usr/include/c++/4.8/bits/basic_string.h ****        *
1075:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets this string to the exact contents of @a __str.
1076:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __str is a valid, but unspecified string.
1077:/usr/include/c++/4.8/bits/basic_string.h ****        */
1078:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1079:/usr/include/c++/4.8/bits/basic_string.h ****       assign(basic_string&& __str)
1080:/usr/include/c++/4.8/bits/basic_string.h ****       {
1081:/usr/include/c++/4.8/bits/basic_string.h **** 	this->swap(__str);
1082:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
1083:/usr/include/c++/4.8/bits/basic_string.h ****       }
1084:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1085:/usr/include/c++/4.8/bits/basic_string.h **** 
1086:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1087:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to a substring of a string.
1088:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to use.
1089:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of the first character of str.
1090:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to use.
1091:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1092:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range if @a pos is not a valid index.
1093:/usr/include/c++/4.8/bits/basic_string.h ****        *
1094:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets this string to the substring of @a __str
1095:/usr/include/c++/4.8/bits/basic_string.h ****        *  consisting of @a __n characters at @a __pos.  If @a __n is
1096:/usr/include/c++/4.8/bits/basic_string.h ****        *  is larger than the number of available characters in @a
1097:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str, the remainder of @a __str is used.
1098:/usr/include/c++/4.8/bits/basic_string.h ****        */
1099:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1100:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const basic_string& __str, size_type __pos, size_type __n)
1101:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__str._M_data()
1102:/usr/include/c++/4.8/bits/basic_string.h **** 			    + __str._M_check(__pos, "basic_string::assign"),
1103:/usr/include/c++/4.8/bits/basic_string.h **** 			    __str._M_limit(__pos, __n)); }
1104:/usr/include/c++/4.8/bits/basic_string.h **** 
1105:/usr/include/c++/4.8/bits/basic_string.h ****       /**
GAS LISTING /tmp/ccrG9BDx.s 			page 54


1106:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to a C substring.
1107:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to use.
1108:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to use.
1109:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1110:/usr/include/c++/4.8/bits/basic_string.h ****        *
1111:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets the value of this string to the first @a __n
1112:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __s.  If @a __n is is larger than the number of
1113:/usr/include/c++/4.8/bits/basic_string.h ****        *  available characters in @a __s, the remainder of @a __s is used.
1114:/usr/include/c++/4.8/bits/basic_string.h ****        */
1115:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1116:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const _CharT* __s, size_type __n);
1117:/usr/include/c++/4.8/bits/basic_string.h **** 
1118:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1119:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to contents of a C string.
1120:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to use.
1121:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1122:/usr/include/c++/4.8/bits/basic_string.h ****        *
1123:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets the value of this string to the value of @a __s.
1124:/usr/include/c++/4.8/bits/basic_string.h ****        *  The data is copied, so there is no dependence on @a __s once the
1125:/usr/include/c++/4.8/bits/basic_string.h ****        *  function returns.
1126:/usr/include/c++/4.8/bits/basic_string.h ****        */
1127:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1128:/usr/include/c++/4.8/bits/basic_string.h ****       assign(const _CharT* __s)
1129:/usr/include/c++/4.8/bits/basic_string.h ****       {
1130:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1131:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->assign(__s, traits_type::length(__s));
1132:/usr/include/c++/4.8/bits/basic_string.h ****       }
1133:/usr/include/c++/4.8/bits/basic_string.h **** 
1134:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1135:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to multiple characters.
1136:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Length of the resulting string.
1137:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to use.
1138:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1139:/usr/include/c++/4.8/bits/basic_string.h ****        *
1140:/usr/include/c++/4.8/bits/basic_string.h ****        *  This function sets the value of this string to @a __n copies of
1141:/usr/include/c++/4.8/bits/basic_string.h ****        *  character @a __c.
1142:/usr/include/c++/4.8/bits/basic_string.h ****        */
1143:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1144:/usr/include/c++/4.8/bits/basic_string.h ****       assign(size_type __n, _CharT __c)
1145:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
1146:/usr/include/c++/4.8/bits/basic_string.h **** 
1147:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1148:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to a range of characters.
1149:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __first  Iterator referencing the first character to append.
1150:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __last  Iterator marking the end of the range.
1151:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1152:/usr/include/c++/4.8/bits/basic_string.h ****        *
1153:/usr/include/c++/4.8/bits/basic_string.h ****        *  Sets value of string to characters in the range [__first,__last).
1154:/usr/include/c++/4.8/bits/basic_string.h ****       */
1155:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1156:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string&
1157:/usr/include/c++/4.8/bits/basic_string.h ****         assign(_InputIterator __first, _InputIterator __last)
1158:/usr/include/c++/4.8/bits/basic_string.h ****         { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
1159:/usr/include/c++/4.8/bits/basic_string.h **** 
1160:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1161:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1162:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Set value to an initializer_list of characters.
GAS LISTING /tmp/ccrG9BDx.s 			page 55


1163:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to assign.
1164:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1165:/usr/include/c++/4.8/bits/basic_string.h ****        */
1166:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1167:/usr/include/c++/4.8/bits/basic_string.h ****       assign(initializer_list<_CharT> __l)
1168:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->assign(__l.begin(), __l.size()); }
1169:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1170:/usr/include/c++/4.8/bits/basic_string.h **** 
1171:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1172:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert multiple characters.
1173:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing location in string to insert at.
1174:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert
1175:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to insert.
1176:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1177:/usr/include/c++/4.8/bits/basic_string.h ****        *
1178:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts @a __n copies of character @a __c starting at the
1179:/usr/include/c++/4.8/bits/basic_string.h ****        *  position referenced by iterator @a __p.  If adding
1180:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters causes the length to exceed max_size(),
1181:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1182:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1183:/usr/include/c++/4.8/bits/basic_string.h ****       */
1184:/usr/include/c++/4.8/bits/basic_string.h ****       void
1185:/usr/include/c++/4.8/bits/basic_string.h ****       insert(iterator __p, size_type __n, _CharT __c)
1186:/usr/include/c++/4.8/bits/basic_string.h ****       {	this->replace(__p, __p, __n, __c);  }
1187:/usr/include/c++/4.8/bits/basic_string.h **** 
1188:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1189:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a range of characters.
1190:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing location in string to insert at.
1191:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __beg  Start of range.
1192:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __end  End of range.
1193:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1194:/usr/include/c++/4.8/bits/basic_string.h ****        *
1195:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts characters in range [__beg,__end).  If adding
1196:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters causes the length to exceed max_size(),
1197:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1198:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1199:/usr/include/c++/4.8/bits/basic_string.h ****       */
1200:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1201:/usr/include/c++/4.8/bits/basic_string.h ****         void
1202:/usr/include/c++/4.8/bits/basic_string.h ****         insert(iterator __p, _InputIterator __beg, _InputIterator __end)
1203:/usr/include/c++/4.8/bits/basic_string.h ****         { this->replace(__p, __p, __beg, __end); }
1204:/usr/include/c++/4.8/bits/basic_string.h **** 
1205:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1206:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1207:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert an initializer_list of characters.
1208:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing location in string to insert at.
1209:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to insert.
1210:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1211:/usr/include/c++/4.8/bits/basic_string.h ****        */
1212:/usr/include/c++/4.8/bits/basic_string.h ****       void
1213:/usr/include/c++/4.8/bits/basic_string.h ****       insert(iterator __p, initializer_list<_CharT> __l)
1214:/usr/include/c++/4.8/bits/basic_string.h ****       {
1215:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
1216:/usr/include/c++/4.8/bits/basic_string.h **** 	this->insert(__p - _M_ibegin(), __l.begin(), __l.size());
1217:/usr/include/c++/4.8/bits/basic_string.h ****       }
1218:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1219:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 56


1220:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1221:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert value of a string.
1222:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Iterator referencing location in string to insert at.
1223:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to insert.
1224:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1225:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1226:/usr/include/c++/4.8/bits/basic_string.h ****        *
1227:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts value of @a __str starting at @a __pos1.  If adding
1228:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters causes the length to exceed max_size(),
1229:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1230:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1231:/usr/include/c++/4.8/bits/basic_string.h ****       */
1232:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1233:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos1, const basic_string& __str)
1234:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->insert(__pos1, __str, size_type(0), __str.size()); }
1235:/usr/include/c++/4.8/bits/basic_string.h **** 
1236:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1237:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a substring.
1238:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Iterator referencing location in string to insert at.
1239:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  The string to insert.
1240:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos2  Start of characters in str to insert.
1241:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert.
1242:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1243:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1244:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos1 > size() or
1245:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __pos2 > @a str.size().
1246:/usr/include/c++/4.8/bits/basic_string.h ****        *
1247:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting at @a pos1, insert @a __n character of @a __str
1248:/usr/include/c++/4.8/bits/basic_string.h ****        *  beginning with @a __pos2.  If adding characters causes the
1249:/usr/include/c++/4.8/bits/basic_string.h ****        *  length to exceed max_size(), length_error is thrown.  If @a
1250:/usr/include/c++/4.8/bits/basic_string.h ****        *  __pos1 is beyond the end of this string or @a __pos2 is
1251:/usr/include/c++/4.8/bits/basic_string.h ****        *  beyond the end of @a __str, out_of_range is thrown.  The
1252:/usr/include/c++/4.8/bits/basic_string.h ****        *  value of the string doesn't change if an error is thrown.
1253:/usr/include/c++/4.8/bits/basic_string.h ****       */
1254:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1255:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos1, const basic_string& __str,
1256:/usr/include/c++/4.8/bits/basic_string.h **** 	     size_type __pos2, size_type __n)
1257:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->insert(__pos1, __str._M_data()
1258:/usr/include/c++/4.8/bits/basic_string.h **** 			    + __str._M_check(__pos2, "basic_string::insert"),
1259:/usr/include/c++/4.8/bits/basic_string.h **** 			    __str._M_limit(__pos2, __n)); }
1260:/usr/include/c++/4.8/bits/basic_string.h **** 
1261:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1262:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a C substring.
1263:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Iterator referencing location in string to insert at.
1264:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to insert.
1265:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  The number of characters to insert.
1266:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1267:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1268:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos is beyond the end of this
1269:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1270:/usr/include/c++/4.8/bits/basic_string.h ****        *
1271:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts the first @a __n characters of @a __s starting at @a
1272:/usr/include/c++/4.8/bits/basic_string.h ****        *  __pos.  If adding characters causes the length to exceed
1273:/usr/include/c++/4.8/bits/basic_string.h ****        *  max_size(), length_error is thrown.  If @a __pos is beyond
1274:/usr/include/c++/4.8/bits/basic_string.h ****        *  end(), out_of_range is thrown.  The value of the string
1275:/usr/include/c++/4.8/bits/basic_string.h ****        *  doesn't change if an error is thrown.
1276:/usr/include/c++/4.8/bits/basic_string.h ****       */
GAS LISTING /tmp/ccrG9BDx.s 			page 57


1277:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1278:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos, const _CharT* __s, size_type __n);
1279:/usr/include/c++/4.8/bits/basic_string.h **** 
1280:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1281:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert a C string.
1282:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Iterator referencing location in string to insert at.
1283:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  The C string to insert.
1284:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1285:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1286:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos is beyond the end of this
1287:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1288:/usr/include/c++/4.8/bits/basic_string.h ****        *
1289:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts the first @a n characters of @a __s starting at @a __pos.  If
1290:/usr/include/c++/4.8/bits/basic_string.h ****        *  adding characters causes the length to exceed max_size(),
1291:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  If @a __pos is beyond end(), out_of_range is
1292:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.  The value of the string doesn't change if an error is
1293:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1294:/usr/include/c++/4.8/bits/basic_string.h ****       */
1295:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1296:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos, const _CharT* __s)
1297:/usr/include/c++/4.8/bits/basic_string.h ****       {
1298:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1299:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->insert(__pos, __s, traits_type::length(__s));
1300:/usr/include/c++/4.8/bits/basic_string.h ****       }
1301:/usr/include/c++/4.8/bits/basic_string.h **** 
1302:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1303:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert multiple characters.
1304:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index in string to insert at.
1305:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert
1306:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to insert.
1307:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1308:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1309:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos is beyond the end of this
1310:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1311:/usr/include/c++/4.8/bits/basic_string.h ****        *
1312:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts @a __n copies of character @a __c starting at index
1313:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __pos.  If adding characters causes the length to exceed
1314:/usr/include/c++/4.8/bits/basic_string.h ****        *  max_size(), length_error is thrown.  If @a __pos > length(),
1315:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.  The value of the string doesn't
1316:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1317:/usr/include/c++/4.8/bits/basic_string.h ****       */
1318:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1319:/usr/include/c++/4.8/bits/basic_string.h ****       insert(size_type __pos, size_type __n, _CharT __c)
1320:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
1321:/usr/include/c++/4.8/bits/basic_string.h **** 			      size_type(0), __n, __c); }
1322:/usr/include/c++/4.8/bits/basic_string.h **** 
1323:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1324:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Insert one character.
1325:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __p  Iterator referencing position in string to insert at.
1326:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  The character to insert.
1327:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Iterator referencing newly inserted char.
1328:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1329:/usr/include/c++/4.8/bits/basic_string.h ****        *
1330:/usr/include/c++/4.8/bits/basic_string.h ****        *  Inserts character @a __c at position referenced by @a __p.
1331:/usr/include/c++/4.8/bits/basic_string.h ****        *  If adding character causes the length to exceed max_size(),
1332:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  If @a __p is beyond end of string,
1333:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.  The value of the string doesn't
GAS LISTING /tmp/ccrG9BDx.s 			page 58


1334:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1335:/usr/include/c++/4.8/bits/basic_string.h ****       */
1336:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
1337:/usr/include/c++/4.8/bits/basic_string.h ****       insert(iterator __p, _CharT __c)
1338:/usr/include/c++/4.8/bits/basic_string.h ****       {
1339:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
1340:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __pos = __p - _M_ibegin();
1341:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_replace_aux(__pos, size_type(0), size_type(1), __c);
1342:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_rep()->_M_set_leaked();
1343:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data() + __pos);
1344:/usr/include/c++/4.8/bits/basic_string.h ****       }
1345:/usr/include/c++/4.8/bits/basic_string.h **** 
1346:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1347:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove characters.
1348:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to remove (default 0).
1349:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to remove (default remainder).
1350:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1351:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos is beyond the end of this
1352:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1353:/usr/include/c++/4.8/bits/basic_string.h ****        *
1354:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes @a __n characters from this string starting at @a
1355:/usr/include/c++/4.8/bits/basic_string.h ****        *  __pos.  The length of the string is reduced by @a __n.  If
1356:/usr/include/c++/4.8/bits/basic_string.h ****        *  there are < @a __n characters to remove, the remainder of
1357:/usr/include/c++/4.8/bits/basic_string.h ****        *  the string is truncated.  If @a __p is beyond end of string,
1358:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.  The value of the string doesn't
1359:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1360:/usr/include/c++/4.8/bits/basic_string.h ****       */
1361:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1362:/usr/include/c++/4.8/bits/basic_string.h ****       erase(size_type __pos = 0, size_type __n = npos)
1363:/usr/include/c++/4.8/bits/basic_string.h ****       { 
1364:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_mutate(_M_check(__pos, "basic_string::erase"),
1365:/usr/include/c++/4.8/bits/basic_string.h **** 		  _M_limit(__pos, __n), size_type(0));
1366:/usr/include/c++/4.8/bits/basic_string.h **** 	return *this;
1367:/usr/include/c++/4.8/bits/basic_string.h ****       }
1368:/usr/include/c++/4.8/bits/basic_string.h **** 
1369:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1370:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove one character.
1371:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __position  Iterator referencing the character to remove.
1372:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  iterator referencing same location after removal.
1373:/usr/include/c++/4.8/bits/basic_string.h ****        *
1374:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the character at @a __position from this string. The value
1375:/usr/include/c++/4.8/bits/basic_string.h ****        *  of the string doesn't change if an error is thrown.
1376:/usr/include/c++/4.8/bits/basic_string.h ****       */
1377:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
1378:/usr/include/c++/4.8/bits/basic_string.h ****       erase(iterator __position)
1379:/usr/include/c++/4.8/bits/basic_string.h ****       {
1380:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()
1381:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __position < _M_iend());
1382:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __pos = __position - _M_ibegin();
1383:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_mutate(__pos, size_type(1), size_type(0));
1384:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_rep()->_M_set_leaked();
1385:/usr/include/c++/4.8/bits/basic_string.h **** 	return iterator(_M_data() + __pos);
1386:/usr/include/c++/4.8/bits/basic_string.h ****       }
1387:/usr/include/c++/4.8/bits/basic_string.h **** 
1388:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1389:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove a range of characters.
1390:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __first  Iterator referencing the first character to remove.
GAS LISTING /tmp/ccrG9BDx.s 			page 59


1391:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __last  Iterator referencing the end of the range.
1392:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Iterator referencing location of first after removal.
1393:/usr/include/c++/4.8/bits/basic_string.h ****        *
1394:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [first,last) from this string.
1395:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is thrown.
1396:/usr/include/c++/4.8/bits/basic_string.h ****       */
1397:/usr/include/c++/4.8/bits/basic_string.h ****       iterator
1398:/usr/include/c++/4.8/bits/basic_string.h ****       erase(iterator __first, iterator __last);
1399:/usr/include/c++/4.8/bits/basic_string.h ****  
1400:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1401:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1402:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Remove the last character.
1403:/usr/include/c++/4.8/bits/basic_string.h ****        *
1404:/usr/include/c++/4.8/bits/basic_string.h ****        *  The string must be non-empty.
1405:/usr/include/c++/4.8/bits/basic_string.h ****        */
1406:/usr/include/c++/4.8/bits/basic_string.h ****       void
1407:/usr/include/c++/4.8/bits/basic_string.h ****       pop_back()
1408:/usr/include/c++/4.8/bits/basic_string.h ****       { erase(size()-1, 1); }
1409:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1410:/usr/include/c++/4.8/bits/basic_string.h **** 
1411:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1412:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value from another string.
1413:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
1414:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to be replaced.
1415:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to insert.
1416:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1417:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos is beyond the end of this
1418:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.
1419:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1420:/usr/include/c++/4.8/bits/basic_string.h ****        *
1421:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos,__pos+__n) from
1422:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  In place, the value of @a __str is inserted.
1423:/usr/include/c++/4.8/bits/basic_string.h ****        *  If @a __pos is beyond end of string, out_of_range is thrown.
1424:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the length of the result exceeds max_size(), length_error
1425:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.  The value of the string doesn't change if an
1426:/usr/include/c++/4.8/bits/basic_string.h ****        *  error is thrown.
1427:/usr/include/c++/4.8/bits/basic_string.h ****       */
1428:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1429:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n, const basic_string& __str)
1430:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
1431:/usr/include/c++/4.8/bits/basic_string.h **** 
1432:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1433:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value from another string.
1434:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Index of first character to replace.
1435:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1436:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to insert.
1437:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos2  Index of first character of str to use.
1438:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters from str to use.
1439:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1440:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos1 > size() or @a __pos2 >
1441:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str.size().
1442:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1443:/usr/include/c++/4.8/bits/basic_string.h ****        *
1444:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos1,__pos1 + n) from this
1445:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.  In place, the value of @a __str is inserted.  If @a __pos is
1446:/usr/include/c++/4.8/bits/basic_string.h ****        *  beyond end of string, out_of_range is thrown.  If the length of the
1447:/usr/include/c++/4.8/bits/basic_string.h ****        *  result exceeds max_size(), length_error is thrown.  The value of the
GAS LISTING /tmp/ccrG9BDx.s 			page 60


1448:/usr/include/c++/4.8/bits/basic_string.h ****        *  string doesn't change if an error is thrown.
1449:/usr/include/c++/4.8/bits/basic_string.h ****       */
1450:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1451:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos1, size_type __n1, const basic_string& __str,
1452:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __pos2, size_type __n2)
1453:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__pos1, __n1, __str._M_data()
1454:/usr/include/c++/4.8/bits/basic_string.h **** 			     + __str._M_check(__pos2, "basic_string::replace"),
1455:/usr/include/c++/4.8/bits/basic_string.h **** 			     __str._M_limit(__pos2, __n2)); }
1456:/usr/include/c++/4.8/bits/basic_string.h **** 
1457:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1458:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value of a C substring.
1459:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
1460:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1461:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to insert.
1462:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters from @a s to use.
1463:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1464:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos1 > size().
1465:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1466:/usr/include/c++/4.8/bits/basic_string.h ****        *
1467:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos,__pos + __n1)
1468:/usr/include/c++/4.8/bits/basic_string.h ****        *  from this string.  In place, the first @a __n2 characters of
1469:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __s are inserted, or all of @a __s if @a __n2 is too large.  If
1470:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __pos is beyond end of string, out_of_range is thrown.  If
1471:/usr/include/c++/4.8/bits/basic_string.h ****        *  the length of result exceeds max_size(), length_error is
1472:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.  The value of the string doesn't change if an error
1473:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.
1474:/usr/include/c++/4.8/bits/basic_string.h ****       */
1475:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1476:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n1, const _CharT* __s,
1477:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __n2);
1478:/usr/include/c++/4.8/bits/basic_string.h **** 
1479:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1480:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with value of a C string.
1481:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
1482:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1483:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to insert.
1484:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1485:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a pos > size().
1486:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1487:/usr/include/c++/4.8/bits/basic_string.h ****        *
1488:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__pos,__pos + __n1)
1489:/usr/include/c++/4.8/bits/basic_string.h ****        *  from this string.  In place, the characters of @a __s are
1490:/usr/include/c++/4.8/bits/basic_string.h ****        *  inserted.  If @a __pos is beyond end of string, out_of_range
1491:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.  If the length of result exceeds max_size(),
1492:/usr/include/c++/4.8/bits/basic_string.h ****        *  length_error is thrown.  The value of the string doesn't
1493:/usr/include/c++/4.8/bits/basic_string.h ****        *  change if an error is thrown.
1494:/usr/include/c++/4.8/bits/basic_string.h ****       */
1495:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1496:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n1, const _CharT* __s)
1497:/usr/include/c++/4.8/bits/basic_string.h ****       {
1498:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1499:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__pos, __n1, __s, traits_type::length(__s));
1500:/usr/include/c++/4.8/bits/basic_string.h ****       }
1501:/usr/include/c++/4.8/bits/basic_string.h **** 
1502:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1503:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace characters with multiple characters.
1504:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to replace.
GAS LISTING /tmp/ccrG9BDx.s 			page 61


1505:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters to be replaced.
1506:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters to insert.
1507:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to insert.
1508:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1509:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If @a __pos > size().
1510:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1511:/usr/include/c++/4.8/bits/basic_string.h ****        *
1512:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [pos,pos + n1) from this
1513:/usr/include/c++/4.8/bits/basic_string.h ****        *  string.  In place, @a __n2 copies of @a __c are inserted.
1514:/usr/include/c++/4.8/bits/basic_string.h ****        *  If @a __pos is beyond end of string, out_of_range is thrown.
1515:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the length of result exceeds max_size(), length_error is
1516:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.  The value of the string doesn't change if an error
1517:/usr/include/c++/4.8/bits/basic_string.h ****        *  is thrown.
1518:/usr/include/c++/4.8/bits/basic_string.h ****       */
1519:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1520:/usr/include/c++/4.8/bits/basic_string.h ****       replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
1521:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
1522:/usr/include/c++/4.8/bits/basic_string.h **** 			      _M_limit(__pos, __n1), __n2, __c); }
1523:/usr/include/c++/4.8/bits/basic_string.h **** 
1524:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1525:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with string.
1526:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1527:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1528:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String value to insert.
1529:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1530:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1531:/usr/include/c++/4.8/bits/basic_string.h ****        *
1532:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1533:/usr/include/c++/4.8/bits/basic_string.h ****        *  the value of @a __str is inserted.  If the length of result
1534:/usr/include/c++/4.8/bits/basic_string.h ****        *  exceeds max_size(), length_error is thrown.  The value of
1535:/usr/include/c++/4.8/bits/basic_string.h ****        *  the string doesn't change if an error is thrown.
1536:/usr/include/c++/4.8/bits/basic_string.h ****       */
1537:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1538:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, const basic_string& __str)
1539:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
1540:/usr/include/c++/4.8/bits/basic_string.h **** 
1541:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1542:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with C substring.
1543:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1544:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1545:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string value to insert.
1546:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to insert.
1547:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1548:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1549:/usr/include/c++/4.8/bits/basic_string.h ****        *
1550:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1551:/usr/include/c++/4.8/bits/basic_string.h ****        *  the first @a __n characters of @a __s are inserted.  If the
1552:/usr/include/c++/4.8/bits/basic_string.h ****        *  length of result exceeds max_size(), length_error is thrown.
1553:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is
1554:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1555:/usr/include/c++/4.8/bits/basic_string.h ****       */
1556:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1557:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
1558:/usr/include/c++/4.8/bits/basic_string.h ****       {
1559:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1560:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1561:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
GAS LISTING /tmp/ccrG9BDx.s 			page 62


1562:/usr/include/c++/4.8/bits/basic_string.h ****       }
1563:/usr/include/c++/4.8/bits/basic_string.h **** 
1564:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1565:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with C string.
1566:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1567:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1568:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string value to insert.
1569:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1570:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1571:/usr/include/c++/4.8/bits/basic_string.h ****        *
1572:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1573:/usr/include/c++/4.8/bits/basic_string.h ****        *  the characters of @a __s are inserted.  If the length of
1574:/usr/include/c++/4.8/bits/basic_string.h ****        *  result exceeds max_size(), length_error is thrown.  The
1575:/usr/include/c++/4.8/bits/basic_string.h ****        *  value of the string doesn't change if an error is thrown.
1576:/usr/include/c++/4.8/bits/basic_string.h ****       */
1577:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1578:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, const _CharT* __s)
1579:/usr/include/c++/4.8/bits/basic_string.h ****       {
1580:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1581:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1, __i2, __s, traits_type::length(__s));
1582:/usr/include/c++/4.8/bits/basic_string.h ****       }
1583:/usr/include/c++/4.8/bits/basic_string.h **** 
1584:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1585:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with multiple characters
1586:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1587:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1588:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to insert.
1589:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to insert.
1590:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1591:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1592:/usr/include/c++/4.8/bits/basic_string.h ****        *
1593:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1594:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __n copies of @a __c are inserted.  If the length of
1595:/usr/include/c++/4.8/bits/basic_string.h ****        *  result exceeds max_size(), length_error is thrown.  The
1596:/usr/include/c++/4.8/bits/basic_string.h ****        *  value of the string doesn't change if an error is thrown.
1597:/usr/include/c++/4.8/bits/basic_string.h ****       */
1598:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1599:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
1600:/usr/include/c++/4.8/bits/basic_string.h ****       {
1601:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1602:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1603:/usr/include/c++/4.8/bits/basic_string.h **** 	return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
1604:/usr/include/c++/4.8/bits/basic_string.h ****       }
1605:/usr/include/c++/4.8/bits/basic_string.h **** 
1606:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1607:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with range.
1608:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1609:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1610:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __k1  Iterator referencing start of range to insert.
1611:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __k2  Iterator referencing end of range to insert.
1612:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1613:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1614:/usr/include/c++/4.8/bits/basic_string.h ****        *
1615:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1616:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters in the range [__k1,__k2) are inserted.  If the
1617:/usr/include/c++/4.8/bits/basic_string.h ****        *  length of result exceeds max_size(), length_error is thrown.
1618:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is
GAS LISTING /tmp/ccrG9BDx.s 			page 63


1619:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1620:/usr/include/c++/4.8/bits/basic_string.h ****       */
1621:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1622:/usr/include/c++/4.8/bits/basic_string.h ****         basic_string&
1623:/usr/include/c++/4.8/bits/basic_string.h ****         replace(iterator __i1, iterator __i2,
1624:/usr/include/c++/4.8/bits/basic_string.h **** 		_InputIterator __k1, _InputIterator __k2)
1625:/usr/include/c++/4.8/bits/basic_string.h ****         {
1626:/usr/include/c++/4.8/bits/basic_string.h **** 	  _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1627:/usr/include/c++/4.8/bits/basic_string.h **** 				   && __i2 <= _M_iend());
1628:/usr/include/c++/4.8/bits/basic_string.h **** 	  __glibcxx_requires_valid_range(__k1, __k2);
1629:/usr/include/c++/4.8/bits/basic_string.h **** 	  typedef typename std::__is_integer<_InputIterator>::__type _Integral;
1630:/usr/include/c++/4.8/bits/basic_string.h **** 	  return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
1631:/usr/include/c++/4.8/bits/basic_string.h **** 	}
1632:/usr/include/c++/4.8/bits/basic_string.h **** 
1633:/usr/include/c++/4.8/bits/basic_string.h ****       // Specializations for the common case of pointer and iterator:
1634:/usr/include/c++/4.8/bits/basic_string.h ****       // useful to avoid the overhead of temporary buffering in _M_replace.
1635:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1636:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
1637:/usr/include/c++/4.8/bits/basic_string.h ****       {
1638:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1639:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1640:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1641:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1642:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1, __k2 - __k1);
1643:/usr/include/c++/4.8/bits/basic_string.h ****       }
1644:/usr/include/c++/4.8/bits/basic_string.h **** 
1645:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1646:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2,
1647:/usr/include/c++/4.8/bits/basic_string.h **** 	      const _CharT* __k1, const _CharT* __k2)
1648:/usr/include/c++/4.8/bits/basic_string.h ****       {
1649:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1650:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1651:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1652:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1653:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1, __k2 - __k1);
1654:/usr/include/c++/4.8/bits/basic_string.h ****       }
1655:/usr/include/c++/4.8/bits/basic_string.h **** 
1656:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1657:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
1658:/usr/include/c++/4.8/bits/basic_string.h ****       {
1659:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1660:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1661:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1662:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1663:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1.base(), __k2 - __k1);
1664:/usr/include/c++/4.8/bits/basic_string.h ****       }
1665:/usr/include/c++/4.8/bits/basic_string.h **** 
1666:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1667:/usr/include/c++/4.8/bits/basic_string.h ****       replace(iterator __i1, iterator __i2,
1668:/usr/include/c++/4.8/bits/basic_string.h **** 	      const_iterator __k1, const_iterator __k2)
1669:/usr/include/c++/4.8/bits/basic_string.h ****       {
1670:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
1671:/usr/include/c++/4.8/bits/basic_string.h **** 				 && __i2 <= _M_iend());
1672:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_valid_range(__k1, __k2);
1673:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
1674:/usr/include/c++/4.8/bits/basic_string.h **** 			     __k1.base(), __k2 - __k1);
1675:/usr/include/c++/4.8/bits/basic_string.h ****       }
GAS LISTING /tmp/ccrG9BDx.s 			page 64


1676:/usr/include/c++/4.8/bits/basic_string.h ****       
1677:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
1678:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1679:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Replace range of characters with initializer_list.
1680:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i1  Iterator referencing start of range to replace.
1681:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __i2  Iterator referencing end of range to replace.
1682:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __l  The initializer_list of characters to insert.
1683:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Reference to this string.
1684:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::length_error  If new length exceeds @c max_size().
1685:/usr/include/c++/4.8/bits/basic_string.h ****        *
1686:/usr/include/c++/4.8/bits/basic_string.h ****        *  Removes the characters in the range [__i1,__i2).  In place,
1687:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters in the range [__k1,__k2) are inserted.  If the
1688:/usr/include/c++/4.8/bits/basic_string.h ****        *  length of result exceeds max_size(), length_error is thrown.
1689:/usr/include/c++/4.8/bits/basic_string.h ****        *  The value of the string doesn't change if an error is
1690:/usr/include/c++/4.8/bits/basic_string.h ****        *  thrown.
1691:/usr/include/c++/4.8/bits/basic_string.h ****       */
1692:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string& replace(iterator __i1, iterator __i2,
1693:/usr/include/c++/4.8/bits/basic_string.h **** 			    initializer_list<_CharT> __l)
1694:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->replace(__i1, __i2, __l.begin(), __l.end()); }
1695:/usr/include/c++/4.8/bits/basic_string.h **** #endif // C++11
1696:/usr/include/c++/4.8/bits/basic_string.h **** 
1697:/usr/include/c++/4.8/bits/basic_string.h ****     private:
1698:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _Integer>
1699:/usr/include/c++/4.8/bits/basic_string.h **** 	basic_string&
1700:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
1701:/usr/include/c++/4.8/bits/basic_string.h **** 			    _Integer __val, __true_type)
1702:/usr/include/c++/4.8/bits/basic_string.h ****         { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
1703:/usr/include/c++/4.8/bits/basic_string.h **** 
1704:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InputIterator>
1705:/usr/include/c++/4.8/bits/basic_string.h **** 	basic_string&
1706:/usr/include/c++/4.8/bits/basic_string.h **** 	_M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
1707:/usr/include/c++/4.8/bits/basic_string.h **** 			    _InputIterator __k2, __false_type);
1708:/usr/include/c++/4.8/bits/basic_string.h **** 
1709:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1710:/usr/include/c++/4.8/bits/basic_string.h ****       _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
1711:/usr/include/c++/4.8/bits/basic_string.h **** 		     _CharT __c);
1712:/usr/include/c++/4.8/bits/basic_string.h **** 
1713:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string&
1714:/usr/include/c++/4.8/bits/basic_string.h ****       _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
1715:/usr/include/c++/4.8/bits/basic_string.h **** 		      size_type __n2);
1716:/usr/include/c++/4.8/bits/basic_string.h **** 
1717:/usr/include/c++/4.8/bits/basic_string.h ****       // _S_construct_aux is used to implement the 21.3.1 para 15 which
1718:/usr/include/c++/4.8/bits/basic_string.h ****       // requires special behaviour if _InIter is an integral type
1719:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InIterator>
1720:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1721:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct_aux(_InIterator __beg, _InIterator __end,
1722:/usr/include/c++/4.8/bits/basic_string.h **** 			 const _Alloc& __a, __false_type)
1723:/usr/include/c++/4.8/bits/basic_string.h **** 	{
1724:/usr/include/c++/4.8/bits/basic_string.h ****           typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
1725:/usr/include/c++/4.8/bits/basic_string.h ****           return _S_construct(__beg, __end, __a, _Tag());
1726:/usr/include/c++/4.8/bits/basic_string.h **** 	}
1727:/usr/include/c++/4.8/bits/basic_string.h **** 
1728:/usr/include/c++/4.8/bits/basic_string.h ****       // _GLIBCXX_RESOLVE_LIB_DEFECTS
1729:/usr/include/c++/4.8/bits/basic_string.h ****       // 438. Ambiguity in the "do the right thing" clause
1730:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _Integer>
1731:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1732:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct_aux(_Integer __beg, _Integer __end,
GAS LISTING /tmp/ccrG9BDx.s 			page 65


1733:/usr/include/c++/4.8/bits/basic_string.h **** 			 const _Alloc& __a, __true_type)
1734:/usr/include/c++/4.8/bits/basic_string.h ****         { return _S_construct_aux_2(static_cast<size_type>(__beg),
1735:/usr/include/c++/4.8/bits/basic_string.h **** 				    __end, __a); }
1736:/usr/include/c++/4.8/bits/basic_string.h **** 
1737:/usr/include/c++/4.8/bits/basic_string.h ****       static _CharT*
1738:/usr/include/c++/4.8/bits/basic_string.h ****       _S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
1739:/usr/include/c++/4.8/bits/basic_string.h ****       { return _S_construct(__req, __c, __a); }
1740:/usr/include/c++/4.8/bits/basic_string.h **** 
1741:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InIterator>
1742:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1743:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
1744:/usr/include/c++/4.8/bits/basic_string.h **** 	{
1745:/usr/include/c++/4.8/bits/basic_string.h **** 	  typedef typename std::__is_integer<_InIterator>::__type _Integral;
1746:/usr/include/c++/4.8/bits/basic_string.h **** 	  return _S_construct_aux(__beg, __end, __a, _Integral());
1747:/usr/include/c++/4.8/bits/basic_string.h ****         }
1748:/usr/include/c++/4.8/bits/basic_string.h **** 
1749:/usr/include/c++/4.8/bits/basic_string.h ****       // For Input Iterators, used in istreambuf_iterators, etc.
1750:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _InIterator>
1751:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1752:/usr/include/c++/4.8/bits/basic_string.h ****          _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
1753:/usr/include/c++/4.8/bits/basic_string.h **** 		      input_iterator_tag);
1754:/usr/include/c++/4.8/bits/basic_string.h **** 
1755:/usr/include/c++/4.8/bits/basic_string.h ****       // For forward_iterators up to random_access_iterators, used for
1756:/usr/include/c++/4.8/bits/basic_string.h ****       // string::iterator, _CharT*, etc.
1757:/usr/include/c++/4.8/bits/basic_string.h ****       template<class _FwdIterator>
1758:/usr/include/c++/4.8/bits/basic_string.h ****         static _CharT*
1759:/usr/include/c++/4.8/bits/basic_string.h ****         _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
1760:/usr/include/c++/4.8/bits/basic_string.h **** 		     forward_iterator_tag);
1761:/usr/include/c++/4.8/bits/basic_string.h **** 
1762:/usr/include/c++/4.8/bits/basic_string.h ****       static _CharT*
1763:/usr/include/c++/4.8/bits/basic_string.h ****       _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
1764:/usr/include/c++/4.8/bits/basic_string.h **** 
1765:/usr/include/c++/4.8/bits/basic_string.h ****     public:
1766:/usr/include/c++/4.8/bits/basic_string.h **** 
1767:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1768:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Copy substring into C string.
1769:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to copy value into.
1770:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters to copy.
1771:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character to copy.
1772:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Number of characters actually copied
1773:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If __pos > size().
1774:/usr/include/c++/4.8/bits/basic_string.h ****        *
1775:/usr/include/c++/4.8/bits/basic_string.h ****        *  Copies up to @a __n characters starting at @a __pos into the
1776:/usr/include/c++/4.8/bits/basic_string.h ****        *  C string @a __s.  If @a __pos is %greater than size(),
1777:/usr/include/c++/4.8/bits/basic_string.h ****        *  out_of_range is thrown.
1778:/usr/include/c++/4.8/bits/basic_string.h ****       */
1779:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1780:/usr/include/c++/4.8/bits/basic_string.h ****       copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
1781:/usr/include/c++/4.8/bits/basic_string.h **** 
1782:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1783:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Swap contents with another string.
1784:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  String to swap with.
1785:/usr/include/c++/4.8/bits/basic_string.h ****        *
1786:/usr/include/c++/4.8/bits/basic_string.h ****        *  Exchanges the contents of this string with that of @a __s in constant
1787:/usr/include/c++/4.8/bits/basic_string.h ****        *  time.
1788:/usr/include/c++/4.8/bits/basic_string.h ****       */
1789:/usr/include/c++/4.8/bits/basic_string.h ****       void
GAS LISTING /tmp/ccrG9BDx.s 			page 66


1790:/usr/include/c++/4.8/bits/basic_string.h ****       swap(basic_string& __s);
1791:/usr/include/c++/4.8/bits/basic_string.h **** 
1792:/usr/include/c++/4.8/bits/basic_string.h ****       // String operations:
1793:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1794:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Return const pointer to null-terminated contents.
1795:/usr/include/c++/4.8/bits/basic_string.h ****        *
1796:/usr/include/c++/4.8/bits/basic_string.h ****        *  This is a handle to internal data.  Do not modify or dire things may
1797:/usr/include/c++/4.8/bits/basic_string.h ****        *  happen.
1798:/usr/include/c++/4.8/bits/basic_string.h ****       */
1799:/usr/include/c++/4.8/bits/basic_string.h ****       const _CharT*
1800:/usr/include/c++/4.8/bits/basic_string.h ****       c_str() const _GLIBCXX_NOEXCEPT
1801:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_data(); }
1802:/usr/include/c++/4.8/bits/basic_string.h **** 
1803:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1804:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Return const pointer to contents.
1805:/usr/include/c++/4.8/bits/basic_string.h ****        *
1806:/usr/include/c++/4.8/bits/basic_string.h ****        *  This is a handle to internal data.  Do not modify or dire things may
1807:/usr/include/c++/4.8/bits/basic_string.h ****        *  happen.
1808:/usr/include/c++/4.8/bits/basic_string.h ****       */
1809:/usr/include/c++/4.8/bits/basic_string.h ****       const _CharT*
1810:/usr/include/c++/4.8/bits/basic_string.h ****       data() const _GLIBCXX_NOEXCEPT
1811:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_data(); }
1812:/usr/include/c++/4.8/bits/basic_string.h **** 
1813:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1814:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Return copy of allocator used to construct this string.
1815:/usr/include/c++/4.8/bits/basic_string.h ****       */
1816:/usr/include/c++/4.8/bits/basic_string.h ****       allocator_type
1817:/usr/include/c++/4.8/bits/basic_string.h ****       get_allocator() const _GLIBCXX_NOEXCEPT
1818:/usr/include/c++/4.8/bits/basic_string.h ****       { return _M_dataplus; }
1819:/usr/include/c++/4.8/bits/basic_string.h **** 
1820:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1821:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a C substring.
1822:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1823:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from.
1824:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from @a s to search for.
1825:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of first occurrence.
1826:/usr/include/c++/4.8/bits/basic_string.h ****        *
1827:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for the first @a
1828:/usr/include/c++/4.8/bits/basic_string.h ****        *  __n characters in @a __s within this string.  If found,
1829:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it begins.  If not found, returns
1830:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
1831:/usr/include/c++/4.8/bits/basic_string.h ****       */
1832:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1833:/usr/include/c++/4.8/bits/basic_string.h ****       find(const _CharT* __s, size_type __pos, size_type __n) const;
1834:/usr/include/c++/4.8/bits/basic_string.h **** 
1835:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1836:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a string.
1837:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to locate.
1838:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1839:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of first occurrence.
1840:/usr/include/c++/4.8/bits/basic_string.h ****        *
1841:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for value of @a __str within
1842:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it begins.  If not
1843:/usr/include/c++/4.8/bits/basic_string.h ****        *  found, returns npos.
1844:/usr/include/c++/4.8/bits/basic_string.h ****       */
1845:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1846:/usr/include/c++/4.8/bits/basic_string.h ****       find(const basic_string& __str, size_type __pos = 0) const
GAS LISTING /tmp/ccrG9BDx.s 			page 67


1847:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
1848:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find(__str.data(), __pos, __str.size()); }
1849:/usr/include/c++/4.8/bits/basic_string.h **** 
1850:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1851:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a C string.
1852:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1853:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1854:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of first occurrence.
1855:/usr/include/c++/4.8/bits/basic_string.h ****        *
1856:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for the value of @a
1857:/usr/include/c++/4.8/bits/basic_string.h ****        *  __s within this string.  If found, returns the index where
1858:/usr/include/c++/4.8/bits/basic_string.h ****        *  it begins.  If not found, returns npos.
1859:/usr/include/c++/4.8/bits/basic_string.h ****       */
1860:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1861:/usr/include/c++/4.8/bits/basic_string.h ****       find(const _CharT* __s, size_type __pos = 0) const
1862:/usr/include/c++/4.8/bits/basic_string.h ****       {
1863:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1864:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find(__s, __pos, traits_type::length(__s));
1865:/usr/include/c++/4.8/bits/basic_string.h ****       }
1866:/usr/include/c++/4.8/bits/basic_string.h **** 
1867:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1868:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character.
1869:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
1870:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1871:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1872:/usr/include/c++/4.8/bits/basic_string.h ****        *
1873:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for @a __c within
1874:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
1875:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
1876:/usr/include/c++/4.8/bits/basic_string.h ****       */
1877:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1878:/usr/include/c++/4.8/bits/basic_string.h ****       find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT;
1879:/usr/include/c++/4.8/bits/basic_string.h **** 
1880:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1881:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a string.
1882:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to locate.
1883:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
1884:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of last occurrence.
1885:/usr/include/c++/4.8/bits/basic_string.h ****        *
1886:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for value of @a
1887:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str within this string.  If found, returns the index where
1888:/usr/include/c++/4.8/bits/basic_string.h ****        *  it begins.  If not found, returns npos.
1889:/usr/include/c++/4.8/bits/basic_string.h ****       */
1890:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1891:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(const basic_string& __str, size_type __pos = npos) const
1892:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
1893:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->rfind(__str.data(), __pos, __str.size()); }
1894:/usr/include/c++/4.8/bits/basic_string.h **** 
1895:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1896:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a C substring.
1897:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1898:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from.
1899:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to search for.
1900:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of last occurrence.
1901:/usr/include/c++/4.8/bits/basic_string.h ****        *
1902:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for the first @a
1903:/usr/include/c++/4.8/bits/basic_string.h ****        *  __n characters in @a __s within this string.  If found,
GAS LISTING /tmp/ccrG9BDx.s 			page 68


1904:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it begins.  If not found, returns
1905:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
1906:/usr/include/c++/4.8/bits/basic_string.h ****       */
1907:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1908:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(const _CharT* __s, size_type __pos, size_type __n) const;
1909:/usr/include/c++/4.8/bits/basic_string.h **** 
1910:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1911:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a C string.
1912:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to locate.
1913:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to start search at (default end).
1914:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of start of  last occurrence.
1915:/usr/include/c++/4.8/bits/basic_string.h ****        *
1916:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for the value of
1917:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __s within this string.  If found, returns the index
1918:/usr/include/c++/4.8/bits/basic_string.h ****        *  where it begins.  If not found, returns npos.
1919:/usr/include/c++/4.8/bits/basic_string.h ****       */
1920:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1921:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(const _CharT* __s, size_type __pos = npos) const
1922:/usr/include/c++/4.8/bits/basic_string.h ****       {
1923:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1924:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->rfind(__s, __pos, traits_type::length(__s));
1925:/usr/include/c++/4.8/bits/basic_string.h ****       }
1926:/usr/include/c++/4.8/bits/basic_string.h **** 
1927:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1928:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character.
1929:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
1930:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
1931:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
1932:/usr/include/c++/4.8/bits/basic_string.h ****        *
1933:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for @a __c within
1934:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
1935:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
1936:/usr/include/c++/4.8/bits/basic_string.h ****       */
1937:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1938:/usr/include/c++/4.8/bits/basic_string.h ****       rfind(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT;
1939:/usr/include/c++/4.8/bits/basic_string.h **** 
1940:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1941:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character of string.
1942:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to locate.
1943:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1944:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1945:/usr/include/c++/4.8/bits/basic_string.h ****        *
1946:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for one of the
1947:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __str within this string.  If found,
1948:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
1949:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
1950:/usr/include/c++/4.8/bits/basic_string.h ****       */
1951:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1952:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(const basic_string& __str, size_type __pos = 0) const
1953:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
1954:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_first_of(__str.data(), __pos, __str.size()); }
1955:/usr/include/c++/4.8/bits/basic_string.h **** 
1956:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1957:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character of C substring.
1958:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  String containing characters to locate.
1959:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from.
1960:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to search for.
GAS LISTING /tmp/ccrG9BDx.s 			page 69


1961:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1962:/usr/include/c++/4.8/bits/basic_string.h ****        *
1963:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for one of the
1964:/usr/include/c++/4.8/bits/basic_string.h ****        *  first @a __n characters of @a __s within this string.  If
1965:/usr/include/c++/4.8/bits/basic_string.h ****        *  found, returns the index where it was found.  If not found,
1966:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns npos.
1967:/usr/include/c++/4.8/bits/basic_string.h ****       */
1968:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1969:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
1970:/usr/include/c++/4.8/bits/basic_string.h **** 
1971:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1972:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character of C string.
1973:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  String containing characters to locate.
1974:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1975:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1976:/usr/include/c++/4.8/bits/basic_string.h ****        *
1977:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for one of the
1978:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __s within this string.  If found, returns
1979:/usr/include/c++/4.8/bits/basic_string.h ****        *  the index where it was found.  If not found, returns npos.
1980:/usr/include/c++/4.8/bits/basic_string.h ****       */
1981:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
1982:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(const _CharT* __s, size_type __pos = 0) const
1983:/usr/include/c++/4.8/bits/basic_string.h ****       {
1984:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
1985:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_first_of(__s, __pos, traits_type::length(__s));
1986:/usr/include/c++/4.8/bits/basic_string.h ****       }
1987:/usr/include/c++/4.8/bits/basic_string.h **** 
1988:/usr/include/c++/4.8/bits/basic_string.h ****       /**
1989:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character.
1990:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
1991:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
1992:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
1993:/usr/include/c++/4.8/bits/basic_string.h ****        *
1994:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for the character
1995:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __c within this string.  If found, returns the index
1996:/usr/include/c++/4.8/bits/basic_string.h ****        *  where it was found.  If not found, returns npos.
1997:/usr/include/c++/4.8/bits/basic_string.h ****        *
1998:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note: equivalent to find(__c, __pos).
1999:/usr/include/c++/4.8/bits/basic_string.h ****       */
2000:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2001:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT
2002:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find(__c, __pos); }
2003:/usr/include/c++/4.8/bits/basic_string.h **** 
2004:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2005:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character of string.
2006:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to locate.
2007:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2008:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2009:/usr/include/c++/4.8/bits/basic_string.h ****        *
2010:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for one of the
2011:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __str within this string.  If found,
2012:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
2013:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
2014:/usr/include/c++/4.8/bits/basic_string.h ****       */
2015:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2016:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(const basic_string& __str, size_type __pos = npos) const
2017:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
GAS LISTING /tmp/ccrG9BDx.s 			page 70


2018:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_last_of(__str.data(), __pos, __str.size()); }
2019:/usr/include/c++/4.8/bits/basic_string.h **** 
2020:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2021:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character of C substring.
2022:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to locate.
2023:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from.
2024:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to search for.
2025:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2026:/usr/include/c++/4.8/bits/basic_string.h ****        *
2027:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for one of the
2028:/usr/include/c++/4.8/bits/basic_string.h ****        *  first @a __n characters of @a __s within this string.  If
2029:/usr/include/c++/4.8/bits/basic_string.h ****        *  found, returns the index where it was found.  If not found,
2030:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns npos.
2031:/usr/include/c++/4.8/bits/basic_string.h ****       */
2032:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2033:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
2034:/usr/include/c++/4.8/bits/basic_string.h **** 
2035:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2036:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character of C string.
2037:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to locate.
2038:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2039:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2040:/usr/include/c++/4.8/bits/basic_string.h ****        *
2041:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for one of the
2042:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters of @a __s within this string.  If found, returns
2043:/usr/include/c++/4.8/bits/basic_string.h ****        *  the index where it was found.  If not found, returns npos.
2044:/usr/include/c++/4.8/bits/basic_string.h ****       */
2045:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2046:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(const _CharT* __s, size_type __pos = npos) const
2047:/usr/include/c++/4.8/bits/basic_string.h ****       {
2048:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
2049:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_last_of(__s, __pos, traits_type::length(__s));
2050:/usr/include/c++/4.8/bits/basic_string.h ****       }
2051:/usr/include/c++/4.8/bits/basic_string.h **** 
2052:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2053:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character.
2054:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to locate.
2055:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2056:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2057:/usr/include/c++/4.8/bits/basic_string.h ****        *
2058:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for @a __c within
2059:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
2060:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
2061:/usr/include/c++/4.8/bits/basic_string.h ****        *
2062:/usr/include/c++/4.8/bits/basic_string.h ****        *  Note: equivalent to rfind(__c, __pos).
2063:/usr/include/c++/4.8/bits/basic_string.h ****       */
2064:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2065:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_of(_CharT __c, size_type __pos = npos) const _GLIBCXX_NOEXCEPT
2066:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->rfind(__c, __pos); }
2067:/usr/include/c++/4.8/bits/basic_string.h **** 
2068:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2069:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character not in string.
2070:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to avoid.
2071:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
2072:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2073:/usr/include/c++/4.8/bits/basic_string.h ****        *
2074:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character not contained
GAS LISTING /tmp/ccrG9BDx.s 			page 71


2075:/usr/include/c++/4.8/bits/basic_string.h ****        *  in @a __str within this string.  If found, returns the index where it
2076:/usr/include/c++/4.8/bits/basic_string.h ****        *  was found.  If not found, returns npos.
2077:/usr/include/c++/4.8/bits/basic_string.h ****       */
2078:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2079:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(const basic_string& __str, size_type __pos = 0) const
2080:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
2081:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
2082:/usr/include/c++/4.8/bits/basic_string.h **** 
2083:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2084:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character not in C substring.
2085:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2086:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from.
2087:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from __s to consider.
2088:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2089:/usr/include/c++/4.8/bits/basic_string.h ****        *
2090:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character not
2091:/usr/include/c++/4.8/bits/basic_string.h ****        *  contained in the first @a __n characters of @a __s within
2092:/usr/include/c++/4.8/bits/basic_string.h ****        *  this string.  If found, returns the index where it was
2093:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
2094:/usr/include/c++/4.8/bits/basic_string.h ****       */
2095:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2096:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(const _CharT* __s, size_type __pos,
2097:/usr/include/c++/4.8/bits/basic_string.h **** 			size_type __n) const;
2098:/usr/include/c++/4.8/bits/basic_string.h **** 
2099:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2100:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a character not in C string.
2101:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2102:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
2103:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2104:/usr/include/c++/4.8/bits/basic_string.h ****        *
2105:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character not
2106:/usr/include/c++/4.8/bits/basic_string.h ****        *  contained in @a __s within this string.  If found, returns
2107:/usr/include/c++/4.8/bits/basic_string.h ****        *  the index where it was found.  If not found, returns npos.
2108:/usr/include/c++/4.8/bits/basic_string.h ****       */
2109:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2110:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(const _CharT* __s, size_type __pos = 0) const
2111:/usr/include/c++/4.8/bits/basic_string.h ****       {
2112:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
2113:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_first_not_of(__s, __pos, traits_type::length(__s));
2114:/usr/include/c++/4.8/bits/basic_string.h ****       }
2115:/usr/include/c++/4.8/bits/basic_string.h **** 
2116:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2117:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find position of a different character.
2118:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to avoid.
2119:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search from (default 0).
2120:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of first occurrence.
2121:/usr/include/c++/4.8/bits/basic_string.h ****        *
2122:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches forward for a character
2123:/usr/include/c++/4.8/bits/basic_string.h ****        *  other than @a __c within this string.  If found, returns the
2124:/usr/include/c++/4.8/bits/basic_string.h ****        *  index where it was found.  If not found, returns npos.
2125:/usr/include/c++/4.8/bits/basic_string.h ****       */
2126:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2127:/usr/include/c++/4.8/bits/basic_string.h ****       find_first_not_of(_CharT __c, size_type __pos = 0) const
2128:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT;
2129:/usr/include/c++/4.8/bits/basic_string.h **** 
2130:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2131:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character not in string.
GAS LISTING /tmp/ccrG9BDx.s 			page 72


2132:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String containing characters to avoid.
2133:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2134:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2135:/usr/include/c++/4.8/bits/basic_string.h ****        *
2136:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character
2137:/usr/include/c++/4.8/bits/basic_string.h ****        *  not contained in @a __str within this string.  If found,
2138:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
2139:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
2140:/usr/include/c++/4.8/bits/basic_string.h ****       */
2141:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2142:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(const basic_string& __str, size_type __pos = npos) const
2143:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT
2144:/usr/include/c++/4.8/bits/basic_string.h ****       { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
2145:/usr/include/c++/4.8/bits/basic_string.h **** 
2146:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2147:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character not in C substring.
2148:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2149:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from.
2150:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters from s to consider.
2151:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2152:/usr/include/c++/4.8/bits/basic_string.h ****        *
2153:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character not
2154:/usr/include/c++/4.8/bits/basic_string.h ****        *  contained in the first @a __n characters of @a __s within this string.
2155:/usr/include/c++/4.8/bits/basic_string.h ****        *  If found, returns the index where it was found.  If not found,
2156:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns npos.
2157:/usr/include/c++/4.8/bits/basic_string.h ****       */
2158:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2159:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(const _CharT* __s, size_type __pos,
2160:/usr/include/c++/4.8/bits/basic_string.h **** 		       size_type __n) const;
2161:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2162:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a character not in C string.
2163:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string containing characters to avoid.
2164:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2165:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2166:/usr/include/c++/4.8/bits/basic_string.h ****        *
2167:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character
2168:/usr/include/c++/4.8/bits/basic_string.h ****        *  not contained in @a __s within this string.  If found,
2169:/usr/include/c++/4.8/bits/basic_string.h ****        *  returns the index where it was found.  If not found, returns
2170:/usr/include/c++/4.8/bits/basic_string.h ****        *  npos.
2171:/usr/include/c++/4.8/bits/basic_string.h ****       */
2172:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2173:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(const _CharT* __s, size_type __pos = npos) const
2174:/usr/include/c++/4.8/bits/basic_string.h ****       {
2175:/usr/include/c++/4.8/bits/basic_string.h **** 	__glibcxx_requires_string(__s);
2176:/usr/include/c++/4.8/bits/basic_string.h **** 	return this->find_last_not_of(__s, __pos, traits_type::length(__s));
2177:/usr/include/c++/4.8/bits/basic_string.h ****       }
2178:/usr/include/c++/4.8/bits/basic_string.h **** 
2179:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2180:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Find last position of a different character.
2181:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __c  Character to avoid.
2182:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of character to search back from (default end).
2183:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Index of last occurrence.
2184:/usr/include/c++/4.8/bits/basic_string.h ****        *
2185:/usr/include/c++/4.8/bits/basic_string.h ****        *  Starting from @a __pos, searches backward for a character other than
2186:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __c within this string.  If found, returns the index where it was
2187:/usr/include/c++/4.8/bits/basic_string.h ****        *  found.  If not found, returns npos.
2188:/usr/include/c++/4.8/bits/basic_string.h ****       */
GAS LISTING /tmp/ccrG9BDx.s 			page 73


2189:/usr/include/c++/4.8/bits/basic_string.h ****       size_type
2190:/usr/include/c++/4.8/bits/basic_string.h ****       find_last_not_of(_CharT __c, size_type __pos = npos) const
2191:/usr/include/c++/4.8/bits/basic_string.h **** 	_GLIBCXX_NOEXCEPT;
2192:/usr/include/c++/4.8/bits/basic_string.h **** 
2193:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2194:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Get a substring.
2195:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character (default 0).
2196:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters in substring (default remainder).
2197:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  The new string.
2198:/usr/include/c++/4.8/bits/basic_string.h ****        *  @throw  std::out_of_range  If __pos > size().
2199:/usr/include/c++/4.8/bits/basic_string.h ****        *
2200:/usr/include/c++/4.8/bits/basic_string.h ****        *  Construct and return a new string using the @a __n
2201:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a __pos.  If the string is too
2202:/usr/include/c++/4.8/bits/basic_string.h ****        *  short, use the remainder of the characters.  If @a __pos is
2203:/usr/include/c++/4.8/bits/basic_string.h ****        *  beyond the end of the string, out_of_range is thrown.
2204:/usr/include/c++/4.8/bits/basic_string.h ****       */
2205:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string
2206:/usr/include/c++/4.8/bits/basic_string.h ****       substr(size_type __pos = 0, size_type __n = npos) const
2207:/usr/include/c++/4.8/bits/basic_string.h ****       { return basic_string(*this,
2208:/usr/include/c++/4.8/bits/basic_string.h **** 			    _M_check(__pos, "basic_string::substr"), __n); }
2209:/usr/include/c++/4.8/bits/basic_string.h **** 
2210:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2211:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare to a string.
2212:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to compare against.
2213:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2214:/usr/include/c++/4.8/bits/basic_string.h ****        *
2215:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns an integer < 0 if this string is ordered before @a
2216:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str, 0 if their values are equivalent, or > 0 if this
2217:/usr/include/c++/4.8/bits/basic_string.h ****        *  string is ordered after @a __str.  Determines the effective
2218:/usr/include/c++/4.8/bits/basic_string.h ****        *  length rlen of the strings to compare as the smallest of
2219:/usr/include/c++/4.8/bits/basic_string.h ****        *  size() and str.size().  The function then compares the two
2220:/usr/include/c++/4.8/bits/basic_string.h ****        *  strings by calling traits::compare(data(), str.data(),rlen).
2221:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the result of the comparison is nonzero returns it,
2222:/usr/include/c++/4.8/bits/basic_string.h ****        *  otherwise the shorter one is ordered first.
2223:/usr/include/c++/4.8/bits/basic_string.h ****       */
2224:/usr/include/c++/4.8/bits/basic_string.h ****       int
2225:/usr/include/c++/4.8/bits/basic_string.h ****       compare(const basic_string& __str) const
2226:/usr/include/c++/4.8/bits/basic_string.h ****       {
2227:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __size = this->size();
2228:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __osize = __str.size();
2229:/usr/include/c++/4.8/bits/basic_string.h **** 	const size_type __len = std::min(__size, __osize);
2230:/usr/include/c++/4.8/bits/basic_string.h **** 
2231:/usr/include/c++/4.8/bits/basic_string.h **** 	int __r = traits_type::compare(_M_data(), __str.data(), __len);
2232:/usr/include/c++/4.8/bits/basic_string.h **** 	if (!__r)
2233:/usr/include/c++/4.8/bits/basic_string.h **** 	  __r = _S_compare(__size, __osize);
2234:/usr/include/c++/4.8/bits/basic_string.h **** 	return __r;
2235:/usr/include/c++/4.8/bits/basic_string.h ****       }
2236:/usr/include/c++/4.8/bits/basic_string.h **** 
2237:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2238:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring to a string.
2239:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character of substring.
2240:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n  Number of characters in substring.
2241:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to compare against.
2242:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2243:/usr/include/c++/4.8/bits/basic_string.h ****        *
2244:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n characters
2245:/usr/include/c++/4.8/bits/basic_string.h ****        *  starting at @a __pos.  Returns an integer < 0 if the
GAS LISTING /tmp/ccrG9BDx.s 			page 74


2246:/usr/include/c++/4.8/bits/basic_string.h ****        *  substring is ordered before @a __str, 0 if their values are
2247:/usr/include/c++/4.8/bits/basic_string.h ****        *  equivalent, or > 0 if the substring is ordered after @a
2248:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str.  Determines the effective length rlen of the strings
2249:/usr/include/c++/4.8/bits/basic_string.h ****        *  to compare as the smallest of the length of the substring
2250:/usr/include/c++/4.8/bits/basic_string.h ****        *  and @a __str.size().  The function then compares the two
2251:/usr/include/c++/4.8/bits/basic_string.h ****        *  strings by calling
2252:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),str.data(),rlen).  If the
2253:/usr/include/c++/4.8/bits/basic_string.h ****        *  result of the comparison is nonzero returns it, otherwise
2254:/usr/include/c++/4.8/bits/basic_string.h ****        *  the shorter one is ordered first.
2255:/usr/include/c++/4.8/bits/basic_string.h ****       */
2256:/usr/include/c++/4.8/bits/basic_string.h ****       int
2257:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos, size_type __n, const basic_string& __str) const;
2258:/usr/include/c++/4.8/bits/basic_string.h **** 
2259:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2260:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring to a substring.
2261:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos1  Index of first character of substring.
2262:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters in substring.
2263:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __str  String to compare against.
2264:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos2  Index of first character of substring of str.
2265:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters in substring of str.
2266:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2267:/usr/include/c++/4.8/bits/basic_string.h ****        *
2268:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n1
2269:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a __pos1.  Form the substring of @a
2270:/usr/include/c++/4.8/bits/basic_string.h ****        *  __str from the @a __n2 characters starting at @a __pos2.
2271:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns an integer < 0 if this substring is ordered before
2272:/usr/include/c++/4.8/bits/basic_string.h ****        *  the substring of @a __str, 0 if their values are equivalent,
2273:/usr/include/c++/4.8/bits/basic_string.h ****        *  or > 0 if this substring is ordered after the substring of
2274:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __str.  Determines the effective length rlen of the
2275:/usr/include/c++/4.8/bits/basic_string.h ****        *  strings to compare as the smallest of the lengths of the
2276:/usr/include/c++/4.8/bits/basic_string.h ****        *  substrings.  The function then compares the two strings by
2277:/usr/include/c++/4.8/bits/basic_string.h ****        *  calling
2278:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen).
2279:/usr/include/c++/4.8/bits/basic_string.h ****        *  If the result of the comparison is nonzero returns it,
2280:/usr/include/c++/4.8/bits/basic_string.h ****        *  otherwise the shorter one is ordered first.
2281:/usr/include/c++/4.8/bits/basic_string.h ****       */
2282:/usr/include/c++/4.8/bits/basic_string.h ****       int
2283:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos1, size_type __n1, const basic_string& __str,
2284:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __pos2, size_type __n2) const;
2285:/usr/include/c++/4.8/bits/basic_string.h **** 
2286:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2287:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare to a C string.
2288:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to compare against.
2289:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2290:/usr/include/c++/4.8/bits/basic_string.h ****        *
2291:/usr/include/c++/4.8/bits/basic_string.h ****        *  Returns an integer < 0 if this string is ordered before @a __s, 0 if
2292:/usr/include/c++/4.8/bits/basic_string.h ****        *  their values are equivalent, or > 0 if this string is ordered after
2293:/usr/include/c++/4.8/bits/basic_string.h ****        *  @a __s.  Determines the effective length rlen of the strings to
2294:/usr/include/c++/4.8/bits/basic_string.h ****        *  compare as the smallest of size() and the length of a string
2295:/usr/include/c++/4.8/bits/basic_string.h ****        *  constructed from @a __s.  The function then compares the two strings
2296:/usr/include/c++/4.8/bits/basic_string.h ****        *  by calling traits::compare(data(),s,rlen).  If the result of the
2297:/usr/include/c++/4.8/bits/basic_string.h ****        *  comparison is nonzero returns it, otherwise the shorter one is
2298:/usr/include/c++/4.8/bits/basic_string.h ****        *  ordered first.
2299:/usr/include/c++/4.8/bits/basic_string.h ****       */
2300:/usr/include/c++/4.8/bits/basic_string.h ****       int
2301:/usr/include/c++/4.8/bits/basic_string.h ****       compare(const _CharT* __s) const;
2302:/usr/include/c++/4.8/bits/basic_string.h **** 
GAS LISTING /tmp/ccrG9BDx.s 			page 75


2303:/usr/include/c++/4.8/bits/basic_string.h ****       // _GLIBCXX_RESOLVE_LIB_DEFECTS
2304:/usr/include/c++/4.8/bits/basic_string.h ****       // 5 String::compare specification questionable
2305:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2306:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring to a C string.
2307:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character of substring.
2308:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters in substring.
2309:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  C string to compare against.
2310:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2311:/usr/include/c++/4.8/bits/basic_string.h ****        *
2312:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n1
2313:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a pos.  Returns an integer < 0 if
2314:/usr/include/c++/4.8/bits/basic_string.h ****        *  the substring is ordered before @a __s, 0 if their values
2315:/usr/include/c++/4.8/bits/basic_string.h ****        *  are equivalent, or > 0 if the substring is ordered after @a
2316:/usr/include/c++/4.8/bits/basic_string.h ****        *  __s.  Determines the effective length rlen of the strings to
2317:/usr/include/c++/4.8/bits/basic_string.h ****        *  compare as the smallest of the length of the substring and
2318:/usr/include/c++/4.8/bits/basic_string.h ****        *  the length of a string constructed from @a __s.  The
2319:/usr/include/c++/4.8/bits/basic_string.h ****        *  function then compares the two string by calling
2320:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),__s,rlen).  If the result of
2321:/usr/include/c++/4.8/bits/basic_string.h ****        *  the comparison is nonzero returns it, otherwise the shorter
2322:/usr/include/c++/4.8/bits/basic_string.h ****        *  one is ordered first.
2323:/usr/include/c++/4.8/bits/basic_string.h ****       */
2324:/usr/include/c++/4.8/bits/basic_string.h ****       int
2325:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos, size_type __n1, const _CharT* __s) const;
2326:/usr/include/c++/4.8/bits/basic_string.h **** 
2327:/usr/include/c++/4.8/bits/basic_string.h ****       /**
2328:/usr/include/c++/4.8/bits/basic_string.h ****        *  @brief  Compare substring against a character %array.
2329:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __pos  Index of first character of substring.
2330:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n1  Number of characters in substring.
2331:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __s  character %array to compare against.
2332:/usr/include/c++/4.8/bits/basic_string.h ****        *  @param __n2  Number of characters of s.
2333:/usr/include/c++/4.8/bits/basic_string.h ****        *  @return  Integer < 0, 0, or > 0.
2334:/usr/include/c++/4.8/bits/basic_string.h ****        *
2335:/usr/include/c++/4.8/bits/basic_string.h ****        *  Form the substring of this string from the @a __n1
2336:/usr/include/c++/4.8/bits/basic_string.h ****        *  characters starting at @a __pos.  Form a string from the
2337:/usr/include/c++/4.8/bits/basic_string.h ****        *  first @a __n2 characters of @a __s.  Returns an integer < 0
2338:/usr/include/c++/4.8/bits/basic_string.h ****        *  if this substring is ordered before the string from @a __s,
2339:/usr/include/c++/4.8/bits/basic_string.h ****        *  0 if their values are equivalent, or > 0 if this substring
2340:/usr/include/c++/4.8/bits/basic_string.h ****        *  is ordered after the string from @a __s.  Determines the
2341:/usr/include/c++/4.8/bits/basic_string.h ****        *  effective length rlen of the strings to compare as the
2342:/usr/include/c++/4.8/bits/basic_string.h ****        *  smallest of the length of the substring and @a __n2.  The
2343:/usr/include/c++/4.8/bits/basic_string.h ****        *  function then compares the two strings by calling
2344:/usr/include/c++/4.8/bits/basic_string.h ****        *  traits::compare(substring.data(),s,rlen).  If the result of
2345:/usr/include/c++/4.8/bits/basic_string.h ****        *  the comparison is nonzero returns it, otherwise the shorter
2346:/usr/include/c++/4.8/bits/basic_string.h ****        *  one is ordered first.
2347:/usr/include/c++/4.8/bits/basic_string.h ****        *
2348:/usr/include/c++/4.8/bits/basic_string.h ****        *  NB: s must have at least n2 characters, &apos;\\0&apos; has
2349:/usr/include/c++/4.8/bits/basic_string.h ****        *  no special meaning.
2350:/usr/include/c++/4.8/bits/basic_string.h ****       */
2351:/usr/include/c++/4.8/bits/basic_string.h ****       int
2352:/usr/include/c++/4.8/bits/basic_string.h ****       compare(size_type __pos, size_type __n1, const _CharT* __s,
2353:/usr/include/c++/4.8/bits/basic_string.h **** 	      size_type __n2) const;
2354:/usr/include/c++/4.8/bits/basic_string.h ****   };
2355:/usr/include/c++/4.8/bits/basic_string.h **** 
2356:/usr/include/c++/4.8/bits/basic_string.h ****   // operator+
2357:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2358:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate two strings.
2359:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
GAS LISTING /tmp/ccrG9BDx.s 			page 76


2360:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2361:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with value of @a __lhs followed by @a __rhs.
2362:/usr/include/c++/4.8/bits/basic_string.h ****    */
2363:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2364:/usr/include/c++/4.8/bits/basic_string.h ****     basic_string<_CharT, _Traits, _Alloc>
2365:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2366:/usr/include/c++/4.8/bits/basic_string.h **** 	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2367:/usr/include/c++/4.8/bits/basic_string.h ****     {
2368:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
2369:/usr/include/c++/4.8/bits/basic_string.h ****       __str.append(__rhs);
2370:/usr/include/c++/4.8/bits/basic_string.h ****       return __str;
2371:/usr/include/c++/4.8/bits/basic_string.h ****     }
2372:/usr/include/c++/4.8/bits/basic_string.h **** 
2373:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2374:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate C string and string.
2375:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2376:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2377:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with value of @a __lhs followed by @a __rhs.
2378:/usr/include/c++/4.8/bits/basic_string.h ****    */
2379:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2380:/usr/include/c++/4.8/bits/basic_string.h ****     basic_string<_CharT,_Traits,_Alloc>
2381:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const _CharT* __lhs,
2382:/usr/include/c++/4.8/bits/basic_string.h **** 	      const basic_string<_CharT,_Traits,_Alloc>& __rhs);
2383:/usr/include/c++/4.8/bits/basic_string.h **** 
2384:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2385:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate character and string.
2386:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2387:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2388:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with @a __lhs followed by @a __rhs.
2389:/usr/include/c++/4.8/bits/basic_string.h ****    */
2390:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2391:/usr/include/c++/4.8/bits/basic_string.h ****     basic_string<_CharT,_Traits,_Alloc>
2392:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
2393:/usr/include/c++/4.8/bits/basic_string.h **** 
2394:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2395:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate string and C string.
2396:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2397:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2398:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with @a __lhs followed by @a __rhs.
2399:/usr/include/c++/4.8/bits/basic_string.h ****    */
2400:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2401:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2402:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2403:/usr/include/c++/4.8/bits/basic_string.h **** 	     const _CharT* __rhs)
2404:/usr/include/c++/4.8/bits/basic_string.h ****     {
2405:/usr/include/c++/4.8/bits/basic_string.h ****       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
2406:/usr/include/c++/4.8/bits/basic_string.h ****       __str.append(__rhs);
2407:/usr/include/c++/4.8/bits/basic_string.h ****       return __str;
2408:/usr/include/c++/4.8/bits/basic_string.h ****     }
2409:/usr/include/c++/4.8/bits/basic_string.h **** 
2410:/usr/include/c++/4.8/bits/basic_string.h ****   /**
2411:/usr/include/c++/4.8/bits/basic_string.h ****    *  @brief  Concatenate string and character.
2412:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __lhs  First string.
2413:/usr/include/c++/4.8/bits/basic_string.h ****    *  @param __rhs  Last string.
2414:/usr/include/c++/4.8/bits/basic_string.h ****    *  @return  New string with @a __lhs followed by @a __rhs.
2415:/usr/include/c++/4.8/bits/basic_string.h ****    */
2416:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
GAS LISTING /tmp/ccrG9BDx.s 			page 77


2417:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2418:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
2419:/usr/include/c++/4.8/bits/basic_string.h ****     {
2420:/usr/include/c++/4.8/bits/basic_string.h ****       typedef basic_string<_CharT, _Traits, _Alloc>	__string_type;
2421:/usr/include/c++/4.8/bits/basic_string.h ****       typedef typename __string_type::size_type		__size_type;
2422:/usr/include/c++/4.8/bits/basic_string.h ****       __string_type __str(__lhs);
2423:/usr/include/c++/4.8/bits/basic_string.h ****       __str.append(__size_type(1), __rhs);
2424:/usr/include/c++/4.8/bits/basic_string.h ****       return __str;
2425:/usr/include/c++/4.8/bits/basic_string.h ****     }
2426:/usr/include/c++/4.8/bits/basic_string.h **** 
2427:/usr/include/c++/4.8/bits/basic_string.h **** #if __cplusplus >= 201103L
2428:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2429:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2430:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
2431:/usr/include/c++/4.8/bits/basic_string.h **** 	      const basic_string<_CharT, _Traits, _Alloc>& __rhs)
2432:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__lhs.append(__rhs)); }
2433:/usr/include/c++/4.8/bits/basic_string.h **** 
2434:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2435:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2436:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
2437:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2438:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__rhs.insert(0, __lhs)); }
2439:/usr/include/c++/4.8/bits/basic_string.h **** 
2440:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2441:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2442:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
2443:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2444:/usr/include/c++/4.8/bits/basic_string.h ****     {
2445:/usr/include/c++/4.8/bits/basic_string.h ****       const auto __size = __lhs.size() + __rhs.size();
2446:/usr/include/c++/4.8/bits/basic_string.h ****       const bool __cond = (__size > __lhs.capacity()
2447:/usr/include/c++/4.8/bits/basic_string.h **** 			   && __size <= __rhs.capacity());
2448:/usr/include/c++/4.8/bits/basic_string.h ****       return __cond ? std::move(__rhs.insert(0, __lhs))
2449:/usr/include/c++/4.8/bits/basic_string.h **** 	            : std::move(__lhs.append(__rhs));
2450:/usr/include/c++/4.8/bits/basic_string.h ****     }
2451:/usr/include/c++/4.8/bits/basic_string.h **** 
2452:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2453:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2454:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(const _CharT* __lhs,
2455:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2456:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__rhs.insert(0, __lhs)); }
2457:/usr/include/c++/4.8/bits/basic_string.h **** 
2458:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2459:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2460:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(_CharT __lhs,
2461:/usr/include/c++/4.8/bits/basic_string.h **** 	      basic_string<_CharT, _Traits, _Alloc>&& __rhs)
2462:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__rhs.insert(0, 1, __lhs)); }
2463:/usr/include/c++/4.8/bits/basic_string.h **** 
2464:/usr/include/c++/4.8/bits/basic_string.h ****   template<typename _CharT, typename _Traits, typename _Alloc>
2465:/usr/include/c++/4.8/bits/basic_string.h ****     inline basic_string<_CharT, _Traits, _Alloc>
2466:/usr/include/c++/4.8/bits/basic_string.h ****     operator+(basic_string<_CharT, _Traits, _Alloc>&& __lhs,
 590              		.loc 7 2466 0
 591              		.cfi_startproc
 592              	.LVL63:
 593 0000 53       		pushq	%rbx
 594              		.cfi_def_cfa_offset 16
 595              		.cfi_offset 3, -16
 596 0001 4889FB   		movq	%rdi, %rbx
GAS LISTING /tmp/ccrG9BDx.s 			page 78


 597 0004 4889F7   		movq	%rsi, %rdi
 598              	.LVL64:
2467:/usr/include/c++/4.8/bits/basic_string.h **** 	      const _CharT* __rhs)
2468:/usr/include/c++/4.8/bits/basic_string.h ****     { return std::move(__lhs.append(__rhs)); }
 599              		.loc 7 2468 0
 600 0007 4889D6   		movq	%rdx, %rsi
 601              	.LVL65:
 602 000a E8000000 		call	_ZNSs6appendEPKc
 602      00
 603              	.LVL66:
 604 000f 4889C7   		movq	%rax, %rdi
 605 0012 E8000000 		call	_ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
 605      00
 606              	.LVL67:
 607 0017 4889C6   		movq	%rax, %rsi
 608 001a 4889DF   		movq	%rbx, %rdi
 609 001d E8000000 		call	_ZNSsC1EOSs
 609      00
 610              	.LVL68:
 611 0022 4889D8   		movq	%rbx, %rax
 612 0025 5B       		popq	%rbx
 613              		.cfi_def_cfa_offset 8
 614              	.LVL69:
 615 0026 C3       		ret
 616              		.cfi_endproc
 617              	.LFE1318:
 619              		.section	.rodata.str1.1
 620              	.LC1:
 621 0004 4D794578 		.string	"MyExceptionB("
 621      63657074 
 621      696F6E42 
 621      2800
 622              	.LC2:
 623 0012 2900     		.string	")"
 624              		.text
 625 0185 90       		.align 2
 626              		.globl	_ZNK12MyExceptionB9as_stringEv
 628              	_ZNK12MyExceptionB9as_stringEv:
 629              	.LFB1251:
  29:rethrow.cpp   ****     return "MyExceptionB(" + _what + ")";
 630              		.loc 1 29 0
 631              		.cfi_startproc
 632              		.cfi_personality 0x3,__gxx_personality_v0
 633              		.cfi_lsda 0x3,.LLSDA1251
 634              	.LVL70:
 635 0186 53       		pushq	%rbx
 636              		.cfi_def_cfa_offset 16
 637              		.cfi_offset 3, -16
 638 0187 4883EC10 		subq	$16, %rsp
 639              		.cfi_def_cfa_offset 32
 640 018b 4889FB   		movq	%rdi, %rbx
  30:rethrow.cpp   **** }
 641              		.loc 1 30 0
 642 018e 488D5608 		leaq	8(%rsi), %rdx
 643 0192 BE000000 		movl	$.LC1, %esi
 643      00
 644              	.LVL71:
GAS LISTING /tmp/ccrG9BDx.s 			page 79


 645 0197 4889E7   		movq	%rsp, %rdi
 646              	.LVL72:
 647              	.LEHB10:
 648 019a E8000000 		call	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
 648      00
 649              	.LEHE10:
 650              	.LVL73:
 651 019f BA000000 		movl	$.LC2, %edx
 651      00
 652 01a4 4889E6   		movq	%rsp, %rsi
 653 01a7 4889DF   		movq	%rbx, %rdi
 654              	.LEHB11:
 655 01aa E8000000 		call	_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
 655      00
 656              	.LEHE11:
 657              	.LVL74:
 658 01af EB13     		jmp	.L46
 659              	.L44:
 660 01b1 4889C3   		movq	%rax, %rbx
 661              	.LVL75:
 662 01b4 4889E7   		movq	%rsp, %rdi
 663 01b7 E8000000 		call	_ZNSsD1Ev
 663      00
 664              	.LVL76:
 665 01bc 4889DF   		movq	%rbx, %rdi
 666              	.LEHB12:
 667 01bf E8000000 		call	_Unwind_Resume
 667      00
 668              	.LEHE12:
 669              	.LVL77:
 670              	.L46:
  30:rethrow.cpp   **** }
 671              		.loc 1 30 0 is_stmt 0 discriminator 2
 672 01c4 4889E7   		movq	%rsp, %rdi
 673 01c7 E8000000 		call	_ZNSsD1Ev
 673      00
 674              	.LVL78:
  31:rethrow.cpp   **** 
 675              		.loc 1 31 0 is_stmt 1 discriminator 2
 676 01cc 4889D8   		movq	%rbx, %rax
 677 01cf 4883C410 		addq	$16, %rsp
 678              		.cfi_def_cfa_offset 16
 679 01d3 5B       		popq	%rbx
 680              		.cfi_def_cfa_offset 8
 681              	.LVL79:
 682 01d4 C3       		ret
 683              		.cfi_endproc
 684              	.LFE1251:
 685              		.section	.gcc_except_table
 686              	.LLSDA1251:
 687 005d FF       		.byte	0xff
 688 005e FF       		.byte	0xff
 689 005f 01       		.byte	0x1
 690 0060 0C       		.uleb128 .LLSDACSE1251-.LLSDACSB1251
 691              	.LLSDACSB1251:
 692 0061 14       		.uleb128 .LEHB10-.LFB1251
 693 0062 05       		.uleb128 .LEHE10-.LEHB10
GAS LISTING /tmp/ccrG9BDx.s 			page 80


 694 0063 00       		.uleb128 0
 695 0064 00       		.uleb128 0
 696 0065 24       		.uleb128 .LEHB11-.LFB1251
 697 0066 05       		.uleb128 .LEHE11-.LEHB11
 698 0067 2B       		.uleb128 .L44-.LFB1251
 699 0068 00       		.uleb128 0
 700 0069 39       		.uleb128 .LEHB12-.LFB1251
 701 006a 05       		.uleb128 .LEHE12-.LEHB12
 702 006b 00       		.uleb128 0
 703 006c 00       		.uleb128 0
 704              	.LLSDACSE1251:
 705              		.text
 707              		.section	.rodata.str1.1
 708              	.LC3:
 709 0014 466F6F00 		.string	"Foo"
 710              	.LC4:
 711 0018 476F7420 		.string	"Got exception:"
 711      65786365 
 711      7074696F 
 711      6E3A00
 712              	.LC5:
 713 0027 20726574 		.string	" rethrowing..."
 713      68726F77 
 713      696E672E 
 713      2E2E00
 714              		.text
 715              		.globl	_Z17catch_and_rethrowv
 717              	_Z17catch_and_rethrowv:
 718              	.LFB1259:
  38:rethrow.cpp   ****     try {
 719              		.loc 1 38 0
 720              		.cfi_startproc
 721              		.cfi_personality 0x3,__gxx_personality_v0
 722              		.cfi_lsda 0x3,.LLSDA1259
 723 01d5 55       		pushq	%rbp
 724              		.cfi_def_cfa_offset 16
 725              		.cfi_offset 6, -16
 726 01d6 53       		pushq	%rbx
 727              		.cfi_def_cfa_offset 24
 728              		.cfi_offset 3, -24
 729 01d7 4883EC28 		subq	$40, %rsp
 730              		.cfi_def_cfa_offset 64
 731              	.LBB6:
  40:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 732              		.loc 1 40 0
 733 01db 488D5424 		leaq	16(%rsp), %rdx
 733      10
 734 01e0 BE000000 		movl	$.LC3, %esi
 734      00
 735 01e5 4889E7   		movq	%rsp, %rdi
 736              	.LEHB13:
 737 01e8 E8000000 		call	_ZNSsC1EPKcRKSaIcE
 737      00
 738              	.LEHE13:
 739              	.LVL80:
  40:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 740              		.loc 1 40 0 is_stmt 0 discriminator 1
GAS LISTING /tmp/ccrG9BDx.s 			page 81


 741 01ed 4889E7   		movq	%rsp, %rdi
 742              	.LEHB14:
 743 01f0 E8000000 		call	_Z18throw_MyExceptionBSs
 743      00
 744              	.LEHE14:
 745              	.LVL81:
 746              	.L58:
 747 01f5 4889C5   		movq	%rax, %rbp
 748 01f8 4889D3   		movq	%rdx, %rbx
  40:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 749              		.loc 1 40 0
 750 01fb 4889E7   		movq	%rsp, %rdi
 751 01fe E8000000 		call	_ZNSsD1Ev
 751      00
 752              	.LVL82:
 753 0203 4889E8   		movq	%rbp, %rax
 754 0206 4889DA   		movq	%rbx, %rdx
 755 0209 EB00     		jmp	.L50
 756              	.L57:
 757              	.L50:
 758 020b 4883FA01 		cmpq	$1, %rdx
 759 020f 742C     		je	.L52
 760 0211 EB25     		jmp	.L61
 761              	.LVL83:
 762              	.L60:
 763 0213 4889C5   		movq	%rax, %rbp
 764 0216 4889D3   		movq	%rdx, %rbx
 765              	.LBB7:
  42:rethrow.cpp   ****         throw;
 766              		.loc 1 42 0 is_stmt 1
 767 0219 488D7C24 		leaq	16(%rsp), %rdi
 767      10
 768 021e E8000000 		call	_ZNSsD1Ev
 768      00
 769              	.LVL84:
 770 0223 EB06     		jmp	.L54
 771              	.L59:
 772 0225 4889C5   		movq	%rax, %rbp
 773 0228 4889D3   		movq	%rdx, %rbx
 774              	.L54:
  41:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " rethrowing..." << endl;
 775              		.loc 1 41 0
 776 022b E8000000 		call	__cxa_end_catch
 776      00
 777              	.LVL85:
 778 0230 4889EF   		movq	%rbp, %rdi
 779 0233 4889DA   		movq	%rbx, %rdx
 780 0236 EB5F     		jmp	.L55
 781              	.L61:
 782 0238 4889C7   		movq	%rax, %rdi
 783 023b EB5A     		jmp	.L55
 784              	.L52:
 785 023d 4889C7   		movq	%rax, %rdi
 786 0240 E8000000 		call	__cxa_begin_catch
 786      00
 787              	.LVL86:
  42:rethrow.cpp   ****         throw;
GAS LISTING /tmp/ccrG9BDx.s 			page 82


 788              		.loc 1 42 0
 789 0245 4889C6   		movq	%rax, %rsi
 790 0248 488D7C24 		leaq	16(%rsp), %rdi
 790      10
 791              	.LEHB15:
 792 024d E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 792      00
 793              	.LEHE15:
 794              	.LVL87:
  42:rethrow.cpp   ****         throw;
 795              		.loc 1 42 0 is_stmt 0 discriminator 1
 796 0252 BE000000 		movl	$.LC4, %esi
 796      00
 797 0257 BF000000 		movl	$_ZSt4cout, %edi
 797      00
 798              	.LEHB16:
 799 025c E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 799      00
 800              	.LVL88:
 801 0261 488D7424 		leaq	16(%rsp), %rsi
 801      10
 802 0266 4889C7   		movq	%rax, %rdi
 803 0269 E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 803      00
 804              	.LVL89:
 805 026e BE000000 		movl	$.LC5, %esi
 805      00
 806 0273 4889C7   		movq	%rax, %rdi
 807 0276 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 807      00
 808              	.LVL90:
  42:rethrow.cpp   ****         throw;
 809              		.loc 1 42 0 discriminator 2
 810 027b BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 810      00
 811 0280 4889C7   		movq	%rax, %rdi
 812 0283 E8000000 		call	_ZNSolsEPFRSoS_E
 812      00
 813              	.LEHE16:
 814              	.LVL91:
  42:rethrow.cpp   ****         throw;
 815              		.loc 1 42 0 discriminator 1
 816 0288 488D7C24 		leaq	16(%rsp), %rdi
 816      10
 817 028d E8000000 		call	_ZNSsD1Ev
 817      00
 818              	.LVL92:
 819              	.LEHB17:
  43:rethrow.cpp   ****     }
 820              		.loc 1 43 0 is_stmt 1 discriminator 1
 821 0292 E8000000 		call	__cxa_rethrow
 821      00
 822              	.LEHE17:
 823              	.LVL93:
 824              	.L55:
 825 0297 4883FAFF 		cmpq	$-1, %rdx
 826 029b 7405     		je	.L56
GAS LISTING /tmp/ccrG9BDx.s 			page 83


 827              	.LEHB18:
 828 029d E8000000 		call	_Unwind_Resume
 828      00
 829              	.LVL94:
 830              	.L56:
 831              	.LBE7:
 832              	.LBE6:
  38:rethrow.cpp   ****     try {
 833              		.loc 1 38 0
 834 02a2 E8000000 		call	__cxa_call_unexpected
 834      00
 835              	.LEHE18:
 836              	.LVL95:
 837              		.cfi_endproc
 838              	.LFE1259:
 839              		.section	.gcc_except_table
 840 006d 000000   		.align 4
 841              	.LLSDA1259:
 842 0070 FF       		.byte	0xff
 843 0071 03       		.byte	0x3
 844 0072 29       		.uleb128 .LLSDATT1259-.LLSDATTD1259
 845              	.LLSDATTD1259:
 846 0073 01       		.byte	0x1
 847 0074 1B       		.uleb128 .LLSDACSE1259-.LLSDACSB1259
 848              	.LLSDACSB1259:
 849 0075 13       		.uleb128 .LEHB13-.LFB1259
 850 0076 05       		.uleb128 .LEHE13-.LEHB13
 851 0077 36       		.uleb128 .L57-.LFB1259
 852 0078 03       		.uleb128 0x3
 853 0079 1B       		.uleb128 .LEHB14-.LFB1259
 854 007a 05       		.uleb128 .LEHE14-.LEHB14
 855 007b 20       		.uleb128 .L58-.LFB1259
 856 007c 05       		.uleb128 0x5
 857 007d 78       		.uleb128 .LEHB15-.LFB1259
 858 007e 05       		.uleb128 .LEHE15-.LEHB15
 859 007f 50       		.uleb128 .L59-.LFB1259
 860 0080 07       		.uleb128 0x7
 861 0081 8701     		.uleb128 .LEHB16-.LFB1259
 862 0083 2C       		.uleb128 .LEHE16-.LEHB16
 863 0084 3E       		.uleb128 .L60-.LFB1259
 864 0085 07       		.uleb128 0x7
 865 0086 BD01     		.uleb128 .LEHB17-.LFB1259
 866 0088 05       		.uleb128 .LEHE17-.LEHB17
 867 0089 50       		.uleb128 .L59-.LFB1259
 868 008a 07       		.uleb128 0x7
 869 008b C801     		.uleb128 .LEHB18-.LFB1259
 870 008d 0A       		.uleb128 .LEHE18-.LEHB18
 871 008e 00       		.uleb128 0
 872 008f 00       		.uleb128 0
 873              	.LLSDACSE1259:
 874 0090 7F       		.byte	0x7f
 875 0091 00       		.byte	0
 876 0092 01       		.byte	0x1
 877 0093 7D       		.byte	0x7d
 878 0094 00       		.byte	0
 879 0095 7D       		.byte	0x7d
 880 0096 00       		.byte	0
GAS LISTING /tmp/ccrG9BDx.s 			page 84


 881 0097 79       		.byte	0x79
 882              		.align 4
 883 0098 00000000 		.long	_ZTI12MyExceptionB
 884              	.LLSDATT1259:
 885 009c 01       		.byte	0x1
 886 009d 00       		.byte	0
 887              		.text
 889              		.section	.rodata.str1.1
 890              	.LC6:
 891 0036 42617A00 		.string	"Baz"
 892              	.LC7:
 893 003a 20746872 		.string	" throwing another..."
 893      6F77696E 
 893      6720616E 
 893      6F746865 
 893      722E2E2E 
 894              		.text
 895              		.globl	_Z23catch_and_throw_anotherv
 897              	_Z23catch_and_throw_anotherv:
 898              	.LFB1260:
  47:rethrow.cpp   ****     try {
 899              		.loc 1 47 0
 900              		.cfi_startproc
 901              		.cfi_personality 0x3,__gxx_personality_v0
 902              		.cfi_lsda 0x3,.LLSDA1260
 903 02a7 4154     		pushq	%r12
 904              		.cfi_def_cfa_offset 16
 905              		.cfi_offset 12, -16
 906 02a9 55       		pushq	%rbp
 907              		.cfi_def_cfa_offset 24
 908              		.cfi_offset 6, -24
 909 02aa 53       		pushq	%rbx
 910              		.cfi_def_cfa_offset 32
 911              		.cfi_offset 3, -32
 912 02ab 4883EC30 		subq	$48, %rsp
 913              		.cfi_def_cfa_offset 80
 914              	.LBB8:
  49:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 915              		.loc 1 49 0
 916 02af 488D5424 		leaq	32(%rsp), %rdx
 916      20
 917 02b4 BE000000 		movl	$.LC6, %esi
 917      00
 918 02b9 4889E7   		movq	%rsp, %rdi
 919              	.LEHB19:
 920 02bc E8000000 		call	_ZNSsC1EPKcRKSaIcE
 920      00
 921              	.LEHE19:
 922              	.LVL96:
  49:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 923              		.loc 1 49 0 is_stmt 0 discriminator 1
 924 02c1 4889E7   		movq	%rsp, %rdi
 925              	.LEHB20:
 926 02c4 E8000000 		call	_Z18throw_MyExceptionBSs
 926      00
 927              	.LEHE20:
 928              	.LVL97:
GAS LISTING /tmp/ccrG9BDx.s 			page 85


 929              	.L74:
 930 02c9 4889C5   		movq	%rax, %rbp
 931 02cc 4889D3   		movq	%rdx, %rbx
  49:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 932              		.loc 1 49 0
 933 02cf 4889E7   		movq	%rsp, %rdi
 934 02d2 E8000000 		call	_ZNSsD1Ev
 934      00
 935              	.LVL98:
 936 02d7 4889E8   		movq	%rbp, %rax
 937 02da 4889DA   		movq	%rbx, %rdx
 938 02dd EB00     		jmp	.L65
 939              	.L73:
 940              	.L65:
 941 02df 4883FA01 		cmpq	$1, %rdx
 942 02e3 7445     		je	.L67
 943 02e5 EB3B     		jmp	.L78
 944              	.LVL99:
 945              	.L76:
 946 02e7 4889C5   		movq	%rax, %rbp
 947              	.LVL100:
 948 02ea 4889D3   		movq	%rdx, %rbx
 949              	.LBB9:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 950              		.loc 1 51 0 is_stmt 1
 951 02ed 488D7C24 		leaq	16(%rsp), %rdi
 951      10
 952 02f2 E8000000 		call	_ZNSsD1Ev
 952      00
 953              	.LVL101:
 954 02f7 EB19     		jmp	.L69
 955              	.LVL102:
 956              	.L77:
 957 02f9 4889C5   		movq	%rax, %rbp
 958              	.LVL103:
 959 02fc 4989D4   		movq	%rdx, %r12
  52:rethrow.cpp   ****     }
 960              		.loc 1 52 0
 961 02ff 4889DF   		movq	%rbx, %rdi
 962 0302 E8000000 		call	__cxa_free_exception
 962      00
 963              	.LVL104:
 964 0307 4C89E3   		movq	%r12, %rbx
 965 030a EB06     		jmp	.L69
 966              	.LVL105:
 967              	.L75:
 968 030c 4889C5   		movq	%rax, %rbp
 969              	.LVL106:
 970 030f 4889D3   		movq	%rdx, %rbx
 971              	.L69:
  50:rethrow.cpp   ****         cout << "Got exception:" << e.as_string() << " throwing another..." << endl;
 972              		.loc 1 50 0
 973 0312 E8000000 		call	__cxa_end_catch
 973      00
 974              	.LVL107:
 975 0317 4889EF   		movq	%rbp, %rdi
 976 031a 4889DA   		movq	%rbx, %rdx
GAS LISTING /tmp/ccrG9BDx.s 			page 86


 977 031d E9A30000 		jmp	.L71
 977      00
 978              	.L78:
 979 0322 4889C7   		movq	%rax, %rdi
 980 0325 E99B0000 		jmp	.L71
 980      00
 981              	.L67:
 982 032a 4889C7   		movq	%rax, %rdi
 983 032d E8000000 		call	__cxa_begin_catch
 983      00
 984              	.LVL108:
 985 0332 4889C5   		movq	%rax, %rbp
 986              	.LVL109:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 987              		.loc 1 51 0
 988 0335 4889C6   		movq	%rax, %rsi
 989 0338 488D7C24 		leaq	16(%rsp), %rdi
 989      10
 990              	.LEHB21:
 991 033d E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 991      00
 992              	.LEHE21:
 993              	.LVL110:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 994              		.loc 1 51 0 is_stmt 0 discriminator 1
 995 0342 BE000000 		movl	$.LC4, %esi
 995      00
 996 0347 BF000000 		movl	$_ZSt4cout, %edi
 996      00
 997              	.LEHB22:
 998 034c E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 998      00
 999              	.LVL111:
 1000 0351 488D7424 		leaq	16(%rsp), %rsi
 1000      10
 1001 0356 4889C7   		movq	%rax, %rdi
 1002 0359 E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 1002      00
 1003              	.LVL112:
 1004 035e BE000000 		movl	$.LC7, %esi
 1004      00
 1005 0363 4889C7   		movq	%rax, %rdi
 1006 0366 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 1006      00
 1007              	.LVL113:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 1008              		.loc 1 51 0 discriminator 2
 1009 036b BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 1009      00
 1010 0370 4889C7   		movq	%rax, %rdi
 1011 0373 E8000000 		call	_ZNSolsEPFRSoS_E
 1011      00
 1012              	.LEHE22:
 1013              	.LVL114:
  51:rethrow.cpp   ****         throw MyExceptionB(e.as_string());
 1014              		.loc 1 51 0 discriminator 1
 1015 0378 488D7C24 		leaq	16(%rsp), %rdi
GAS LISTING /tmp/ccrG9BDx.s 			page 87


 1015      10
 1016 037d E8000000 		call	_ZNSsD1Ev
 1016      00
 1017              	.LVL115:
  52:rethrow.cpp   ****     }
 1018              		.loc 1 52 0 is_stmt 1 discriminator 1
 1019 0382 BF100000 		movl	$16, %edi
 1019      00
 1020 0387 E8000000 		call	__cxa_allocate_exception
 1020      00
 1021              	.LVL116:
 1022 038c 4889C3   		movq	%rax, %rbx
 1023 038f 4889EE   		movq	%rbp, %rsi
 1024 0392 488D7C24 		leaq	32(%rsp), %rdi
 1024      20
 1025              	.LEHB23:
 1026 0397 E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 1026      00
 1027              	.LEHE23:
 1028              	.LVL117:
 1029 039c 488D7424 		leaq	32(%rsp), %rsi
 1029      20
 1030 03a1 4889DF   		movq	%rbx, %rdi
 1031 03a4 E8000000 		call	_ZN12MyExceptionBC1ESs
 1031      00
 1032              	.LVL118:
 1033 03a9 488D7C24 		leaq	32(%rsp), %rdi
 1033      20
 1034 03ae E8000000 		call	_ZNSsD1Ev
 1034      00
 1035              	.LVL119:
 1036 03b3 BA000000 		movl	$_ZN12MyExceptionBD1Ev, %edx
 1036      00
 1037 03b8 BE000000 		movl	$_ZTI12MyExceptionB, %esi
 1037      00
 1038 03bd 4889DF   		movq	%rbx, %rdi
 1039              	.LEHB24:
 1040 03c0 E8000000 		call	__cxa_throw
 1040      00
 1041              	.LEHE24:
 1042              	.LVL120:
 1043              	.L71:
 1044 03c5 4883FAFF 		cmpq	$-1, %rdx
 1045 03c9 7405     		je	.L72
 1046              	.LEHB25:
 1047 03cb E8000000 		call	_Unwind_Resume
 1047      00
 1048              	.LVL121:
 1049              	.L72:
 1050              	.LBE9:
 1051              	.LBE8:
  47:rethrow.cpp   ****     try {
 1052              		.loc 1 47 0
 1053 03d0 E8000000 		call	__cxa_call_unexpected
 1053      00
 1054              	.LEHE25:
 1055              	.LVL122:
GAS LISTING /tmp/ccrG9BDx.s 			page 88


 1056              		.cfi_endproc
 1057              	.LFE1260:
 1058              		.section	.gcc_except_table
 1059 009e 0000     		.align 4
 1060              	.LLSDA1260:
 1061 00a0 FF       		.byte	0xff
 1062 00a1 03       		.byte	0x3
 1063 00a2 31       		.uleb128 .LLSDATT1260-.LLSDATTD1260
 1064              	.LLSDATTD1260:
 1065 00a3 01       		.byte	0x1
 1066 00a4 21       		.uleb128 .LLSDACSE1260-.LLSDACSB1260
 1067              	.LLSDACSB1260:
 1068 00a5 15       		.uleb128 .LEHB19-.LFB1260
 1069 00a6 05       		.uleb128 .LEHE19-.LEHB19
 1070 00a7 38       		.uleb128 .L73-.LFB1260
 1071 00a8 03       		.uleb128 0x3
 1072 00a9 1D       		.uleb128 .LEHB20-.LFB1260
 1073 00aa 05       		.uleb128 .LEHE20-.LEHB20
 1074 00ab 22       		.uleb128 .L74-.LFB1260
 1075 00ac 05       		.uleb128 0x5
 1076 00ad 9601     		.uleb128 .LEHB21-.LFB1260
 1077 00af 05       		.uleb128 .LEHE21-.LEHB21
 1078 00b0 65       		.uleb128 .L75-.LFB1260
 1079 00b1 07       		.uleb128 0x7
 1080 00b2 A501     		.uleb128 .LEHB22-.LFB1260
 1081 00b4 2C       		.uleb128 .LEHE22-.LEHB22
 1082 00b5 40       		.uleb128 .L76-.LFB1260
 1083 00b6 07       		.uleb128 0x7
 1084 00b7 F001     		.uleb128 .LEHB23-.LFB1260
 1085 00b9 05       		.uleb128 .LEHE23-.LEHB23
 1086 00ba 52       		.uleb128 .L77-.LFB1260
 1087 00bb 07       		.uleb128 0x7
 1088 00bc 9902     		.uleb128 .LEHB24-.LFB1260
 1089 00be 05       		.uleb128 .LEHE24-.LEHB24
 1090 00bf 65       		.uleb128 .L75-.LFB1260
 1091 00c0 07       		.uleb128 0x7
 1092 00c1 A402     		.uleb128 .LEHB25-.LFB1260
 1093 00c3 0A       		.uleb128 .LEHE25-.LEHB25
 1094 00c4 00       		.uleb128 0
 1095 00c5 00       		.uleb128 0
 1096              	.LLSDACSE1260:
 1097 00c6 7F       		.byte	0x7f
 1098 00c7 00       		.byte	0
 1099 00c8 01       		.byte	0x1
 1100 00c9 7D       		.byte	0x7d
 1101 00ca 00       		.byte	0
 1102 00cb 7D       		.byte	0x7d
 1103 00cc 00       		.byte	0
 1104 00cd 79       		.byte	0x79
 1105 00ce 0000     		.align 4
 1106 00d0 00000000 		.long	_ZTI12MyExceptionB
 1107              	.LLSDATT1260:
 1108 00d4 01       		.byte	0x1
 1109 00d5 00       		.byte	0
 1110              		.text
 1112              		.section	.rodata.str1.1
 1113              	.LC8:
GAS LISTING /tmp/ccrG9BDx.s 			page 89


 1114 004f 4D61696E 		.string	"Main got exception: "
 1114      20676F74 
 1114      20657863 
 1114      65707469 
 1114      6F6E3A20 
 1115              		.text
 1116              		.globl	_Z9doRethrowv
 1118              	_Z9doRethrowv:
 1119              	.LFB1262:
  60:rethrow.cpp   ****     try {
 1120              		.loc 1 60 0
 1121              		.cfi_startproc
 1122              		.cfi_personality 0x3,__gxx_personality_v0
 1123              		.cfi_lsda 0x3,.LLSDA1262
 1124 03d5 53       		pushq	%rbx
 1125              		.cfi_def_cfa_offset 16
 1126              		.cfi_offset 3, -16
 1127 03d6 4883EC10 		subq	$16, %rsp
 1128              		.cfi_def_cfa_offset 32
 1129              	.LEHB26:
 1130              	.LBB10:
  62:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 1131              		.loc 1 62 0
 1132 03da E8000000 		call	_Z17catch_and_rethrowv
 1132      00
 1133              	.LEHE26:
 1134              	.LVL123:
 1135              	.L93:
 1136 03df 4889C3   		movq	%rax, %rbx
 1137              	.LBB11:
  64:rethrow.cpp   ****     }
 1138              		.loc 1 64 0
 1139 03e2 4889E7   		movq	%rsp, %rdi
 1140 03e5 E8000000 		call	_ZNSsD1Ev
 1140      00
 1141              	.LVL124:
 1142 03ea EB03     		jmp	.L82
 1143              	.L92:
 1144 03ec 4889C3   		movq	%rax, %rbx
 1145              	.L82:
  63:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1146              		.loc 1 63 0
 1147 03ef E8000000 		call	__cxa_end_catch
 1147      00
 1148              	.LVL125:
 1149 03f4 4889DF   		movq	%rbx, %rdi
 1150              	.LEHB27:
 1151 03f7 E8000000 		call	_Unwind_Resume
 1151      00
 1152              	.LVL126:
 1153              	.L91:
 1154 03fc 4889C7   		movq	%rax, %rdi
 1155 03ff 4883FA01 		cmpq	$1, %rdx
 1156 0403 7405     		je	.L85
 1157 0405 E8000000 		call	_Unwind_Resume
 1157      00
 1158              	.LEHE27:
GAS LISTING /tmp/ccrG9BDx.s 			page 90


 1159              	.LVL127:
 1160              	.L85:
 1161 040a E8000000 		call	__cxa_begin_catch
 1161      00
 1162              	.LVL128:
  64:rethrow.cpp   ****     }
 1163              		.loc 1 64 0
 1164 040f 4889C6   		movq	%rax, %rsi
 1165 0412 4889E7   		movq	%rsp, %rdi
 1166              	.LEHB28:
 1167 0415 E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 1167      00
 1168              	.LEHE28:
 1169              	.LVL129:
  64:rethrow.cpp   ****     }
 1170              		.loc 1 64 0 is_stmt 0 discriminator 1
 1171 041a BE000000 		movl	$.LC8, %esi
 1171      00
 1172 041f BF000000 		movl	$_ZSt4cout, %edi
 1172      00
 1173              	.LEHB29:
 1174 0424 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 1174      00
 1175              	.LVL130:
 1176 0429 4889E6   		movq	%rsp, %rsi
 1177 042c 4889C7   		movq	%rax, %rdi
 1178 042f E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 1178      00
 1179              	.LVL131:
 1180 0434 BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 1180      00
 1181 0439 4889C7   		movq	%rax, %rdi
 1182 043c E8000000 		call	_ZNSolsEPFRSoS_E
 1182      00
 1183              	.LEHE29:
 1184              	.LVL132:
 1185 0441 4889E7   		movq	%rsp, %rdi
 1186 0444 E8000000 		call	_ZNSsD1Ev
 1186      00
 1187              	.LVL133:
  63:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1188              		.loc 1 63 0 is_stmt 1 discriminator 1
 1189 0449 E8000000 		call	__cxa_end_catch
 1189      00
 1190              	.LVL134:
 1191              	.LEHB30:
 1192              	.LBE11:
  68:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 1193              		.loc 1 68 0 discriminator 1
 1194 044e E8000000 		call	_Z23catch_and_throw_anotherv
 1194      00
 1195              	.LEHE30:
 1196              	.LVL135:
 1197              	.L96:
 1198 0453 4889C3   		movq	%rax, %rbx
 1199              	.LBB12:
  70:rethrow.cpp   ****     }
GAS LISTING /tmp/ccrG9BDx.s 			page 91


 1200              		.loc 1 70 0
 1201 0456 4889E7   		movq	%rsp, %rdi
 1202 0459 E8000000 		call	_ZNSsD1Ev
 1202      00
 1203              	.LVL136:
 1204 045e EB03     		jmp	.L87
 1205              	.L95:
 1206 0460 4889C3   		movq	%rax, %rbx
 1207              	.L87:
  69:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1208              		.loc 1 69 0
 1209 0463 E8000000 		call	__cxa_end_catch
 1209      00
 1210              	.LVL137:
 1211 0468 4889DF   		movq	%rbx, %rdi
 1212              	.LEHB31:
 1213 046b E8000000 		call	_Unwind_Resume
 1213      00
 1214              	.LVL138:
 1215              	.L94:
 1216 0470 4889C7   		movq	%rax, %rdi
 1217 0473 4883FA01 		cmpq	$1, %rdx
 1218 0477 7405     		je	.L90
 1219 0479 E8000000 		call	_Unwind_Resume
 1219      00
 1220              	.LEHE31:
 1221              	.LVL139:
 1222              	.L90:
 1223 047e E8000000 		call	__cxa_begin_catch
 1223      00
 1224              	.LVL140:
  70:rethrow.cpp   ****     }
 1225              		.loc 1 70 0
 1226 0483 4889C6   		movq	%rax, %rsi
 1227 0486 4889E7   		movq	%rsp, %rdi
 1228              	.LEHB32:
 1229 0489 E8000000 		call	_ZNK12MyExceptionB9as_stringEv
 1229      00
 1230              	.LEHE32:
 1231              	.LVL141:
  70:rethrow.cpp   ****     }
 1232              		.loc 1 70 0 is_stmt 0 discriminator 1
 1233 048e BE000000 		movl	$.LC8, %esi
 1233      00
 1234 0493 BF000000 		movl	$_ZSt4cout, %edi
 1234      00
 1235              	.LEHB33:
 1236 0498 E8000000 		call	_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
 1236      00
 1237              	.LVL142:
 1238 049d 4889E6   		movq	%rsp, %rsi
 1239 04a0 4889C7   		movq	%rax, %rdi
 1240 04a3 E8000000 		call	_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
 1240      00
 1241              	.LVL143:
 1242 04a8 BE000000 		movl	$_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, %esi
 1242      00
GAS LISTING /tmp/ccrG9BDx.s 			page 92


 1243 04ad 4889C7   		movq	%rax, %rdi
 1244 04b0 E8000000 		call	_ZNSolsEPFRSoS_E
 1244      00
 1245              	.LEHE33:
 1246              	.LVL144:
 1247 04b5 4889E7   		movq	%rsp, %rdi
 1248 04b8 E8000000 		call	_ZNSsD1Ev
 1248      00
 1249              	.LVL145:
  69:rethrow.cpp   ****         cout << "Main got exception: " << e.as_string() << endl;
 1250              		.loc 1 69 0 is_stmt 1 discriminator 1
 1251 04bd E8000000 		call	__cxa_end_catch
 1251      00
 1252              	.LVL146:
 1253              	.LBE12:
  74:rethrow.cpp   ****     } catch (MyExceptionB &e) {
 1254              		.loc 1 74 0 discriminator 1
 1255 04c2 E8000000 		call	_Z12doesnt_throwv
 1255      00
 1256              	.LVL147:
 1257              	.LBE10:
 1258              		.cfi_endproc
 1259              	.LFE1262:
 1260              		.section	.gcc_except_table
 1261 00d6 0000     		.align 4
 1262              	.LLSDA1262:
 1263 00d8 FF       		.byte	0xff
 1264 00d9 03       		.byte	0x3
 1265 00da 2D       		.uleb128 .LLSDATT1262-.LLSDATTD1262
 1266              	.LLSDATTD1262:
 1267 00db 01       		.byte	0x1
 1268 00dc 25       		.uleb128 .LLSDACSE1262-.LLSDACSB1262
 1269              	.LLSDACSB1262:
 1270 00dd 05       		.uleb128 .LEHB26-.LFB1262
 1271 00de 05       		.uleb128 .LEHE26-.LEHB26
 1272 00df 27       		.uleb128 .L91-.LFB1262
 1273 00e0 01       		.uleb128 0x1
 1274 00e1 22       		.uleb128 .LEHB27-.LFB1262
 1275 00e2 13       		.uleb128 .LEHE27-.LEHB27
 1276 00e3 00       		.uleb128 0
 1277 00e4 00       		.uleb128 0
 1278 00e5 40       		.uleb128 .LEHB28-.LFB1262
 1279 00e6 05       		.uleb128 .LEHE28-.LEHB28
 1280 00e7 17       		.uleb128 .L92-.LFB1262
 1281 00e8 00       		.uleb128 0
 1282 00e9 4F       		.uleb128 .LEHB29-.LFB1262
 1283 00ea 1D       		.uleb128 .LEHE29-.LEHB29
 1284 00eb 0A       		.uleb128 .L93-.LFB1262
 1285 00ec 00       		.uleb128 0
 1286 00ed 79       		.uleb128 .LEHB30-.LFB1262
 1287 00ee 05       		.uleb128 .LEHE30-.LEHB30
 1288 00ef 9B01     		.uleb128 .L94-.LFB1262
 1289 00f1 01       		.uleb128 0x1
 1290 00f2 9601     		.uleb128 .LEHB31-.LFB1262
 1291 00f4 13       		.uleb128 .LEHE31-.LEHB31
 1292 00f5 00       		.uleb128 0
 1293 00f6 00       		.uleb128 0
GAS LISTING /tmp/ccrG9BDx.s 			page 93


 1294 00f7 B401     		.uleb128 .LEHB32-.LFB1262
 1295 00f9 05       		.uleb128 .LEHE32-.LEHB32
 1296 00fa 8B01     		.uleb128 .L95-.LFB1262
 1297 00fc 00       		.uleb128 0
 1298 00fd C301     		.uleb128 .LEHB33-.LFB1262
 1299 00ff 1D       		.uleb128 .LEHE33-.LEHB33
 1300 0100 7E       		.uleb128 .L96-.LFB1262
 1301 0101 00       		.uleb128 0
 1302              	.LLSDACSE1262:
 1303 0102 01       		.byte	0x1
 1304 0103 00       		.byte	0
 1305              		.align 4
 1306 0104 00000000 		.long	_ZTI12MyExceptionB
 1307              	.LLSDATT1262:
 1308              		.text
 1311              	_GLOBAL__sub_I__ZN12MyExceptionBC2ESs:
 1312              	.LFB1427:
 1313              		.loc 1 78 0
 1314              		.cfi_startproc
 1315 04c7 4883EC08 		subq	$8, %rsp
 1316              		.cfi_def_cfa_offset 16
 1317              		.loc 1 78 0
 1318 04cb BEFFFF00 		movl	$65535, %esi
 1318      00
 1319 04d0 BF010000 		movl	$1, %edi
 1319      00
 1320 04d5 E869FBFF 		call	_Z41__static_initialization_and_destruction_0ii
 1320      FF
 1321              	.LVL148:
 1322 04da 4883C408 		addq	$8, %rsp
 1323              		.cfi_def_cfa_offset 8
 1324 04de C3       		ret
 1325              		.cfi_endproc
 1326              	.LFE1427:
 1328              		.section	.init_array,"aw"
 1329              		.align 8
 1330 0000 00000000 		.quad	_GLOBAL__sub_I__ZN12MyExceptionBC2ESs
 1330      00000000 
 1331              		.weak	_ZTS12MyExceptionB
 1332              		.section	.rodata._ZTS12MyExceptionB,"aG",@progbits,_ZTS12MyExceptionB,comdat
 1335              	_ZTS12MyExceptionB:
 1336 0000 31324D79 		.string	"12MyExceptionB"
 1336      45786365 
 1336      7074696F 
 1336      6E4200
 1337              		.weak	_ZTI12MyExceptionB
 1338              		.section	.rodata._ZTI12MyExceptionB,"aG",@progbits,_ZTI12MyExceptionB,comdat
 1339              		.align 16
 1342              	_ZTI12MyExceptionB:
 1343 0000 00000000 		.quad	_ZTVN10__cxxabiv120__si_class_type_infoE+16
 1343      00000000 
 1344 0008 00000000 		.quad	_ZTS12MyExceptionB
 1344      00000000 
 1345 0010 00000000 		.quad	_ZTISt9exception
 1345      00000000 
 1346              		.weak	_ZTV12MyExceptionB
 1347              		.section	.rodata._ZTV12MyExceptionB,"aG",@progbits,_ZTV12MyExceptionB,comdat
GAS LISTING /tmp/ccrG9BDx.s 			page 94


 1348              		.align 32
 1351              	_ZTV12MyExceptionB:
 1352 0000 00000000 		.quad	0
 1352      00000000 
 1353 0008 00000000 		.quad	_ZTI12MyExceptionB
 1353      00000000 
 1354 0010 00000000 		.quad	_ZN12MyExceptionBD1Ev
 1354      00000000 
 1355 0018 00000000 		.quad	_ZN12MyExceptionBD0Ev
 1355      00000000 
 1356 0020 00000000 		.quad	_ZNK12MyExceptionB4whatEv
 1356      00000000 
 1357              		.local	_ZStL8__ioinit
 1358              		.comm	_ZStL8__ioinit,1,1
 1359              		.text
 1360              	.Letext0:
 1361              		.file 8 "/usr/include/c++/4.8/bits/exception_ptr.h"
 1362              		.file 9 "/usr/include/c++/4.8/cwchar"
 1363              		.file 10 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/c++config.h"
 1364              		.file 11 "/usr/include/c++/4.8/cstdint"
 1365              		.file 12 "/usr/include/c++/4.8/bits/allocator.h"
 1366              		.file 13 "/usr/include/c++/4.8/clocale"
 1367              		.file 14 "/usr/include/c++/4.8/cstdlib"
 1368              		.file 15 "/usr/include/c++/4.8/cstdio"
 1369              		.file 16 "/usr/include/c++/4.8/initializer_list"
 1370              		.file 17 "/usr/include/c++/4.8/bits/stringfwd.h"
 1371              		.file 18 "/usr/include/c++/4.8/bits/ios_base.h"
 1372              		.file 19 "/usr/include/c++/4.8/cwctype"
 1373              		.file 20 "/usr/include/c++/4.8/ostream"
 1374              		.file 21 "/usr/include/c++/4.8/type_traits"
 1375              		.file 22 "/usr/include/c++/4.8/bits/stl_iterator_base_types.h"
 1376              		.file 23 "/usr/include/c++/4.8/iosfwd"
 1377              		.file 24 "/usr/include/c++/4.8/ext/new_allocator.h"
 1378              		.file 25 "/usr/include/c++/4.8/ext/numeric_traits.h"
 1379              		.file 26 "/usr/include/c++/4.8/bits/stl_iterator.h"
 1380              		.file 27 "/usr/include/c++/4.8/debug/debug.h"
 1381              		.file 28 "/usr/include/stdio.h"
 1382              		.file 29 "/usr/include/libio.h"
 1383              		.file 30 "<built-in>"
 1384              		.file 31 "/usr/lib/gcc/x86_64-linux-gnu/4.8/include/stddef.h"
 1385              		.file 32 "/usr/include/wchar.h"
 1386              		.file 33 "/usr/include/x86_64-linux-gnu/bits/wchar2.h"
 1387              		.file 34 "/usr/include/time.h"
 1388              		.file 35 "/usr/include/stdint.h"
 1389              		.file 36 "/usr/include/locale.h"
 1390              		.file 37 "/usr/include/x86_64-linux-gnu/bits/types.h"
 1391              		.file 38 "/usr/include/x86_64-linux-gnu/c++/4.8/bits/atomic_word.h"
 1392              		.file 39 "/usr/include/stdlib.h"
 1393              		.file 40 "/usr/include/x86_64-linux-gnu/bits/stdlib.h"
 1394              		.file 41 "/usr/include/_G_config.h"
 1395              		.file 42 "/usr/include/x86_64-linux-gnu/bits/stdio2.h"
 1396              		.file 43 "/usr/include/wctype.h"
 1397              		.file 44 "/usr/include/c++/4.8/new"
 1398              		.file 45 "/usr/include/c++/4.8/bits/stl_pair.h"
GAS LISTING /tmp/ccrG9BDx.s 			page 95


DEFINED SYMBOLS
                            *ABS*:0000000000000000 rethrow.cpp
     /tmp/ccrG9BDx.s:7      .text:0000000000000000 _ZNK12MyExceptionB4whatEv
     /tmp/ccrG9BDx.s:30     .text:0000000000000012 _ZN12MyExceptionBD2Ev
     /tmp/ccrG9BDx.s:1351   .rodata._ZTV12MyExceptionB:0000000000000000 _ZTV12MyExceptionB
     /tmp/ccrG9BDx.s:30     .text:0000000000000012 _ZN12MyExceptionBD1Ev
     /tmp/ccrG9BDx.s:63     .text:0000000000000030 _ZN12MyExceptionBD0Ev
     /tmp/ccrG9BDx.s:86     .text:0000000000000043 _Z41__static_initialization_and_destruction_0ii
                             .bss:0000000000000000 _ZStL8__ioinit
     /tmp/ccrG9BDx.s:122    .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC2Ev
     /tmp/ccrG9BDx.s:122    .text._ZNSt9exceptionC2Ev:0000000000000000 _ZNSt9exceptionC1Ev
     /tmp/ccrG9BDx.s:141    .text._ZNSt11char_traitsIcE6lengthEPKc:0000000000000000 _ZNSt11char_traitsIcE6lengthEPKc
     /tmp/ccrG9BDx.s:162    .text:0000000000000078 _ZN12MyExceptionBC2ESs
     /tmp/ccrG9BDx.s:162    .text:0000000000000078 _ZN12MyExceptionBC1ESs
     /tmp/ccrG9BDx.s:258    .text:00000000000000c5 _Z18throw_MyExceptionBSs
     /tmp/ccrG9BDx.s:1342   .rodata._ZTI12MyExceptionB:0000000000000000 _ZTI12MyExceptionB
     /tmp/ccrG9BDx.s:372    .text:0000000000000136 _Z12doesnt_throwv
     /tmp/ccrG9BDx.s:460    .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_
     /tmp/ccrG9BDx.s:572    .text._ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_:0000000000000000 _ZSt4moveIRSsEONSt16remove_referenceIT_E4typeEOS2_
     /tmp/ccrG9BDx.s:587    .text._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_:0000000000000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EOS6_PKS3_
     /tmp/ccrG9BDx.s:628    .text:0000000000000186 _ZNK12MyExceptionB9as_stringEv
     /tmp/ccrG9BDx.s:717    .text:00000000000001d5 _Z17catch_and_rethrowv
     /tmp/ccrG9BDx.s:897    .text:00000000000002a7 _Z23catch_and_throw_anotherv
     /tmp/ccrG9BDx.s:1118   .text:00000000000003d5 _Z9doRethrowv
     /tmp/ccrG9BDx.s:1311   .text:00000000000004c7 _GLOBAL__sub_I__ZN12MyExceptionBC2ESs
     /tmp/ccrG9BDx.s:1335   .rodata._ZTS12MyExceptionB:0000000000000000 _ZTS12MyExceptionB
                           .group:0000000000000000 _ZNSt9exceptionC5Ev

UNDEFINED SYMBOLS
_ZNKSs5c_strEv
_ZNSsD1Ev
_ZNSt9exceptionD2Ev
_ZdlPv
_ZNSt8ios_base4InitC1Ev
__dso_handle
_ZNSt8ios_base4InitD1Ev
__cxa_atexit
_ZTVSt9exception
__gxx_personality_v0
_ZNSsC1ERKSs
_Unwind_Resume
__cxa_call_unexpected
__cxa_allocate_exception
__cxa_throw
__cxa_free_exception
_ZNSsC1EPKcRKSaIcE
_ZNSsC1Ev
_ZNKSs4sizeEv
_ZNSs7reserveEm
_ZNSs6appendEPKcm
_ZNSs6appendERKSs
_ZNSs6appendEPKc
_ZNSsC1EOSs
__cxa_end_catch
__cxa_begin_catch
_ZSt4cout
_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
GAS LISTING /tmp/ccrG9BDx.s 			page 96


_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E
_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
_ZNSolsEPFRSoS_E
__cxa_rethrow
_ZTVN10__cxxabiv120__si_class_type_infoE
_ZTISt9exception