GAS LISTING /tmp/ccJDTatA.s page 1 1 .file "rethrow.cc" 2 .file 1 "rethrow.cc" 10 .Ltext0: 11 .file 2 "/usr/include/xlocale.h" 12 .file 3 "/usr/include/gconv.h" 13 .file 4 "/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stddef.h" 14 .file 5 "/usr/include/wchar.h" 15 .file 6 "/usr/include/libio.h" 16 .file 7 "/usr/include/_G_config.h" 17 .file 8 "/usr/include/bits/types.h" 18 .file 9 "/usr/include/time.h" 19 .file 10 "/usr/include/bits/sched.h" 20 .file 11 "/usr/include/bits/pthreadtypes.h" 21 .file 12 "/usr/include/pthread.h" 22 .file 13 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/c++io.h" 23 .file 14 "/usr/include/c++/3.2.2/bits/char_traits.h" 24 .file 15 "/usr/include/c++/3.2.2/bits/fpos.h" 25 .file 16 "/usr/include/bits/waitstatus.h" 26 .file 17 "/usr/include/bits/time.h" 27 .file 18 "/usr/include/stdlib.h" 28 .file 19 "/usr/include/sys/types.h" 29 .file 20 "/usr/include/c++/3.2.2/new" 30 .file 21 "/usr/include/c++/3.2.2/bits/type_traits.h" 31 .file 22 "/usr/include/c++/3.2.2/bits/stl_iterator_base_types.h" 32 .file 23 "/usr/include/c++/3.2.2/bits/stl_threads.h" 33 .file 24 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/gthr-default.h" 34 .file 25 "/usr/include/c++/3.2.2/bits/stl_alloc.h" 35 .file 26 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/atomicity.h" 36 .file 27 "/usr/include/c++/3.2.2/bits/stringfwd.h" 37 .file 28 "/usr/include/c++/3.2.2/bits/basic_string.h" 38 .file 29 "/usr/include/c++/3.2.2/bits/basic_string.tcc" 39 .file 30 "/usr/include/locale.h" 40 .file 31 "/usr/include/c++/3.2.2/bits/localefwd.h" 41 .file 32 "/usr/include/c++/3.2.2/bits/ios_base.h" 42 .file 33 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/ctype_base.h" 43 .file 34 "/usr/include/c++/3.2.2/bits/codecvt.h" 44 .file 35 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/codecvt_specializations.h" 45 .file 36 "/usr/include/iconv.h" 46 .file 37 "/usr/include/c++/3.2.2/bits/locale_facets.h" 47 .file 38 "/usr/include/math.h" 48 .file 39 "/usr/include/c++/3.2.2/limits" 49 .file 40 "/usr/include/c++/3.2.2/ostream" 50 .file 41 "/usr/include/c++/3.2.2/bits/ostream.tcc" 51 .file 42 "/usr/include/c++/3.2.2/istream" 52 .file 43 "/usr/include/c++/3.2.2/bits/istream.tcc" 53 .local _ZSt8__ioinit 54 .comm _ZSt8__ioinit,1,1 55 .globl _Unwind_Resume 56 .align 2 57 .globl _ZN11MyExceptionC2ESs 59 _ZN11MyExceptionC2ESs: 60 .LFB1480: 1:rethrow.cc **** #include 2:rethrow.cc **** #include 3:rethrow.cc **** #include 4:rethrow.cc **** 5:rethrow.cc **** using namespace std; GAS LISTING /tmp/ccJDTatA.s page 2 6:rethrow.cc **** 7:rethrow.cc **** class MyException : public exception { 8:rethrow.cc **** private: 9:rethrow.cc **** string _what; 10:rethrow.cc **** public: 11:rethrow.cc **** MyException(string what) throw (); 12:rethrow.cc **** ~MyException() throw (); 13:rethrow.cc **** 14:rethrow.cc **** virtual const char *what() const throw (); 15:rethrow.cc **** string as_string() const; 16:rethrow.cc **** }; 17:rethrow.cc **** 18:rethrow.cc **** MyException::MyException(string what) throw (): 61 .loc 1 18 0 62 0000 55 pushl %ebp 63 .LCFI0: 64 0001 89E5 movl %esp, %ebp 65 .LCFI1: 66 0003 56 pushl %esi 67 .LCFI2: 68 0004 53 pushl %ebx 69 .LCFI3: 70 0005 83EC10 subl $16, %esp 71 .LCFI4: 72 0008 8B5D0C movl 12(%ebp), %ebx 73 .LBB2: 19:rethrow.cc **** _what(what) 20:rethrow.cc **** {} 74 .loc 1 20 0 75 000b 83EC0C subl $12, %esp 76 000e FF7508 pushl 8(%ebp) 77 .LCFI5: 78 0011 E8FCFFFF call _ZNSt9exceptionC2Ev 78 FF 79 0016 83C410 addl $16, %esp 80 0019 8B4508 movl 8(%ebp), %eax 81 001c C7000800 movl $_ZTV11MyException+8, (%eax) 81 0000 82 0022 83EC08 subl $8, %esp 83 0025 53 pushl %ebx 84 0026 8B4508 movl 8(%ebp), %eax 85 0029 83C004 addl $4, %eax 86 002c 50 pushl %eax 87 .LEHB0: 88 002d E8FCFFFF call _ZNSsC1ERKSs 88 FF 89 .LEHE0: 90 0032 83C410 addl $16, %esp 91 .LBE2: 92 0035 EB3C jmp .L1 93 .L13: 94 0037 8945F4 movl %eax, -12(%ebp) 95 003a 8955F0 movl %edx, -16(%ebp) 96 003d 8B5DF4 movl -12(%ebp), %ebx 97 0040 8B75F0 movl -16(%ebp), %esi 98 0043 83EC0C subl $12, %esp 99 0046 FF7508 pushl 8(%ebp) GAS LISTING /tmp/ccJDTatA.s page 3 100 0049 E8FCFFFF call _ZNSt9exceptionD2Ev 100 FF 101 004e 83C410 addl $16, %esp 102 0051 895DF4 movl %ebx, -12(%ebp) 103 0054 8975F0 movl %esi, -16(%ebp) 104 .L14: 105 0057 837DF0FF cmpl $-1, -16(%ebp) 106 005b 740B je .L10 107 005d 83EC0C subl $12, %esp 108 0060 FF75F4 pushl -12(%ebp) 109 .LEHB1: 110 0063 E8FCFFFF call _Unwind_Resume 110 FF 111 .L10: 112 0068 83EC0C subl $12, %esp 113 006b FF75F4 pushl -12(%ebp) 114 006e E8FCFFFF call __cxa_call_unexpected 114 FF 115 .LEHE1: 116 .L1: 117 0073 8D65F8 leal -8(%ebp), %esp 118 0076 5B popl %ebx 119 0077 5E popl %esi 120 0078 C9 leave 121 0079 C3 ret 122 .LFE1480: 123 .Lfe1: 125 .section .gcc_except_table,"a",@progbits 126 .align 4 127 .LLSDA1480: 128 0000 FF .byte 0xff 129 0001 00 .byte 0x0 130 0002 11 .uleb128 .LLSDATT1480-.LLSDATTD1480 131 .LLSDATTD1480: 132 0003 01 .byte 0x1 133 0004 08 .uleb128 .LLSDACSE1480-.LLSDACSB1480 134 .LLSDACSB1480: 135 0005 2D .uleb128 .LEHB0-.LFB1480 136 0006 05 .uleb128 .LEHE0-.LEHB0 137 0007 37 .uleb128 .L13-.LFB1480 138 0008 03 .uleb128 0x3 139 0009 63 .uleb128 .LEHB1-.LFB1480 140 000a 10 .uleb128 .LEHE1-.LEHB1 141 000b 00 .uleb128 0x0 142 000c 00 .uleb128 0x0 143 .LLSDACSE1480: 144 000d 7F .byte 0x7f 145 000e 00 .byte 0x0 146 000f 00 .byte 0x0 147 0010 7D .byte 0x7d 148 0011 000000 .align 4 149 .LLSDATT1480: 150 0014 00 .byte 0x0 151 .text 152 .align 2 153 .globl _ZN11MyExceptionC1ESs 155 _ZN11MyExceptionC1ESs: GAS LISTING /tmp/ccJDTatA.s page 4 156 .LFB1482: 157 .loc 1 18 0 158 007a 55 pushl %ebp 159 .LCFI6: 160 007b 89E5 movl %esp, %ebp 161 .LCFI7: 162 007d 56 pushl %esi 163 .LCFI8: 164 007e 53 pushl %ebx 165 .LCFI9: 166 007f 83EC10 subl $16, %esp 167 .LCFI10: 168 0082 8B5D0C movl 12(%ebp), %ebx 169 .LBB3: 170 .loc 1 20 0 171 0085 83EC0C subl $12, %esp 172 0088 FF7508 pushl 8(%ebp) 173 .LCFI11: 174 008b E8FCFFFF call _ZNSt9exceptionC2Ev 174 FF 175 0090 83C410 addl $16, %esp 176 0093 8B4508 movl 8(%ebp), %eax 177 0096 C7000800 movl $_ZTV11MyException+8, (%eax) 177 0000 178 009c 83EC08 subl $8, %esp 179 009f 53 pushl %ebx 180 00a0 8B4508 movl 8(%ebp), %eax 181 00a3 83C004 addl $4, %eax 182 00a6 50 pushl %eax 183 .LEHB2: 184 00a7 E8FCFFFF call _ZNSsC1ERKSs 184 FF 185 .LEHE2: 186 00ac 83C410 addl $16, %esp 187 .LBE3: 188 00af EB3C jmp .L15 189 .L27: 190 00b1 8945F4 movl %eax, -12(%ebp) 191 00b4 8955F0 movl %edx, -16(%ebp) 192 00b7 8B5DF4 movl -12(%ebp), %ebx 193 00ba 8B75F0 movl -16(%ebp), %esi 194 00bd 83EC0C subl $12, %esp 195 00c0 FF7508 pushl 8(%ebp) 196 00c3 E8FCFFFF call _ZNSt9exceptionD2Ev 196 FF 197 00c8 83C410 addl $16, %esp 198 00cb 895DF4 movl %ebx, -12(%ebp) 199 00ce 8975F0 movl %esi, -16(%ebp) 200 .L28: 201 00d1 837DF0FF cmpl $-1, -16(%ebp) 202 00d5 740B je .L24 203 00d7 83EC0C subl $12, %esp 204 00da FF75F4 pushl -12(%ebp) 205 .LEHB3: 206 00dd E8FCFFFF call _Unwind_Resume 206 FF 207 .L24: GAS LISTING /tmp/ccJDTatA.s page 5 208 00e2 83EC0C subl $12, %esp 209 00e5 FF75F4 pushl -12(%ebp) 210 00e8 E8FCFFFF call __cxa_call_unexpected 210 FF 211 .LEHE3: 212 .L15: 213 00ed 8D65F8 leal -8(%ebp), %esp 214 00f0 5B popl %ebx 215 00f1 5E popl %esi 216 00f2 C9 leave 217 00f3 C3 ret 218 .LFE1482: 219 .Lfe2: 221 .section .gcc_except_table 222 0015 000000 .align 4 223 .LLSDA1482: 224 0018 FF .byte 0xff 225 0019 00 .byte 0x0 226 001a 11 .uleb128 .LLSDATT1482-.LLSDATTD1482 227 .LLSDATTD1482: 228 001b 01 .byte 0x1 229 001c 08 .uleb128 .LLSDACSE1482-.LLSDACSB1482 230 .LLSDACSB1482: 231 001d 2D .uleb128 .LEHB2-.LFB1482 232 001e 05 .uleb128 .LEHE2-.LEHB2 233 001f 37 .uleb128 .L27-.LFB1482 234 0020 03 .uleb128 0x3 235 0021 63 .uleb128 .LEHB3-.LFB1482 236 0022 10 .uleb128 .LEHE3-.LEHB3 237 0023 00 .uleb128 0x0 238 0024 00 .uleb128 0x0 239 .LLSDACSE1482: 240 0025 7F .byte 0x7f 241 0026 00 .byte 0x0 242 0027 00 .byte 0x0 243 0028 7D .byte 0x7d 244 0029 000000 .align 4 245 .LLSDATT1482: 246 002c 00 .byte 0x0 247 .text 248 .align 2 249 .globl _ZN11MyExceptionD2Ev 251 _ZN11MyExceptionD2Ev: 252 .LFB1485: 21:rethrow.cc **** 22:rethrow.cc **** MyException::~MyException() throw () { 253 .loc 1 22 0 254 .LBB4: 255 00f4 55 pushl %ebp 256 .LCFI12: 257 00f5 89E5 movl %esp, %ebp 258 .LCFI13: 259 00f7 83EC08 subl $8, %esp 260 .LCFI14: 261 .loc 1 22 0 262 00fa 8B4508 movl 8(%ebp), %eax 263 00fd C7000800 movl $_ZTV11MyException+8, (%eax) GAS LISTING /tmp/ccJDTatA.s page 6 263 0000 264 .LBE4: 23:rethrow.cc **** } 265 .loc 1 23 0 266 0103 83EC0C subl $12, %esp 267 0106 8B4508 movl 8(%ebp), %eax 268 0109 83C004 addl $4, %eax 269 010c 50 pushl %eax 270 .LEHB4: 271 .LCFI15: 272 010d E8FCFFFF call _ZNSsD1Ev 272 FF 273 .LEHE4: 274 0112 83C410 addl $16, %esp 275 0115 83EC0C subl $12, %esp 276 0118 FF7508 pushl 8(%ebp) 277 011b E8FCFFFF call _ZNSt9exceptionD2Ev 277 FF 278 0120 83C410 addl $16, %esp 279 0123 B8010000 movl $1, %eax 279 00 280 0128 83E000 andl $0, %eax 281 012b 84C0 testb %al, %al 282 012d 742E je .L29 283 012f 83EC0C subl $12, %esp 284 0132 FF7508 pushl 8(%ebp) 285 0135 E8FCFFFF call _ZdlPv 285 FF 286 013a 83C410 addl $16, %esp 287 013d EB1E jmp .L29 288 .L36: 289 013f 8945FC movl %eax, -4(%ebp) 290 0142 83FAFF cmpl $-1, %edx 291 0145 740B je .L33 292 0147 83EC0C subl $12, %esp 293 014a FF75FC pushl -4(%ebp) 294 .LEHB5: 295 014d E8FCFFFF call _Unwind_Resume 295 FF 296 .L33: 297 0152 83EC0C subl $12, %esp 298 0155 FF75FC pushl -4(%ebp) 299 0158 E8FCFFFF call __cxa_call_unexpected 299 FF 300 .LEHE5: 301 .L29: 302 015d C9 leave 303 015e C3 ret 304 .LFE1485: 305 .Lfe3: 307 .section .gcc_except_table 308 002d 000000 .align 4 309 .LLSDA1485: 310 0030 FF .byte 0xff 311 0031 00 .byte 0x0 312 0032 0D .uleb128 .LLSDATT1485-.LLSDATTD1485 313 .LLSDATTD1485: GAS LISTING /tmp/ccJDTatA.s page 7 314 0033 01 .byte 0x1 315 0034 08 .uleb128 .LLSDACSE1485-.LLSDACSB1485 316 .LLSDACSB1485: 317 0035 19 .uleb128 .LEHB4-.LFB1485 318 0036 05 .uleb128 .LEHE4-.LEHB4 319 0037 4B .uleb128 .L36-.LFB1485 320 0038 01 .uleb128 0x1 321 0039 59 .uleb128 .LEHB5-.LFB1485 322 003a 10 .uleb128 .LEHE5-.LEHB5 323 003b 00 .uleb128 0x0 324 003c 00 .uleb128 0x0 325 .LLSDACSE1485: 326 003d 7F .byte 0x7f 327 003e 00 .byte 0x0 328 003f 00 .align 4 329 .LLSDATT1485: 330 0040 00 .byte 0x0 331 .text 332 015f 90 .align 2 333 .globl _ZN11MyExceptionD1Ev 335 _ZN11MyExceptionD1Ev: 336 .LFB1487: 337 .loc 1 22 0 338 .LBB5: 339 0160 55 pushl %ebp 340 .LCFI16: 341 0161 89E5 movl %esp, %ebp 342 .LCFI17: 343 0163 83EC08 subl $8, %esp 344 .LCFI18: 345 .loc 1 22 0 346 0166 8B4508 movl 8(%ebp), %eax 347 0169 C7000800 movl $_ZTV11MyException+8, (%eax) 347 0000 348 .LBE5: 349 .loc 1 23 0 350 016f 83EC0C subl $12, %esp 351 0172 8B4508 movl 8(%ebp), %eax 352 0175 83C004 addl $4, %eax 353 0178 50 pushl %eax 354 .LEHB6: 355 .LCFI19: 356 0179 E8FCFFFF call _ZNSsD1Ev 356 FF 357 .LEHE6: 358 017e 83C410 addl $16, %esp 359 0181 83EC0C subl $12, %esp 360 0184 FF7508 pushl 8(%ebp) 361 0187 E8FCFFFF call _ZNSt9exceptionD2Ev 361 FF 362 018c 83C410 addl $16, %esp 363 018f B8010000 movl $1, %eax 363 00 364 0194 83E002 andl $2, %eax 365 0197 84C0 testb %al, %al 366 0199 742E je .L37 367 019b 83EC0C subl $12, %esp GAS LISTING /tmp/ccJDTatA.s page 8 368 019e FF7508 pushl 8(%ebp) 369 01a1 E8FCFFFF call _ZdlPv 369 FF 370 01a6 83C410 addl $16, %esp 371 01a9 EB1E jmp .L37 372 .L44: 373 01ab 8945FC movl %eax, -4(%ebp) 374 01ae 83FAFF cmpl $-1, %edx 375 01b1 740B je .L41 376 01b3 83EC0C subl $12, %esp 377 01b6 FF75FC pushl -4(%ebp) 378 .LEHB7: 379 01b9 E8FCFFFF call _Unwind_Resume 379 FF 380 .L41: 381 01be 83EC0C subl $12, %esp 382 01c1 FF75FC pushl -4(%ebp) 383 01c4 E8FCFFFF call __cxa_call_unexpected 383 FF 384 .LEHE7: 385 .L37: 386 01c9 C9 leave 387 01ca C3 ret 388 .LFE1487: 389 .Lfe4: 391 .section .gcc_except_table 392 0041 000000 .align 4 393 .LLSDA1487: 394 0044 FF .byte 0xff 395 0045 00 .byte 0x0 396 0046 0D .uleb128 .LLSDATT1487-.LLSDATTD1487 397 .LLSDATTD1487: 398 0047 01 .byte 0x1 399 0048 08 .uleb128 .LLSDACSE1487-.LLSDACSB1487 400 .LLSDACSB1487: 401 0049 19 .uleb128 .LEHB6-.LFB1487 402 004a 05 .uleb128 .LEHE6-.LEHB6 403 004b 4B .uleb128 .L44-.LFB1487 404 004c 01 .uleb128 0x1 405 004d 59 .uleb128 .LEHB7-.LFB1487 406 004e 10 .uleb128 .LEHE7-.LEHB7 407 004f 00 .uleb128 0x0 408 0050 00 .uleb128 0x0 409 .LLSDACSE1487: 410 0051 7F .byte 0x7f 411 0052 00 .byte 0x0 412 0053 00 .align 4 413 .LLSDATT1487: 414 0054 00 .byte 0x0 415 .text 416 01cb 90 .align 2 417 .globl _ZN11MyExceptionD0Ev 419 _ZN11MyExceptionD0Ev: 420 .LFB1489: 421 .loc 1 22 0 422 .LBB6: 423 01cc 55 pushl %ebp GAS LISTING /tmp/ccJDTatA.s page 9 424 .LCFI20: 425 01cd 89E5 movl %esp, %ebp 426 .LCFI21: 427 01cf 83EC08 subl $8, %esp 428 .LCFI22: 429 .loc 1 22 0 430 01d2 8B4508 movl 8(%ebp), %eax 431 01d5 C7000800 movl $_ZTV11MyException+8, (%eax) 431 0000 432 .LBE6: 433 .loc 1 23 0 434 01db 83EC0C subl $12, %esp 435 01de 8B4508 movl 8(%ebp), %eax 436 01e1 83C004 addl $4, %eax 437 01e4 50 pushl %eax 438 .LEHB8: 439 .LCFI23: 440 01e5 E8FCFFFF call _ZNSsD1Ev 440 FF 441 .LEHE8: 442 01ea 83C410 addl $16, %esp 443 01ed 83EC0C subl $12, %esp 444 01f0 FF7508 pushl 8(%ebp) 445 01f3 E8FCFFFF call _ZNSt9exceptionD2Ev 445 FF 446 01f8 83C410 addl $16, %esp 447 01fb B8010000 movl $1, %eax 447 00 448 0200 83E003 andl $3, %eax 449 0203 84C0 testb %al, %al 450 0205 742E je .L45 451 0207 83EC0C subl $12, %esp 452 020a FF7508 pushl 8(%ebp) 453 020d E8FCFFFF call _ZdlPv 453 FF 454 0212 83C410 addl $16, %esp 455 0215 EB1E jmp .L45 456 .L52: 457 0217 8945FC movl %eax, -4(%ebp) 458 021a 83FAFF cmpl $-1, %edx 459 021d 740B je .L49 460 021f 83EC0C subl $12, %esp 461 0222 FF75FC pushl -4(%ebp) 462 .LEHB9: 463 0225 E8FCFFFF call _Unwind_Resume 463 FF 464 .L49: 465 022a 83EC0C subl $12, %esp 466 022d FF75FC pushl -4(%ebp) 467 0230 E8FCFFFF call __cxa_call_unexpected 467 FF 468 .LEHE9: 469 .L45: 470 0235 C9 leave 471 0236 C3 ret 472 .LFE1489: 473 .Lfe5: GAS LISTING /tmp/ccJDTatA.s page 10 475 .section .gcc_except_table 476 0055 000000 .align 4 477 .LLSDA1489: 478 0058 FF .byte 0xff 479 0059 00 .byte 0x0 480 005a 0D .uleb128 .LLSDATT1489-.LLSDATTD1489 481 .LLSDATTD1489: 482 005b 01 .byte 0x1 483 005c 08 .uleb128 .LLSDACSE1489-.LLSDACSB1489 484 .LLSDACSB1489: 485 005d 19 .uleb128 .LEHB8-.LFB1489 486 005e 05 .uleb128 .LEHE8-.LEHB8 487 005f 4B .uleb128 .L52-.LFB1489 488 0060 01 .uleb128 0x1 489 0061 59 .uleb128 .LEHB9-.LFB1489 490 0062 10 .uleb128 .LEHE9-.LEHB9 491 0063 00 .uleb128 0x0 492 0064 00 .uleb128 0x0 493 .LLSDACSE1489: 494 0065 7F .byte 0x7f 495 0066 00 .byte 0x0 496 0067 00 .align 4 497 .LLSDATT1489: 498 0068 00 .byte 0x0 499 .text 500 0237 90 .align 2 501 .globl _ZNK11MyException4whatEv 503 _ZNK11MyException4whatEv: 504 .LFB1491: 24:rethrow.cc **** 25:rethrow.cc **** const char *MyException::what() const throw () { 505 .loc 1 25 0 506 .LBB7: 507 0238 55 pushl %ebp 508 .LCFI24: 509 0239 89E5 movl %esp, %ebp 510 .LCFI25: 511 023b 83EC08 subl $8, %esp 512 .LCFI26: 26:rethrow.cc **** return _what.c_str(); 513 .loc 1 26 0 514 023e 83EC0C subl $12, %esp 515 0241 8B4508 movl 8(%ebp), %eax 516 0244 83C004 addl $4, %eax 517 0247 50 pushl %eax 518 .LEHB10: 519 .LCFI27: 520 0248 E8FCFFFF call _ZNKSs5c_strEv 520 FF 521 .LEHE10: 522 024d 83C410 addl $16, %esp 523 0250 8945FC movl %eax, -4(%ebp) 524 0253 EB1E jmp .L53 525 .LBE7: 526 .L57: 527 0255 8945F8 movl %eax, -8(%ebp) 528 0258 83FAFF cmpl $-1, %edx GAS LISTING /tmp/ccJDTatA.s page 11 529 025b 740B je .L54 530 025d 83EC0C subl $12, %esp 531 0260 FF75F8 pushl -8(%ebp) 532 .LEHB11: 533 0263 E8FCFFFF call _Unwind_Resume 533 FF 534 .L54: 535 0268 83EC0C subl $12, %esp 536 026b FF75F8 pushl -8(%ebp) 537 026e E8FCFFFF call __cxa_call_unexpected 537 FF 538 .LEHE11: 27:rethrow.cc **** } 539 .loc 1 27 0 540 .L53: 541 0273 8B45FC movl -4(%ebp), %eax 542 0276 C9 leave 543 0277 C3 ret 544 .LFE1491: 545 .Lfe6: 547 .section .gcc_except_table 548 0069 000000 .align 4 549 .LLSDA1491: 550 006c FF .byte 0xff 551 006d 00 .byte 0x0 552 006e 0D .uleb128 .LLSDATT1491-.LLSDATTD1491 553 .LLSDATTD1491: 554 006f 01 .byte 0x1 555 0070 08 .uleb128 .LLSDACSE1491-.LLSDACSB1491 556 .LLSDACSB1491: 557 0071 10 .uleb128 .LEHB10-.LFB1491 558 0072 05 .uleb128 .LEHE10-.LEHB10 559 0073 1D .uleb128 .L57-.LFB1491 560 0074 01 .uleb128 0x1 561 0075 2B .uleb128 .LEHB11-.LFB1491 562 0076 10 .uleb128 .LEHE11-.LEHB11 563 0077 00 .uleb128 0x0 564 0078 00 .uleb128 0x0 565 .LLSDACSE1491: 566 0079 7F .byte 0x7f 567 007a 00 .byte 0x0 568 007b 00 .align 4 569 .LLSDATT1491: 570 007c 00 .byte 0x0 571 .text 572 .section .rodata 573 .LC0: 574 0000 2900 .string ")" 575 .LC1: 576 0002 4D794578 .string "MyException(" 576 63657074 576 696F6E28 576 00 577 .text 578 .align 2 579 .globl _ZNK11MyException9as_stringEv 581 _ZNK11MyException9as_stringEv: GAS LISTING /tmp/ccJDTatA.s page 12 582 .LFB1493: 28:rethrow.cc **** 29:rethrow.cc **** string MyException::as_string() const { 583 .loc 1 29 0 584 0278 55 pushl %ebp 585 .LCFI28: 586 0279 89E5 movl %esp, %ebp 587 .LCFI29: 588 027b 53 pushl %ebx 589 .LCFI30: 590 027c 83EC24 subl $36, %esp 591 .LCFI31: 592 .LBB8: 30:rethrow.cc **** return "MyException(" + _what + ")"; 593 .loc 1 30 0 594 027f 83EC04 subl $4, %esp 595 0282 68000000 pushl $.LC0 595 00 596 0287 8D45E8 leal -24(%ebp), %eax 597 028a 83EC0C subl $12, %esp 598 028d 8B550C movl 12(%ebp), %edx 599 0290 83C204 addl $4, %edx 600 0293 52 pushl %edx 601 0294 68020000 pushl $.LC1 601 00 602 0299 50 pushl %eax 603 .LEHB12: 604 .LCFI32: 605 029a E8FCFFFF call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 605 FF 606 .LEHE12: 607 029f 83C414 addl $20, %esp 608 02a2 8D45E8 leal -24(%ebp), %eax 609 02a5 50 pushl %eax 610 02a6 FF7508 pushl 8(%ebp) 611 .LEHB13: 612 .LCFI33: 613 02a9 E8FCFFFF call _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ 613 FF 614 .LEHE13: 615 02ae 83C40C addl $12, %esp 616 .LBB9: 617 02b1 83EC0C subl $12, %esp 618 02b4 8D45E8 leal -24(%ebp), %eax 619 02b7 50 pushl %eax 620 .LEHB14: 621 02b8 E8FCFFFF call _ZNSsD1Ev 621 FF 622 .LEHE14: 623 02bd 83C410 addl $16, %esp 624 .LBE9: 625 02c0 EB23 jmp .L58 626 .L63: 627 02c2 8945E4 movl %eax, -28(%ebp) 628 02c5 8B5DE4 movl -28(%ebp), %ebx 629 02c8 83EC0C subl $12, %esp 630 02cb 8D45E8 leal -24(%ebp), %eax GAS LISTING /tmp/ccJDTatA.s page 13 631 02ce 50 pushl %eax 632 02cf E8FCFFFF call _ZNSsD1Ev 632 FF 633 02d4 83C410 addl $16, %esp 634 02d7 895DE4 movl %ebx, -28(%ebp) 635 02da 83EC0C subl $12, %esp 636 02dd FF75E4 pushl -28(%ebp) 637 .LEHB15: 638 02e0 E8FCFFFF call _Unwind_Resume 638 FF 639 .LEHE15: 640 .LBE8: 31:rethrow.cc **** } 641 .loc 1 31 0 642 .L58: 643 02e5 8B4508 movl 8(%ebp), %eax 644 02e8 8B5DFC movl -4(%ebp), %ebx 645 02eb C9 leave 646 02ec C20400 ret $4 647 .LFE1493: 648 .Lfe7: 650 .section .gcc_except_table 651 .LLSDA1493: 652 007d FF .byte 0xff 653 007e FF .byte 0xff 654 007f 01 .byte 0x1 655 0080 10 .uleb128 .LLSDACSE1493-.LLSDACSB1493 656 .LLSDACSB1493: 657 0081 22 .uleb128 .LEHB12-.LFB1493 658 0082 05 .uleb128 .LEHE12-.LEHB12 659 0083 00 .uleb128 0x0 660 0084 00 .uleb128 0x0 661 0085 31 .uleb128 .LEHB13-.LFB1493 662 0086 05 .uleb128 .LEHE13-.LEHB13 663 0087 4A .uleb128 .L63-.LFB1493 664 0088 00 .uleb128 0x0 665 0089 40 .uleb128 .LEHB14-.LFB1493 666 008a 05 .uleb128 .LEHE14-.LEHB14 667 008b 00 .uleb128 0x0 668 008c 00 .uleb128 0x0 669 008d 68 .uleb128 .LEHB15-.LFB1493 670 008e 05 .uleb128 .LEHE15-.LEHB15 671 008f 00 .uleb128 0x0 672 0090 00 .uleb128 0x0 673 .LLSDACSE1493: 674 .text 675 02ef 90 .align 2 676 .globl _Z17throw_MyExceptionSs 678 _Z17throw_MyExceptionSs: 679 .LFB1501: 32:rethrow.cc **** 33:rethrow.cc **** 34:rethrow.cc **** void throw_MyException(string message) throw (MyException) { 680 .loc 1 34 0 681 02f0 55 pushl %ebp 682 .LCFI34: 683 02f1 89E5 movl %esp, %ebp GAS LISTING /tmp/ccJDTatA.s page 14 684 .LCFI35: 685 02f3 56 pushl %esi 686 .LCFI36: 687 02f4 53 pushl %ebx 688 .LCFI37: 689 02f5 83EC30 subl $48, %esp 690 .LCFI38: 691 02f8 8B4508 movl 8(%ebp), %eax 692 .LBB10: 35:rethrow.cc **** throw MyException(message); 693 .loc 1 35 0 694 02fb 83EC08 subl $8, %esp 695 02fe 50 pushl %eax 696 02ff 8D45D8 leal -40(%ebp), %eax 697 0302 50 pushl %eax 698 .LEHB16: 699 .LCFI39: 700 0303 E8FCFFFF call _ZNSsC1ERKSs 700 FF 701 0308 83C408 addl $8, %esp 702 030b 8D45D8 leal -40(%ebp), %eax 703 030e 50 pushl %eax 704 030f 8D45E8 leal -24(%ebp), %eax 705 0312 50 pushl %eax 706 .LCFI40: 707 0313 E8FCFFFF call _ZN11MyExceptionC1ESs 707 FF 708 0318 83C410 addl $16, %esp 709 031b 83EC0C subl $12, %esp 710 031e 8D45D8 leal -40(%ebp), %eax 711 0321 50 pushl %eax 712 0322 E8FCFFFF call _ZNSsD1Ev 712 FF 713 .LEHE16: 714 0327 83C410 addl $16, %esp 715 032a 83EC0C subl $12, %esp 716 032d 6A08 pushl $8 717 032f E8FCFFFF call __cxa_allocate_exception 717 FF 718 0334 83C410 addl $16, %esp 719 0337 89C3 movl %eax, %ebx 720 0339 83EC08 subl $8, %esp 721 033c 8D45E8 leal -24(%ebp), %eax 722 033f 50 pushl %eax 723 0340 53 pushl %ebx 724 0341 E8FCFFFF call _ZN11MyExceptionC1ERKS_ 724 FF 725 0346 83C410 addl $16, %esp 726 0349 83EC04 subl $4, %esp 727 034c 68000000 pushl $_ZN11MyExceptionD1Ev 727 00 728 0351 68000000 pushl $_ZTI11MyException 728 00 729 0356 53 pushl %ebx 730 .LEHB17: 731 0357 E8FCFFFF call __cxa_throw 731 FF GAS LISTING /tmp/ccJDTatA.s page 15 732 .LEHE17: 733 .L78: 734 035c 8945D4 movl %eax, -44(%ebp) 735 035f 8955D0 movl %edx, -48(%ebp) 736 0362 8B5DD4 movl -44(%ebp), %ebx 737 0365 8B75D0 movl -48(%ebp), %esi 738 0368 83EC0C subl $12, %esp 739 036b 8D45E8 leal -24(%ebp), %eax 740 036e 50 pushl %eax 741 036f E8FCFFFF call _ZN11MyExceptionD1Ev 741 FF 742 0374 83C410 addl $16, %esp 743 0377 895DD4 movl %ebx, -44(%ebp) 744 037a 8975D0 movl %esi, -48(%ebp) 745 037d EB06 jmp .L77 746 .LBE10: 747 .L79: 748 037f 8945D4 movl %eax, -44(%ebp) 749 0382 8955D0 movl %edx, -48(%ebp) 750 .L77: 751 0385 837DD0FF cmpl $-1, -48(%ebp) 752 0389 740B je .L75 753 038b 83EC0C subl $12, %esp 754 038e FF75D4 pushl -44(%ebp) 755 .LEHB18: 756 0391 E8FCFFFF call _Unwind_Resume 756 FF 757 .L75: 758 0396 83EC0C subl $12, %esp 759 0399 FF75D4 pushl -44(%ebp) 760 039c E8FCFFFF call __cxa_call_unexpected 760 FF 761 .LEHE18: 36:rethrow.cc **** } 762 .loc 1 36 0 763 .LFE1501: 764 .Lfe8: 766 .section .gcc_except_table 767 0091 000000 .align 4 768 .LLSDA1501: 769 0094 FF .byte 0xff 770 0095 00 .byte 0x0 771 0096 19 .uleb128 .LLSDATT1501-.LLSDATTD1501 772 .LLSDATTD1501: 773 0097 01 .byte 0x1 774 0098 0E .uleb128 .LLSDACSE1501-.LLSDACSB1501 775 .LLSDACSB1501: 776 0099 13 .uleb128 .LEHB16-.LFB1501 777 009a 24 .uleb128 .LEHE16-.LEHB16 778 009b 8F01 .uleb128 .L79-.LFB1501 779 009d 01 .uleb128 0x1 780 009e 67 .uleb128 .LEHB17-.LFB1501 781 009f 05 .uleb128 .LEHE17-.LEHB17 782 00a0 6C .uleb128 .L78-.LFB1501 783 00a1 03 .uleb128 0x3 784 00a2 A101 .uleb128 .LEHB18-.LFB1501 785 00a4 10 .uleb128 .LEHE18-.LEHB18 GAS LISTING /tmp/ccJDTatA.s page 16 786 00a5 00 .uleb128 0x0 787 00a6 00 .uleb128 0x0 788 .LLSDACSE1501: 789 00a7 7F .byte 0x7f 790 00a8 00 .byte 0x0 791 00a9 00 .byte 0x0 792 00aa 7D .byte 0x7d 793 00ab 00 .align 4 794 00ac 00000000 .long _ZTI11MyException 795 .LLSDATT1501: 796 00b0 01 .byte 0x1 797 00b1 00 .byte 0x0 798 .text 799 .section .rodata 800 .LC2: 801 000f 466F6F00 .string "Foo" 802 .LC3: 803 0013 20726574 .string " rethrowing..." 803 68726F77 803 696E672E 803 2E2E00 804 .LC4: 805 0022 476F7420 .string "Got exception:" 805 65786365 805 7074696F 805 6E3A00 806 .text 807 03a1 90 .align 2 808 .globl _Z17catch_and_rethrowv 810 _Z17catch_and_rethrowv: 811 .LFB1503: 37:rethrow.cc **** 38:rethrow.cc **** void catch_and_rethrow() throw (MyException) { 812 .loc 1 38 0 813 .LBB11: 814 03a2 55 pushl %ebp 815 .LCFI41: 816 03a3 89E5 movl %esp, %ebp 817 .LCFI42: 818 03a5 56 pushl %esi 819 .LCFI43: 820 03a6 53 pushl %ebx 821 .LCFI44: 822 03a7 83EC30 subl $48, %esp 823 .LCFI45: 39:rethrow.cc **** try { 40:rethrow.cc **** throw_MyException("Foo"); 824 .loc 1 40 0 825 03aa 83EC0C subl $12, %esp 826 03ad 83EC08 subl $8, %esp 827 03b0 83EC08 subl $8, %esp 828 03b3 8D45D8 leal -40(%ebp), %eax 829 03b6 50 pushl %eax 830 .LCFI46: 831 03b7 E8FCFFFF call _ZNSaIcEC1Ev 831 FF 832 03bc 83C40C addl $12, %esp GAS LISTING /tmp/ccJDTatA.s page 17 833 03bf 8D45D8 leal -40(%ebp), %eax 834 03c2 50 pushl %eax 835 03c3 680F0000 pushl $.LC2 835 00 836 03c8 8D45E8 leal -24(%ebp), %eax 837 03cb 50 pushl %eax 838 .LEHB19: 839 .LCFI47: 840 03cc E8FCFFFF call _ZNSsC1EPKcRKSaIcE 840 FF 841 .LEHE19: 842 03d1 83C414 addl $20, %esp 843 03d4 8D45E8 leal -24(%ebp), %eax 844 03d7 50 pushl %eax 845 .LEHB20: 846 .LCFI48: 847 03d8 E8FCFFFF call _Z17throw_MyExceptionSs 847 FF 848 .LEHE20: 849 03dd 83C410 addl $16, %esp 850 03e0 EB23 jmp .L82 851 .L105: 852 03e2 8945D0 movl %eax, -48(%ebp) 853 03e5 8955CC movl %edx, -52(%ebp) 854 03e8 8B5DD0 movl -48(%ebp), %ebx 855 03eb 8B75CC movl -52(%ebp), %esi 856 03ee 83EC0C subl $12, %esp 857 03f1 8D45E8 leal -24(%ebp), %eax 858 03f4 50 pushl %eax 859 03f5 E8FCFFFF call _ZNSsD1Ev 859 FF 860 03fa 83C410 addl $16, %esp 861 03fd 895DD0 movl %ebx, -48(%ebp) 862 0400 8975CC movl %esi, -52(%ebp) 863 0403 EB17 jmp .L85 864 .L82: 865 0405 83EC0C subl $12, %esp 866 0408 8D45E8 leal -24(%ebp), %eax 867 040b 50 pushl %eax 868 .LEHB21: 869 040c E8FCFFFF call _ZNSsD1Ev 869 FF 870 .LEHE21: 871 0411 83C410 addl $16, %esp 872 0414 EB23 jmp .L86 873 .L106: 874 0416 8945D0 movl %eax, -48(%ebp) 875 0419 8955CC movl %edx, -52(%ebp) 876 .L85: 877 041c 8B5DD0 movl -48(%ebp), %ebx 878 041f 8B75CC movl -52(%ebp), %esi 879 0422 83EC0C subl $12, %esp 880 0425 8D45D8 leal -40(%ebp), %eax 881 0428 50 pushl %eax 882 0429 E8FCFFFF call _ZNSaIcED1Ev 882 FF 883 042e 83C410 addl $16, %esp GAS LISTING /tmp/ccJDTatA.s page 18 884 0431 895DD0 movl %ebx, -48(%ebp) 885 0434 8975CC movl %esi, -52(%ebp) 886 0437 EB14 jmp .L101 887 .L86: 888 0439 83EC0C subl $12, %esp 889 043c 8D45D8 leal -40(%ebp), %eax 890 043f 50 pushl %eax 891 0440 E8FCFFFF call _ZNSaIcED1Ev 891 FF 892 0445 83C410 addl $16, %esp 893 0448 E9DE0000 jmp .L80 893 00 41:rethrow.cc **** } catch (MyException &e) { 894 .loc 1 41 0 895 .L107: 896 .L101: 897 044d 837DCC01 cmpl $1, -52(%ebp) 898 0451 7405 je .L90 899 0453 E9B70000 jmp .L102 899 00 900 .L90: 901 .LBB12: 902 0458 83EC0C subl $12, %esp 903 045b FF75D0 pushl -48(%ebp) 904 045e E8FCFFFF call __cxa_begin_catch 904 FF 905 0463 83C410 addl $16, %esp 906 0466 8945D4 movl %eax, -44(%ebp) 42:rethrow.cc **** cout << "Got exception:" << e.as_string() << " rethrowing..." << endl; 907 .loc 1 42 0 908 0469 83EC08 subl $8, %esp 909 046c 68000000 pushl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ 909 00 910 0471 83EC0C subl $12, %esp 911 0474 68130000 pushl $.LC3 911 00 912 0479 83EC0C subl $12, %esp 913 047c 8D45D8 leal -40(%ebp), %eax 914 047f FF75D4 pushl -44(%ebp) 915 0482 50 pushl %eax 916 .LEHB22: 917 .LCFI49: 918 0483 E8FCFFFF call _ZNK11MyException9as_stringEv 918 FF 919 .LEHE22: 920 0488 83C404 addl $4, %esp 921 048b 8D45D8 leal -40(%ebp), %eax 922 048e 50 pushl %eax 923 048f 83EC0C subl $12, %esp 924 0492 68220000 pushl $.LC4 924 00 925 0497 68000000 pushl $_ZSt4cout 925 00 926 .LEHB23: 927 .LCFI50: 928 049c E8FCFFFF call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 928 FF GAS LISTING /tmp/ccJDTatA.s page 19 929 04a1 83C414 addl $20, %esp 930 04a4 50 pushl %eax 931 04a5 E8FCFFFF call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 931 FF 932 04aa 83C414 addl $20, %esp 933 04ad 50 pushl %eax 934 04ae E8FCFFFF call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 934 FF 935 04b3 83C414 addl $20, %esp 936 04b6 50 pushl %eax 937 .LCFI51: 938 04b7 E8FCFFFF call _ZNSolsEPFRSoS_E 938 FF 939 .LEHE23: 940 04bc 83C410 addl $16, %esp 941 04bf EB23 jmp .L92 942 .L103: 943 04c1 8945D0 movl %eax, -48(%ebp) 944 04c4 8955CC movl %edx, -52(%ebp) 945 04c7 8B5DD0 movl -48(%ebp), %ebx 946 04ca 8B75CC movl -52(%ebp), %esi 947 04cd 83EC0C subl $12, %esp 948 04d0 8D45D8 leal -40(%ebp), %eax 949 04d3 50 pushl %eax 950 04d4 E8FCFFFF call _ZNSsD1Ev 950 FF 951 04d9 83C410 addl $16, %esp 952 04dc 895DD0 movl %ebx, -48(%ebp) 953 04df 8975CC movl %esi, -52(%ebp) 954 04e2 EB1A jmp .L95 955 .L92: 956 04e4 83EC0C subl $12, %esp 957 04e7 8D45D8 leal -40(%ebp), %eax 958 04ea 50 pushl %eax 959 .LEHB24: 960 04eb E8FCFFFF call _ZNSsD1Ev 960 FF 961 04f0 83C410 addl $16, %esp 43:rethrow.cc **** throw; 962 .loc 1 43 0 963 .LCFI52: 964 04f3 E8FCFFFF call __cxa_rethrow 964 FF 965 .LEHE24: 966 .L104: 967 04f8 8945D0 movl %eax, -48(%ebp) 968 04fb 8955CC movl %edx, -52(%ebp) 969 .L95: 970 04fe 8B5DD0 movl -48(%ebp), %ebx 971 0501 8B75CC movl -52(%ebp), %esi 972 0504 E8FCFFFF call __cxa_end_catch 972 FF 973 0509 895DD0 movl %ebx, -48(%ebp) 974 050c 8975CC movl %esi, -52(%ebp) 975 .LBE12: 976 .LBE11: 977 .L108: GAS LISTING /tmp/ccJDTatA.s page 20 978 .L102: 979 050f 837DCCFF cmpl $-1, -52(%ebp) 980 0513 740B je .L99 981 0515 83EC0C subl $12, %esp 982 0518 FF75D0 pushl -48(%ebp) 983 .LEHB25: 984 .LCFI53: 985 051b E8FCFFFF call _Unwind_Resume 985 FF 986 .L99: 987 0520 83EC0C subl $12, %esp 988 0523 FF75D0 pushl -48(%ebp) 989 0526 E8FCFFFF call __cxa_call_unexpected 989 FF 990 .LEHE25: 44:rethrow.cc **** } 45:rethrow.cc **** } 991 .loc 1 45 0 992 .L80: 993 052b 8D65F8 leal -8(%ebp), %esp 994 052e 5B popl %ebx 995 052f 5E popl %esi 996 0530 C9 leave 997 0531 C3 ret 998 .LFE1503: 999 .Lfe9: 1001 .section .gcc_except_table 1002 00b2 0000 .align 4 1003 .LLSDA1503: 1004 00b4 FF .byte 0xff 1005 00b5 00 .byte 0x0 1006 00b6 31 .uleb128 .LLSDATT1503-.LLSDATTD1503 1007 .LLSDATTD1503: 1008 00b7 01 .byte 0x1 1009 00b8 23 .uleb128 .LLSDACSE1503-.LLSDACSB1503 1010 .LLSDACSB1503: 1011 00b9 2A .uleb128 .LEHB19-.LFB1503 1012 00ba 05 .uleb128 .LEHE19-.LEHB19 1013 00bb 74 .uleb128 .L106-.LFB1503 1014 00bc 05 .uleb128 0x5 1015 00bd 36 .uleb128 .LEHB20-.LFB1503 1016 00be 05 .uleb128 .LEHE20-.LEHB20 1017 00bf 40 .uleb128 .L105-.LFB1503 1018 00c0 05 .uleb128 0x5 1019 00c1 6A .uleb128 .LEHB21-.LFB1503 1020 00c2 05 .uleb128 .LEHE21-.LEHB21 1021 00c3 74 .uleb128 .L106-.LFB1503 1022 00c4 05 .uleb128 0x5 1023 00c5 E101 .uleb128 .LEHB22-.LFB1503 1024 00c7 05 .uleb128 .LEHE22-.LEHB22 1025 00c8 D602 .uleb128 .L104-.LFB1503 1026 00ca 07 .uleb128 0x7 1027 00cb FA01 .uleb128 .LEHB23-.LFB1503 1028 00cd 20 .uleb128 .LEHE23-.LEHB23 1029 00ce 9F02 .uleb128 .L103-.LFB1503 1030 00d0 07 .uleb128 0x7 1031 00d1 C902 .uleb128 .LEHB24-.LFB1503 GAS LISTING /tmp/ccJDTatA.s page 21 1032 00d3 0D .uleb128 .LEHE24-.LEHB24 1033 00d4 D602 .uleb128 .L104-.LFB1503 1034 00d6 07 .uleb128 0x7 1035 00d7 F902 .uleb128 .LEHB25-.LFB1503 1036 00d9 10 .uleb128 .LEHE25-.LEHB25 1037 00da 00 .uleb128 0x0 1038 00db 00 .uleb128 0x0 1039 .LLSDACSE1503: 1040 00dc 7F .byte 0x7f 1041 00dd 00 .byte 0x0 1042 00de 01 .byte 0x1 1043 00df 7D .byte 0x7d 1044 00e0 00 .byte 0x0 1045 00e1 7D .byte 0x7d 1046 00e2 00 .byte 0x0 1047 00e3 79 .byte 0x79 1048 .align 4 1049 00e4 00000000 .long _ZTI11MyException 1050 .LLSDATT1503: 1051 00e8 01 .byte 0x1 1052 00e9 00 .byte 0x0 1053 .text 1054 .section .rodata 1055 .LC5: 1056 0031 42617A00 .string "Baz" 1057 .LC6: 1058 0035 20746872 .string " throwing another..." 1058 6F77696E 1058 6720616E 1058 6F746865 1058 722E2E2E 1059 .text 1060 .align 2 1061 .globl _Z23catch_and_throw_anotherv 1063 _Z23catch_and_throw_anotherv: 1064 .LFB1505: 46:rethrow.cc **** 47:rethrow.cc **** void catch_and_throw_another() throw (MyException) { 1065 .loc 1 47 0 1066 .LBB13: 1067 0532 55 pushl %ebp 1068 .LCFI54: 1069 0533 89E5 movl %esp, %ebp 1070 .LCFI55: 1071 0535 56 pushl %esi 1072 .LCFI56: 1073 0536 53 pushl %ebx 1074 .LCFI57: 1075 0537 83EC30 subl $48, %esp 1076 .LCFI58: 48:rethrow.cc **** try { 49:rethrow.cc **** throw_MyException("Baz"); 1077 .loc 1 49 0 1078 053a 83EC0C subl $12, %esp 1079 053d 83EC08 subl $8, %esp 1080 0540 83EC08 subl $8, %esp 1081 0543 8D45D8 leal -40(%ebp), %eax GAS LISTING /tmp/ccJDTatA.s page 22 1082 0546 50 pushl %eax 1083 .LCFI59: 1084 0547 E8FCFFFF call _ZNSaIcEC1Ev 1084 FF 1085 054c 83C40C addl $12, %esp 1086 054f 8D45D8 leal -40(%ebp), %eax 1087 0552 50 pushl %eax 1088 0553 68310000 pushl $.LC5 1088 00 1089 0558 8D45E8 leal -24(%ebp), %eax 1090 055b 50 pushl %eax 1091 .LEHB26: 1092 .LCFI60: 1093 055c E8FCFFFF call _ZNSsC1EPKcRKSaIcE 1093 FF 1094 .LEHE26: 1095 0561 83C414 addl $20, %esp 1096 0564 8D45E8 leal -24(%ebp), %eax 1097 0567 50 pushl %eax 1098 .LEHB27: 1099 .LCFI61: 1100 0568 E8FCFFFF call _Z17throw_MyExceptionSs 1100 FF 1101 .LEHE27: 1102 056d 83C410 addl $16, %esp 1103 0570 EB23 jmp .L111 1104 .L145: 1105 0572 8945D0 movl %eax, -48(%ebp) 1106 0575 8955CC movl %edx, -52(%ebp) 1107 0578 8B5DD0 movl -48(%ebp), %ebx 1108 057b 8B75CC movl -52(%ebp), %esi 1109 057e 83EC0C subl $12, %esp 1110 0581 8D45E8 leal -24(%ebp), %eax 1111 0584 50 pushl %eax 1112 0585 E8FCFFFF call _ZNSsD1Ev 1112 FF 1113 058a 83C410 addl $16, %esp 1114 058d 895DD0 movl %ebx, -48(%ebp) 1115 0590 8975CC movl %esi, -52(%ebp) 1116 0593 EB17 jmp .L114 1117 .L111: 1118 0595 83EC0C subl $12, %esp 1119 0598 8D45E8 leal -24(%ebp), %eax 1120 059b 50 pushl %eax 1121 .LEHB28: 1122 059c E8FCFFFF call _ZNSsD1Ev 1122 FF 1123 .LEHE28: 1124 05a1 83C410 addl $16, %esp 1125 05a4 EB23 jmp .L115 1126 .L146: 1127 05a6 8945D0 movl %eax, -48(%ebp) 1128 05a9 8955CC movl %edx, -52(%ebp) 1129 .L114: 1130 05ac 8B5DD0 movl -48(%ebp), %ebx 1131 05af 8B75CC movl -52(%ebp), %esi 1132 05b2 83EC0C subl $12, %esp GAS LISTING /tmp/ccJDTatA.s page 23 1133 05b5 8D45D8 leal -40(%ebp), %eax 1134 05b8 50 pushl %eax 1135 05b9 E8FCFFFF call _ZNSaIcED1Ev 1135 FF 1136 05be 83C410 addl $16, %esp 1137 05c1 895DD0 movl %ebx, -48(%ebp) 1138 05c4 8975CC movl %esi, -52(%ebp) 1139 05c7 EB14 jmp .L140 1140 .L115: 1141 05c9 83EC0C subl $12, %esp 1142 05cc 8D45D8 leal -40(%ebp), %eax 1143 05cf 50 pushl %eax 1144 05d0 E8FCFFFF call _ZNSaIcED1Ev 1144 FF 1145 05d5 83C410 addl $16, %esp 1146 05d8 E9620100 jmp .L109 1146 00 50:rethrow.cc **** } catch (MyException &e) { 1147 .loc 1 50 0 1148 .L147: 1149 .L140: 1150 05dd 837DCC01 cmpl $1, -52(%ebp) 1151 05e1 7405 je .L119 1152 05e3 E93B0100 jmp .L141 1152 00 1153 .L119: 1154 .LBB14: 1155 05e8 83EC0C subl $12, %esp 1156 05eb FF75D0 pushl -48(%ebp) 1157 05ee E8FCFFFF call __cxa_begin_catch 1157 FF 1158 05f3 83C410 addl $16, %esp 1159 05f6 8945D4 movl %eax, -44(%ebp) 51:rethrow.cc **** cout << "Got exception:" << e.as_string() << " throwing another..." << endl; 1160 .loc 1 51 0 1161 05f9 83EC08 subl $8, %esp 1162 05fc 68000000 pushl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ 1162 00 1163 0601 83EC0C subl $12, %esp 1164 0604 68350000 pushl $.LC6 1164 00 1165 0609 83EC0C subl $12, %esp 1166 060c 8D45D8 leal -40(%ebp), %eax 1167 060f FF75D4 pushl -44(%ebp) 1168 0612 50 pushl %eax 1169 .LEHB29: 1170 .LCFI62: 1171 0613 E8FCFFFF call _ZNK11MyException9as_stringEv 1171 FF 1172 .LEHE29: 1173 0618 83C404 addl $4, %esp 1174 061b 8D45D8 leal -40(%ebp), %eax 1175 061e 50 pushl %eax 1176 061f 83EC0C subl $12, %esp 1177 0622 68220000 pushl $.LC4 1177 00 1178 0627 68000000 pushl $_ZSt4cout GAS LISTING /tmp/ccJDTatA.s page 24 1178 00 1179 .LEHB30: 1180 .LCFI63: 1181 062c E8FCFFFF call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1181 FF 1182 0631 83C414 addl $20, %esp 1183 0634 50 pushl %eax 1184 0635 E8FCFFFF call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 1184 FF 1185 063a 83C414 addl $20, %esp 1186 063d 50 pushl %eax 1187 063e E8FCFFFF call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1187 FF 1188 0643 83C414 addl $20, %esp 1189 0646 50 pushl %eax 1190 .LCFI64: 1191 0647 E8FCFFFF call _ZNSolsEPFRSoS_E 1191 FF 1192 .LEHE30: 1193 064c 83C410 addl $16, %esp 1194 064f EB26 jmp .L121 1195 .L143: 1196 0651 8945D0 movl %eax, -48(%ebp) 1197 0654 8955CC movl %edx, -52(%ebp) 1198 0657 8B5DD0 movl -48(%ebp), %ebx 1199 065a 8B75CC movl -52(%ebp), %esi 1200 065d 83EC0C subl $12, %esp 1201 0660 8D45D8 leal -40(%ebp), %eax 1202 0663 50 pushl %eax 1203 0664 E8FCFFFF call _ZNSsD1Ev 1203 FF 1204 0669 83C410 addl $16, %esp 1205 066c 895DD0 movl %ebx, -48(%ebp) 1206 066f 8975CC movl %esi, -52(%ebp) 1207 0672 E99B0000 jmp .L134 1207 00 1208 .L121: 1209 0677 83EC0C subl $12, %esp 1210 067a 8D45D8 leal -40(%ebp), %eax 1211 067d 50 pushl %eax 1212 .LEHB31: 1213 067e E8FCFFFF call _ZNSsD1Ev 1213 FF 1214 0683 83C410 addl $16, %esp 52:rethrow.cc **** throw MyException(e.as_string()); 1215 .loc 1 52 0 1216 0686 83EC08 subl $8, %esp 1217 0689 8D45E8 leal -24(%ebp), %eax 1218 068c FF75D4 pushl -44(%ebp) 1219 068f 50 pushl %eax 1220 .LCFI65: 1221 0690 E8FCFFFF call _ZNK11MyException9as_stringEv 1221 FF 1222 0695 83C404 addl $4, %esp 1223 0698 8D45E8 leal -24(%ebp), %eax 1224 069b 50 pushl %eax 1225 069c 8D45D8 leal -40(%ebp), %eax GAS LISTING /tmp/ccJDTatA.s page 25 1226 069f 50 pushl %eax 1227 .LCFI66: 1228 06a0 E8FCFFFF call _ZN11MyExceptionC1ESs 1228 FF 1229 06a5 83C410 addl $16, %esp 1230 06a8 83EC0C subl $12, %esp 1231 06ab 8D45E8 leal -24(%ebp), %eax 1232 06ae 50 pushl %eax 1233 06af E8FCFFFF call _ZNSsD1Ev 1233 FF 1234 .LEHE31: 1235 06b4 83C410 addl $16, %esp 1236 06b7 83EC0C subl $12, %esp 1237 06ba 6A08 pushl $8 1238 06bc E8FCFFFF call __cxa_allocate_exception 1238 FF 1239 06c1 83C410 addl $16, %esp 1240 06c4 89C3 movl %eax, %ebx 1241 06c6 83EC08 subl $8, %esp 1242 06c9 8D45D8 leal -40(%ebp), %eax 1243 06cc 50 pushl %eax 1244 06cd 53 pushl %ebx 1245 06ce E8FCFFFF call _ZN11MyExceptionC1ERKS_ 1245 FF 1246 06d3 83C410 addl $16, %esp 1247 06d6 83EC04 subl $4, %esp 1248 06d9 68000000 pushl $_ZN11MyExceptionD1Ev 1248 00 1249 06de 68000000 pushl $_ZTI11MyException 1249 00 1250 06e3 53 pushl %ebx 1251 .LEHB32: 1252 06e4 E8FCFFFF call __cxa_throw 1252 FF 1253 .LEHE32: 1254 .L142: 1255 06e9 8945D0 movl %eax, -48(%ebp) 1256 06ec 8955CC movl %edx, -52(%ebp) 1257 06ef 8B5DD0 movl -48(%ebp), %ebx 1258 06f2 8B75CC movl -52(%ebp), %esi 1259 06f5 83EC0C subl $12, %esp 1260 06f8 8D45D8 leal -40(%ebp), %eax 1261 06fb 50 pushl %eax 1262 06fc E8FCFFFF call _ZN11MyExceptionD1Ev 1262 FF 1263 0701 83C410 addl $16, %esp 1264 0704 895DD0 movl %ebx, -48(%ebp) 1265 0707 8975CC movl %esi, -52(%ebp) 1266 070a EB06 jmp .L134 1267 .L144: 1268 070c 8945D0 movl %eax, -48(%ebp) 1269 070f 8955CC movl %edx, -52(%ebp) 1270 .L134: 1271 0712 8B5DD0 movl -48(%ebp), %ebx 1272 0715 8B75CC movl -52(%ebp), %esi 1273 .LCFI67: 1274 0718 E8FCFFFF call __cxa_end_catch GAS LISTING /tmp/ccJDTatA.s page 26 1274 FF 1275 071d 895DD0 movl %ebx, -48(%ebp) 1276 0720 8975CC movl %esi, -52(%ebp) 1277 .LBE14: 1278 .LBE13: 1279 .L148: 1280 .L141: 1281 0723 837DCCFF cmpl $-1, -52(%ebp) 1282 0727 740B je .L138 1283 0729 83EC0C subl $12, %esp 1284 072c FF75D0 pushl -48(%ebp) 1285 .LEHB33: 1286 .LCFI68: 1287 072f E8FCFFFF call _Unwind_Resume 1287 FF 1288 .L138: 1289 0734 83EC0C subl $12, %esp 1290 0737 FF75D0 pushl -48(%ebp) 1291 073a E8FCFFFF call __cxa_call_unexpected 1291 FF 1292 .LEHE33: 53:rethrow.cc **** } 54:rethrow.cc **** } 1293 .loc 1 54 0 1294 .L109: 1295 073f 8D65F8 leal -8(%ebp), %esp 1296 0742 5B popl %ebx 1297 0743 5E popl %esi 1298 0744 C9 leave 1299 0745 C3 ret 1300 .LFE1505: 1301 .Lfe10: 1303 .section .gcc_except_table 1304 00ea 0000 .align 4 1305 .LLSDA1505: 1306 00ec FF .byte 0xff 1307 00ed 00 .byte 0x0 1308 00ee 39 .uleb128 .LLSDATT1505-.LLSDATTD1505 1309 .LLSDATTD1505: 1310 00ef 01 .byte 0x1 1311 00f0 29 .uleb128 .LLSDACSE1505-.LLSDACSB1505 1312 .LLSDACSB1505: 1313 00f1 2A .uleb128 .LEHB26-.LFB1505 1314 00f2 05 .uleb128 .LEHE26-.LEHB26 1315 00f3 74 .uleb128 .L146-.LFB1505 1316 00f4 05 .uleb128 0x5 1317 00f5 36 .uleb128 .LEHB27-.LFB1505 1318 00f6 05 .uleb128 .LEHE27-.LEHB27 1319 00f7 40 .uleb128 .L145-.LFB1505 1320 00f8 05 .uleb128 0x5 1321 00f9 6A .uleb128 .LEHB28-.LFB1505 1322 00fa 05 .uleb128 .LEHE28-.LEHB28 1323 00fb 74 .uleb128 .L146-.LFB1505 1324 00fc 05 .uleb128 0x5 1325 00fd E101 .uleb128 .LEHB29-.LFB1505 1326 00ff 05 .uleb128 .LEHE29-.LEHB29 1327 0100 DA03 .uleb128 .L144-.LFB1505 GAS LISTING /tmp/ccJDTatA.s page 27 1328 0102 07 .uleb128 0x7 1329 0103 FA01 .uleb128 .LEHB30-.LFB1505 1330 0105 20 .uleb128 .LEHE30-.LEHB30 1331 0106 9F02 .uleb128 .L143-.LFB1505 1332 0108 07 .uleb128 0x7 1333 0109 CC02 .uleb128 .LEHB31-.LFB1505 1334 010b 36 .uleb128 .LEHE31-.LEHB31 1335 010c DA03 .uleb128 .L144-.LFB1505 1336 010e 07 .uleb128 0x7 1337 010f B203 .uleb128 .LEHB32-.LFB1505 1338 0111 05 .uleb128 .LEHE32-.LEHB32 1339 0112 B703 .uleb128 .L142-.LFB1505 1340 0114 07 .uleb128 0x7 1341 0115 FD03 .uleb128 .LEHB33-.LFB1505 1342 0117 10 .uleb128 .LEHE33-.LEHB33 1343 0118 00 .uleb128 0x0 1344 0119 00 .uleb128 0x0 1345 .LLSDACSE1505: 1346 011a 7F .byte 0x7f 1347 011b 00 .byte 0x0 1348 011c 01 .byte 0x1 1349 011d 7D .byte 0x7d 1350 011e 00 .byte 0x0 1351 011f 7D .byte 0x7d 1352 0120 00 .byte 0x0 1353 0121 79 .byte 0x79 1354 0122 0000 .align 4 1355 0124 00000000 .long _ZTI11MyException 1356 .LLSDATT1505: 1357 0128 01 .byte 0x1 1358 0129 00 .byte 0x0 1359 .text 1360 .section .rodata 1361 .LC7: 1362 004a 42617200 .string "Bar" 1363 .text 1364 .align 2 1365 .globl _Z12doesnt_throwv 1367 _Z12doesnt_throwv: 1368 .LFB1507: 55:rethrow.cc **** 56:rethrow.cc **** void doesnt_throw() throw () { 1369 .loc 1 56 0 1370 .LBB15: 1371 0746 55 pushl %ebp 1372 .LCFI69: 1373 0747 89E5 movl %esp, %ebp 1374 .LCFI70: 1375 0749 56 pushl %esi 1376 .LCFI71: 1377 074a 53 pushl %ebx 1378 .LCFI72: 1379 074b 83EC30 subl $48, %esp 1380 .LCFI73: 57:rethrow.cc **** throw_MyException("Bar"); 1381 .loc 1 57 0 1382 074e 83EC0C subl $12, %esp GAS LISTING /tmp/ccJDTatA.s page 28 1383 0751 83EC08 subl $8, %esp 1384 0754 83EC08 subl $8, %esp 1385 0757 8D45D8 leal -40(%ebp), %eax 1386 075a 50 pushl %eax 1387 .LCFI74: 1388 075b E8FCFFFF call _ZNSaIcEC1Ev 1388 FF 1389 0760 83C40C addl $12, %esp 1390 0763 8D45D8 leal -40(%ebp), %eax 1391 0766 50 pushl %eax 1392 0767 684A0000 pushl $.LC7 1392 00 1393 076c 8D45E8 leal -24(%ebp), %eax 1394 076f 50 pushl %eax 1395 .LEHB34: 1396 .LCFI75: 1397 0770 E8FCFFFF call _ZNSsC1EPKcRKSaIcE 1397 FF 1398 .LEHE34: 1399 0775 83C414 addl $20, %esp 1400 0778 8D45E8 leal -24(%ebp), %eax 1401 077b 50 pushl %eax 1402 .LEHB35: 1403 .LCFI76: 1404 077c E8FCFFFF call _Z17throw_MyExceptionSs 1404 FF 1405 .LEHE35: 1406 0781 83C410 addl $16, %esp 1407 0784 EB23 jmp .L151 1408 .L161: 1409 0786 8945D4 movl %eax, -44(%ebp) 1410 0789 8955D0 movl %edx, -48(%ebp) 1411 078c 8B5DD4 movl -44(%ebp), %ebx 1412 078f 8B75D0 movl -48(%ebp), %esi 1413 0792 83EC0C subl $12, %esp 1414 0795 8D45E8 leal -24(%ebp), %eax 1415 0798 50 pushl %eax 1416 0799 E8FCFFFF call _ZNSsD1Ev 1416 FF 1417 079e 83C410 addl $16, %esp 1418 07a1 895DD4 movl %ebx, -44(%ebp) 1419 07a4 8975D0 movl %esi, -48(%ebp) 1420 07a7 EB17 jmp .L154 1421 .L151: 1422 07a9 83EC0C subl $12, %esp 1423 07ac 8D45E8 leal -24(%ebp), %eax 1424 07af 50 pushl %eax 1425 .LEHB36: 1426 07b0 E8FCFFFF call _ZNSsD1Ev 1426 FF 1427 .LEHE36: 1428 07b5 83C410 addl $16, %esp 1429 07b8 EB23 jmp .L155 1430 .L162: 1431 07ba 8945D4 movl %eax, -44(%ebp) 1432 07bd 8955D0 movl %edx, -48(%ebp) 1433 .L154: GAS LISTING /tmp/ccJDTatA.s page 29 1434 07c0 8B5DD4 movl -44(%ebp), %ebx 1435 07c3 8B75D0 movl -48(%ebp), %esi 1436 07c6 83EC0C subl $12, %esp 1437 07c9 8D45D8 leal -40(%ebp), %eax 1438 07cc 50 pushl %eax 1439 07cd E8FCFFFF call _ZNSaIcED1Ev 1439 FF 1440 07d2 83C410 addl $16, %esp 1441 07d5 895DD4 movl %ebx, -44(%ebp) 1442 07d8 8975D0 movl %esi, -48(%ebp) 1443 07db EB11 jmp .L160 1444 .L155: 1445 07dd 83EC0C subl $12, %esp 1446 07e0 8D45D8 leal -40(%ebp), %eax 1447 07e3 50 pushl %eax 1448 07e4 E8FCFFFF call _ZNSaIcED1Ev 1448 FF 1449 07e9 83C410 addl $16, %esp 1450 .LBE15: 1451 07ec EB1C jmp .L149 1452 .L163: 1453 .L160: 1454 07ee 837DD0FF cmpl $-1, -48(%ebp) 1455 07f2 740B je .L158 1456 07f4 83EC0C subl $12, %esp 1457 07f7 FF75D4 pushl -44(%ebp) 1458 .LEHB37: 1459 07fa E8FCFFFF call _Unwind_Resume 1459 FF 1460 .L158: 1461 07ff 83EC0C subl $12, %esp 1462 0802 FF75D4 pushl -44(%ebp) 1463 0805 E8FCFFFF call __cxa_call_unexpected 1463 FF 1464 .LEHE37: 58:rethrow.cc **** } 1465 .loc 1 58 0 1466 .L149: 1467 080a 8D65F8 leal -8(%ebp), %esp 1468 080d 5B popl %ebx 1469 080e 5E popl %esi 1470 080f C9 leave 1471 0810 C3 ret 1472 .LFE1507: 1473 .Lfe11: 1475 .section .gcc_except_table 1476 012a 0000 .align 4 1477 .LLSDA1507: 1478 012c FF .byte 0xff 1479 012d 00 .byte 0x0 1480 012e 19 .uleb128 .LLSDATT1507-.LLSDATTD1507 1481 .LLSDATTD1507: 1482 012f 01 .byte 0x1 1483 0130 11 .uleb128 .LLSDACSE1507-.LLSDACSB1507 1484 .LLSDACSB1507: 1485 0131 2A .uleb128 .LEHB34-.LFB1507 1486 0132 05 .uleb128 .LEHE34-.LEHB34 GAS LISTING /tmp/ccJDTatA.s page 30 1487 0133 74 .uleb128 .L162-.LFB1507 1488 0134 03 .uleb128 0x3 1489 0135 36 .uleb128 .LEHB35-.LFB1507 1490 0136 05 .uleb128 .LEHE35-.LEHB35 1491 0137 40 .uleb128 .L161-.LFB1507 1492 0138 03 .uleb128 0x3 1493 0139 6A .uleb128 .LEHB36-.LFB1507 1494 013a 05 .uleb128 .LEHE36-.LEHB36 1495 013b 74 .uleb128 .L162-.LFB1507 1496 013c 03 .uleb128 0x3 1497 013d B401 .uleb128 .LEHB37-.LFB1507 1498 013f 10 .uleb128 .LEHE37-.LEHB37 1499 0140 00 .uleb128 0x0 1500 0141 00 .uleb128 0x0 1501 .LLSDACSE1507: 1502 0142 7F .byte 0x7f 1503 0143 00 .byte 0x0 1504 0144 00 .byte 0x0 1505 0145 7D .byte 0x7d 1506 0146 0000 .align 4 1507 .LLSDATT1507: 1508 0148 00 .byte 0x0 1509 .text 1510 .section .rodata 1511 .LC8: 1512 004e 4D61696E .string "Main got exception: " 1512 20676F74 1512 20657863 1512 65707469 1512 6F6E3A20 1513 .text 1514 0811 90 .align 2 1515 .globl main 1517 main: 1518 .LFB1509: 59:rethrow.cc **** 60:rethrow.cc **** int main(int argc, char **argv) { 1519 .loc 1 60 0 1520 0812 55 pushl %ebp 1521 .LCFI77: 1522 0813 89E5 movl %esp, %ebp 1523 .LCFI78: 1524 0815 53 pushl %ebx 1525 .LCFI79: 1526 0816 83EC34 subl $52, %esp 1527 .LCFI80: 1528 0819 83E4F0 andl $-16, %esp 1529 081c B8000000 movl $0, %eax 1529 00 1530 0821 29C4 subl %eax, %esp 1531 .LBB16: 61:rethrow.cc **** try { 62:rethrow.cc **** catch_and_rethrow(); 1532 .loc 1 62 0 1533 .LEHB38: 1534 0823 E8FCFFFF call _Z17catch_and_rethrowv 1534 FF GAS LISTING /tmp/ccJDTatA.s page 31 1535 .LEHE38: 1536 0828 E9B80000 jmp .L165 1536 00 63:rethrow.cc **** } catch (MyException &e) { 1537 .loc 1 63 0 1538 .L202: 1539 082d 8945D4 movl %eax, -44(%ebp) 1540 0830 8955D0 movl %edx, -48(%ebp) 1541 0833 837DD001 cmpl $1, -48(%ebp) 1542 0837 740B je .L166 1543 0839 83EC0C subl $12, %esp 1544 083c FF75D4 pushl -44(%ebp) 1545 .LEHB39: 1546 .LCFI81: 1547 083f E8FCFFFF call _Unwind_Resume 1547 FF 1548 .LEHE39: 1549 .L166: 1550 .LBB17: 1551 0844 83EC0C subl $12, %esp 1552 0847 FF75D4 pushl -44(%ebp) 1553 084a E8FCFFFF call __cxa_begin_catch 1553 FF 1554 084f 83C410 addl $16, %esp 1555 0852 8945F4 movl %eax, -12(%ebp) 64:rethrow.cc **** cout << "Main got exception: " << e.as_string() << endl; 1556 .loc 1 64 0 1557 0855 83EC08 subl $8, %esp 1558 0858 68000000 pushl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ 1558 00 1559 085d 83EC0C subl $12, %esp 1560 0860 8D45D8 leal -40(%ebp), %eax 1561 0863 FF75F4 pushl -12(%ebp) 1562 0866 50 pushl %eax 1563 .LEHB40: 1564 .LCFI82: 1565 0867 E8FCFFFF call _ZNK11MyException9as_stringEv 1565 FF 1566 .LEHE40: 1567 086c 83C404 addl $4, %esp 1568 086f 8D45D8 leal -40(%ebp), %eax 1569 0872 50 pushl %eax 1570 0873 83EC0C subl $12, %esp 1571 0876 684E0000 pushl $.LC8 1571 00 1572 087b 68000000 pushl $_ZSt4cout 1572 00 1573 .LEHB41: 1574 .LCFI83: 1575 0880 E8FCFFFF call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1575 FF 1576 0885 83C414 addl $20, %esp 1577 0888 50 pushl %eax 1578 0889 E8FCFFFF call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 1578 FF 1579 088e 83C414 addl $20, %esp 1580 0891 50 pushl %eax GAS LISTING /tmp/ccJDTatA.s page 32 1581 .LCFI84: 1582 0892 E8FCFFFF call _ZNSolsEPFRSoS_E 1582 FF 1583 .LEHE41: 1584 0897 83C410 addl $16, %esp 1585 089a EB1A jmp .L168 1586 .L200: 1587 089c 8945D4 movl %eax, -44(%ebp) 1588 089f 8B5DD4 movl -44(%ebp), %ebx 1589 08a2 83EC0C subl $12, %esp 1590 08a5 8D45D8 leal -40(%ebp), %eax 1591 08a8 50 pushl %eax 1592 08a9 E8FCFFFF call _ZNSsD1Ev 1592 FF 1593 08ae 83C410 addl $16, %esp 1594 08b1 895DD4 movl %ebx, -44(%ebp) 1595 08b4 EB14 jmp .L171 1596 .L168: 1597 08b6 83EC0C subl $12, %esp 1598 08b9 8D45D8 leal -40(%ebp), %eax 1599 08bc 50 pushl %eax 1600 .LEHB42: 1601 08bd E8FCFFFF call _ZNSsD1Ev 1601 FF 1602 .LEHE42: 1603 08c2 83C410 addl $16, %esp 1604 08c5 EB19 jmp .L172 1605 .L201: 1606 08c7 8945D4 movl %eax, -44(%ebp) 1607 .L171: 1608 08ca 8B5DD4 movl -44(%ebp), %ebx 1609 .LCFI85: 1610 08cd E8FCFFFF call __cxa_end_catch 1610 FF 1611 08d2 895DD4 movl %ebx, -44(%ebp) 1612 08d5 83EC0C subl $12, %esp 1613 08d8 FF75D4 pushl -44(%ebp) 1614 .LEHB43: 1615 .LCFI86: 1616 08db E8FCFFFF call _Unwind_Resume 1616 FF 1617 .LEHE43: 1618 .L172: 1619 .LCFI87: 1620 08e0 E8FCFFFF call __cxa_end_catch 1620 FF 1621 .LBE17: 1622 .L165: 65:rethrow.cc **** } 66:rethrow.cc **** 67:rethrow.cc **** try { 68:rethrow.cc **** catch_and_throw_another(); 1623 .loc 1 68 0 1624 .LEHB44: 1625 08e5 E8FCFFFF call _Z23catch_and_throw_anotherv 1625 FF 1626 .LEHE44: GAS LISTING /tmp/ccJDTatA.s page 33 1627 08ea E9B80000 jmp .L175 1627 00 69:rethrow.cc **** } catch (MyException &e) { 1628 .loc 1 69 0 1629 .L199: 1630 08ef 8945D4 movl %eax, -44(%ebp) 1631 08f2 8955D0 movl %edx, -48(%ebp) 1632 08f5 837DD001 cmpl $1, -48(%ebp) 1633 08f9 740B je .L176 1634 08fb 83EC0C subl $12, %esp 1635 08fe FF75D4 pushl -44(%ebp) 1636 .LEHB45: 1637 .LCFI88: 1638 0901 E8FCFFFF call _Unwind_Resume 1638 FF 1639 .LEHE45: 1640 .L176: 1641 .LBB18: 1642 0906 83EC0C subl $12, %esp 1643 0909 FF75D4 pushl -44(%ebp) 1644 090c E8FCFFFF call __cxa_begin_catch 1644 FF 1645 0911 83C410 addl $16, %esp 1646 0914 8945F4 movl %eax, -12(%ebp) 70:rethrow.cc **** cout << "Main got exception: " << e.as_string() << endl; 1647 .loc 1 70 0 1648 0917 83EC08 subl $8, %esp 1649 091a 68000000 pushl $_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ 1649 00 1650 091f 83EC0C subl $12, %esp 1651 0922 8D45D8 leal -40(%ebp), %eax 1652 0925 FF75F4 pushl -12(%ebp) 1653 0928 50 pushl %eax 1654 .LEHB46: 1655 .LCFI89: 1656 0929 E8FCFFFF call _ZNK11MyException9as_stringEv 1656 FF 1657 .LEHE46: 1658 092e 83C404 addl $4, %esp 1659 0931 8D45D8 leal -40(%ebp), %eax 1660 0934 50 pushl %eax 1661 0935 83EC0C subl $12, %esp 1662 0938 684E0000 pushl $.LC8 1662 00 1663 093d 68000000 pushl $_ZSt4cout 1663 00 1664 .LEHB47: 1665 .LCFI90: 1666 0942 E8FCFFFF call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc 1666 FF 1667 0947 83C414 addl $20, %esp 1668 094a 50 pushl %eax 1669 094b E8FCFFFF call _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E 1669 FF 1670 0950 83C414 addl $20, %esp 1671 0953 50 pushl %eax 1672 .LCFI91: GAS LISTING /tmp/ccJDTatA.s page 34 1673 0954 E8FCFFFF call _ZNSolsEPFRSoS_E 1673 FF 1674 .LEHE47: 1675 0959 83C410 addl $16, %esp 1676 095c EB1A jmp .L178 1677 .L197: 1678 095e 8945D4 movl %eax, -44(%ebp) 1679 0961 8B5DD4 movl -44(%ebp), %ebx 1680 0964 83EC0C subl $12, %esp 1681 0967 8D45D8 leal -40(%ebp), %eax 1682 096a 50 pushl %eax 1683 096b E8FCFFFF call _ZNSsD1Ev 1683 FF 1684 0970 83C410 addl $16, %esp 1685 0973 895DD4 movl %ebx, -44(%ebp) 1686 0976 EB14 jmp .L181 1687 .L178: 1688 0978 83EC0C subl $12, %esp 1689 097b 8D45D8 leal -40(%ebp), %eax 1690 097e 50 pushl %eax 1691 .LEHB48: 1692 097f E8FCFFFF call _ZNSsD1Ev 1692 FF 1693 .LEHE48: 1694 0984 83C410 addl $16, %esp 1695 0987 EB19 jmp .L182 1696 .L198: 1697 0989 8945D4 movl %eax, -44(%ebp) 1698 .L181: 1699 098c 8B5DD4 movl -44(%ebp), %ebx 1700 .LCFI92: 1701 098f E8FCFFFF call __cxa_end_catch 1701 FF 1702 0994 895DD4 movl %ebx, -44(%ebp) 1703 0997 83EC0C subl $12, %esp 1704 099a FF75D4 pushl -44(%ebp) 1705 .LEHB49: 1706 .LCFI93: 1707 099d E8FCFFFF call _Unwind_Resume 1707 FF 1708 .LEHE49: 1709 .L182: 1710 .LCFI94: 1711 09a2 E8FCFFFF call __cxa_end_catch 1711 FF 1712 .LBE18: 1713 .L175: 71:rethrow.cc **** } 72:rethrow.cc **** 73:rethrow.cc **** try { 74:rethrow.cc **** doesnt_throw(); 1714 .loc 1 74 0 1715 09a7 E8FCFFFF call _Z12doesnt_throwv 1715 FF 75:rethrow.cc **** } catch (MyException &e) { 76:rethrow.cc **** cout << "Main got exception: " << e.as_string() << endl; 1716 .loc 1 76 0 GAS LISTING /tmp/ccJDTatA.s page 35 1717 .LBE16: 77:rethrow.cc **** } 78:rethrow.cc **** } 1718 .loc 1 78 0 1719 09ac B8000000 movl $0, %eax 1719 00 1720 09b1 8B5DFC movl -4(%ebp), %ebx 1721 09b4 C9 leave 1722 09b5 C3 ret 1723 .LFE1509: 1724 .Lfe12: 1726 .section .gcc_except_table 1727 0149 000000 .align 4 1728 .LLSDA1509: 1729 014c FF .byte 0xff 1730 014d 00 .byte 0x0 1731 014e 49 .uleb128 .LLSDATT1509-.LLSDATTD1509 1732 .LLSDATTD1509: 1733 014f 01 .byte 0x1 1734 0150 3F .uleb128 .LLSDACSE1509-.LLSDACSB1509 1735 .LLSDACSB1509: 1736 0151 11 .uleb128 .LEHB38-.LFB1509 1737 0152 05 .uleb128 .LEHE38-.LEHB38 1738 0153 1B .uleb128 .L202-.LFB1509 1739 0154 01 .uleb128 0x1 1740 0155 2D .uleb128 .LEHB39-.LFB1509 1741 0156 05 .uleb128 .LEHE39-.LEHB39 1742 0157 00 .uleb128 0x0 1743 0158 00 .uleb128 0x0 1744 0159 55 .uleb128 .LEHB40-.LFB1509 1745 015a 05 .uleb128 .LEHE40-.LEHB40 1746 015b B501 .uleb128 .L201-.LFB1509 1747 015d 00 .uleb128 0x0 1748 015e 6E .uleb128 .LEHB41-.LFB1509 1749 015f 17 .uleb128 .LEHE41-.LEHB41 1750 0160 8A01 .uleb128 .L200-.LFB1509 1751 0162 00 .uleb128 0x0 1752 0163 AB01 .uleb128 .LEHB42-.LFB1509 1753 0165 05 .uleb128 .LEHE42-.LEHB42 1754 0166 B501 .uleb128 .L201-.LFB1509 1755 0168 00 .uleb128 0x0 1756 0169 C901 .uleb128 .LEHB43-.LFB1509 1757 016b 05 .uleb128 .LEHE43-.LEHB43 1758 016c 00 .uleb128 0x0 1759 016d 00 .uleb128 0x0 1760 016e D301 .uleb128 .LEHB44-.LFB1509 1761 0170 05 .uleb128 .LEHE44-.LEHB44 1762 0171 DD01 .uleb128 .L199-.LFB1509 1763 0173 01 .uleb128 0x1 1764 0174 EF01 .uleb128 .LEHB45-.LFB1509 1765 0176 05 .uleb128 .LEHE45-.LEHB45 1766 0177 00 .uleb128 0x0 1767 0178 00 .uleb128 0x0 1768 0179 9702 .uleb128 .LEHB46-.LFB1509 1769 017b 05 .uleb128 .LEHE46-.LEHB46 1770 017c F702 .uleb128 .L198-.LFB1509 1771 017e 00 .uleb128 0x0 GAS LISTING /tmp/ccJDTatA.s page 36 1772 017f B002 .uleb128 .LEHB47-.LFB1509 1773 0181 17 .uleb128 .LEHE47-.LEHB47 1774 0182 CC02 .uleb128 .L197-.LFB1509 1775 0184 00 .uleb128 0x0 1776 0185 ED02 .uleb128 .LEHB48-.LFB1509 1777 0187 05 .uleb128 .LEHE48-.LEHB48 1778 0188 F702 .uleb128 .L198-.LFB1509 1779 018a 00 .uleb128 0x0 1780 018b 8B03 .uleb128 .LEHB49-.LFB1509 1781 018d 05 .uleb128 .LEHE49-.LEHB49 1782 018e 00 .uleb128 0x0 1783 018f 00 .uleb128 0x0 1784 .LLSDACSE1509: 1785 0190 01 .byte 0x1 1786 0191 00 .byte 0x0 1787 0192 0000 .align 4 1788 0194 00000000 .long _ZTI11MyException 1789 .LLSDATT1509: 1790 .text 1791 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_,"ax",@progbits 1792 .align 2 1793 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 1795 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_: 1796 .LFB1523: 1:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Components for manipulating sequences of characters -*- C++ -*- 2:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 3:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // 6:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // terms of the GNU General Public License as published by the 9:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Free Software Foundation; either version 2, or (at your option) 10:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // any later version. 11:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 12:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 17:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // USA. 21:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 22:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 31:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // 32:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // ISO C++ 14882: 21 Strings library 33:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // GAS LISTING /tmp/ccJDTatA.s page 37 34:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 35:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This file is included by . It is not meant to be included 36:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // separately. 37:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 38:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Written by Jason Merrill based upon the specification by Takanori Adachi 39:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // in ANSI X3J16/94-0013R2. Rewritten by Nathan Myers to ISO-14882. 40:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 41:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #ifndef _CPP_BITS_STRING_TCC 42:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #define _CPP_BITS_STRING_TCC 1 43:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 44:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #pragma GCC system_header 45:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 46:/usr/include/c++/3.2.2/bits/basic_string.tcc **** namespace std 47:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 48:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 49:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const typename basic_string<_CharT, _Traits, _Alloc>::size_type 50:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 51:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep::_S_max_size = (((npos - sizeof(_Rep))/sizeof(_CharT)) - 1) / 4; 52:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 53:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 54:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const _CharT 55:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 56:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep::_S_terminal = _CharT(); 57:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 58:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 59:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const typename basic_string<_CharT, _Traits, _Alloc>::size_type 60:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::npos; 61:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 62:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Linker sets _S_empty_rep_storage to all 0s (one reference, empty string) 63:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // at static init time (before static ctors are run). 64:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 65:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::size_type 66:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_S_empty_rep_storage[ 67:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1)/sizeof(size_type)]; 68:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 69:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: This is the special case for Input Iterators, used in 70:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // istreambuf_iterators, etc. 71:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Input Iterators have a cost structure very different from 72:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // pointers, calling for a different coding style. 73:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 74:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 75:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 76:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 77:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, 78:/usr/include/c++/3.2.2/bits/basic_string.tcc **** input_iterator_tag) 79:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 80:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__beg == __end && __a == _Alloc()) 81:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _S_empty_rep()._M_refcopy(); 82:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Avoid reallocation for common case. 83:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT __buf[100]; 84:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __i = 0; 85:/usr/include/c++/3.2.2/bits/basic_string.tcc **** while (__beg != __end && __i < sizeof(__buf) / sizeof(_CharT)) 86:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 87:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __buf[__i++] = *__beg; 88:/usr/include/c++/3.2.2/bits/basic_string.tcc **** ++__beg; 89:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 90:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__i, __a); GAS LISTING /tmp/ccJDTatA.s page 38 91:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__r->_M_refdata(), __buf, __i); 92:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __i; 93:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 94:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 95:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: this loop looks precisely this way because 96:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // it avoids comparing __beg != __end any more 97:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // than strictly necessary; != might be expensive! 98:/usr/include/c++/3.2.2/bits/basic_string.tcc **** for (;;) 99:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 100:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __p = __r->_M_refdata() + __r->_M_length; 101:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __last = __r->_M_refdata() + __r->_M_capacity; 102:/usr/include/c++/3.2.2/bits/basic_string.tcc **** for (;;) 103:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 104:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__beg == __end) 105:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 106:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __p - __r->_M_refdata(); 107:/usr/include/c++/3.2.2/bits/basic_string.tcc **** *__p = _Rep::_S_terminal; // grrr. 108:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 109:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 110:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__p == __last) 111:/usr/include/c++/3.2.2/bits/basic_string.tcc **** break; 112:/usr/include/c++/3.2.2/bits/basic_string.tcc **** *__p++ = *__beg; 113:/usr/include/c++/3.2.2/bits/basic_string.tcc **** ++__beg; 114:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 115:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Allocate more space. 116:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __p - __r->_M_refdata(); 117:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __another = _Rep::_S_create(__len + 1, __a); 118:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__another->_M_refdata(), 119:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_refdata(), __len); 120:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 121:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = __another; 122:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __len; 123:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 124:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 125:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 126:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 127:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 128:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 129:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 130:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return 0; 131:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 132:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 133:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 134:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 135:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 136:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 137:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, 138:/usr/include/c++/3.2.2/bits/basic_string.tcc **** forward_iterator_tag) 139:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 140:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dnew = static_cast(distance(__beg, __end)); 141:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 142:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__beg == __end && __a == _Alloc()) 143:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _S_empty_rep()._M_refcopy(); 144:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 145:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: Not required, but considered best practice. 146:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__builtin_expect(__beg == _InIter(), 0)) 147:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_logic_error("attempt to create string with null pointer"); GAS LISTING /tmp/ccJDTatA.s page 39 148:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 149:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Check for out_of_range and length_error exceptions. 150:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__dnew, __a); 151:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 152:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { _S_copy_chars(__r->_M_refdata(), __beg, __end); } 153:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 154:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 155:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 156:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 157:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 158:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __dnew; 159:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 160:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_refdata()[__dnew] = _Rep::_S_terminal; // grrr. 161:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 162:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 163:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 164:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 165:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 166:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 167:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_construct(size_type __n, _CharT __c, const _Alloc& __a) 168:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 169:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__n == 0 && __a == _Alloc()) 170:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _S_empty_rep()._M_refcopy(); 171:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 172:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Check for out_of_range and length_error exceptions. 173:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r = _Rep::_S_create(__n, __a); 174:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 175:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 176:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__n) 177:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::assign(__r->_M_refdata(), __n, __c); 178:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 179:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 180:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 181:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__a); 182:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 183:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 184:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = __n; 185:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_refdata()[__n] = _Rep::_S_terminal; // grrr 186:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 187:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 188:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 189:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 190:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 191:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const basic_string& __str) 192:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(), __str.get_allocator()), 193:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.get_allocator()) 194:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 195:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 196:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 197:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 198:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const _Alloc& __a) 199:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a) 200:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 201:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 202:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 203:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 204:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const basic_string& __str, size_type __pos, size_type __n) GAS LISTING /tmp/ccJDTatA.s page 40 205:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__str._M_check(__pos), 206:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_fold(__pos, __n), _Alloc()), _Alloc()) 207:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 208:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 209:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 210:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 211:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const basic_string& __str, size_type __pos, 212:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __n, const _Alloc& __a) 213:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__str._M_check(__pos), 214:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_fold(__pos, __n), __a), __a) 215:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 216:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 217:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 218:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 219:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const _CharT* __s, size_type __n, const _Alloc& __a) 220:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__s, __s + __n, __a), __a) 221:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 222:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 223:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 224:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 225:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(const _CharT* __s, const _Alloc& __a) 226:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) : 227:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s + npos, __a), __a) 228:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 229:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 230:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 231:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 232:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(size_type __n, _CharT __c, const _Alloc& __a) 233:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__n, __c, __a), __a) 234:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 235:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 236:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 237:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 238:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 239:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string(_InputIter __beg, _InputIter __end, const _Alloc& __a) 240:/usr/include/c++/3.2.2/bits/basic_string.tcc **** : _M_dataplus(_S_construct(__beg, __end, __a), __a) 241:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { } 242:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 243:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 244:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 245:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::assign(const basic_string& __str) 246:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 247:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep() != __str._M_rep()) 248:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 249:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // XXX MT 250:/usr/include/c++/3.2.2/bits/basic_string.tcc **** allocator_type __a = this->get_allocator(); 251:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator()); 252:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 253:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__tmp); 254:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 255:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return *this; 256:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 257:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 258:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 259:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 260:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 261:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_destroy(const _Alloc& __a) throw () GAS LISTING /tmp/ccJDTatA.s page 41 262:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 263:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __size = sizeof(_Rep) + (_M_capacity + 1) * sizeof(_CharT); 264:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Raw_bytes_alloc(__a).deallocate(reinterpret_cast(this), __size); 265:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 266:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 267:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 268:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 269:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_M_leak_hard() 270:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 271:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep()->_M_is_shared()) 272:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_mutate(0, 0, 0); 273:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_set_leaked(); 274:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 275:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 276:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // _M_mutate and, below, _M_clone, include, in the same form, an exponential 277:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // growth policy, necessary to meet amortized linear time requirements of 278:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // the library: see http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html. 279:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The policy is active for allocations requiring an amount of memory above 280:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // system pagesize. This is consistent with the requirements of the standard: 281:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // see, f.i., http://gcc.gnu.org/ml/libstdc++/2001-07/msg00130.html 282:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 283:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 284:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 285:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_mutate(size_type __pos, size_type __len1, size_type __len2) 286:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 287:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __old_size = this->size(); 288:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __new_size = __old_size + __len2 - __len1; 289:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const _CharT* __src = _M_data() + __pos + __len1; 290:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __how_much = __old_size - __pos - __len1; 291:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 292:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep()->_M_is_shared() || __new_size > capacity()) 293:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 294:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Must reallocate. 295:/usr/include/c++/3.2.2/bits/basic_string.tcc **** allocator_type __a = get_allocator(); 296:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // See below (_S_create) for the meaning and value of these 297:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // constants. 298:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __pagesize = 4096; 299:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __malloc_header_size = 4 * sizeof (void*); 300:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The biggest string which fits in a memory page 301:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __page_capacity = (__pagesize - __malloc_header_size 302:/usr/include/c++/3.2.2/bits/basic_string.tcc **** - sizeof(_Rep) - sizeof(_CharT)) 303:/usr/include/c++/3.2.2/bits/basic_string.tcc **** / sizeof(_CharT); 304:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r; 305:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__new_size > capacity() && __new_size > __page_capacity) 306:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Growing exponentially. 307:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__new_size > 2*capacity() ? 308:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __new_size : 2*capacity(), __a); 309:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else 310:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__new_size, __a); 311:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 312:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 313:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__pos) 314:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__r->_M_refdata(), _M_data(), __pos); 315:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__how_much) 316:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::copy(__r->_M_refdata() + __pos + __len2, 317:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __src, __how_much); 318:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } GAS LISTING /tmp/ccJDTatA.s page 42 319:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 320:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 321:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_dispose(get_allocator()); 322:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 323:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 324:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 325:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__r->_M_refdata()); 326:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 327:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else if (__how_much && __len1 != __len2) 328:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 329:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Work in-place 330:/usr/include/c++/3.2.2/bits/basic_string.tcc **** traits_type::move(_M_data() + __pos + __len2, __src, __how_much); 331:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 332:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_set_sharable(); 333:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_length = __new_size; 334:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data()[__new_size] = _Rep::_S_terminal; // grrr. (per 21.3.4) 335:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // You cannot leave those LWG people alone for a second. 336:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 337:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 338:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 339:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 340:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::reserve(size_type __res) 341:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 342:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__res > this->capacity() || _M_rep()->_M_is_shared()) 343:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 344:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__res > this->max_size()) 345:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::reserve"); 346:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Make sure we don't shrink below the current size 347:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__res < this->size()) 348:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __res = this->size(); 349:/usr/include/c++/3.2.2/bits/basic_string.tcc **** allocator_type __a = get_allocator(); 350:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size()); 351:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_dispose(__a); 352:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__tmp); 353:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 354:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 355:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 356:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 357:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void basic_string<_CharT, _Traits, _Alloc>::swap(basic_string& __s) 358:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 359:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_rep()->_M_is_leaked()) 360:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_rep()->_M_set_sharable(); 361:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__s._M_rep()->_M_is_leaked()) 362:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s._M_rep()->_M_set_sharable(); 363:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (this->get_allocator() == __s.get_allocator()) 364:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 365:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* __tmp = _M_data(); 366:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_data(__s._M_data()); 367:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s._M_data(__tmp); 368:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 369:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The code below can usually be optimized away. 370:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else 371:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 372:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string __tmp1(_M_ibegin(), _M_iend(), __s.get_allocator()); 373:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string __tmp2(__s._M_ibegin(), __s._M_iend(), 374:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->get_allocator()); 375:/usr/include/c++/3.2.2/bits/basic_string.tcc **** *this = __tmp2; GAS LISTING /tmp/ccJDTatA.s page 43 376:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __s = __tmp1; 377:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 378:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 379:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 380:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 381:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typename basic_string<_CharT, _Traits, _Alloc>::_Rep* 382:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 383:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_create(size_t __capacity, const _Alloc& __alloc) 384:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 385:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 386:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS 387:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // 83. String::npos vs. string::max_size() 388:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__capacity > _S_max_size) 389:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #else 390:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__capacity == npos) 391:/usr/include/c++/3.2.2/bits/basic_string.tcc **** #endif 392:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::_S_create"); 393:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 394:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: Need an array of char_type[__capacity], plus a 395:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // terminating null char_type() element, plus enough for the 396:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // _Rep data structure. Whew. Seemingly so needy, yet so elemental. 397:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_t __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 398:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 399:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The standard places no restriction on allocating more memory 400:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // than is strictly needed within this layer at the moment or as 401:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // requested by an explicit application call to reserve(). Many 402:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // malloc implementations perform quite poorly when an 403:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // application attempts to allocate memory in a stepwise fashion 404:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // growing each allocation size by only 1 char. Additionally, 405:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // it makes little sense to allocate less linear memory than the 406:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // natural blocking size of the malloc implementation. 407:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Unfortunately, we would need a somewhat low-level calculation 408:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // with tuned parameters to get this perfect for any particular 409:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // malloc implementation. Fortunately, generalizations about 410:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // common features seen among implementations seems to suffice. 411:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 412:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // __pagesize need not match the actual VM page size for good 413:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // results in practice, thus we pick a common value on the low 414:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // side. __malloc_header_size is an estimate of the amount of 415:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // overhead per memory allocation (in practice seen N * sizeof 416:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // (void*) where N is 0, 2 or 4). According to folklore, 417:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // picking this value on the high side is better than 418:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // low-balling it (especially when this algorithm is used with 419:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // malloc implementations that allocate memory blocks rounded up 420:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // to a size which is a power of 2). 421:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_t __pagesize = 4096; // must be 2^i * __subpagesize 422:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_t __subpagesize = 128; // should be >> __malloc_header_size 423:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_t __malloc_header_size = 4 * sizeof (void*); 424:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if ((__size + __malloc_header_size) > __pagesize) 425:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 426:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_t __extra = 427:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (__pagesize - ((__size + __malloc_header_size) % __pagesize)) 428:/usr/include/c++/3.2.2/bits/basic_string.tcc **** % __pagesize; 429:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __capacity += __extra / sizeof(_CharT); 430:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 431:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 432:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else if (__size > __subpagesize) GAS LISTING /tmp/ccJDTatA.s page 44 433:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 434:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_t __extra = 435:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (__subpagesize - ((__size + __malloc_header_size) % __subpagesize)) 436:/usr/include/c++/3.2.2/bits/basic_string.tcc **** % __subpagesize; 437:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __capacity += __extra / sizeof(_CharT); 438:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep); 439:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 440:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 441:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // NB: Might throw, but no worries about a leak, mate: _Rep() 442:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // does not throw. 443:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void* __place = _Raw_bytes_alloc(__alloc).allocate(__size); 444:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep *__p = new (__place) _Rep; 445:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __p->_M_capacity = __capacity; 446:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __p->_M_set_sharable(); // One reference. 447:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __p->_M_length = 0; 448:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __p; 449:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 450:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 451:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 452:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _CharT* 453:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::_Rep:: 454:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_clone(const _Alloc& __alloc, size_type __res) 455:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 456:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Requested capacity of the clone. 457:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __requested_cap = _M_length + __res; 458:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // See above (_S_create) for the meaning and value of these constants. 459:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __pagesize = 4096; 460:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __malloc_header_size = 4 * sizeof (void*); 461:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // The biggest string which fits in a memory page. 462:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __page_capacity = 463:/usr/include/c++/3.2.2/bits/basic_string.tcc **** (__pagesize - __malloc_header_size - sizeof(_Rep) - sizeof(_CharT)) 464:/usr/include/c++/3.2.2/bits/basic_string.tcc **** / sizeof(_CharT); 465:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _Rep* __r; 466:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__requested_cap > _M_capacity && __requested_cap > __page_capacity) 467:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Growing exponentially. 468:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__requested_cap > 2*_M_capacity ? 469:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __requested_cap : 2*_M_capacity, __alloc); 470:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else 471:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r = _Rep::_S_create(__requested_cap, __alloc); 472:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 473:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (_M_length) 474:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 475:/usr/include/c++/3.2.2/bits/basic_string.tcc **** try 476:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { traits_type::copy(__r->_M_refdata(), _M_refdata(), _M_length); } 477:/usr/include/c++/3.2.2/bits/basic_string.tcc **** catch(...) 478:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 479:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_destroy(__alloc); 480:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_exception_again; 481:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 482:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 483:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __r->_M_length = _M_length; 484:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __r->_M_refdata(); 485:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 486:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 487:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 488:/usr/include/c++/3.2.2/bits/basic_string.tcc **** void 489:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>::resize(size_type __n, _CharT __c) GAS LISTING /tmp/ccJDTatA.s page 45 490:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 491:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__n > max_size()) 492:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::resize"); 493:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __size = this->size(); 494:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__size < __n) 495:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->append(__n - __size, __c); 496:/usr/include/c++/3.2.2/bits/basic_string.tcc **** else if (__n < __size) 497:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->erase(__n); 498:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // else nothing (in particular, avoid calling _M_mutate() unnecessarily.) 499:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 500:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 501:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This is the general replace helper, which currently gets instantiated both 502:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // for input iterators and reverse iterators. It buffers internally and then 503:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // calls _M_replace_safe. 504:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 505:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 506:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 507:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 508:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_replace(iterator __i1, iterator __i2, _InputIter __k1, 509:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _InputIter __k2, input_iterator_tag) 510:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 511:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Save concerned source string data in a temporary. 512:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string __s(__k1, __k2); 513:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(__i1, __i2, __s._M_ibegin(), __s._M_iend()); 514:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 515:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 516:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // This is a special replace helper, which does not buffer internally 517:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // and can be used in "safe" situations involving forward iterators, 518:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // i.e., when source and destination ranges are known to not overlap. 519:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 520:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 521:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 522:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 523:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_replace_safe(iterator __i1, iterator __i2, _ForwardIter __k1, 524:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _ForwardIter __k2) 525:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 526:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dnew = static_cast(distance(__k1, __k2)); 527:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dold = __i2 - __i1; 528:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __dmax = this->max_size(); 529:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 530:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__dmax <= __dnew) 531:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_length_error("basic_string::_M_replace"); 532:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __off = __i1 - _M_ibegin(); 533:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _M_mutate(__off, __dold, __dnew); 534:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 535:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Invalidated __i1, __i2 536:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__dnew) 537:/usr/include/c++/3.2.2/bits/basic_string.tcc **** _S_copy_chars(_M_data() + __off, __k1, __k2); 538:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 539:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return *this; 540:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 541:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 542:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 543:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 544:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 545:/usr/include/c++/3.2.2/bits/basic_string.tcc **** replace(size_type __pos1, size_type __n1, const basic_string& __str, 546:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __pos2, size_type __n2) GAS LISTING /tmp/ccJDTatA.s page 46 547:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 548:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __strsize = __str.size(); 549:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__pos2 > __strsize) 550:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __throw_out_of_range("basic_string::replace"); 551:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const bool __testn2 = __n2 < __strsize - __pos2; 552:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const size_type __foldn2 = __testn2 ? __n2 : __strsize - __pos2; 553:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return this->replace(__pos1, __n1, 554:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_data() + __pos2, __foldn2); 555:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 556:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 557:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 558:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 559:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 560:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(const basic_string& __str) 561:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 562:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Iff appending itself, string needs to pre-reserve the 563:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // correct size so that _M_mutate does not clobber the 564:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // iterators formed here. 565:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __size = __str.size(); 566:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __size + this->size(); 567:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 568:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 569:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(_M_iend(), _M_iend(), __str._M_ibegin(), 570:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_iend()); 571:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 572:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 573:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 574:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 575:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 576:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(const basic_string& __str, size_type __pos, size_type __n) 577:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 578:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // Iff appending itself, string needs to pre-reserve the 579:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // correct size so that _M_mutate does not clobber the 580:/usr/include/c++/3.2.2/bits/basic_string.tcc **** // iterators formed here. 581:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = min(__str.size() - __pos, __n) + this->size(); 582:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 583:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 584:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(_M_iend(), _M_iend(), __str._M_check(__pos), 585:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str._M_fold(__pos, __n)); 586:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 587:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 588:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 589:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 590:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 591:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(const _CharT* __s, size_type __n) 592:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 593:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __n + this->size(); 594:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 595:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 596:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return _M_replace_safe(_M_iend(), _M_iend(), __s, __s + __n); 597:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 598:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 599:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 600:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>& 601:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc>:: 602:/usr/include/c++/3.2.2/bits/basic_string.tcc **** append(size_type __n, _CharT __c) 603:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { GAS LISTING /tmp/ccJDTatA.s page 47 604:/usr/include/c++/3.2.2/bits/basic_string.tcc **** size_type __len = __n + this->size(); 605:/usr/include/c++/3.2.2/bits/basic_string.tcc **** if (__len > this->capacity()) 606:/usr/include/c++/3.2.2/bits/basic_string.tcc **** this->reserve(__len); 607:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return this->replace(_M_iend(), _M_iend(), __n, __c); 608:/usr/include/c++/3.2.2/bits/basic_string.tcc **** } 609:/usr/include/c++/3.2.2/bits/basic_string.tcc **** 610:/usr/include/c++/3.2.2/bits/basic_string.tcc **** template 611:/usr/include/c++/3.2.2/bits/basic_string.tcc **** basic_string<_CharT, _Traits, _Alloc> 612:/usr/include/c++/3.2.2/bits/basic_string.tcc **** operator+(const _CharT* __lhs, 613:/usr/include/c++/3.2.2/bits/basic_string.tcc **** const basic_string<_CharT, _Traits, _Alloc>& __rhs) 614:/usr/include/c++/3.2.2/bits/basic_string.tcc **** { 1797 .loc 29 614 0 1798 0000 55 pushl %ebp 1799 .LCFI95: 1800 0001 89E5 movl %esp, %ebp 1801 .LCFI96: 1802 0003 53 pushl %ebx 1803 .LCFI97: 1804 0004 83EC14 subl $20, %esp 1805 .LCFI98: 1806 .LBB19: 615:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typedef basic_string<_CharT, _Traits, _Alloc> __string_type; 616:/usr/include/c++/3.2.2/bits/basic_string.tcc **** typedef typename __string_type::size_type __size_type; 617:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __size_type __len = _Traits::length(__lhs); 1807 .loc 29 617 0 1808 0007 83EC0C subl $12, %esp 1809 000a FF750C pushl 12(%ebp) 1810 .LEHB50: 1811 .LCFI99: 1812 000d E8FCFFFF call _ZNSt11char_traitsIcE6lengthEPKc 1812 FF 1813 0012 83C410 addl $16, %esp 1814 0015 8945F8 movl %eax, -8(%ebp) 618:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __string_type __str; 1815 .loc 29 618 0 1816 0018 83EC0C subl $12, %esp 1817 001b FF7508 pushl 8(%ebp) 1818 001e E8FCFFFF call _ZNSsC1Ev 1818 FF 1819 .LEHE50: 1820 0023 83C410 addl $16, %esp 619:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.reserve(__len + __rhs.size()); 1821 .loc 29 619 0 1822 0026 83EC08 subl $8, %esp 1823 0029 83EC04 subl $4, %esp 1824 002c FF7510 pushl 16(%ebp) 1825 .LEHB51: 1826 .LCFI100: 1827 002f E8FCFFFF call _ZNKSs4sizeEv 1827 FF 1828 0034 83C408 addl $8, %esp 1829 0037 0345F8 addl -8(%ebp), %eax 1830 003a 50 pushl %eax 1831 003b FF7508 pushl 8(%ebp) 1832 .LCFI101: 1833 003e E8FCFFFF call _ZNSs7reserveEj 1833 FF GAS LISTING /tmp/ccJDTatA.s page 48 1834 0043 83C410 addl $16, %esp 620:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.append(__lhs, __lhs + __len); 1835 .loc 29 620 0 1836 0046 83EC04 subl $4, %esp 1837 0049 8B45F8 movl -8(%ebp), %eax 1838 004c 03450C addl 12(%ebp), %eax 1839 004f 50 pushl %eax 1840 0050 FF750C pushl 12(%ebp) 1841 0053 FF7508 pushl 8(%ebp) 1842 0056 E8FCFFFF call _ZNSs6appendIPKcEERSsT_S3_ 1842 FF 1843 005b 83C410 addl $16, %esp 621:/usr/include/c++/3.2.2/bits/basic_string.tcc **** __str.append(__rhs); 1844 .loc 29 621 0 1845 005e 83EC08 subl $8, %esp 1846 0061 FF7510 pushl 16(%ebp) 1847 0064 FF7508 pushl 8(%ebp) 1848 0067 E8FCFFFF call _ZNSs6appendERKSs 1848 FF 1849 .LEHE51: 1850 006c 83C410 addl $16, %esp 622:/usr/include/c++/3.2.2/bits/basic_string.tcc **** return __str; 1851 .loc 29 622 0 1852 006f EB22 jmp .L203 1853 .L208: 1854 0071 8945F4 movl %eax, -12(%ebp) 1855 0074 8B5DF4 movl -12(%ebp), %ebx 1856 0077 83EC0C subl $12, %esp 1857 007a FF7508 pushl 8(%ebp) 1858 007d E8FCFFFF call _ZNSsD1Ev 1858 FF 1859 0082 83C410 addl $16, %esp 1860 0085 895DF4 movl %ebx, -12(%ebp) 1861 0088 83EC0C subl $12, %esp 1862 008b FF75F4 pushl -12(%ebp) 1863 .LEHB52: 1864 008e E8FCFFFF call _Unwind_Resume 1864 FF 1865 .LEHE52: 1866 .LBE19: 1867 .L203: 1868 0093 8B4508 movl 8(%ebp), %eax 1869 0096 8B5DFC movl -4(%ebp), %ebx 1870 0099 C9 leave 1871 009a C20400 ret $4 1872 .LFE1523: 1873 .Lfe13: 1875 .section .gcc_except_table 1876 .LLSDA1523: 1877 0198 FF .byte 0xff 1878 0199 FF .byte 0xff 1879 019a 01 .byte 0x1 1880 019b 0D .uleb128 .LLSDACSE1523-.LLSDACSB1523 1881 .LLSDACSB1523: 1882 019c 0D .uleb128 .LEHB50-.LFB1523 1883 019d 16 .uleb128 .LEHE50-.LEHB50 1884 019e 00 .uleb128 0x0 GAS LISTING /tmp/ccJDTatA.s page 49 1885 019f 00 .uleb128 0x0 1886 01a0 2F .uleb128 .LEHB51-.LFB1523 1887 01a1 3D .uleb128 .LEHE51-.LEHB51 1888 01a2 71 .uleb128 .L208-.LFB1523 1889 01a3 00 .uleb128 0x0 1890 01a4 8E01 .uleb128 .LEHB52-.LFB1523 1891 01a6 05 .uleb128 .LEHE52-.LEHB52 1892 01a7 00 .uleb128 0x0 1893 01a8 00 .uleb128 0x0 1894 .LLSDACSE1523: 1895 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ 1896 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_,"ax",@progbits 1897 .align 2 1898 .weak _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ 1900 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_: 1901 .LFB1525: 1:/usr/include/c++/3.2.2/bits/basic_string.h **** // Components for manipulating sequences of characters -*- C++ -*- 2:/usr/include/c++/3.2.2/bits/basic_string.h **** 3:/usr/include/c++/3.2.2/bits/basic_string.h **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/bits/basic_string.h **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/bits/basic_string.h **** // 6:/usr/include/c++/3.2.2/bits/basic_string.h **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/bits/basic_string.h **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/bits/basic_string.h **** // terms of the GNU General Public License as published by the 9:/usr/include/c++/3.2.2/bits/basic_string.h **** // Free Software Foundation; either version 2, or (at your option) 10:/usr/include/c++/3.2.2/bits/basic_string.h **** // any later version. 11:/usr/include/c++/3.2.2/bits/basic_string.h **** 12:/usr/include/c++/3.2.2/bits/basic_string.h **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/bits/basic_string.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/bits/basic_string.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/bits/basic_string.h **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/bits/basic_string.h **** 17:/usr/include/c++/3.2.2/bits/basic_string.h **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/bits/basic_string.h **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/bits/basic_string.h **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/bits/basic_string.h **** // USA. 21:/usr/include/c++/3.2.2/bits/basic_string.h **** 22:/usr/include/c++/3.2.2/bits/basic_string.h **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/bits/basic_string.h **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/bits/basic_string.h **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/bits/basic_string.h **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/bits/basic_string.h **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/bits/basic_string.h **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/bits/basic_string.h **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/bits/basic_string.h **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/bits/basic_string.h **** 31:/usr/include/c++/3.2.2/bits/basic_string.h **** // 32:/usr/include/c++/3.2.2/bits/basic_string.h **** // ISO C++ 14882: 21 Strings library 33:/usr/include/c++/3.2.2/bits/basic_string.h **** // 34:/usr/include/c++/3.2.2/bits/basic_string.h **** 35:/usr/include/c++/3.2.2/bits/basic_string.h **** /** @file basic_string.h 36:/usr/include/c++/3.2.2/bits/basic_string.h **** * This is an internal header file, included by other library headers. 37:/usr/include/c++/3.2.2/bits/basic_string.h **** * You should not attempt to use it directly. 38:/usr/include/c++/3.2.2/bits/basic_string.h **** */ 39:/usr/include/c++/3.2.2/bits/basic_string.h **** 40:/usr/include/c++/3.2.2/bits/basic_string.h **** #ifndef _CPP_BITS_STRING_H 41:/usr/include/c++/3.2.2/bits/basic_string.h **** #define _CPP_BITS_STRING_H 1 GAS LISTING /tmp/ccJDTatA.s page 50 42:/usr/include/c++/3.2.2/bits/basic_string.h **** 43:/usr/include/c++/3.2.2/bits/basic_string.h **** #pragma GCC system_header 44:/usr/include/c++/3.2.2/bits/basic_string.h **** 45:/usr/include/c++/3.2.2/bits/basic_string.h **** #include 46:/usr/include/c++/3.2.2/bits/basic_string.h **** 47:/usr/include/c++/3.2.2/bits/basic_string.h **** namespace std 48:/usr/include/c++/3.2.2/bits/basic_string.h **** { 49:/usr/include/c++/3.2.2/bits/basic_string.h **** // Documentation? What's that? 50:/usr/include/c++/3.2.2/bits/basic_string.h **** // Nathan Myers . 51:/usr/include/c++/3.2.2/bits/basic_string.h **** // 52:/usr/include/c++/3.2.2/bits/basic_string.h **** // A string looks like this: 53:/usr/include/c++/3.2.2/bits/basic_string.h **** // 54:/usr/include/c++/3.2.2/bits/basic_string.h **** // [_Rep] 55:/usr/include/c++/3.2.2/bits/basic_string.h **** // _M_length 56:/usr/include/c++/3.2.2/bits/basic_string.h **** // [basic_string] _M_capacity 57:/usr/include/c++/3.2.2/bits/basic_string.h **** // _M_dataplus _M_state 58:/usr/include/c++/3.2.2/bits/basic_string.h **** // _M_p ----------------> unnamed array of char_type 59:/usr/include/c++/3.2.2/bits/basic_string.h **** 60:/usr/include/c++/3.2.2/bits/basic_string.h **** // Where the _M_p points to the first character in the string, and 61:/usr/include/c++/3.2.2/bits/basic_string.h **** // you cast it to a pointer-to-_Rep and subtract 1 to get a 62:/usr/include/c++/3.2.2/bits/basic_string.h **** // pointer to the header. 63:/usr/include/c++/3.2.2/bits/basic_string.h **** 64:/usr/include/c++/3.2.2/bits/basic_string.h **** // This approach has the enormous advantage that a string object 65:/usr/include/c++/3.2.2/bits/basic_string.h **** // requires only one allocation. All the ugliness is confined 66:/usr/include/c++/3.2.2/bits/basic_string.h **** // within a single pair of inline functions, which each compile to 67:/usr/include/c++/3.2.2/bits/basic_string.h **** // a single "add" instruction: _Rep::_M_data(), and 68:/usr/include/c++/3.2.2/bits/basic_string.h **** // string::_M_rep(); and the allocation function which gets a 69:/usr/include/c++/3.2.2/bits/basic_string.h **** // block of raw bytes and with room enough and constructs a _Rep 70:/usr/include/c++/3.2.2/bits/basic_string.h **** // object at the front. 71:/usr/include/c++/3.2.2/bits/basic_string.h **** 72:/usr/include/c++/3.2.2/bits/basic_string.h **** // The reason you want _M_data pointing to the character array and 73:/usr/include/c++/3.2.2/bits/basic_string.h **** // not the _Rep is so that the debugger can see the string 74:/usr/include/c++/3.2.2/bits/basic_string.h **** // contents. (Probably we should add a non-inline member to get 75:/usr/include/c++/3.2.2/bits/basic_string.h **** // the _Rep for the debugger to use, so users can check the actual 76:/usr/include/c++/3.2.2/bits/basic_string.h **** // string length.) 77:/usr/include/c++/3.2.2/bits/basic_string.h **** 78:/usr/include/c++/3.2.2/bits/basic_string.h **** // Note that the _Rep object is a POD so that you can have a 79:/usr/include/c++/3.2.2/bits/basic_string.h **** // static "empty string" _Rep object already "constructed" before 80:/usr/include/c++/3.2.2/bits/basic_string.h **** // static constructors have run. The reference-count encoding is 81:/usr/include/c++/3.2.2/bits/basic_string.h **** // chosen so that a 0 indicates one reference, so you never try to 82:/usr/include/c++/3.2.2/bits/basic_string.h **** // destroy the empty-string _Rep object. 83:/usr/include/c++/3.2.2/bits/basic_string.h **** 84:/usr/include/c++/3.2.2/bits/basic_string.h **** // All but the last paragraph is considered pretty conventional 85:/usr/include/c++/3.2.2/bits/basic_string.h **** // for a C++ string implementation. 86:/usr/include/c++/3.2.2/bits/basic_string.h **** 87:/usr/include/c++/3.2.2/bits/basic_string.h **** // 21.3 Template class basic_string 88:/usr/include/c++/3.2.2/bits/basic_string.h **** template 89:/usr/include/c++/3.2.2/bits/basic_string.h **** class basic_string 90:/usr/include/c++/3.2.2/bits/basic_string.h **** { 91:/usr/include/c++/3.2.2/bits/basic_string.h **** // Types: 92:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 93:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef _Traits traits_type; 94:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Traits::char_type value_type; 95:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef _Alloc allocator_type; 96:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::size_type size_type; 97:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::difference_type difference_type; 98:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::reference reference; GAS LISTING /tmp/ccJDTatA.s page 51 99:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::const_reference const_reference; 100:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::pointer pointer; 101:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::const_pointer const_pointer; 102:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator iterator; 103:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef __gnu_cxx::__normal_iterator 104:/usr/include/c++/3.2.2/bits/basic_string.h **** const_iterator; 105:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef reverse_iterator const_reverse_iterator; 106:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef reverse_iterator reverse_iterator; 107:/usr/include/c++/3.2.2/bits/basic_string.h **** 108:/usr/include/c++/3.2.2/bits/basic_string.h **** private: 109:/usr/include/c++/3.2.2/bits/basic_string.h **** // _Rep: string representation 110:/usr/include/c++/3.2.2/bits/basic_string.h **** // Invariants: 111:/usr/include/c++/3.2.2/bits/basic_string.h **** // 1. String really contains _M_length + 1 characters; last is set 112:/usr/include/c++/3.2.2/bits/basic_string.h **** // to 0 only on call to c_str(). We avoid instantiating 113:/usr/include/c++/3.2.2/bits/basic_string.h **** // _CharT() where the interface does not require it. 114:/usr/include/c++/3.2.2/bits/basic_string.h **** // 2. _M_capacity >= _M_length 115:/usr/include/c++/3.2.2/bits/basic_string.h **** // Allocated memory is always _M_capacity + (1 * sizeof(_CharT)). 116:/usr/include/c++/3.2.2/bits/basic_string.h **** // 3. _M_references has three states: 117:/usr/include/c++/3.2.2/bits/basic_string.h **** // -1: leaked, one reference, no ref-copies allowed, non-const. 118:/usr/include/c++/3.2.2/bits/basic_string.h **** // 0: one reference, non-const. 119:/usr/include/c++/3.2.2/bits/basic_string.h **** // n>0: n + 1 references, operations require a lock, const. 120:/usr/include/c++/3.2.2/bits/basic_string.h **** // 4. All fields==0 is an empty string, given the extra storage 121:/usr/include/c++/3.2.2/bits/basic_string.h **** // beyond-the-end for a null terminator; thus, the shared 122:/usr/include/c++/3.2.2/bits/basic_string.h **** // empty string representation needs no constructor. 123:/usr/include/c++/3.2.2/bits/basic_string.h **** struct _Rep 124:/usr/include/c++/3.2.2/bits/basic_string.h **** { 125:/usr/include/c++/3.2.2/bits/basic_string.h **** // Types: 126:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Alloc::template rebind::other _Raw_bytes_alloc; 127:/usr/include/c++/3.2.2/bits/basic_string.h **** 128:/usr/include/c++/3.2.2/bits/basic_string.h **** // (Public) Data members: 129:/usr/include/c++/3.2.2/bits/basic_string.h **** 130:/usr/include/c++/3.2.2/bits/basic_string.h **** // The maximum number of individual char_type elements of an 131:/usr/include/c++/3.2.2/bits/basic_string.h **** // individual string is determined by _S_max_size. This is the 132:/usr/include/c++/3.2.2/bits/basic_string.h **** // value that will be returned by max_size(). (Whereas npos 133:/usr/include/c++/3.2.2/bits/basic_string.h **** // is the maximum number of bytes the allocator can allocate.) 134:/usr/include/c++/3.2.2/bits/basic_string.h **** // If one was to divvy up the theoretical largest size string, 135:/usr/include/c++/3.2.2/bits/basic_string.h **** // with a terminating character and m _CharT elements, it'd 136:/usr/include/c++/3.2.2/bits/basic_string.h **** // look like this: 137:/usr/include/c++/3.2.2/bits/basic_string.h **** // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT) 138:/usr/include/c++/3.2.2/bits/basic_string.h **** // Solving for m: 139:/usr/include/c++/3.2.2/bits/basic_string.h **** // m = ((npos - sizeof(_Rep))/sizeof(CharT)) - 1 140:/usr/include/c++/3.2.2/bits/basic_string.h **** // In addition, this implementation quarters this ammount. 141:/usr/include/c++/3.2.2/bits/basic_string.h **** static const size_type _S_max_size; 142:/usr/include/c++/3.2.2/bits/basic_string.h **** static const _CharT _S_terminal; 143:/usr/include/c++/3.2.2/bits/basic_string.h **** 144:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type _M_length; 145:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type _M_capacity; 146:/usr/include/c++/3.2.2/bits/basic_string.h **** _Atomic_word _M_references; 147:/usr/include/c++/3.2.2/bits/basic_string.h **** 148:/usr/include/c++/3.2.2/bits/basic_string.h **** bool 149:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_is_leaked() const 150:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_references < 0; } 151:/usr/include/c++/3.2.2/bits/basic_string.h **** 152:/usr/include/c++/3.2.2/bits/basic_string.h **** bool 153:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_is_shared() const 154:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_references > 0; } 155:/usr/include/c++/3.2.2/bits/basic_string.h **** GAS LISTING /tmp/ccJDTatA.s page 52 156:/usr/include/c++/3.2.2/bits/basic_string.h **** void 157:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_set_leaked() 158:/usr/include/c++/3.2.2/bits/basic_string.h **** { _M_references = -1; } 159:/usr/include/c++/3.2.2/bits/basic_string.h **** 160:/usr/include/c++/3.2.2/bits/basic_string.h **** void 161:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_set_sharable() 162:/usr/include/c++/3.2.2/bits/basic_string.h **** { _M_references = 0; } 163:/usr/include/c++/3.2.2/bits/basic_string.h **** 164:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 165:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_refdata() throw() 166:/usr/include/c++/3.2.2/bits/basic_string.h **** { return reinterpret_cast<_CharT*>(this + 1); } 167:/usr/include/c++/3.2.2/bits/basic_string.h **** 168:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT& 169:/usr/include/c++/3.2.2/bits/basic_string.h **** operator[](size_t __s) throw() 170:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_refdata() [__s]; } 171:/usr/include/c++/3.2.2/bits/basic_string.h **** 172:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 173:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2) 174:/usr/include/c++/3.2.2/bits/basic_string.h **** { 175:/usr/include/c++/3.2.2/bits/basic_string.h **** return (!_M_is_leaked() && __alloc1 == __alloc2) 176:/usr/include/c++/3.2.2/bits/basic_string.h **** ? _M_refcopy() : _M_clone(__alloc1); 177:/usr/include/c++/3.2.2/bits/basic_string.h **** } 178:/usr/include/c++/3.2.2/bits/basic_string.h **** 179:/usr/include/c++/3.2.2/bits/basic_string.h **** // Create & Destroy 180:/usr/include/c++/3.2.2/bits/basic_string.h **** static _Rep* 181:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_create(size_t, const _Alloc&); 182:/usr/include/c++/3.2.2/bits/basic_string.h **** 183:/usr/include/c++/3.2.2/bits/basic_string.h **** void 184:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_dispose(const _Alloc& __a) 185:/usr/include/c++/3.2.2/bits/basic_string.h **** { 186:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__exchange_and_add(&_M_references, -1) <= 0) 187:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_destroy(__a); 188:/usr/include/c++/3.2.2/bits/basic_string.h **** } // XXX MT 189:/usr/include/c++/3.2.2/bits/basic_string.h **** 190:/usr/include/c++/3.2.2/bits/basic_string.h **** void 191:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_destroy(const _Alloc&) throw(); 192:/usr/include/c++/3.2.2/bits/basic_string.h **** 193:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 194:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_refcopy() throw() 195:/usr/include/c++/3.2.2/bits/basic_string.h **** { 196:/usr/include/c++/3.2.2/bits/basic_string.h **** __atomic_add(&_M_references, 1); 197:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_refdata(); 198:/usr/include/c++/3.2.2/bits/basic_string.h **** } // XXX MT 199:/usr/include/c++/3.2.2/bits/basic_string.h **** 200:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 201:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_clone(const _Alloc&, size_type __res = 0); 202:/usr/include/c++/3.2.2/bits/basic_string.h **** }; 203:/usr/include/c++/3.2.2/bits/basic_string.h **** 204:/usr/include/c++/3.2.2/bits/basic_string.h **** // Use empty-base optimization: http://www.cantrip.org/emptyopt.html 205:/usr/include/c++/3.2.2/bits/basic_string.h **** struct _Alloc_hider : _Alloc 206:/usr/include/c++/3.2.2/bits/basic_string.h **** { 207:/usr/include/c++/3.2.2/bits/basic_string.h **** _Alloc_hider(_CharT* __dat, const _Alloc& __a) 208:/usr/include/c++/3.2.2/bits/basic_string.h **** : _Alloc(__a), _M_p(__dat) { } 209:/usr/include/c++/3.2.2/bits/basic_string.h **** 210:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* _M_p; // The actual data. 211:/usr/include/c++/3.2.2/bits/basic_string.h **** }; 212:/usr/include/c++/3.2.2/bits/basic_string.h **** GAS LISTING /tmp/ccJDTatA.s page 53 213:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 214:/usr/include/c++/3.2.2/bits/basic_string.h **** // Data Members (public): 215:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: This is an unsigned type, and thus represents the maximum 216:/usr/include/c++/3.2.2/bits/basic_string.h **** // size that the allocator can hold. 217:/usr/include/c++/3.2.2/bits/basic_string.h **** static const size_type npos = static_cast(-1); 218:/usr/include/c++/3.2.2/bits/basic_string.h **** 219:/usr/include/c++/3.2.2/bits/basic_string.h **** private: 220:/usr/include/c++/3.2.2/bits/basic_string.h **** // Data Members (private): 221:/usr/include/c++/3.2.2/bits/basic_string.h **** mutable _Alloc_hider _M_dataplus; 222:/usr/include/c++/3.2.2/bits/basic_string.h **** 223:/usr/include/c++/3.2.2/bits/basic_string.h **** // The following storage is init'd to 0 by the linker, resulting 224:/usr/include/c++/3.2.2/bits/basic_string.h **** // (carefully) in an empty string with one reference. 225:/usr/include/c++/3.2.2/bits/basic_string.h **** static size_type _S_empty_rep_storage[(sizeof(_Rep) + sizeof(_CharT) + sizeof(size_type) - 1) 226:/usr/include/c++/3.2.2/bits/basic_string.h **** 227:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 228:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data() const 229:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_dataplus._M_p; } 230:/usr/include/c++/3.2.2/bits/basic_string.h **** 231:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* 232:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data(_CharT* __p) 233:/usr/include/c++/3.2.2/bits/basic_string.h **** { return (_M_dataplus._M_p = __p); } 234:/usr/include/c++/3.2.2/bits/basic_string.h **** 235:/usr/include/c++/3.2.2/bits/basic_string.h **** _Rep* 236:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep() const 237:/usr/include/c++/3.2.2/bits/basic_string.h **** { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); } 238:/usr/include/c++/3.2.2/bits/basic_string.h **** 239:/usr/include/c++/3.2.2/bits/basic_string.h **** // For the internal use we have functions similar to `begin'/`end' 240:/usr/include/c++/3.2.2/bits/basic_string.h **** // but they do not call _M_leak. 241:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 242:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_ibegin() const { return iterator(_M_data()); } 243:/usr/include/c++/3.2.2/bits/basic_string.h **** 244:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 245:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_iend() const { return iterator(_M_data() + this->size()); } 246:/usr/include/c++/3.2.2/bits/basic_string.h **** 247:/usr/include/c++/3.2.2/bits/basic_string.h **** void 248:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak() // for use in begin() & non-const op[] 249:/usr/include/c++/3.2.2/bits/basic_string.h **** { 250:/usr/include/c++/3.2.2/bits/basic_string.h **** if (!_M_rep()->_M_is_leaked()) 251:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak_hard(); 252:/usr/include/c++/3.2.2/bits/basic_string.h **** } 253:/usr/include/c++/3.2.2/bits/basic_string.h **** 254:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 255:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_check(size_type __pos) const 256:/usr/include/c++/3.2.2/bits/basic_string.h **** { 257:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > this->size()) 258:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::_M_check"); 259:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_ibegin() + __pos; 260:/usr/include/c++/3.2.2/bits/basic_string.h **** } 261:/usr/include/c++/3.2.2/bits/basic_string.h **** 262:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: _M_fold doesn't check for a bad __pos1 value. 263:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 264:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_fold(size_type __pos, size_type __off) const 265:/usr/include/c++/3.2.2/bits/basic_string.h **** { 266:/usr/include/c++/3.2.2/bits/basic_string.h **** bool __testoff = __off < this->size() - __pos; 267:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __newoff = __testoff ? __off : this->size() - __pos; 268:/usr/include/c++/3.2.2/bits/basic_string.h **** return (_M_ibegin() + __pos + __newoff); 269:/usr/include/c++/3.2.2/bits/basic_string.h **** } GAS LISTING /tmp/ccJDTatA.s page 54 270:/usr/include/c++/3.2.2/bits/basic_string.h **** 271:/usr/include/c++/3.2.2/bits/basic_string.h **** // _S_copy_chars is a separate template to permit specialization 272:/usr/include/c++/3.2.2/bits/basic_string.h **** // to optimize for the common case of pointers as iterators. 273:/usr/include/c++/3.2.2/bits/basic_string.h **** template 274:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 275:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2) 276:/usr/include/c++/3.2.2/bits/basic_string.h **** { 277:/usr/include/c++/3.2.2/bits/basic_string.h **** for (; __k1 != __k2; ++__k1, ++__p) 278:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::assign(*__p, *__k1); // These types are off. 279:/usr/include/c++/3.2.2/bits/basic_string.h **** } 280:/usr/include/c++/3.2.2/bits/basic_string.h **** 281:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 282:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2) 283:/usr/include/c++/3.2.2/bits/basic_string.h **** { _S_copy_chars(__p, __k1.base(), __k2.base()); } 284:/usr/include/c++/3.2.2/bits/basic_string.h **** 285:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 286:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2) 287:/usr/include/c++/3.2.2/bits/basic_string.h **** { _S_copy_chars(__p, __k1.base(), __k2.base()); } 288:/usr/include/c++/3.2.2/bits/basic_string.h **** 289:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 290:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2) 291:/usr/include/c++/3.2.2/bits/basic_string.h **** { traits_type::copy(__p, __k1, __k2 - __k1); } 292:/usr/include/c++/3.2.2/bits/basic_string.h **** 293:/usr/include/c++/3.2.2/bits/basic_string.h **** static void 294:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2) 295:/usr/include/c++/3.2.2/bits/basic_string.h **** { traits_type::copy(__p, __k1, __k2 - __k1); } 296:/usr/include/c++/3.2.2/bits/basic_string.h **** 297:/usr/include/c++/3.2.2/bits/basic_string.h **** void 298:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_mutate(size_type __pos, size_type __len1, size_type __len2); 299:/usr/include/c++/3.2.2/bits/basic_string.h **** 300:/usr/include/c++/3.2.2/bits/basic_string.h **** void 301:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak_hard(); 302:/usr/include/c++/3.2.2/bits/basic_string.h **** 303:/usr/include/c++/3.2.2/bits/basic_string.h **** static _Rep& 304:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_empty_rep() 305:/usr/include/c++/3.2.2/bits/basic_string.h **** { return *reinterpret_cast<_Rep*>(&_S_empty_rep_storage); } 306:/usr/include/c++/3.2.2/bits/basic_string.h **** 307:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 308:/usr/include/c++/3.2.2/bits/basic_string.h **** // Construct/copy/destroy: 309:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: We overload ctors in some cases instead of using default 310:/usr/include/c++/3.2.2/bits/basic_string.h **** // arguments, per 17.4.4.4 para. 2 item 2. 311:/usr/include/c++/3.2.2/bits/basic_string.h **** 312:/usr/include/c++/3.2.2/bits/basic_string.h **** inline 313:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(); 314:/usr/include/c++/3.2.2/bits/basic_string.h **** 315:/usr/include/c++/3.2.2/bits/basic_string.h **** explicit 316:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const _Alloc& __a); 317:/usr/include/c++/3.2.2/bits/basic_string.h **** 318:/usr/include/c++/3.2.2/bits/basic_string.h **** // NB: per LWG issue 42, semantics different from IS: 319:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const basic_string& __str); 320:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const basic_string& __str, size_type __pos, 321:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n = npos); 322:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const basic_string& __str, size_type __pos, 323:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n, const _Alloc& __a); 324:/usr/include/c++/3.2.2/bits/basic_string.h **** 325:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const _CharT* __s, size_type __n, 326:/usr/include/c++/3.2.2/bits/basic_string.h **** const _Alloc& __a = _Alloc()); GAS LISTING /tmp/ccJDTatA.s page 55 327:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()); 328:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()); 329:/usr/include/c++/3.2.2/bits/basic_string.h **** 330:/usr/include/c++/3.2.2/bits/basic_string.h **** template 331:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string(_InputIterator __beg, _InputIterator __end, 332:/usr/include/c++/3.2.2/bits/basic_string.h **** const _Alloc& __a = _Alloc()); 333:/usr/include/c++/3.2.2/bits/basic_string.h **** 334:/usr/include/c++/3.2.2/bits/basic_string.h **** ~basic_string() 335:/usr/include/c++/3.2.2/bits/basic_string.h **** { _M_rep()->_M_dispose(this->get_allocator()); } 336:/usr/include/c++/3.2.2/bits/basic_string.h **** 337:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 338:/usr/include/c++/3.2.2/bits/basic_string.h **** operator=(const basic_string& __str) { return this->assign(__str); } 339:/usr/include/c++/3.2.2/bits/basic_string.h **** 340:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 341:/usr/include/c++/3.2.2/bits/basic_string.h **** operator=(const _CharT* __s) { return this->assign(__s); } 342:/usr/include/c++/3.2.2/bits/basic_string.h **** 343:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 344:/usr/include/c++/3.2.2/bits/basic_string.h **** operator=(_CharT __c) { return this->assign(1, __c); } 345:/usr/include/c++/3.2.2/bits/basic_string.h **** 346:/usr/include/c++/3.2.2/bits/basic_string.h **** // Iterators: 347:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 348:/usr/include/c++/3.2.2/bits/basic_string.h **** begin() 349:/usr/include/c++/3.2.2/bits/basic_string.h **** { 350:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 351:/usr/include/c++/3.2.2/bits/basic_string.h **** return iterator(_M_data()); 352:/usr/include/c++/3.2.2/bits/basic_string.h **** } 353:/usr/include/c++/3.2.2/bits/basic_string.h **** 354:/usr/include/c++/3.2.2/bits/basic_string.h **** const_iterator 355:/usr/include/c++/3.2.2/bits/basic_string.h **** begin() const 356:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_iterator(_M_data()); } 357:/usr/include/c++/3.2.2/bits/basic_string.h **** 358:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 359:/usr/include/c++/3.2.2/bits/basic_string.h **** end() 360:/usr/include/c++/3.2.2/bits/basic_string.h **** { 361:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 362:/usr/include/c++/3.2.2/bits/basic_string.h **** return iterator(_M_data() + this->size()); 363:/usr/include/c++/3.2.2/bits/basic_string.h **** } 364:/usr/include/c++/3.2.2/bits/basic_string.h **** 365:/usr/include/c++/3.2.2/bits/basic_string.h **** const_iterator 366:/usr/include/c++/3.2.2/bits/basic_string.h **** end() const 367:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_iterator(_M_data() + this->size()); } 368:/usr/include/c++/3.2.2/bits/basic_string.h **** 369:/usr/include/c++/3.2.2/bits/basic_string.h **** reverse_iterator 370:/usr/include/c++/3.2.2/bits/basic_string.h **** rbegin() 371:/usr/include/c++/3.2.2/bits/basic_string.h **** { return reverse_iterator(this->end()); } 372:/usr/include/c++/3.2.2/bits/basic_string.h **** 373:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reverse_iterator 374:/usr/include/c++/3.2.2/bits/basic_string.h **** rbegin() const 375:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_reverse_iterator(this->end()); } 376:/usr/include/c++/3.2.2/bits/basic_string.h **** 377:/usr/include/c++/3.2.2/bits/basic_string.h **** reverse_iterator 378:/usr/include/c++/3.2.2/bits/basic_string.h **** rend() 379:/usr/include/c++/3.2.2/bits/basic_string.h **** { return reverse_iterator(this->begin()); } 380:/usr/include/c++/3.2.2/bits/basic_string.h **** 381:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reverse_iterator 382:/usr/include/c++/3.2.2/bits/basic_string.h **** rend() const 383:/usr/include/c++/3.2.2/bits/basic_string.h **** { return const_reverse_iterator(this->begin()); } GAS LISTING /tmp/ccJDTatA.s page 56 384:/usr/include/c++/3.2.2/bits/basic_string.h **** 385:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 386:/usr/include/c++/3.2.2/bits/basic_string.h **** // Capacity: 387:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 388:/usr/include/c++/3.2.2/bits/basic_string.h **** size() const { return _M_rep()->_M_length; } 389:/usr/include/c++/3.2.2/bits/basic_string.h **** 390:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 391:/usr/include/c++/3.2.2/bits/basic_string.h **** length() const { return _M_rep()->_M_length; } 392:/usr/include/c++/3.2.2/bits/basic_string.h **** 393:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 394:/usr/include/c++/3.2.2/bits/basic_string.h **** max_size() const { return _Rep::_S_max_size; } 395:/usr/include/c++/3.2.2/bits/basic_string.h **** 396:/usr/include/c++/3.2.2/bits/basic_string.h **** void 397:/usr/include/c++/3.2.2/bits/basic_string.h **** resize(size_type __n, _CharT __c); 398:/usr/include/c++/3.2.2/bits/basic_string.h **** 399:/usr/include/c++/3.2.2/bits/basic_string.h **** void 400:/usr/include/c++/3.2.2/bits/basic_string.h **** resize(size_type __n) { this->resize(__n, _CharT()); } 401:/usr/include/c++/3.2.2/bits/basic_string.h **** 402:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 403:/usr/include/c++/3.2.2/bits/basic_string.h **** capacity() const { return _M_rep()->_M_capacity; } 404:/usr/include/c++/3.2.2/bits/basic_string.h **** 405:/usr/include/c++/3.2.2/bits/basic_string.h **** void 406:/usr/include/c++/3.2.2/bits/basic_string.h **** reserve(size_type __res_arg = 0); 407:/usr/include/c++/3.2.2/bits/basic_string.h **** 408:/usr/include/c++/3.2.2/bits/basic_string.h **** void 409:/usr/include/c++/3.2.2/bits/basic_string.h **** clear() { _M_mutate(0, this->size(), 0); } 410:/usr/include/c++/3.2.2/bits/basic_string.h **** 411:/usr/include/c++/3.2.2/bits/basic_string.h **** bool 412:/usr/include/c++/3.2.2/bits/basic_string.h **** empty() const { return this->size() == 0; } 413:/usr/include/c++/3.2.2/bits/basic_string.h **** 414:/usr/include/c++/3.2.2/bits/basic_string.h **** // Element access: 415:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reference 416:/usr/include/c++/3.2.2/bits/basic_string.h **** operator[] (size_type __pos) const 417:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_data()[__pos]; } 418:/usr/include/c++/3.2.2/bits/basic_string.h **** 419:/usr/include/c++/3.2.2/bits/basic_string.h **** reference 420:/usr/include/c++/3.2.2/bits/basic_string.h **** operator[](size_type __pos) 421:/usr/include/c++/3.2.2/bits/basic_string.h **** { 422:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 423:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data()[__pos]; 424:/usr/include/c++/3.2.2/bits/basic_string.h **** } 425:/usr/include/c++/3.2.2/bits/basic_string.h **** 426:/usr/include/c++/3.2.2/bits/basic_string.h **** const_reference 427:/usr/include/c++/3.2.2/bits/basic_string.h **** at(size_type __n) const 428:/usr/include/c++/3.2.2/bits/basic_string.h **** { 429:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__n >= this->size()) 430:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::at"); 431:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data()[__n]; 432:/usr/include/c++/3.2.2/bits/basic_string.h **** } 433:/usr/include/c++/3.2.2/bits/basic_string.h **** 434:/usr/include/c++/3.2.2/bits/basic_string.h **** reference 435:/usr/include/c++/3.2.2/bits/basic_string.h **** at(size_type __n) 436:/usr/include/c++/3.2.2/bits/basic_string.h **** { 437:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__n >= size()) 438:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::at"); 439:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_leak(); 440:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data()[__n]; GAS LISTING /tmp/ccJDTatA.s page 57 441:/usr/include/c++/3.2.2/bits/basic_string.h **** } 442:/usr/include/c++/3.2.2/bits/basic_string.h **** 443:/usr/include/c++/3.2.2/bits/basic_string.h **** // Modifiers: 444:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 445:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+=(const basic_string& __str) { return this->append(__str); } 446:/usr/include/c++/3.2.2/bits/basic_string.h **** 447:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 448:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+=(const _CharT* __s) { return this->append(__s); } 449:/usr/include/c++/3.2.2/bits/basic_string.h **** 450:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 451:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+=(_CharT __c) { return this->append(size_type(1), __c); } 452:/usr/include/c++/3.2.2/bits/basic_string.h **** 453:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 454:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const basic_string& __str); 455:/usr/include/c++/3.2.2/bits/basic_string.h **** 456:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 457:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const basic_string& __str, size_type __pos, size_type __n); 458:/usr/include/c++/3.2.2/bits/basic_string.h **** 459:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 460:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const _CharT* __s, size_type __n); 461:/usr/include/c++/3.2.2/bits/basic_string.h **** 462:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 463:/usr/include/c++/3.2.2/bits/basic_string.h **** append(const _CharT* __s) 464:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->append(__s, traits_type::length(__s)); } 465:/usr/include/c++/3.2.2/bits/basic_string.h **** 466:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 467:/usr/include/c++/3.2.2/bits/basic_string.h **** append(size_type __n, _CharT __c); 468:/usr/include/c++/3.2.2/bits/basic_string.h **** 469:/usr/include/c++/3.2.2/bits/basic_string.h **** template 470:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 471:/usr/include/c++/3.2.2/bits/basic_string.h **** append(_InputIterator __first, _InputIterator __last) 472:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_iend(), _M_iend(), __first, __last); } 473:/usr/include/c++/3.2.2/bits/basic_string.h **** 474:/usr/include/c++/3.2.2/bits/basic_string.h **** void 475:/usr/include/c++/3.2.2/bits/basic_string.h **** push_back(_CharT __c) 476:/usr/include/c++/3.2.2/bits/basic_string.h **** { this->replace(_M_iend(), _M_iend(), 1, __c); } 477:/usr/include/c++/3.2.2/bits/basic_string.h **** 478:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 479:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const basic_string& __str); 480:/usr/include/c++/3.2.2/bits/basic_string.h **** 481:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 482:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const basic_string& __str, size_type __pos, size_type __n) 483:/usr/include/c++/3.2.2/bits/basic_string.h **** { 484:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __strsize = __str.size(); 485:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > __strsize) 486:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::assign"); 487:/usr/include/c++/3.2.2/bits/basic_string.h **** const bool __testn = __n < __strsize - __pos; 488:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __newsize = __testn ? __n : __strsize - __pos; 489:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->assign(__str._M_data() + __pos, __newsize); 490:/usr/include/c++/3.2.2/bits/basic_string.h **** } 491:/usr/include/c++/3.2.2/bits/basic_string.h **** 492:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 493:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const _CharT* __s, size_type __n) 494:/usr/include/c++/3.2.2/bits/basic_string.h **** { 495:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__n > this->max_size()) 496:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_length_error("basic_string::assign"); 497:/usr/include/c++/3.2.2/bits/basic_string.h **** if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) GAS LISTING /tmp/ccJDTatA.s page 58 498:/usr/include/c++/3.2.2/bits/basic_string.h **** || less()(_M_data() + this->size(), __s)) 499:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_replace_safe(_M_ibegin(), _M_iend(), __s, __s + __n); 500:/usr/include/c++/3.2.2/bits/basic_string.h **** else 501:/usr/include/c++/3.2.2/bits/basic_string.h **** { 502:/usr/include/c++/3.2.2/bits/basic_string.h **** // Work in-place 503:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __pos = __s - _M_data(); 504:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos >= __n) 505:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(_M_data(), __s, __n); 506:/usr/include/c++/3.2.2/bits/basic_string.h **** else if (__pos) 507:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::move(_M_data(), __s, __n); 508:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_length = __n; 509:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data()[__n] = _Rep::_S_terminal; 510:/usr/include/c++/3.2.2/bits/basic_string.h **** return *this; 511:/usr/include/c++/3.2.2/bits/basic_string.h **** } 512:/usr/include/c++/3.2.2/bits/basic_string.h **** } 513:/usr/include/c++/3.2.2/bits/basic_string.h **** 514:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 515:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(const _CharT* __s) 516:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->assign(__s, traits_type::length(__s)); } 517:/usr/include/c++/3.2.2/bits/basic_string.h **** 518:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 519:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(size_type __n, _CharT __c) 520:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_ibegin(), _M_iend(), __n, __c); } 521:/usr/include/c++/3.2.2/bits/basic_string.h **** 522:/usr/include/c++/3.2.2/bits/basic_string.h **** template 523:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 524:/usr/include/c++/3.2.2/bits/basic_string.h **** assign(_InputIterator __first, _InputIterator __last) 525:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_ibegin(), _M_iend(), __first, __last); } 526:/usr/include/c++/3.2.2/bits/basic_string.h **** 527:/usr/include/c++/3.2.2/bits/basic_string.h **** void 528:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(iterator __p, size_type __n, _CharT __c) 529:/usr/include/c++/3.2.2/bits/basic_string.h **** { this->replace(__p, __p, __n, __c); } 530:/usr/include/c++/3.2.2/bits/basic_string.h **** 531:/usr/include/c++/3.2.2/bits/basic_string.h **** template 532:/usr/include/c++/3.2.2/bits/basic_string.h **** void insert(iterator __p, _InputIterator __beg, _InputIterator __end) 533:/usr/include/c++/3.2.2/bits/basic_string.h **** { this->replace(__p, __p, __beg, __end); } 534:/usr/include/c++/3.2.2/bits/basic_string.h **** 535:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 536:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos1, const basic_string& __str) 537:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->insert(__pos1, __str, 0, __str.size()); } 538:/usr/include/c++/3.2.2/bits/basic_string.h **** 539:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 540:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos1, const basic_string& __str, 541:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos2, size_type __n) 542:/usr/include/c++/3.2.2/bits/basic_string.h **** { 543:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __strsize = __str.size(); 544:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos2 > __strsize) 545:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::insert"); 546:/usr/include/c++/3.2.2/bits/basic_string.h **** const bool __testn = __n < __strsize - __pos2; 547:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __newsize = __testn ? __n : __strsize - __pos2; 548:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->insert(__pos1, __str._M_data() + __pos2, __newsize); 549:/usr/include/c++/3.2.2/bits/basic_string.h **** } 550:/usr/include/c++/3.2.2/bits/basic_string.h **** 551:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 552:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos, const _CharT* __s, size_type __n) 553:/usr/include/c++/3.2.2/bits/basic_string.h **** { 554:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __size = this->size(); GAS LISTING /tmp/ccJDTatA.s page 59 555:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > __size) 556:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::insert"); 557:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__size > this->max_size() - __n) 558:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_length_error("basic_string::insert"); 559:/usr/include/c++/3.2.2/bits/basic_string.h **** if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) 560:/usr/include/c++/3.2.2/bits/basic_string.h **** || less()(_M_data() + __size, __s)) 561:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_replace_safe(_M_ibegin() + __pos, _M_ibegin() + __pos, 562:/usr/include/c++/3.2.2/bits/basic_string.h **** __s, __s + __n); 563:/usr/include/c++/3.2.2/bits/basic_string.h **** else 564:/usr/include/c++/3.2.2/bits/basic_string.h **** { 565:/usr/include/c++/3.2.2/bits/basic_string.h **** // Work in-place. If _M_mutate reallocates the string, __s 566:/usr/include/c++/3.2.2/bits/basic_string.h **** // does not point anymore to valid data, therefore we save its 567:/usr/include/c++/3.2.2/bits/basic_string.h **** // offset, then we restore it. 568:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __off = __s - _M_data(); 569:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_mutate(__pos, 0, __n); 570:/usr/include/c++/3.2.2/bits/basic_string.h **** __s = _M_data() + __off; 571:/usr/include/c++/3.2.2/bits/basic_string.h **** _CharT* __p = _M_data() + __pos; 572:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__s + __n <= __p) 573:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p, __s, __n); 574:/usr/include/c++/3.2.2/bits/basic_string.h **** else if (__s >= __p) 575:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p, __s + __n, __n); 576:/usr/include/c++/3.2.2/bits/basic_string.h **** else 577:/usr/include/c++/3.2.2/bits/basic_string.h **** { 578:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p, __s, __p - __s); 579:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::copy(__p + (__p - __s), __p + __n, __n - (__p - __s)); 580:/usr/include/c++/3.2.2/bits/basic_string.h **** } 581:/usr/include/c++/3.2.2/bits/basic_string.h **** return *this; 582:/usr/include/c++/3.2.2/bits/basic_string.h **** } 583:/usr/include/c++/3.2.2/bits/basic_string.h **** } 584:/usr/include/c++/3.2.2/bits/basic_string.h **** 585:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 586:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos, const _CharT* __s) 587:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->insert(__pos, __s, traits_type::length(__s)); } 588:/usr/include/c++/3.2.2/bits/basic_string.h **** 589:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 590:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(size_type __pos, size_type __n, _CharT __c) 591:/usr/include/c++/3.2.2/bits/basic_string.h **** { 592:/usr/include/c++/3.2.2/bits/basic_string.h **** this->insert(_M_check(__pos), __n, __c); 593:/usr/include/c++/3.2.2/bits/basic_string.h **** return *this; 594:/usr/include/c++/3.2.2/bits/basic_string.h **** } 595:/usr/include/c++/3.2.2/bits/basic_string.h **** 596:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 597:/usr/include/c++/3.2.2/bits/basic_string.h **** insert(iterator __p, _CharT __c = _CharT()) 598:/usr/include/c++/3.2.2/bits/basic_string.h **** { 599:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos = __p - _M_ibegin(); 600:/usr/include/c++/3.2.2/bits/basic_string.h **** this->insert(_M_check(__pos), size_type(1), __c); 601:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 602:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->_M_ibegin() + __pos; 603:/usr/include/c++/3.2.2/bits/basic_string.h **** } 604:/usr/include/c++/3.2.2/bits/basic_string.h **** 605:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 606:/usr/include/c++/3.2.2/bits/basic_string.h **** erase(size_type __pos = 0, size_type __n = npos) 607:/usr/include/c++/3.2.2/bits/basic_string.h **** { 608:/usr/include/c++/3.2.2/bits/basic_string.h **** return this->replace(_M_check(__pos), _M_fold(__pos, __n), 609:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_data(), _M_data()); 610:/usr/include/c++/3.2.2/bits/basic_string.h **** } 611:/usr/include/c++/3.2.2/bits/basic_string.h **** GAS LISTING /tmp/ccJDTatA.s page 60 612:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 613:/usr/include/c++/3.2.2/bits/basic_string.h **** erase(iterator __position) 614:/usr/include/c++/3.2.2/bits/basic_string.h **** { 615:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __i = __position - _M_ibegin(); 616:/usr/include/c++/3.2.2/bits/basic_string.h **** this->replace(__position, __position + 1, _M_data(), _M_data()); 617:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 618:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_ibegin() + __i; 619:/usr/include/c++/3.2.2/bits/basic_string.h **** } 620:/usr/include/c++/3.2.2/bits/basic_string.h **** 621:/usr/include/c++/3.2.2/bits/basic_string.h **** iterator 622:/usr/include/c++/3.2.2/bits/basic_string.h **** erase(iterator __first, iterator __last) 623:/usr/include/c++/3.2.2/bits/basic_string.h **** { 624:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __i = __first - _M_ibegin(); 625:/usr/include/c++/3.2.2/bits/basic_string.h **** this->replace(__first, __last, _M_data(), _M_data()); 626:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_rep()->_M_set_leaked(); 627:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_ibegin() + __i; 628:/usr/include/c++/3.2.2/bits/basic_string.h **** } 629:/usr/include/c++/3.2.2/bits/basic_string.h **** 630:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 631:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n, const basic_string& __str) 632:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__pos, __n, __str._M_data(), __str.size()); } 633:/usr/include/c++/3.2.2/bits/basic_string.h **** 634:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 635:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos1, size_type __n1, const basic_string& __str, 636:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos2, size_type __n2); 637:/usr/include/c++/3.2.2/bits/basic_string.h **** 638:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 639:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n1, const _CharT* __s, 640:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n2) 641:/usr/include/c++/3.2.2/bits/basic_string.h **** { 642:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __size = this->size(); 643:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > __size) 644:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::replace"); 645:/usr/include/c++/3.2.2/bits/basic_string.h **** const bool __testn1 = __n1 < __size - __pos; 646:/usr/include/c++/3.2.2/bits/basic_string.h **** const size_type __foldn1 = __testn1 ? __n1 : __size - __pos; 647:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__size - __foldn1 > this->max_size() - __n2) 648:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_length_error("basic_string::replace"); 649:/usr/include/c++/3.2.2/bits/basic_string.h **** if (_M_rep()->_M_is_shared() || less()(__s, _M_data()) 650:/usr/include/c++/3.2.2/bits/basic_string.h **** || less()(_M_data() + __size, __s)) 651:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_replace_safe(_M_ibegin() + __pos, 652:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_ibegin() + __pos + __foldn1, __s, __s + __n2); 653:/usr/include/c++/3.2.2/bits/basic_string.h **** // Todo: optimized in-place replace. 654:/usr/include/c++/3.2.2/bits/basic_string.h **** else return 655:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_replace(_M_ibegin() + __pos, _M_ibegin() + __pos + __foldn1, 656:/usr/include/c++/3.2.2/bits/basic_string.h **** __s, __s + __n2, 657:/usr/include/c++/3.2.2/bits/basic_string.h **** typename iterator_traits::iterator_category()); 658:/usr/include/c++/3.2.2/bits/basic_string.h **** } 659:/usr/include/c++/3.2.2/bits/basic_string.h **** 660:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 661:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n1, const _CharT* __s) 662:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__pos, __n1, __s, traits_type::length(__s)); } 663:/usr/include/c++/3.2.2/bits/basic_string.h **** 664:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 665:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) 666:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(_M_check(__pos), _M_fold(__pos, __n1), __n2, __c); } 667:/usr/include/c++/3.2.2/bits/basic_string.h **** 668:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& GAS LISTING /tmp/ccJDTatA.s page 61 669:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const basic_string& __str) 670:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1, __i2, __str._M_data(), __str.size()); } 671:/usr/include/c++/3.2.2/bits/basic_string.h **** 672:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 673:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, 674:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* __s, size_type __n) 675:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n); } 676:/usr/include/c++/3.2.2/bits/basic_string.h **** 677:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 678:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const _CharT* __s) 679:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1, __i2, __s, traits_type::length(__s)); } 680:/usr/include/c++/3.2.2/bits/basic_string.h **** 681:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 682:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, size_type __n, _CharT __c); 683:/usr/include/c++/3.2.2/bits/basic_string.h **** 684:/usr/include/c++/3.2.2/bits/basic_string.h **** template 685:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 686:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, 687:/usr/include/c++/3.2.2/bits/basic_string.h **** _InputIterator __k1, _InputIterator __k2) 688:/usr/include/c++/3.2.2/bits/basic_string.h **** { return _M_replace(__i1, __i2, __k1, __k2, 689:/usr/include/c++/3.2.2/bits/basic_string.h **** typename iterator_traits<_InputIterator>::iterator_category()); } 690:/usr/include/c++/3.2.2/bits/basic_string.h **** 691:/usr/include/c++/3.2.2/bits/basic_string.h **** // Specializations for the common case of pointer and iterator: 692:/usr/include/c++/3.2.2/bits/basic_string.h **** // useful to avoid the overhead of temporary buffering in _M_replace. 693:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 694:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2) 695:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 696:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1, __k2 - __k1); } 697:/usr/include/c++/3.2.2/bits/basic_string.h **** 698:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 699:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const _CharT* __k1, const _CharT* __k2) 700:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 701:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1, __k2 - __k1); } 702:/usr/include/c++/3.2.2/bits/basic_string.h **** 703:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 704:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2) 705:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 706:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1.base(), __k2 - __k1); 707:/usr/include/c++/3.2.2/bits/basic_string.h **** } 708:/usr/include/c++/3.2.2/bits/basic_string.h **** 709:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 710:/usr/include/c++/3.2.2/bits/basic_string.h **** replace(iterator __i1, iterator __i2, const_iterator __k1, const_iterator __k2) 711:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->replace(__i1 - _M_ibegin(), __i2 - __i1, 712:/usr/include/c++/3.2.2/bits/basic_string.h **** __k1.base(), __k2 - __k1); 713:/usr/include/c++/3.2.2/bits/basic_string.h **** } 714:/usr/include/c++/3.2.2/bits/basic_string.h **** 715:/usr/include/c++/3.2.2/bits/basic_string.h **** private: 716:/usr/include/c++/3.2.2/bits/basic_string.h **** template 717:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 718:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_replace(iterator __i1, iterator __i2, _InputIterator __k1, 719:/usr/include/c++/3.2.2/bits/basic_string.h **** _InputIterator __k2, input_iterator_tag); 720:/usr/include/c++/3.2.2/bits/basic_string.h **** 721:/usr/include/c++/3.2.2/bits/basic_string.h **** template 722:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string& 723:/usr/include/c++/3.2.2/bits/basic_string.h **** _M_replace_safe(iterator __i1, iterator __i2, _ForwardIterator __k1, 724:/usr/include/c++/3.2.2/bits/basic_string.h **** _ForwardIterator __k2); 725:/usr/include/c++/3.2.2/bits/basic_string.h **** GAS LISTING /tmp/ccJDTatA.s page 62 726:/usr/include/c++/3.2.2/bits/basic_string.h **** // _S_construct_aux is used to implement the 21.3.1 para 15 which 727:/usr/include/c++/3.2.2/bits/basic_string.h **** // requires special behaviour if _InIter is an integral type 728:/usr/include/c++/3.2.2/bits/basic_string.h **** template 729:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 730:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct_aux(_InIter __beg, _InIter __end, const _Alloc& __a, 731:/usr/include/c++/3.2.2/bits/basic_string.h **** __false_type) 732:/usr/include/c++/3.2.2/bits/basic_string.h **** { 733:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename iterator_traits<_InIter>::iterator_category _Tag; 734:/usr/include/c++/3.2.2/bits/basic_string.h **** return _S_construct(__beg, __end, __a, _Tag()); 735:/usr/include/c++/3.2.2/bits/basic_string.h **** } 736:/usr/include/c++/3.2.2/bits/basic_string.h **** 737:/usr/include/c++/3.2.2/bits/basic_string.h **** template 738:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 739:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct_aux(_InIter __beg, _InIter __end, const _Alloc& __a, 740:/usr/include/c++/3.2.2/bits/basic_string.h **** __true_type) 741:/usr/include/c++/3.2.2/bits/basic_string.h **** { 742:/usr/include/c++/3.2.2/bits/basic_string.h **** return _S_construct(static_cast(__beg), 743:/usr/include/c++/3.2.2/bits/basic_string.h **** static_cast(__end), __a); 744:/usr/include/c++/3.2.2/bits/basic_string.h **** } 745:/usr/include/c++/3.2.2/bits/basic_string.h **** 746:/usr/include/c++/3.2.2/bits/basic_string.h **** template 747:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 748:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a) 749:/usr/include/c++/3.2.2/bits/basic_string.h **** { 750:/usr/include/c++/3.2.2/bits/basic_string.h **** typedef typename _Is_integer<_InIter>::_Integral _Integral; 751:/usr/include/c++/3.2.2/bits/basic_string.h **** return _S_construct_aux(__beg, __end, __a, _Integral()); 752:/usr/include/c++/3.2.2/bits/basic_string.h **** } 753:/usr/include/c++/3.2.2/bits/basic_string.h **** 754:/usr/include/c++/3.2.2/bits/basic_string.h **** // For Input Iterators, used in istreambuf_iterators, etc. 755:/usr/include/c++/3.2.2/bits/basic_string.h **** template 756:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 757:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(_InIter __beg, _InIter __end, const _Alloc& __a, 758:/usr/include/c++/3.2.2/bits/basic_string.h **** input_iterator_tag); 759:/usr/include/c++/3.2.2/bits/basic_string.h **** 760:/usr/include/c++/3.2.2/bits/basic_string.h **** // For forward_iterators up to random_access_iterators, used for 761:/usr/include/c++/3.2.2/bits/basic_string.h **** // string::iterator, _CharT*, etc. 762:/usr/include/c++/3.2.2/bits/basic_string.h **** template 763:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 764:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(_FwdIter __beg, _FwdIter __end, const _Alloc& __a, 765:/usr/include/c++/3.2.2/bits/basic_string.h **** forward_iterator_tag); 766:/usr/include/c++/3.2.2/bits/basic_string.h **** 767:/usr/include/c++/3.2.2/bits/basic_string.h **** static _CharT* 768:/usr/include/c++/3.2.2/bits/basic_string.h **** _S_construct(size_type __req, _CharT __c, const _Alloc& __a); 769:/usr/include/c++/3.2.2/bits/basic_string.h **** 770:/usr/include/c++/3.2.2/bits/basic_string.h **** public: 771:/usr/include/c++/3.2.2/bits/basic_string.h **** 772:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 773:/usr/include/c++/3.2.2/bits/basic_string.h **** copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 774:/usr/include/c++/3.2.2/bits/basic_string.h **** 775:/usr/include/c++/3.2.2/bits/basic_string.h **** void 776:/usr/include/c++/3.2.2/bits/basic_string.h **** swap(basic_string<_CharT, _Traits, _Alloc>& __s); 777:/usr/include/c++/3.2.2/bits/basic_string.h **** 778:/usr/include/c++/3.2.2/bits/basic_string.h **** // String operations: 779:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* 780:/usr/include/c++/3.2.2/bits/basic_string.h **** c_str() const 781:/usr/include/c++/3.2.2/bits/basic_string.h **** { 782:/usr/include/c++/3.2.2/bits/basic_string.h **** // MT: This assumes concurrent writes are OK. GAS LISTING /tmp/ccJDTatA.s page 63 783:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n = this->size(); 784:/usr/include/c++/3.2.2/bits/basic_string.h **** traits_type::assign(_M_data()[__n], _Rep::_S_terminal); 785:/usr/include/c++/3.2.2/bits/basic_string.h **** return _M_data(); 786:/usr/include/c++/3.2.2/bits/basic_string.h **** } 787:/usr/include/c++/3.2.2/bits/basic_string.h **** 788:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* 789:/usr/include/c++/3.2.2/bits/basic_string.h **** data() const { return _M_data(); } 790:/usr/include/c++/3.2.2/bits/basic_string.h **** 791:/usr/include/c++/3.2.2/bits/basic_string.h **** allocator_type 792:/usr/include/c++/3.2.2/bits/basic_string.h **** get_allocator() const { return _M_dataplus; } 793:/usr/include/c++/3.2.2/bits/basic_string.h **** 794:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 795:/usr/include/c++/3.2.2/bits/basic_string.h **** find(const _CharT* __s, size_type __pos, size_type __n) const; 796:/usr/include/c++/3.2.2/bits/basic_string.h **** 797:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 798:/usr/include/c++/3.2.2/bits/basic_string.h **** find(const basic_string& __str, size_type __pos = 0) const 799:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find(__str.data(), __pos, __str.size()); } 800:/usr/include/c++/3.2.2/bits/basic_string.h **** 801:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 802:/usr/include/c++/3.2.2/bits/basic_string.h **** find(const _CharT* __s, size_type __pos = 0) const 803:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find(__s, __pos, traits_type::length(__s)); } 804:/usr/include/c++/3.2.2/bits/basic_string.h **** 805:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 806:/usr/include/c++/3.2.2/bits/basic_string.h **** find(_CharT __c, size_type __pos = 0) const; 807:/usr/include/c++/3.2.2/bits/basic_string.h **** 808:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 809:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(const basic_string& __str, size_type __pos = npos) const 810:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->rfind(__str.data(), __pos, __str.size()); } 811:/usr/include/c++/3.2.2/bits/basic_string.h **** 812:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 813:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(const _CharT* __s, size_type __pos, size_type __n) const; 814:/usr/include/c++/3.2.2/bits/basic_string.h **** 815:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 816:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(const _CharT* __s, size_type __pos = npos) const 817:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->rfind(__s, __pos, traits_type::length(__s)); } 818:/usr/include/c++/3.2.2/bits/basic_string.h **** 819:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 820:/usr/include/c++/3.2.2/bits/basic_string.h **** rfind(_CharT __c, size_type __pos = npos) const; 821:/usr/include/c++/3.2.2/bits/basic_string.h **** 822:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 823:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(const basic_string& __str, size_type __pos = 0) const 824:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_of(__str.data(), __pos, __str.size()); } 825:/usr/include/c++/3.2.2/bits/basic_string.h **** 826:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 827:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; 828:/usr/include/c++/3.2.2/bits/basic_string.h **** 829:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 830:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(const _CharT* __s, size_type __pos = 0) const 831:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_of(__s, __pos, traits_type::length(__s)); } 832:/usr/include/c++/3.2.2/bits/basic_string.h **** 833:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 834:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_of(_CharT __c, size_type __pos = 0) const 835:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find(__c, __pos); } 836:/usr/include/c++/3.2.2/bits/basic_string.h **** 837:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 838:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(const basic_string& __str, size_type __pos = npos) const 839:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_of(__str.data(), __pos, __str.size()); } GAS LISTING /tmp/ccJDTatA.s page 64 840:/usr/include/c++/3.2.2/bits/basic_string.h **** 841:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 842:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; 843:/usr/include/c++/3.2.2/bits/basic_string.h **** 844:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 845:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(const _CharT* __s, size_type __pos = npos) const 846:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_of(__s, __pos, traits_type::length(__s)); } 847:/usr/include/c++/3.2.2/bits/basic_string.h **** 848:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 849:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_of(_CharT __c, size_type __pos = npos) const 850:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->rfind(__c, __pos); } 851:/usr/include/c++/3.2.2/bits/basic_string.h **** 852:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 853:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(const basic_string& __str, size_type __pos = 0) const 854:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 855:/usr/include/c++/3.2.2/bits/basic_string.h **** 856:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 857:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(const _CharT* __s, size_type __pos, 858:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n) const; 859:/usr/include/c++/3.2.2/bits/basic_string.h **** 860:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 861:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(const _CharT* __s, size_type __pos = 0) const 862:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_first_not_of(__s, __pos, traits_type::length(__s)); } 863:/usr/include/c++/3.2.2/bits/basic_string.h **** 864:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 865:/usr/include/c++/3.2.2/bits/basic_string.h **** find_first_not_of(_CharT __c, size_type __pos = 0) const; 866:/usr/include/c++/3.2.2/bits/basic_string.h **** 867:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 868:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(const basic_string& __str, size_type __pos = npos) const 869:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_not_of(__str.data(), __pos, __str.size()); } 870:/usr/include/c++/3.2.2/bits/basic_string.h **** 871:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 872:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(const _CharT* __s, size_type __pos, 873:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n) const; 874:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 875:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(const _CharT* __s, size_type __pos = npos) const 876:/usr/include/c++/3.2.2/bits/basic_string.h **** { return this->find_last_not_of(__s, __pos, traits_type::length(__s)); } 877:/usr/include/c++/3.2.2/bits/basic_string.h **** 878:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type 879:/usr/include/c++/3.2.2/bits/basic_string.h **** find_last_not_of(_CharT __c, size_type __pos = npos) const; 880:/usr/include/c++/3.2.2/bits/basic_string.h **** 881:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string 882:/usr/include/c++/3.2.2/bits/basic_string.h **** substr(size_type __pos = 0, size_type __n = npos) const 883:/usr/include/c++/3.2.2/bits/basic_string.h **** { 884:/usr/include/c++/3.2.2/bits/basic_string.h **** if (__pos > this->size()) 885:/usr/include/c++/3.2.2/bits/basic_string.h **** __throw_out_of_range("basic_string::substr"); 886:/usr/include/c++/3.2.2/bits/basic_string.h **** return basic_string(*this, __pos, __n); 887:/usr/include/c++/3.2.2/bits/basic_string.h **** } 888:/usr/include/c++/3.2.2/bits/basic_string.h **** 889:/usr/include/c++/3.2.2/bits/basic_string.h **** int 890:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(const basic_string& __str) const 891:/usr/include/c++/3.2.2/bits/basic_string.h **** { 892:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __size = this->size(); 893:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __osize = __str.size(); 894:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __len = min(__size, __osize); 895:/usr/include/c++/3.2.2/bits/basic_string.h **** 896:/usr/include/c++/3.2.2/bits/basic_string.h **** int __r = traits_type::compare(_M_data(), __str.data(), __len); GAS LISTING /tmp/ccJDTatA.s page 65 897:/usr/include/c++/3.2.2/bits/basic_string.h **** if (!__r) 898:/usr/include/c++/3.2.2/bits/basic_string.h **** __r = __size - __osize; 899:/usr/include/c++/3.2.2/bits/basic_string.h **** return __r; 900:/usr/include/c++/3.2.2/bits/basic_string.h **** } 901:/usr/include/c++/3.2.2/bits/basic_string.h **** 902:/usr/include/c++/3.2.2/bits/basic_string.h **** int 903:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos, size_type __n, const basic_string& __str) const; 904:/usr/include/c++/3.2.2/bits/basic_string.h **** 905:/usr/include/c++/3.2.2/bits/basic_string.h **** int 906:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos1, size_type __n1, const basic_string& __str, 907:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __pos2, size_type __n2) const; 908:/usr/include/c++/3.2.2/bits/basic_string.h **** 909:/usr/include/c++/3.2.2/bits/basic_string.h **** int 910:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(const _CharT* __s) const; 911:/usr/include/c++/3.2.2/bits/basic_string.h **** 912:/usr/include/c++/3.2.2/bits/basic_string.h **** // _GLIBCPP_RESOLVE_LIB_DEFECTS 913:/usr/include/c++/3.2.2/bits/basic_string.h **** // 5. String::compare specification questionable 914:/usr/include/c++/3.2.2/bits/basic_string.h **** int 915:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos, size_type __n1, const _CharT* __s) const; 916:/usr/include/c++/3.2.2/bits/basic_string.h **** 917:/usr/include/c++/3.2.2/bits/basic_string.h **** int 918:/usr/include/c++/3.2.2/bits/basic_string.h **** compare(size_type __pos, size_type __n1, const _CharT* __s, 919:/usr/include/c++/3.2.2/bits/basic_string.h **** size_type __n2) const; 920:/usr/include/c++/3.2.2/bits/basic_string.h **** }; 921:/usr/include/c++/3.2.2/bits/basic_string.h **** 922:/usr/include/c++/3.2.2/bits/basic_string.h **** 923:/usr/include/c++/3.2.2/bits/basic_string.h **** template 924:/usr/include/c++/3.2.2/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc>:: 925:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string() 926:/usr/include/c++/3.2.2/bits/basic_string.h **** : _M_dataplus(_S_empty_rep()._M_refcopy(), _Alloc()) { } 927:/usr/include/c++/3.2.2/bits/basic_string.h **** 928:/usr/include/c++/3.2.2/bits/basic_string.h **** // operator+ 929:/usr/include/c++/3.2.2/bits/basic_string.h **** template 930:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> 931:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 932:/usr/include/c++/3.2.2/bits/basic_string.h **** const basic_string<_CharT, _Traits, _Alloc>& __rhs) 933:/usr/include/c++/3.2.2/bits/basic_string.h **** { 934:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 935:/usr/include/c++/3.2.2/bits/basic_string.h **** __str.append(__rhs); 936:/usr/include/c++/3.2.2/bits/basic_string.h **** return __str; 937:/usr/include/c++/3.2.2/bits/basic_string.h **** } 938:/usr/include/c++/3.2.2/bits/basic_string.h **** 939:/usr/include/c++/3.2.2/bits/basic_string.h **** template 940:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT,_Traits,_Alloc> 941:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(const _CharT* __lhs, 942:/usr/include/c++/3.2.2/bits/basic_string.h **** const basic_string<_CharT,_Traits,_Alloc>& __rhs); 943:/usr/include/c++/3.2.2/bits/basic_string.h **** 944:/usr/include/c++/3.2.2/bits/basic_string.h **** template 945:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT,_Traits,_Alloc> 946:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs); 947:/usr/include/c++/3.2.2/bits/basic_string.h **** 948:/usr/include/c++/3.2.2/bits/basic_string.h **** template 949:/usr/include/c++/3.2.2/bits/basic_string.h **** inline basic_string<_CharT, _Traits, _Alloc> 950:/usr/include/c++/3.2.2/bits/basic_string.h **** operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, 951:/usr/include/c++/3.2.2/bits/basic_string.h **** const _CharT* __rhs) 952:/usr/include/c++/3.2.2/bits/basic_string.h **** { 1902 .loc 28 952 0 GAS LISTING /tmp/ccJDTatA.s page 66 1903 0000 55 pushl %ebp 1904 .LCFI102: 1905 0001 89E5 movl %esp, %ebp 1906 .LCFI103: 1907 0003 53 pushl %ebx 1908 .LCFI104: 1909 0004 83EC04 subl $4, %esp 1910 .LCFI105: 1911 .LBB20: 953:/usr/include/c++/3.2.2/bits/basic_string.h **** basic_string<_CharT, _Traits, _Alloc> __str(__lhs); 1912 .loc 28 953 0 1913 0007 83EC08 subl $8, %esp 1914 000a FF750C pushl 12(%ebp) 1915 000d FF7508 pushl 8(%ebp) 1916 .LEHB53: 1917 .LCFI106: 1918 0010 E8FCFFFF call _ZNSsC1ERKSs 1918 FF 1919 .LEHE53: 1920 0015 83C410 addl $16, %esp 954:/usr/include/c++/3.2.2/bits/basic_string.h **** __str.append(__rhs); 1921 .loc 28 954 0 1922 0018 83EC08 subl $8, %esp 1923 001b FF7510 pushl 16(%ebp) 1924 001e FF7508 pushl 8(%ebp) 1925 .LEHB54: 1926 0021 E8FCFFFF call _ZNSs6appendEPKc 1926 FF 1927 .LEHE54: 1928 0026 83C410 addl $16, %esp 955:/usr/include/c++/3.2.2/bits/basic_string.h **** return __str; 1929 .loc 28 955 0 1930 0029 EB22 jmp .L209 1931 .L214: 1932 002b 8945F8 movl %eax, -8(%ebp) 1933 002e 8B5DF8 movl -8(%ebp), %ebx 1934 0031 83EC0C subl $12, %esp 1935 0034 FF7508 pushl 8(%ebp) 1936 0037 E8FCFFFF call _ZNSsD1Ev 1936 FF 1937 003c 83C410 addl $16, %esp 1938 003f 895DF8 movl %ebx, -8(%ebp) 1939 0042 83EC0C subl $12, %esp 1940 0045 FF75F8 pushl -8(%ebp) 1941 .LEHB55: 1942 0048 E8FCFFFF call _Unwind_Resume 1942 FF 1943 .LEHE55: 1944 .LBE20: 1945 .L209: 1946 004d 8B4508 movl 8(%ebp), %eax 1947 0050 8B5DFC movl -4(%ebp), %ebx 1948 0053 C9 leave 1949 0054 C20400 ret $4 1950 .LFE1525: 1951 .Lfe14: 1953 .section .gcc_except_table GAS LISTING /tmp/ccJDTatA.s page 67 1954 .LLSDA1525: 1955 01a9 FF .byte 0xff 1956 01aa FF .byte 0xff 1957 01ab 01 .byte 0x1 1958 01ac 0C .uleb128 .LLSDACSE1525-.LLSDACSB1525 1959 .LLSDACSB1525: 1960 01ad 10 .uleb128 .LEHB53-.LFB1525 1961 01ae 05 .uleb128 .LEHE53-.LEHB53 1962 01af 00 .uleb128 0x0 1963 01b0 00 .uleb128 0x0 1964 01b1 21 .uleb128 .LEHB54-.LFB1525 1965 01b2 05 .uleb128 .LEHE54-.LEHB54 1966 01b3 2B .uleb128 .L214-.LFB1525 1967 01b4 00 .uleb128 0x0 1968 01b5 48 .uleb128 .LEHB55-.LFB1525 1969 01b6 05 .uleb128 .LEHE55-.LEHB55 1970 01b7 00 .uleb128 0x0 1971 01b8 00 .uleb128 0x0 1972 .LLSDACSE1525: 1973 .section .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ 1974 .file 44 "/usr/include/c++/3.2.2/bits/stl_iterator.h" 1975 .section .gnu.linkonce.t._ZNSs6appendIPKcEERSsT_S3_,"ax",@progbits 1976 .align 2 1977 .weak _ZNSs6appendIPKcEERSsT_S3_ 1979 _ZNSs6appendIPKcEERSsT_S3_: 1980 .LFB1544: 1981 .loc 28 472 0 1982 .LBB21: 1983 0000 55 pushl %ebp 1984 .LCFI107: 1985 0001 89E5 movl %esp, %ebp 1986 .LCFI108: 1987 0003 83EC08 subl $8, %esp 1988 .LCFI109: 1989 .loc 28 472 0 1990 0006 83EC0C subl $12, %esp 1991 0009 FF7510 pushl 16(%ebp) 1992 000c FF750C pushl 12(%ebp) 1993 000f 8D45FC leal -4(%ebp), %eax 1994 0012 83EC04 subl $4, %esp 1995 0015 FF7508 pushl 8(%ebp) 1996 0018 50 pushl %eax 1997 .LCFI110: 1998 0019 E8FCFFFF call _ZNKSs7_M_iendEv 1998 FF 1999 001e 83C408 addl $8, %esp 2000 0021 FF75FC pushl -4(%ebp) 2001 0024 8D45F8 leal -8(%ebp), %eax 2002 0027 FF7508 pushl 8(%ebp) 2003 002a 50 pushl %eax 2004 .LCFI111: 2005 002b E8FCFFFF call _ZNKSs7_M_iendEv 2005 FF 2006 0030 83C404 addl $4, %esp 2007 0033 FF75F8 pushl -8(%ebp) 2008 0036 FF7508 pushl 8(%ebp) 2009 .LCFI112: GAS LISTING /tmp/ccJDTatA.s page 68 2010 0039 E8FCFFFF call _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_ 2010 FF 2011 003e 83C420 addl $32, %esp 2012 .LBE21: 2013 0041 C9 leave 2014 0042 C3 ret 2015 .LFE1544: 2016 .Lfe15: 2018 .file 45 "/usr/include/c++/3.2.2/bits/stl_function.h" 2019 .weak _ZTV11MyException 2020 .section .gnu.linkonce.d._ZTV11MyException,"aw",@progbits 2021 .align 8 2024 _ZTV11MyException: 2025 0000 00000000 .long 0 2026 0004 00000000 .long _ZTI11MyException 2027 0008 00000000 .long _ZN11MyExceptionD1Ev 2028 000c 00000000 .long _ZN11MyExceptionD0Ev 2029 0010 00000000 .long _ZNK11MyException4whatEv 2030 .text 2031 .align 2 2033 _Z41__static_initialization_and_destruction_0ii: 2034 .LFB1589: 2035 .file 46 "/usr/include/c++/3.2.2/streambuf" 1:/usr/include/c++/3.2.2/streambuf **** // Stream buffer classes -*- C++ -*- 2:/usr/include/c++/3.2.2/streambuf **** 3:/usr/include/c++/3.2.2/streambuf **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 4:/usr/include/c++/3.2.2/streambuf **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/streambuf **** // 6:/usr/include/c++/3.2.2/streambuf **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/streambuf **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/streambuf **** // terms of the GNU General Public License as published by the 9:/usr/include/c++/3.2.2/streambuf **** // Free Software Foundation; either version 2, or (at your option) 10:/usr/include/c++/3.2.2/streambuf **** // any later version. 11:/usr/include/c++/3.2.2/streambuf **** 12:/usr/include/c++/3.2.2/streambuf **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/streambuf **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/streambuf **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/streambuf **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/streambuf **** 17:/usr/include/c++/3.2.2/streambuf **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/streambuf **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/streambuf **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/streambuf **** // USA. 21:/usr/include/c++/3.2.2/streambuf **** 22:/usr/include/c++/3.2.2/streambuf **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/streambuf **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/streambuf **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/streambuf **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/streambuf **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/streambuf **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/streambuf **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/streambuf **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/streambuf **** 31:/usr/include/c++/3.2.2/streambuf **** // 32:/usr/include/c++/3.2.2/streambuf **** // ISO C++ 14882: 27.5 Stream buffers 33:/usr/include/c++/3.2.2/streambuf **** // 34:/usr/include/c++/3.2.2/streambuf **** GAS LISTING /tmp/ccJDTatA.s page 69 35:/usr/include/c++/3.2.2/streambuf **** /** @file streambuf 36:/usr/include/c++/3.2.2/streambuf **** * This is a Standard C++ Library header. You should @c #include this header 37:/usr/include/c++/3.2.2/streambuf **** * in your programs, rather than any of the "st[dl]_*.h" implementation files. 38:/usr/include/c++/3.2.2/streambuf **** */ 39:/usr/include/c++/3.2.2/streambuf **** 40:/usr/include/c++/3.2.2/streambuf **** #ifndef _CPP_STREAMBUF 41:/usr/include/c++/3.2.2/streambuf **** #define _CPP_STREAMBUF 1 42:/usr/include/c++/3.2.2/streambuf **** 43:/usr/include/c++/3.2.2/streambuf **** #pragma GCC system_header 44:/usr/include/c++/3.2.2/streambuf **** 45:/usr/include/c++/3.2.2/streambuf **** #include 46:/usr/include/c++/3.2.2/streambuf **** #include 47:/usr/include/c++/3.2.2/streambuf **** #include // For SEEK_SET, SEEK_CUR, SEEK_END 48:/usr/include/c++/3.2.2/streambuf **** #include 49:/usr/include/c++/3.2.2/streambuf **** #include 50:/usr/include/c++/3.2.2/streambuf **** 51:/usr/include/c++/3.2.2/streambuf **** namespace std 52:/usr/include/c++/3.2.2/streambuf **** { 53:/usr/include/c++/3.2.2/streambuf **** template 54:/usr/include/c++/3.2.2/streambuf **** streamsize 55:/usr/include/c++/3.2.2/streambuf **** __copy_streambufs(basic_ios<_CharT, _Traits>& _ios, 56:/usr/include/c++/3.2.2/streambuf **** basic_streambuf<_CharT, _Traits>* __sbin, 57:/usr/include/c++/3.2.2/streambuf **** basic_streambuf<_CharT, _Traits>* __sbout); 58:/usr/include/c++/3.2.2/streambuf **** 59:/usr/include/c++/3.2.2/streambuf **** // 27.5.2 Template class basic_streambuf<_CharT, _Traits> 60:/usr/include/c++/3.2.2/streambuf **** template 61:/usr/include/c++/3.2.2/streambuf **** class basic_streambuf 62:/usr/include/c++/3.2.2/streambuf **** { 63:/usr/include/c++/3.2.2/streambuf **** public: 64:/usr/include/c++/3.2.2/streambuf **** // Types: 65:/usr/include/c++/3.2.2/streambuf **** typedef _CharT char_type; 66:/usr/include/c++/3.2.2/streambuf **** typedef _Traits traits_type; 67:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::int_type int_type; 68:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::pos_type pos_type; 69:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::off_type off_type; 70:/usr/include/c++/3.2.2/streambuf **** 71:/usr/include/c++/3.2.2/streambuf **** // Non-standard Types: 72:/usr/include/c++/3.2.2/streambuf **** typedef ctype __ctype_type; 73:/usr/include/c++/3.2.2/streambuf **** typedef basic_streambuf __streambuf_type; 74:/usr/include/c++/3.2.2/streambuf **** typedef typename traits_type::state_type __state_type; 75:/usr/include/c++/3.2.2/streambuf **** 76:/usr/include/c++/3.2.2/streambuf **** friend class basic_ios; 77:/usr/include/c++/3.2.2/streambuf **** friend class basic_istream; 78:/usr/include/c++/3.2.2/streambuf **** friend class basic_ostream; 79:/usr/include/c++/3.2.2/streambuf **** friend class istreambuf_iterator; 80:/usr/include/c++/3.2.2/streambuf **** friend class ostreambuf_iterator; 81:/usr/include/c++/3.2.2/streambuf **** 82:/usr/include/c++/3.2.2/streambuf **** friend streamsize 83:/usr/include/c++/3.2.2/streambuf **** __copy_streambufs<>(basic_ios& __ios, 84:/usr/include/c++/3.2.2/streambuf **** __streambuf_type* __sbin,__streambuf_type* __sbout); 85:/usr/include/c++/3.2.2/streambuf **** 86:/usr/include/c++/3.2.2/streambuf **** protected: 87:/usr/include/c++/3.2.2/streambuf **** // Pointer to the beginning of internally-allocated 88:/usr/include/c++/3.2.2/streambuf **** // space. Filebuf manually allocates/deallocates this, whereas 89:/usr/include/c++/3.2.2/streambuf **** // stringstreams attempt to use the built-in intelligence of the 90:/usr/include/c++/3.2.2/streambuf **** // string class. If you are managing memory, set this. If not, 91:/usr/include/c++/3.2.2/streambuf **** // leave it NULL. GAS LISTING /tmp/ccJDTatA.s page 70 92:/usr/include/c++/3.2.2/streambuf **** char_type* _M_buf; 93:/usr/include/c++/3.2.2/streambuf **** 94:/usr/include/c++/3.2.2/streambuf **** // Actual size of allocated internal buffer, in bytes. 95:/usr/include/c++/3.2.2/streambuf **** size_t _M_buf_size; 96:/usr/include/c++/3.2.2/streambuf **** 97:/usr/include/c++/3.2.2/streambuf **** // Optimal or preferred size of internal buffer, in bytes. 98:/usr/include/c++/3.2.2/streambuf **** size_t _M_buf_size_opt; 99:/usr/include/c++/3.2.2/streambuf **** 100:/usr/include/c++/3.2.2/streambuf **** // True iff _M_in_* and _M_out_* buffers should always point to 101:/usr/include/c++/3.2.2/streambuf **** // the same place. True for fstreams, false for sstreams. 102:/usr/include/c++/3.2.2/streambuf **** bool _M_buf_unified; 103:/usr/include/c++/3.2.2/streambuf **** 104:/usr/include/c++/3.2.2/streambuf **** // This is based on _IO_FILE, just reordered to be more 105:/usr/include/c++/3.2.2/streambuf **** // consistent, and is intended to be the most minimal abstraction 106:/usr/include/c++/3.2.2/streambuf **** // for an internal buffer. 107:/usr/include/c++/3.2.2/streambuf **** // get == input == read 108:/usr/include/c++/3.2.2/streambuf **** // put == output == write 109:/usr/include/c++/3.2.2/streambuf **** char_type* _M_in_beg; // Start of get area. 110:/usr/include/c++/3.2.2/streambuf **** char_type* _M_in_cur; // Current read area. 111:/usr/include/c++/3.2.2/streambuf **** char_type* _M_in_end; // End of get area. 112:/usr/include/c++/3.2.2/streambuf **** char_type* _M_out_beg; // Start of put area. 113:/usr/include/c++/3.2.2/streambuf **** char_type* _M_out_cur; // Current put area. 114:/usr/include/c++/3.2.2/streambuf **** char_type* _M_out_end; // End of put area. 115:/usr/include/c++/3.2.2/streambuf **** 116:/usr/include/c++/3.2.2/streambuf **** // Place to stash in || out || in | out settings for current streambuf. 117:/usr/include/c++/3.2.2/streambuf **** ios_base::openmode _M_mode; 118:/usr/include/c++/3.2.2/streambuf **** 119:/usr/include/c++/3.2.2/streambuf **** // Current locale setting. 120:/usr/include/c++/3.2.2/streambuf **** locale _M_buf_locale; 121:/usr/include/c++/3.2.2/streambuf **** 122:/usr/include/c++/3.2.2/streambuf **** // True iff locale is initialized. 123:/usr/include/c++/3.2.2/streambuf **** bool _M_buf_locale_init; 124:/usr/include/c++/3.2.2/streambuf **** 125:/usr/include/c++/3.2.2/streambuf **** // Necessary bits for putback buffer management. Only used in 126:/usr/include/c++/3.2.2/streambuf **** // the basic_filebuf class, as necessary for the standard 127:/usr/include/c++/3.2.2/streambuf **** // requirements. The only basic_streambuf member function that 128:/usr/include/c++/3.2.2/streambuf **** // needs access to these data members is in_avail... 129:/usr/include/c++/3.2.2/streambuf **** // NB: pbacks of over one character are not currently supported. 130:/usr/include/c++/3.2.2/streambuf **** static const size_t _S_pback_size = 1; 131:/usr/include/c++/3.2.2/streambuf **** char_type _M_pback[_S_pback_size]; 2036 .loc 46 131 0 2037 09b6 55 pushl %ebp 2038 .LCFI113: 2039 09b7 89E5 movl %esp, %ebp 2040 .LCFI114: 2041 09b9 83EC08 subl $8, %esp 2042 .LCFI115: 2043 .file 47 "/usr/include/c++/3.2.2/iostream" 1:/usr/include/c++/3.2.2/iostream **** // Standard iostream objects -*- C++ -*- 2:/usr/include/c++/3.2.2/iostream **** 3:/usr/include/c++/3.2.2/iostream **** // Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc. 4:/usr/include/c++/3.2.2/iostream **** // 5:/usr/include/c++/3.2.2/iostream **** // This file is part of the GNU ISO C++ Library. This library is free 6:/usr/include/c++/3.2.2/iostream **** // software; you can redistribute it and/or modify it under the 7:/usr/include/c++/3.2.2/iostream **** // terms of the GNU General Public License as published by the 8:/usr/include/c++/3.2.2/iostream **** // Free Software Foundation; either version 2, or (at your option) 9:/usr/include/c++/3.2.2/iostream **** // any later version. GAS LISTING /tmp/ccJDTatA.s page 71 10:/usr/include/c++/3.2.2/iostream **** 11:/usr/include/c++/3.2.2/iostream **** // This library is distributed in the hope that it will be useful, 12:/usr/include/c++/3.2.2/iostream **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 13:/usr/include/c++/3.2.2/iostream **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14:/usr/include/c++/3.2.2/iostream **** // GNU General Public License for more details. 15:/usr/include/c++/3.2.2/iostream **** 16:/usr/include/c++/3.2.2/iostream **** // You should have received a copy of the GNU General Public License along 17:/usr/include/c++/3.2.2/iostream **** // with this library; see the file COPYING. If not, write to the Free 18:/usr/include/c++/3.2.2/iostream **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 19:/usr/include/c++/3.2.2/iostream **** // USA. 20:/usr/include/c++/3.2.2/iostream **** 21:/usr/include/c++/3.2.2/iostream **** // As a special exception, you may use this file as part of a free software 22:/usr/include/c++/3.2.2/iostream **** // library without restriction. Specifically, if other files instantiate 23:/usr/include/c++/3.2.2/iostream **** // templates or use macros or inline functions from this file, or you compile 24:/usr/include/c++/3.2.2/iostream **** // this file and link it with other files to produce an executable, this 25:/usr/include/c++/3.2.2/iostream **** // file does not by itself cause the resulting executable to be covered by 26:/usr/include/c++/3.2.2/iostream **** // the GNU General Public License. This exception does not however 27:/usr/include/c++/3.2.2/iostream **** // invalidate any other reasons why the executable file might be covered by 28:/usr/include/c++/3.2.2/iostream **** // the GNU General Public License. 29:/usr/include/c++/3.2.2/iostream **** 30:/usr/include/c++/3.2.2/iostream **** // 31:/usr/include/c++/3.2.2/iostream **** // ISO C++ 14882: 27.3 Standard iostream objects 32:/usr/include/c++/3.2.2/iostream **** // 33:/usr/include/c++/3.2.2/iostream **** 34:/usr/include/c++/3.2.2/iostream **** /** @file iostream 35:/usr/include/c++/3.2.2/iostream **** * This is a Standard C++ Library header. You should @c #include this header 36:/usr/include/c++/3.2.2/iostream **** * in your programs, rather than any of the "st[dl]_*.h" implementation files. 37:/usr/include/c++/3.2.2/iostream **** */ 38:/usr/include/c++/3.2.2/iostream **** 39:/usr/include/c++/3.2.2/iostream **** #ifndef _CPP_IOSTREAM 40:/usr/include/c++/3.2.2/iostream **** #define _CPP_IOSTREAM 1 41:/usr/include/c++/3.2.2/iostream **** 42:/usr/include/c++/3.2.2/iostream **** #pragma GCC system_header 43:/usr/include/c++/3.2.2/iostream **** 44:/usr/include/c++/3.2.2/iostream **** #include 45:/usr/include/c++/3.2.2/iostream **** #include 46:/usr/include/c++/3.2.2/iostream **** #include 47:/usr/include/c++/3.2.2/iostream **** 48:/usr/include/c++/3.2.2/iostream **** namespace std 49:/usr/include/c++/3.2.2/iostream **** { 50:/usr/include/c++/3.2.2/iostream **** extern istream cin; 51:/usr/include/c++/3.2.2/iostream **** extern ostream cout; 52:/usr/include/c++/3.2.2/iostream **** extern ostream cerr; 53:/usr/include/c++/3.2.2/iostream **** extern ostream clog; 54:/usr/include/c++/3.2.2/iostream **** 55:/usr/include/c++/3.2.2/iostream **** #ifdef _GLIBCPP_USE_WCHAR_T 56:/usr/include/c++/3.2.2/iostream **** extern wistream wcin; 57:/usr/include/c++/3.2.2/iostream **** extern wostream wcout; 58:/usr/include/c++/3.2.2/iostream **** extern wostream wcerr; 59:/usr/include/c++/3.2.2/iostream **** extern wostream wclog; 60:/usr/include/c++/3.2.2/iostream **** #endif 61:/usr/include/c++/3.2.2/iostream **** 62:/usr/include/c++/3.2.2/iostream **** // For construction of filebuffers for cout, cin, cerr, clog et. al. 63:/usr/include/c++/3.2.2/iostream **** static ios_base::Init __ioinit; 2044 .loc 47 63 0 2045 09bc 817D0CFF cmpl $65535, 12(%ebp) 2045 FF0000 GAS LISTING /tmp/ccJDTatA.s page 72 2046 09c3 752D jne .L216 2047 09c5 837D0801 cmpl $1, 8(%ebp) 2048 09c9 7527 jne .L216 2049 09cb 83EC0C subl $12, %esp 2050 09ce 68000000 pushl $_ZSt8__ioinit 2050 00 2051 .LCFI116: 2052 09d3 E8FCFFFF call _ZNSt8ios_base4InitC1Ev 2052 FF 2053 09d8 83C410 addl $16, %esp 2054 09db 83EC04 subl $4, %esp 2055 09de 68000000 pushl $__dso_handle 2055 00 2056 09e3 6A00 pushl $0 2057 09e5 68F40900 pushl $__tcf_0 2057 00 2058 09ea E8FCFFFF call __cxa_atexit 2058 FF 2059 09ef 83C410 addl $16, %esp 2060 .L216: 2061 09f2 C9 leave 2062 09f3 C3 ret 2063 .LFE1589: 2064 .Lfe16: 2066 .file 48 "/usr/include/c++/3.2.2/exception" 2067 .section .gnu.linkonce.t._ZNSt9exceptionC2Ev,"ax",@progbits 2068 .align 2 2069 .weak _ZNSt9exceptionC2Ev 2071 _ZNSt9exceptionC2Ev: 2072 .LFB1590: 1:/usr/include/c++/3.2.2/exception **** // Exception Handling support header for -*- C++ -*- 2:/usr/include/c++/3.2.2/exception **** 3:/usr/include/c++/3.2.2/exception **** // Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/exception **** // Free Software Foundation 5:/usr/include/c++/3.2.2/exception **** // 6:/usr/include/c++/3.2.2/exception **** // This file is part of GNU CC. 7:/usr/include/c++/3.2.2/exception **** // 8:/usr/include/c++/3.2.2/exception **** // GNU CC is free software; you can redistribute it and/or modify 9:/usr/include/c++/3.2.2/exception **** // it under the terms of the GNU General Public License as published by 10:/usr/include/c++/3.2.2/exception **** // the Free Software Foundation; either version 2, or (at your option) 11:/usr/include/c++/3.2.2/exception **** // any later version. 12:/usr/include/c++/3.2.2/exception **** // 13:/usr/include/c++/3.2.2/exception **** // GNU CC is distributed in the hope that it will be useful, 14:/usr/include/c++/3.2.2/exception **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 15:/usr/include/c++/3.2.2/exception **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16:/usr/include/c++/3.2.2/exception **** // GNU General Public License for more details. 17:/usr/include/c++/3.2.2/exception **** // 18:/usr/include/c++/3.2.2/exception **** // You should have received a copy of the GNU General Public License 19:/usr/include/c++/3.2.2/exception **** // along with GNU CC; see the file COPYING. If not, write to 20:/usr/include/c++/3.2.2/exception **** // the Free Software Foundation, 59 Temple Place - Suite 330, 21:/usr/include/c++/3.2.2/exception **** // Boston, MA 02111-1307, USA. 22:/usr/include/c++/3.2.2/exception **** 23:/usr/include/c++/3.2.2/exception **** // As a special exception, you may use this file as part of a free software 24:/usr/include/c++/3.2.2/exception **** // library without restriction. Specifically, if other files instantiate 25:/usr/include/c++/3.2.2/exception **** // templates or use macros or inline functions from this file, or you compile 26:/usr/include/c++/3.2.2/exception **** // this file and link it with other files to produce an executable, this 27:/usr/include/c++/3.2.2/exception **** // file does not by itself cause the resulting executable to be covered by GAS LISTING /tmp/ccJDTatA.s page 73 28:/usr/include/c++/3.2.2/exception **** // the GNU General Public License. This exception does not however 29:/usr/include/c++/3.2.2/exception **** // invalidate any other reasons why the executable file might be covered by 30:/usr/include/c++/3.2.2/exception **** // the GNU General Public License. 31:/usr/include/c++/3.2.2/exception **** 32:/usr/include/c++/3.2.2/exception **** /** @file exception 33:/usr/include/c++/3.2.2/exception **** * This header defines several types and functions relating to the 34:/usr/include/c++/3.2.2/exception **** * handling of exceptions in a C++ program. 35:/usr/include/c++/3.2.2/exception **** */ 36:/usr/include/c++/3.2.2/exception **** 37:/usr/include/c++/3.2.2/exception **** #ifndef __EXCEPTION__ 38:/usr/include/c++/3.2.2/exception **** #define __EXCEPTION__ 39:/usr/include/c++/3.2.2/exception **** 40:/usr/include/c++/3.2.2/exception **** extern "C++" { 41:/usr/include/c++/3.2.2/exception **** 42:/usr/include/c++/3.2.2/exception **** namespace std 43:/usr/include/c++/3.2.2/exception **** { 44:/usr/include/c++/3.2.2/exception **** /** This is the base class for all exceptions thrown by the standard 45:/usr/include/c++/3.2.2/exception **** * library, and by certain language expressions. You are free to derive 46:/usr/include/c++/3.2.2/exception **** * your own %exception classes, or use a different hierarchy, or to 47:/usr/include/c++/3.2.2/exception **** * throw non-class data (e.g., fundamental types). 48:/usr/include/c++/3.2.2/exception **** * @brief Base class for all library exceptions. 49:/usr/include/c++/3.2.2/exception **** */ 50:/usr/include/c++/3.2.2/exception **** class exception 51:/usr/include/c++/3.2.2/exception **** { 52:/usr/include/c++/3.2.2/exception **** public: 53:/usr/include/c++/3.2.2/exception **** exception() throw() { } 2073 .loc 48 53 0 2074 .LBB22: 2075 0000 55 pushl %ebp 2076 .LCFI117: 2077 0001 89E5 movl %esp, %ebp 2078 .LCFI118: 2079 .loc 48 53 0 2080 0003 8B4508 movl 8(%ebp), %eax 2081 0006 C7000800 movl $_ZTVSt9exception+8, (%eax) 2081 0000 2082 000c C9 leave 2083 000d C3 ret 2084 .LBE22: 2085 .LFE1590: 2086 .Lfe17: 2088 .section .gnu.linkonce.t._ZNSt11char_traitsIcE6lengthEPKc,"ax",@progbits 2089 .align 2 2090 .weak _ZNSt11char_traitsIcE6lengthEPKc 2092 _ZNSt11char_traitsIcE6lengthEPKc: 2093 .LFB1591: 1:/usr/include/c++/3.2.2/bits/char_traits.h **** // Character Traits for use by standard string and iostream -*- C++ -*- 2:/usr/include/c++/3.2.2/bits/char_traits.h **** 3:/usr/include/c++/3.2.2/bits/char_traits.h **** // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 4:/usr/include/c++/3.2.2/bits/char_traits.h **** // Free Software Foundation, Inc. 5:/usr/include/c++/3.2.2/bits/char_traits.h **** // 6:/usr/include/c++/3.2.2/bits/char_traits.h **** // This file is part of the GNU ISO C++ Library. This library is free 7:/usr/include/c++/3.2.2/bits/char_traits.h **** // software; you can redistribute it and/or modify it under the 8:/usr/include/c++/3.2.2/bits/char_traits.h **** // terms of the GNU General Public License as published by the 9:/usr/include/c++/3.2.2/bits/char_traits.h **** // Free Software Foundation; either version 2, or (at your option) 10:/usr/include/c++/3.2.2/bits/char_traits.h **** // any later version. 11:/usr/include/c++/3.2.2/bits/char_traits.h **** GAS LISTING /tmp/ccJDTatA.s page 74 12:/usr/include/c++/3.2.2/bits/char_traits.h **** // This library is distributed in the hope that it will be useful, 13:/usr/include/c++/3.2.2/bits/char_traits.h **** // but WITHOUT ANY WARRANTY; without even the implied warranty of 14:/usr/include/c++/3.2.2/bits/char_traits.h **** // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15:/usr/include/c++/3.2.2/bits/char_traits.h **** // GNU General Public License for more details. 16:/usr/include/c++/3.2.2/bits/char_traits.h **** 17:/usr/include/c++/3.2.2/bits/char_traits.h **** // You should have received a copy of the GNU General Public License along 18:/usr/include/c++/3.2.2/bits/char_traits.h **** // with this library; see the file COPYING. If not, write to the Free 19:/usr/include/c++/3.2.2/bits/char_traits.h **** // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 20:/usr/include/c++/3.2.2/bits/char_traits.h **** // USA. 21:/usr/include/c++/3.2.2/bits/char_traits.h **** 22:/usr/include/c++/3.2.2/bits/char_traits.h **** // As a special exception, you may use this file as part of a free software 23:/usr/include/c++/3.2.2/bits/char_traits.h **** // library without restriction. Specifically, if other files instantiate 24:/usr/include/c++/3.2.2/bits/char_traits.h **** // templates or use macros or inline functions from this file, or you compile 25:/usr/include/c++/3.2.2/bits/char_traits.h **** // this file and link it with other files to produce an executable, this 26:/usr/include/c++/3.2.2/bits/char_traits.h **** // file does not by itself cause the resulting executable to be covered by 27:/usr/include/c++/3.2.2/bits/char_traits.h **** // the GNU General Public License. This exception does not however 28:/usr/include/c++/3.2.2/bits/char_traits.h **** // invalidate any other reasons why the executable file might be covered by 29:/usr/include/c++/3.2.2/bits/char_traits.h **** // the GNU General Public License. 30:/usr/include/c++/3.2.2/bits/char_traits.h **** 31:/usr/include/c++/3.2.2/bits/char_traits.h **** // 32:/usr/include/c++/3.2.2/bits/char_traits.h **** // ISO C++ 14882: 21 Strings library 33:/usr/include/c++/3.2.2/bits/char_traits.h **** // 34:/usr/include/c++/3.2.2/bits/char_traits.h **** 35:/usr/include/c++/3.2.2/bits/char_traits.h **** /** @file char_traits.h 36:/usr/include/c++/3.2.2/bits/char_traits.h **** * This is an internal header file, included by other library headers. 37:/usr/include/c++/3.2.2/bits/char_traits.h **** * You should not attempt to use it directly. 38:/usr/include/c++/3.2.2/bits/char_traits.h **** */ 39:/usr/include/c++/3.2.2/bits/char_traits.h **** 40:/usr/include/c++/3.2.2/bits/char_traits.h **** #ifndef _CPP_BITS_CHAR_TRAITS_H 41:/usr/include/c++/3.2.2/bits/char_traits.h **** #define _CPP_BITS_CHAR_TRAITS_H 1 42:/usr/include/c++/3.2.2/bits/char_traits.h **** 43:/usr/include/c++/3.2.2/bits/char_traits.h **** #pragma GCC system_header 44:/usr/include/c++/3.2.2/bits/char_traits.h **** 45:/usr/include/c++/3.2.2/bits/char_traits.h **** #include // For memmove, memset, memchr 46:/usr/include/c++/3.2.2/bits/char_traits.h **** #include // For streampos 47:/usr/include/c++/3.2.2/bits/char_traits.h **** 48:/usr/include/c++/3.2.2/bits/char_traits.h **** namespace std 49:/usr/include/c++/3.2.2/bits/char_traits.h **** { 50:/usr/include/c++/3.2.2/bits/char_traits.h **** /// 21.1.2 Basis for explicit _Traits specialization 51:/usr/include/c++/3.2.2/bits/char_traits.h **** /// NB: That for any given actual character type this definition is 52:/usr/include/c++/3.2.2/bits/char_traits.h **** /// probably wrong. 53:/usr/include/c++/3.2.2/bits/char_traits.h **** template 54:/usr/include/c++/3.2.2/bits/char_traits.h **** struct char_traits 55:/usr/include/c++/3.2.2/bits/char_traits.h **** { 56:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef _CharT char_type; 57:/usr/include/c++/3.2.2/bits/char_traits.h **** // Unsigned as wint_t is unsigned. 58:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef unsigned long int_type; 59:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streampos pos_type; 60:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streamoff off_type; 61:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef mbstate_t state_type; 62:/usr/include/c++/3.2.2/bits/char_traits.h **** 63:/usr/include/c++/3.2.2/bits/char_traits.h **** static void 64:/usr/include/c++/3.2.2/bits/char_traits.h **** assign(char_type& __c1, const char_type& __c2); 65:/usr/include/c++/3.2.2/bits/char_traits.h **** 66:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 67:/usr/include/c++/3.2.2/bits/char_traits.h **** eq(const char_type& __c1, const char_type& __c2); 68:/usr/include/c++/3.2.2/bits/char_traits.h **** GAS LISTING /tmp/ccJDTatA.s page 75 69:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 70:/usr/include/c++/3.2.2/bits/char_traits.h **** lt(const char_type& __c1, const char_type& __c2); 71:/usr/include/c++/3.2.2/bits/char_traits.h **** 72:/usr/include/c++/3.2.2/bits/char_traits.h **** static int 73:/usr/include/c++/3.2.2/bits/char_traits.h **** compare(const char_type* __s1, const char_type* __s2, size_t __n); 74:/usr/include/c++/3.2.2/bits/char_traits.h **** 75:/usr/include/c++/3.2.2/bits/char_traits.h **** static size_t 76:/usr/include/c++/3.2.2/bits/char_traits.h **** length(const char_type* __s); 77:/usr/include/c++/3.2.2/bits/char_traits.h **** 78:/usr/include/c++/3.2.2/bits/char_traits.h **** static const char_type* 79:/usr/include/c++/3.2.2/bits/char_traits.h **** find(const char_type* __s, size_t __n, const char_type& __a); 80:/usr/include/c++/3.2.2/bits/char_traits.h **** 81:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type* 82:/usr/include/c++/3.2.2/bits/char_traits.h **** move(char_type* __s1, const char_type* __s2, size_t __n); 83:/usr/include/c++/3.2.2/bits/char_traits.h **** 84:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type* 85:/usr/include/c++/3.2.2/bits/char_traits.h **** copy(char_type* __s1, const char_type* __s2, size_t __n); 86:/usr/include/c++/3.2.2/bits/char_traits.h **** 87:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type* 88:/usr/include/c++/3.2.2/bits/char_traits.h **** assign(char_type* __s, size_t __n, char_type __a); 89:/usr/include/c++/3.2.2/bits/char_traits.h **** 90:/usr/include/c++/3.2.2/bits/char_traits.h **** static char_type 91:/usr/include/c++/3.2.2/bits/char_traits.h **** to_char_type(const int_type& __c); 92:/usr/include/c++/3.2.2/bits/char_traits.h **** 93:/usr/include/c++/3.2.2/bits/char_traits.h **** static int_type 94:/usr/include/c++/3.2.2/bits/char_traits.h **** to_int_type(const char_type& __c); 95:/usr/include/c++/3.2.2/bits/char_traits.h **** 96:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 97:/usr/include/c++/3.2.2/bits/char_traits.h **** eq_int_type(const int_type& __c1, const int_type& __c2); 98:/usr/include/c++/3.2.2/bits/char_traits.h **** 99:/usr/include/c++/3.2.2/bits/char_traits.h **** static int_type 100:/usr/include/c++/3.2.2/bits/char_traits.h **** eof(); 101:/usr/include/c++/3.2.2/bits/char_traits.h **** 102:/usr/include/c++/3.2.2/bits/char_traits.h **** static int_type 103:/usr/include/c++/3.2.2/bits/char_traits.h **** not_eof(const int_type& __c); 104:/usr/include/c++/3.2.2/bits/char_traits.h **** }; 105:/usr/include/c++/3.2.2/bits/char_traits.h **** 106:/usr/include/c++/3.2.2/bits/char_traits.h **** 107:/usr/include/c++/3.2.2/bits/char_traits.h **** /// 21.1.4 char_traits specializations 108:/usr/include/c++/3.2.2/bits/char_traits.h **** template<> 109:/usr/include/c++/3.2.2/bits/char_traits.h **** struct char_traits 110:/usr/include/c++/3.2.2/bits/char_traits.h **** { 111:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef char char_type; 112:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef int int_type; 113:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streampos pos_type; 114:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef streamoff off_type; 115:/usr/include/c++/3.2.2/bits/char_traits.h **** typedef mbstate_t state_type; 116:/usr/include/c++/3.2.2/bits/char_traits.h **** 117:/usr/include/c++/3.2.2/bits/char_traits.h **** static void 118:/usr/include/c++/3.2.2/bits/char_traits.h **** assign(char_type& __c1, const char_type& __c2) 119:/usr/include/c++/3.2.2/bits/char_traits.h **** { __c1 = __c2; } 120:/usr/include/c++/3.2.2/bits/char_traits.h **** 121:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool 122:/usr/include/c++/3.2.2/bits/char_traits.h **** eq(const char_type& __c1, const char_type& __c2) 123:/usr/include/c++/3.2.2/bits/char_traits.h **** { return __c1 == __c2; } 124:/usr/include/c++/3.2.2/bits/char_traits.h **** 125:/usr/include/c++/3.2.2/bits/char_traits.h **** static bool GAS LISTING /tmp/ccJDTatA.s page 76 126:/usr/include/c++/3.2.2/bits/char_traits.h **** lt(const char_type& __c1, const char_type& __c2) 127:/usr/include/c++/3.2.2/bits/char_traits.h **** { return __c1 < __c2; } 128:/usr/include/c++/3.2.2/bits/char_traits.h **** 129:/usr/include/c++/3.2.2/bits/char_traits.h **** static int 130:/usr/include/c++/3.2.2/bits/char_traits.h **** compare(const char_type* __s1, const char_type* __s2, size_t __n) 131:/usr/include/c++/3.2.2/bits/char_traits.h **** { return memcmp(__s1, __s2, __n); } 132:/usr/include/c++/3.2.2/bits/char_traits.h **** 133:/usr/include/c++/3.2.2/bits/char_traits.h **** static size_t 134:/usr/include/c++/3.2.2/bits/char_traits.h **** length(const char_type* __s) 135:/usr/include/c++/3.2.2/bits/char_traits.h **** { return strlen(__s); } 2094 .loc 14 135 0 2095 .LBB23: 2096 0000 55 pushl %ebp 2097 .LCFI119: 2098 0001 89E5 movl %esp, %ebp 2099 .LCFI120: 2100 0003 83EC08 subl $8, %esp 2101 .LCFI121: 2102 .loc 14 135 0 2103 0006 83EC0C subl $12, %esp 2104 0009 FF7508 pushl 8(%ebp) 2105 .LCFI122: 2106 000c E8FCFFFF call strlen 2106 FF 2107 0011 83C410 addl $16, %esp 2108 .LBE23: 2109 0014 C9 leave 2110 0015 C3 ret 2111 .LFE1591: 2112 .Lfe18: 2114 .section .gnu.linkonce.t._ZN11MyExceptionC1ERKS_,"ax",@progbits 2115 .align 2 2116 .weak _ZN11MyExceptionC1ERKS_ 2118 _ZN11MyExceptionC1ERKS_: 2119 .LFB1592: 2120 .loc 1 35 0 2121 .LBB24: 2122 0000 55 pushl %ebp 2123 .LCFI123: 2124 0001 89E5 movl %esp, %ebp 2125 .LCFI124: 2126 0003 53 pushl %ebx 2127 .LCFI125: 2128 0004 83EC04 subl $4, %esp 2129 .LCFI126: 2130 .loc 1 35 0 2131 0007 83EC08 subl $8, %esp 2132 000a FF750C pushl 12(%ebp) 2133 000d FF7508 pushl 8(%ebp) 2134 .LCFI127: 2135 0010 E8FCFFFF call _ZNSt9exceptionC2ERKS_ 2135 FF 2136 0015 83C410 addl $16, %esp 2137 0018 8B4508 movl 8(%ebp), %eax 2138 001b C7000800 movl $_ZTV11MyException+8, (%eax) 2138 0000 2139 0021 83EC08 subl $8, %esp GAS LISTING /tmp/ccJDTatA.s page 77 2140 0024 8B450C movl 12(%ebp), %eax 2141 0027 83C004 addl $4, %eax 2142 002a 50 pushl %eax 2143 002b 8B4508 movl 8(%ebp), %eax 2144 002e 83C004 addl $4, %eax 2145 0031 50 pushl %eax 2146 .LEHB56: 2147 0032 E8FCFFFF call _ZNSsC1ERKSs 2147 FF 2148 .LEHE56: 2149 0037 83C410 addl $16, %esp 2150 .LBE24: 2151 003a EB22 jmp .L222 2152 .L231: 2153 003c 8945F8 movl %eax, -8(%ebp) 2154 003f 8B5DF8 movl -8(%ebp), %ebx 2155 0042 83EC0C subl $12, %esp 2156 0045 FF7508 pushl 8(%ebp) 2157 0048 E8FCFFFF call _ZNSt9exceptionD2Ev 2157 FF 2158 004d 83C410 addl $16, %esp 2159 0050 895DF8 movl %ebx, -8(%ebp) 2160 0053 83EC0C subl $12, %esp 2161 0056 FF75F8 pushl -8(%ebp) 2162 .LEHB57: 2163 0059 E8FCFFFF call _Unwind_Resume 2163 FF 2164 .LEHE57: 2165 .L222: 2166 005e 8B5DFC movl -4(%ebp), %ebx 2167 0061 C9 leave 2168 0062 C3 ret 2169 .LFE1592: 2170 .Lfe19: 2172 .section .gcc_except_table 2173 .LLSDA1592: 2174 01b9 FF .byte 0xff 2175 01ba FF .byte 0xff 2176 01bb 01 .byte 0x1 2177 01bc 08 .uleb128 .LLSDACSE1592-.LLSDACSB1592 2178 .LLSDACSB1592: 2179 01bd 32 .uleb128 .LEHB56-.LFB1592 2180 01be 05 .uleb128 .LEHE56-.LEHB56 2181 01bf 3C .uleb128 .L231-.LFB1592 2182 01c0 00 .uleb128 0x0 2183 01c1 59 .uleb128 .LEHB57-.LFB1592 2184 01c2 05 .uleb128 .LEHE57-.LEHB57 2185 01c3 00 .uleb128 0x0 2186 01c4 00 .uleb128 0x0 2187 .LLSDACSE1592: 2188 .section .gnu.linkonce.t._ZN11MyExceptionC1ERKS_ 2189 .text 2190 .align 2 2192 __tcf_0: 2193 .LFB1593: 2194 .loc 47 63 0 2195 09f4 55 pushl %ebp GAS LISTING /tmp/ccJDTatA.s page 78 2196 .LCFI128: 2197 09f5 89E5 movl %esp, %ebp 2198 .LCFI129: 2199 09f7 83EC08 subl $8, %esp 2200 .LCFI130: 2201 .loc 47 63 0 2202 09fa 83EC0C subl $12, %esp 2203 09fd 68000000 pushl $_ZSt8__ioinit 2203 00 2204 .LCFI131: 2205 0a02 E8FCFFFF call _ZNSt8ios_base4InitD1Ev 2205 FF 2206 0a07 83C410 addl $16, %esp 2207 0a0a C9 leave 2208 0a0b C3 ret 2209 .LFE1593: 2210 .Lfe20: 2212 .weak _ZTI11MyException 2213 .section .gnu.linkonce.d._ZTI11MyException,"aw",@progbits 2214 .align 4 2217 _ZTI11MyException: 2218 0000 08000000 .long _ZTVN10__cxxabiv120__si_class_type_infoE+8 2219 0004 00000000 .long _ZTS11MyException 2220 0008 00000000 .long _ZTISt9exception 2221 .weak _ZTS11MyException 2222 .section .gnu.linkonce.r._ZTS11MyException,"a",@progbits 2225 _ZTS11MyException: 2226 0000 31314D79 .string "11MyException" 2226 45786365 2226 7074696F 2226 6E00 2227 .section .gnu.linkonce.t._ZNSt9exceptionC2ERKS_,"ax",@progbits 2228 .align 2 2229 .weak _ZNSt9exceptionC2ERKS_ 2231 _ZNSt9exceptionC2ERKS_: 2232 .LFB1594: 2233 .loc 1 35 0 2234 .LBB25: 2235 0000 55 pushl %ebp 2236 .LCFI132: 2237 0001 89E5 movl %esp, %ebp 2238 .LCFI133: 2239 .loc 1 35 0 2240 0003 8B4508 movl 8(%ebp), %eax 2241 0006 C7000800 movl $_ZTVSt9exception+8, (%eax) 2241 0000 2242 000c C9 leave 2243 000d C3 ret 2244 .LBE25: 2245 .LFE1594: 2246 .Lfe21: 2248 .text 2249 .align 2 2251 _GLOBAL__I__ZN11MyExceptionC2ESs: 2252 .LFB1596: 2253 .loc 46 131 0 2254 0a0c 55 pushl %ebp GAS LISTING /tmp/ccJDTatA.s page 79 2255 .LCFI134: 2256 0a0d 89E5 movl %esp, %ebp 2257 .LCFI135: 2258 0a0f 83EC08 subl $8, %esp 2259 .LCFI136: 2260 .loc 46 131 0 2261 0a12 83EC08 subl $8, %esp 2262 0a15 68FFFF00 pushl $65535 2262 00 2263 0a1a 6A01 pushl $1 2264 .LCFI137: 2265 0a1c E895FFFF call _Z41__static_initialization_and_destruction_0ii 2265 FF 2266 0a21 83C410 addl $16, %esp 2267 0a24 C9 leave 2268 0a25 C3 ret 2269 .LFE1596: 2270 .Lfe22: 2272 .section .ctors,"aw",@progbits 2273 .align 4 2274 0000 0C0A0000 .long _GLOBAL__I__ZN11MyExceptionC2ESs 2275 .file 49 "/usr/include/stdio.h" 2276 .file 50 "/usr/include/c++/3.2.2/iosfwd" 2277 .file 51 "/usr/include/c++/3.2.2/i386-redhat-linux/bits/c++locale.h" 2278 .file 52 "/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include/stdarg.h" 2279 .file 53 "/usr/include/bits/sigset.h" 2280 .file 54 "/usr/include/signal.h" 2281 .file 55 "/usr/include/sys/select.h" 2282 .file 56 "/usr/include/nl_types.h" 2283 .file 57 "/usr/include/wctype.h" 2284 .file 58 "/usr/include/errno.h" 2285 .file 59 "/usr/include/bits/mathdef.h" 2286 .weak pthread_mutex_unlock 2287 .weak pthread_mutex_trylock 2288 .weak pthread_mutex_lock 2289 .weak pthread_create 2290 .weak pthread_setspecific 2291 .weak pthread_getspecific 2292 .weak pthread_key_delete 2293 .weak pthread_key_create 2294 .weak pthread_once 2993 .Lframe1: 2994 0000 18000000 .long .LECIE1-.LSCIE1 2995 .LSCIE1: 2996 0004 00000000 .long 0x0 2997 0008 01 .byte 0x1 2998 0009 7A504C00 .string "zPL" 2999 000d 01 .uleb128 0x1 3000 000e 7C .sleb128 -4 3001 000f 08 .byte 0x8 3002 0010 06 .uleb128 0x6 3003 0011 00 .byte 0x0 3004 0012 00000000 .long __gxx_personality_v0 3005 0016 00 .byte 0x0 3006 0017 0C .byte 0xc 3007 0018 04 .uleb128 0x4 3008 0019 04 .uleb128 0x4 GAS LISTING /tmp/ccJDTatA.s page 80 3009 001a 88 .byte 0x88 3010 001b 01 .uleb128 0x1 3011 .align 4 3012 .LECIE1: 3013 .LSFDE1: 3014 001c 24000000 .long .LEFDE1-.LASFDE1 3015 .LASFDE1: 3016 0020 20000000 .long .LASFDE1-.Lframe1 3017 0024 00000000 .long .LFB1480 3018 0028 7A000000 .long .LFE1480-.LFB1480 3019 002c 04 .uleb128 0x4 3020 002d 00000000 .long .LLSDA1480 3021 0031 41 .byte 0x4 3022 .long .LCFI0-.LFB1480 3023 0032 0E .byte 0xe 3024 0033 08 .uleb128 0x8 3025 0034 85 .byte 0x85 3026 0035 02 .uleb128 0x2 3027 0036 42 .byte 0x4 3028 .long .LCFI1-.LCFI0 3029 0037 0D .byte 0xd 3030 0038 05 .uleb128 0x5 3031 0039 45 .byte 0x4 3032 .long .LCFI4-.LCFI1 3033 003a 83 .byte 0x83 3034 003b 04 .uleb128 0x4 3035 003c 86 .byte 0x86 3036 003d 03 .uleb128 0x3 3037 003e 49 .byte 0x4 3038 .long .LCFI5-.LCFI4 3039 003f 2E .byte 0x2e 3040 0040 10 .uleb128 0x10 3041 0041 000000 .align 4 3042 .LEFDE1: 3043 .LSFDE3: 3044 0044 24000000 .long .LEFDE3-.LASFDE3 3045 .LASFDE3: 3046 0048 48000000 .long .LASFDE3-.Lframe1 3047 004c 7A000000 .long .LFB1482 3048 0050 7A000000 .long .LFE1482-.LFB1482 3049 0054 04 .uleb128 0x4 3050 0055 18000000 .long .LLSDA1482 3051 0059 41 .byte 0x4 3052 .long .LCFI6-.LFB1482 3053 005a 0E .byte 0xe 3054 005b 08 .uleb128 0x8 3055 005c 85 .byte 0x85 3056 005d 02 .uleb128 0x2 3057 005e 42 .byte 0x4 3058 .long .LCFI7-.LCFI6 3059 005f 0D .byte 0xd 3060 0060 05 .uleb128 0x5 3061 0061 45 .byte 0x4 3062 .long .LCFI10-.LCFI7 3063 0062 83 .byte 0x83 3064 0063 04 .uleb128 0x4 3065 0064 86 .byte 0x86 GAS LISTING /tmp/ccJDTatA.s page 81 3066 0065 03 .uleb128 0x3 3067 0066 49 .byte 0x4 3068 .long .LCFI11-.LCFI10 3069 0067 2E .byte 0x2e 3070 0068 10 .uleb128 0x10 3071 0069 000000 .align 4 3072 .LEFDE3: 3073 .LSFDE5: 3074 006c 1C000000 .long .LEFDE5-.LASFDE5 3075 .LASFDE5: 3076 0070 70000000 .long .LASFDE5-.Lframe1 3077 0074 F4000000 .long .LFB1485 3078 0078 6B000000 .long .LFE1485-.LFB1485 3079 007c 04 .uleb128 0x4 3080 007d 30000000 .long .LLSDA1485 3081 0081 41 .byte 0x4 3082 .long .LCFI12-.LFB1485 3083 0082 0E .byte 0xe 3084 0083 08 .uleb128 0x8 3085 0084 85 .byte 0x85 3086 0085 02 .uleb128 0x2 3087 0086 42 .byte 0x4 3088 .long .LCFI13-.LCFI12 3089 0087 0D .byte 0xd 3090 0088 05 .uleb128 0x5 3091 0089 56 .byte 0x4 3092 .long .LCFI15-.LCFI13 3093 008a 2E .byte 0x2e 3094 008b 10 .uleb128 0x10 3095 .align 4 3096 .LEFDE5: 3097 .LSFDE7: 3098 008c 1C000000 .long .LEFDE7-.LASFDE7 3099 .LASFDE7: 3100 0090 90000000 .long .LASFDE7-.Lframe1 3101 0094 60010000 .long .LFB1487 3102 0098 6B000000 .long .LFE1487-.LFB1487 3103 009c 04 .uleb128 0x4 3104 009d 44000000 .long .LLSDA1487 3105 00a1 41 .byte 0x4 3106 .long .LCFI16-.LFB1487 3107 00a2 0E .byte 0xe 3108 00a3 08 .uleb128 0x8 3109 00a4 85 .byte 0x85 3110 00a5 02 .uleb128 0x2 3111 00a6 42 .byte 0x4 3112 .long .LCFI17-.LCFI16 3113 00a7 0D .byte 0xd 3114 00a8 05 .uleb128 0x5 3115 00a9 56 .byte 0x4 3116 .long .LCFI19-.LCFI17 3117 00aa 2E .byte 0x2e 3118 00ab 10 .uleb128 0x10 3119 .align 4 3120 .LEFDE7: 3121 .LSFDE9: 3122 00ac 1C000000 .long .LEFDE9-.LASFDE9 GAS LISTING /tmp/ccJDTatA.s page 82 3123 .LASFDE9: 3124 00b0 B0000000 .long .LASFDE9-.Lframe1 3125 00b4 CC010000 .long .LFB1489 3126 00b8 6B000000 .long .LFE1489-.LFB1489 3127 00bc 04 .uleb128 0x4 3128 00bd 58000000 .long .LLSDA1489 3129 00c1 41 .byte 0x4 3130 .long .LCFI20-.LFB1489 3131 00c2 0E .byte 0xe 3132 00c3 08 .uleb128 0x8 3133 00c4 85 .byte 0x85 3134 00c5 02 .uleb128 0x2 3135 00c6 42 .byte 0x4 3136 .long .LCFI21-.LCFI20 3137 00c7 0D .byte 0xd 3138 00c8 05 .uleb128 0x5 3139 00c9 56 .byte 0x4 3140 .long .LCFI23-.LCFI21 3141 00ca 2E .byte 0x2e 3142 00cb 10 .uleb128 0x10 3143 .align 4 3144 .LEFDE9: 3145 .LSFDE11: 3146 00cc 1C000000 .long .LEFDE11-.LASFDE11 3147 .LASFDE11: 3148 00d0 D0000000 .long .LASFDE11-.Lframe1 3149 00d4 38020000 .long .LFB1491 3150 00d8 40000000 .long .LFE1491-.LFB1491 3151 00dc 04 .uleb128 0x4 3152 00dd 6C000000 .long .LLSDA1491 3153 00e1 41 .byte 0x4 3154 .long .LCFI24-.LFB1491 3155 00e2 0E .byte 0xe 3156 00e3 08 .uleb128 0x8 3157 00e4 85 .byte 0x85 3158 00e5 02 .uleb128 0x2 3159 00e6 42 .byte 0x4 3160 .long .LCFI25-.LCFI24 3161 00e7 0D .byte 0xd 3162 00e8 05 .uleb128 0x5 3163 00e9 4D .byte 0x4 3164 .long .LCFI27-.LCFI25 3165 00ea 2E .byte 0x2e 3166 00eb 10 .uleb128 0x10 3167 .align 4 3168 .LEFDE11: 3169 .LSFDE13: 3170 00ec 24000000 .long .LEFDE13-.LASFDE13 3171 .LASFDE13: 3172 00f0 F0000000 .long .LASFDE13-.Lframe1 3173 00f4 78020000 .long .LFB1493 3174 00f8 77000000 .long .LFE1493-.LFB1493 3175 00fc 04 .uleb128 0x4 3176 00fd 7D000000 .long .LLSDA1493 3177 0101 41 .byte 0x4 3178 .long .LCFI28-.LFB1493 3179 0102 0E .byte 0xe GAS LISTING /tmp/ccJDTatA.s page 83 3180 0103 08 .uleb128 0x8 3181 0104 85 .byte 0x85 3182 0105 02 .uleb128 0x2 3183 0106 42 .byte 0x4 3184 .long .LCFI29-.LCFI28 3185 0107 0D .byte 0xd 3186 0108 05 .uleb128 0x5 3187 0109 44 .byte 0x4 3188 .long .LCFI31-.LCFI29 3189 010a 83 .byte 0x83 3190 010b 03 .uleb128 0x3 3191 010c 5B .byte 0x4 3192 .long .LCFI32-.LCFI31 3193 010d 2E .byte 0x2e 3194 010e 18 .uleb128 0x18 3195 010f 4F .byte 0x4 3196 .long .LCFI33-.LCFI32 3197 0110 2E .byte 0x2e 3198 0111 10 .uleb128 0x10 3199 0112 0000 .align 4 3200 .LEFDE13: 3201 .LSFDE15: 3202 0114 24000000 .long .LEFDE15-.LASFDE15 3203 .LASFDE15: 3204 0118 18010000 .long .LASFDE15-.Lframe1 3205 011c F0020000 .long .LFB1501 3206 0120 B1000000 .long .LFE1501-.LFB1501 3207 0124 04 .uleb128 0x4 3208 0125 94000000 .long .LLSDA1501 3209 0129 41 .byte 0x4 3210 .long .LCFI34-.LFB1501 3211 012a 0E .byte 0xe 3212 012b 08 .uleb128 0x8 3213 012c 85 .byte 0x85 3214 012d 02 .uleb128 0x2 3215 012e 42 .byte 0x4 3216 .long .LCFI35-.LCFI34 3217 012f 0D .byte 0xd 3218 0130 05 .uleb128 0x5 3219 0131 45 .byte 0x4 3220 .long .LCFI38-.LCFI35 3221 0132 83 .byte 0x83 3222 0133 04 .uleb128 0x4 3223 0134 86 .byte 0x86 3224 0135 03 .uleb128 0x3 3225 0136 4B .byte 0x4 3226 .long .LCFI39-.LCFI38 3227 0137 2E .byte 0x2e 3228 0138 08 .uleb128 0x8 3229 0139 50 .byte 0x4 3230 .long .LCFI40-.LCFI39 3231 013a 2E .byte 0x2e 3232 013b 10 .uleb128 0x10 3233 .align 4 3234 .LEFDE15: 3235 .LSFDE17: 3236 013c 38000000 .long .LEFDE17-.LASFDE17 GAS LISTING /tmp/ccJDTatA.s page 84 3237 .LASFDE17: 3238 0140 40010000 .long .LASFDE17-.Lframe1 3239 0144 A2030000 .long .LFB1503 3240 0148 90010000 .long .LFE1503-.LFB1503 3241 014c 04 .uleb128 0x4 3242 014d B4000000 .long .LLSDA1503 3243 0151 41 .byte 0x4 3244 .long .LCFI41-.LFB1503 3245 0152 0E .byte 0xe 3246 0153 08 .uleb128 0x8 3247 0154 85 .byte 0x85 3248 0155 02 .uleb128 0x2 3249 0156 42 .byte 0x4 3250 .long .LCFI42-.LCFI41 3251 0157 0D .byte 0xd 3252 0158 05 .uleb128 0x5 3253 0159 45 .byte 0x4 3254 .long .LCFI45-.LCFI42 3255 015a 83 .byte 0x83 3256 015b 04 .uleb128 0x4 3257 015c 86 .byte 0x86 3258 015d 03 .uleb128 0x3 3259 015e 4D .byte 0x4 3260 .long .LCFI46-.LCFI45 3261 015f 2E .byte 0x2e 3262 0160 0C .uleb128 0xc 3263 0161 55 .byte 0x4 3264 .long .LCFI47-.LCFI46 3265 0162 2E .byte 0x2e 3266 0163 14 .uleb128 0x14 3267 0164 4C .byte 0x4 3268 .long .LCFI48-.LCFI47 3269 0165 2E .byte 0x2e 3270 0166 10 .uleb128 0x10 3271 0167 02 .byte 0x4 3272 0168 AB .long .LCFI49-.LCFI48 3273 0169 2E .byte 0x2e 3274 016a 08 .uleb128 0x8 3275 016b 59 .byte 0x4 3276 .long .LCFI50-.LCFI49 3277 016c 2E .byte 0x2e 3278 016d 14 .uleb128 0x14 3279 016e 5B .byte 0x4 3280 .long .LCFI51-.LCFI50 3281 016f 2E .byte 0x2e 3282 0170 10 .uleb128 0x10 3283 0171 7C .byte 0x4 3284 .long .LCFI52-.LCFI51 3285 0172 2E .byte 0x2e 3286 0173 00 .uleb128 0x0 3287 0174 68 .byte 0x4 3288 .long .LCFI53-.LCFI52 3289 0175 2E .byte 0x2e 3290 0176 10 .uleb128 0x10 3291 0177 00 .align 4 3292 .LEFDE17: 3293 .LSFDE19: GAS LISTING /tmp/ccJDTatA.s page 85 3294 0178 40000000 .long .LEFDE19-.LASFDE19 3295 .LASFDE19: 3296 017c 7C010000 .long .LASFDE19-.Lframe1 3297 0180 32050000 .long .LFB1505 3298 0184 14020000 .long .LFE1505-.LFB1505 3299 0188 04 .uleb128 0x4 3300 0189 EC000000 .long .LLSDA1505 3301 018d 41 .byte 0x4 3302 .long .LCFI54-.LFB1505 3303 018e 0E .byte 0xe 3304 018f 08 .uleb128 0x8 3305 0190 85 .byte 0x85 3306 0191 02 .uleb128 0x2 3307 0192 42 .byte 0x4 3308 .long .LCFI55-.LCFI54 3309 0193 0D .byte 0xd 3310 0194 05 .uleb128 0x5 3311 0195 45 .byte 0x4 3312 .long .LCFI58-.LCFI55 3313 0196 83 .byte 0x83 3314 0197 04 .uleb128 0x4 3315 0198 86 .byte 0x86 3316 0199 03 .uleb128 0x3 3317 019a 4D .byte 0x4 3318 .long .LCFI59-.LCFI58 3319 019b 2E .byte 0x2e 3320 019c 0C .uleb128 0xc 3321 019d 55 .byte 0x4 3322 .long .LCFI60-.LCFI59 3323 019e 2E .byte 0x2e 3324 019f 14 .uleb128 0x14 3325 01a0 4C .byte 0x4 3326 .long .LCFI61-.LCFI60 3327 01a1 2E .byte 0x2e 3328 01a2 10 .uleb128 0x10 3329 01a3 02 .byte 0x4 3330 01a4 AB .long .LCFI62-.LCFI61 3331 01a5 2E .byte 0x2e 3332 01a6 08 .uleb128 0x8 3333 01a7 59 .byte 0x4 3334 .long .LCFI63-.LCFI62 3335 01a8 2E .byte 0x2e 3336 01a9 14 .uleb128 0x14 3337 01aa 5B .byte 0x4 3338 .long .LCFI64-.LCFI63 3339 01ab 2E .byte 0x2e 3340 01ac 10 .uleb128 0x10 3341 01ad 02 .byte 0x4 3342 01ae 49 .long .LCFI65-.LCFI64 3343 01af 2E .byte 0x2e 3344 01b0 08 .uleb128 0x8 3345 01b1 50 .byte 0x4 3346 .long .LCFI66-.LCFI65 3347 01b2 2E .byte 0x2e 3348 01b3 10 .uleb128 0x10 3349 01b4 02 .byte 0x4 3350 01b5 78 .long .LCFI67-.LCFI66 GAS LISTING /tmp/ccJDTatA.s page 86 3351 01b6 2E .byte 0x2e 3352 01b7 00 .uleb128 0x0 3353 01b8 57 .byte 0x4 3354 .long .LCFI68-.LCFI67 3355 01b9 2E .byte 0x2e 3356 01ba 10 .uleb128 0x10 3357 01bb 00 .align 4 3358 .LEFDE19: 3359 .LSFDE21: 3360 01bc 28000000 .long .LEFDE21-.LASFDE21 3361 .LASFDE21: 3362 01c0 C0010000 .long .LASFDE21-.Lframe1 3363 01c4 46070000 .long .LFB1507 3364 01c8 CB000000 .long .LFE1507-.LFB1507 3365 01cc 04 .uleb128 0x4 3366 01cd 2C010000 .long .LLSDA1507 3367 01d1 41 .byte 0x4 3368 .long .LCFI69-.LFB1507 3369 01d2 0E .byte 0xe 3370 01d3 08 .uleb128 0x8 3371 01d4 85 .byte 0x85 3372 01d5 02 .uleb128 0x2 3373 01d6 42 .byte 0x4 3374 .long .LCFI70-.LCFI69 3375 01d7 0D .byte 0xd 3376 01d8 05 .uleb128 0x5 3377 01d9 45 .byte 0x4 3378 .long .LCFI73-.LCFI70 3379 01da 83 .byte 0x83 3380 01db 04 .uleb128 0x4 3381 01dc 86 .byte 0x86 3382 01dd 03 .uleb128 0x3 3383 01de 4D .byte 0x4 3384 .long .LCFI74-.LCFI73 3385 01df 2E .byte 0x2e 3386 01e0 0C .uleb128 0xc 3387 01e1 55 .byte 0x4 3388 .long .LCFI75-.LCFI74 3389 01e2 2E .byte 0x2e 3390 01e3 14 .uleb128 0x14 3391 01e4 4C .byte 0x4 3392 .long .LCFI76-.LCFI75 3393 01e5 2E .byte 0x2e 3394 01e6 10 .uleb128 0x10 3395 01e7 00 .align 4 3396 .LEFDE21: 3397 .LSFDE23: 3398 01e8 48000000 .long .LEFDE23-.LASFDE23 3399 .LASFDE23: 3400 01ec EC010000 .long .LASFDE23-.Lframe1 3401 01f0 12080000 .long .LFB1509 3402 01f4 A4010000 .long .LFE1509-.LFB1509 3403 01f8 04 .uleb128 0x4 3404 01f9 4C010000 .long .LLSDA1509 3405 01fd 41 .byte 0x4 3406 .long .LCFI77-.LFB1509 3407 01fe 0E .byte 0xe GAS LISTING /tmp/ccJDTatA.s page 87 3408 01ff 08 .uleb128 0x8 3409 0200 85 .byte 0x85 3410 0201 02 .uleb128 0x2 3411 0202 42 .byte 0x4 3412 .long .LCFI78-.LCFI77 3413 0203 0D .byte 0xd 3414 0204 05 .uleb128 0x5 3415 0205 44 .byte 0x4 3416 .long .LCFI80-.LCFI78 3417 0206 83 .byte 0x83 3418 0207 03 .uleb128 0x3 3419 0208 66 .byte 0x4 3420 .long .LCFI81-.LCFI80 3421 0209 2E .byte 0x2e 3422 020a 10 .uleb128 0x10 3423 020b 68 .byte 0x4 3424 .long .LCFI82-.LCFI81 3425 020c 2E .byte 0x2e 3426 020d 08 .uleb128 0x8 3427 020e 59 .byte 0x4 3428 .long .LCFI83-.LCFI82 3429 020f 2E .byte 0x2e 3430 0210 14 .uleb128 0x14 3431 0211 52 .byte 0x4 3432 .long .LCFI84-.LCFI83 3433 0212 2E .byte 0x2e 3434 0213 10 .uleb128 0x10 3435 0214 7B .byte 0x4 3436 .long .LCFI85-.LCFI84 3437 0215 2E .byte 0x2e 3438 0216 00 .uleb128 0x0 3439 0217 4E .byte 0x4 3440 .long .LCFI86-.LCFI85 3441 0218 2E .byte 0x2e 3442 0219 10 .uleb128 0x10 3443 021a 45 .byte 0x4 3444 .long .LCFI87-.LCFI86 3445 021b 2E .byte 0x2e 3446 021c 00 .uleb128 0x0 3447 021d 61 .byte 0x4 3448 .long .LCFI88-.LCFI87 3449 021e 2E .byte 0x2e 3450 021f 10 .uleb128 0x10 3451 0220 68 .byte 0x4 3452 .long .LCFI89-.LCFI88 3453 0221 2E .byte 0x2e 3454 0222 08 .uleb128 0x8 3455 0223 59 .byte 0x4 3456 .long .LCFI90-.LCFI89 3457 0224 2E .byte 0x2e 3458 0225 14 .uleb128 0x14 3459 0226 52 .byte 0x4 3460 .long .LCFI91-.LCFI90 3461 0227 2E .byte 0x2e 3462 0228 10 .uleb128 0x10 3463 0229 7B .byte 0x4 3464 .long .LCFI92-.LCFI91 GAS LISTING /tmp/ccJDTatA.s page 88 3465 022a 2E .byte 0x2e 3466 022b 00 .uleb128 0x0 3467 022c 4E .byte 0x4 3468 .long .LCFI93-.LCFI92 3469 022d 2E .byte 0x2e 3470 022e 10 .uleb128 0x10 3471 022f 45 .byte 0x4 3472 .long .LCFI94-.LCFI93 3473 0230 2E .byte 0x2e 3474 0231 00 .uleb128 0x0 3475 0232 0000 .align 4 3476 .LEFDE23: 3477 .LSFDE25: 3478 0234 28000000 .long .LEFDE25-.LASFDE25 3479 .LASFDE25: 3480 0238 38020000 .long .LASFDE25-.Lframe1 3481 023c 00000000 .long .LFB1523 3482 0240 9D000000 .long .LFE1523-.LFB1523 3483 0244 04 .uleb128 0x4 3484 0245 98010000 .long .LLSDA1523 3485 0249 41 .byte 0x4 3486 .long .LCFI95-.LFB1523 3487 024a 0E .byte 0xe 3488 024b 08 .uleb128 0x8 3489 024c 85 .byte 0x85 3490 024d 02 .uleb128 0x2 3491 024e 42 .byte 0x4 3492 .long .LCFI96-.LCFI95 3493 024f 0D .byte 0xd 3494 0250 05 .uleb128 0x5 3495 0251 44 .byte 0x4 3496 .long .LCFI98-.LCFI96 3497 0252 83 .byte 0x83 3498 0253 03 .uleb128 0x3 3499 0254 46 .byte 0x4 3500 .long .LCFI99-.LCFI98 3501 0255 2E .byte 0x2e 3502 0256 10 .uleb128 0x10 3503 0257 62 .byte 0x4 3504 .long .LCFI100-.LCFI99 3505 0258 2E .byte 0x2e 3506 0259 08 .uleb128 0x8 3507 025a 4F .byte 0x4 3508 .long .LCFI101-.LCFI100 3509 025b 2E .byte 0x2e 3510 025c 10 .uleb128 0x10 3511 025d 000000 .align 4 3512 .LEFDE25: 3513 .LSFDE27: 3514 0260 20000000 .long .LEFDE27-.LASFDE27 3515 .LASFDE27: 3516 0264 64020000 .long .LASFDE27-.Lframe1 3517 0268 00000000 .long .LFB1525 3518 026c 57000000 .long .LFE1525-.LFB1525 3519 0270 04 .uleb128 0x4 3520 0271 A9010000 .long .LLSDA1525 3521 0275 41 .byte 0x4 GAS LISTING /tmp/ccJDTatA.s page 89 3522 .long .LCFI102-.LFB1525 3523 0276 0E .byte 0xe 3524 0277 08 .uleb128 0x8 3525 0278 85 .byte 0x85 3526 0279 02 .uleb128 0x2 3527 027a 42 .byte 0x4 3528 .long .LCFI103-.LCFI102 3529 027b 0D .byte 0xd 3530 027c 05 .uleb128 0x5 3531 027d 44 .byte 0x4 3532 .long .LCFI105-.LCFI103 3533 027e 83 .byte 0x83 3534 027f 03 .uleb128 0x3 3535 0280 49 .byte 0x4 3536 .long .LCFI106-.LCFI105 3537 0281 2E .byte 0x2e 3538 0282 10 .uleb128 0x10 3539 0283 00 .align 4 3540 .LEFDE27: 3541 .LSFDE29: 3542 0284 24000000 .long .LEFDE29-.LASFDE29 3543 .LASFDE29: 3544 0288 88020000 .long .LASFDE29-.Lframe1 3545 028c 00000000 .long .LFB1544 3546 0290 43000000 .long .LFE1544-.LFB1544 3547 0294 04 .uleb128 0x4 3548 0295 00000000 .long 0x0 3549 0299 41 .byte 0x4 3550 .long .LCFI107-.LFB1544 3551 029a 0E .byte 0xe 3552 029b 08 .uleb128 0x8 3553 029c 85 .byte 0x85 3554 029d 02 .uleb128 0x2 3555 029e 42 .byte 0x4 3556 .long .LCFI108-.LCFI107 3557 029f 0D .byte 0xd 3558 02a0 05 .uleb128 0x5 3559 02a1 56 .byte 0x4 3560 .long .LCFI110-.LCFI108 3561 02a2 2E .byte 0x2e 3562 02a3 0C .uleb128 0xc 3563 02a4 52 .byte 0x4 3564 .long .LCFI111-.LCFI110 3565 02a5 2E .byte 0x2e 3566 02a6 08 .uleb128 0x8 3567 02a7 4E .byte 0x4 3568 .long .LCFI112-.LCFI111 3569 02a8 2E .byte 0x2e 3570 02a9 20 .uleb128 0x20 3571 02aa 0000 .align 4 3572 .LEFDE29: 3573 .LSFDE31: 3574 02ac 1C000000 .long .LEFDE31-.LASFDE31 3575 .LASFDE31: 3576 02b0 B0020000 .long .LASFDE31-.Lframe1 3577 02b4 B6090000 .long .LFB1589 3578 02b8 3E000000 .long .LFE1589-.LFB1589 GAS LISTING /tmp/ccJDTatA.s page 90 3579 02bc 04 .uleb128 0x4 3580 02bd 00000000 .long 0x0 3581 02c1 41 .byte 0x4 3582 .long .LCFI113-.LFB1589 3583 02c2 0E .byte 0xe 3584 02c3 08 .uleb128 0x8 3585 02c4 85 .byte 0x85 3586 02c5 02 .uleb128 0x2 3587 02c6 42 .byte 0x4 3588 .long .LCFI114-.LCFI113 3589 02c7 0D .byte 0xd 3590 02c8 05 .uleb128 0x5 3591 02c9 5A .byte 0x4 3592 .long .LCFI116-.LCFI114 3593 02ca 2E .byte 0x2e 3594 02cb 10 .uleb128 0x10 3595 .align 4 3596 .LEFDE31: 3597 .LSFDE37: 3598 02cc 20000000 .long .LEFDE37-.LASFDE37 3599 .LASFDE37: 3600 02d0 D0020000 .long .LASFDE37-.Lframe1 3601 02d4 00000000 .long .LFB1592 3602 02d8 63000000 .long .LFE1592-.LFB1592 3603 02dc 04 .uleb128 0x4 3604 02dd B9010000 .long .LLSDA1592 3605 02e1 41 .byte 0x4 3606 .long .LCFI123-.LFB1592 3607 02e2 0E .byte 0xe 3608 02e3 08 .uleb128 0x8 3609 02e4 85 .byte 0x85 3610 02e5 02 .uleb128 0x2 3611 02e6 42 .byte 0x4 3612 .long .LCFI124-.LCFI123 3613 02e7 0D .byte 0xd 3614 02e8 05 .uleb128 0x5 3615 02e9 44 .byte 0x4 3616 .long .LCFI126-.LCFI124 3617 02ea 83 .byte 0x83 3618 02eb 03 .uleb128 0x3 3619 02ec 49 .byte 0x4 3620 .long .LCFI127-.LCFI126 3621 02ed 2E .byte 0x2e 3622 02ee 10 .uleb128 0x10 3623 02ef 00 .align 4 3624 .LEFDE37: 3625 .LSFDE39: 3626 02f0 1C000000 .long .LEFDE39-.LASFDE39 3627 .LASFDE39: 3628 02f4 F4020000 .long .LASFDE39-.Lframe1 3629 02f8 F4090000 .long .LFB1593 3630 02fc 18000000 .long .LFE1593-.LFB1593 3631 0300 04 .uleb128 0x4 3632 0301 00000000 .long 0x0 3633 0305 41 .byte 0x4 3634 .long .LCFI128-.LFB1593 3635 0306 0E .byte 0xe GAS LISTING /tmp/ccJDTatA.s page 91 3636 0307 08 .uleb128 0x8 3637 0308 85 .byte 0x85 3638 0309 02 .uleb128 0x2 3639 030a 42 .byte 0x4 3640 .long .LCFI129-.LCFI128 3641 030b 0D .byte 0xd 3642 030c 05 .uleb128 0x5 3643 030d 4B .byte 0x4 3644 .long .LCFI131-.LCFI129 3645 030e 2E .byte 0x2e 3646 030f 10 .uleb128 0x10 3647 .align 4 3648 .LEFDE39: 3649 .LSFDE43: 3650 0310 1C000000 .long .LEFDE43-.LASFDE43 3651 .LASFDE43: 3652 0314 14030000 .long .LASFDE43-.Lframe1 3653 0318 0C0A0000 .long .LFB1596 3654 031c 1A000000 .long .LFE1596-.LFB1596 3655 0320 04 .uleb128 0x4 3656 0321 00000000 .long 0x0 3657 0325 41 .byte 0x4 3658 .long .LCFI134-.LFB1596 3659 0326 0E .byte 0xe 3660 0327 08 .uleb128 0x8 3661 0328 85 .byte 0x85 3662 0329 02 .uleb128 0x2 3663 032a 42 .byte 0x4 3664 .long .LCFI135-.LCFI134 3665 032b 0D .byte 0xd 3666 032c 05 .uleb128 0x5 3667 032d 4D .byte 0x4 3668 .long .LCFI137-.LCFI135 3669 032e 2E .byte 0x2e 3670 032f 10 .uleb128 0x10 3671 .align 4 3672 .LEFDE43: 3673 .text 3674 .Letext0: GAS LISTING /tmp/ccJDTatA.s page 92 DEFINED SYMBOLS *ABS*:00000000 rethrow.cc .bss:00000000 _ZSt8__ioinit /tmp/ccJDTatA.s:59 .text:00000000 _ZN11MyExceptionC2ESs /tmp/ccJDTatA.s:2071 .gnu.linkonce.t._ZNSt9exceptionC2Ev:00000000 _ZNSt9exceptionC2Ev /tmp/ccJDTatA.s:2024 .gnu.linkonce.d._ZTV11MyException:00000000 _ZTV11MyException /tmp/ccJDTatA.s:155 .text:0000007a _ZN11MyExceptionC1ESs /tmp/ccJDTatA.s:251 .text:000000f4 _ZN11MyExceptionD2Ev /tmp/ccJDTatA.s:335 .text:00000160 _ZN11MyExceptionD1Ev /tmp/ccJDTatA.s:419 .text:000001cc _ZN11MyExceptionD0Ev /tmp/ccJDTatA.s:503 .text:00000238 _ZNK11MyException4whatEv /tmp/ccJDTatA.s:581 .text:00000278 _ZNK11MyException9as_stringEv /tmp/ccJDTatA.s:1795 .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_:00000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ /tmp/ccJDTatA.s:1900 .gnu.linkonce.t._ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_:00000000 _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_PKS3_ /tmp/ccJDTatA.s:678 .text:000002f0 _Z17throw_MyExceptionSs /tmp/ccJDTatA.s:2118 .gnu.linkonce.t._ZN11MyExceptionC1ERKS_:00000000 _ZN11MyExceptionC1ERKS_ /tmp/ccJDTatA.s:2217 .gnu.linkonce.d._ZTI11MyException:00000000 _ZTI11MyException /tmp/ccJDTatA.s:810 .text:000003a2 _Z17catch_and_rethrowv /tmp/ccJDTatA.s:1063 .text:00000532 _Z23catch_and_throw_anotherv /tmp/ccJDTatA.s:1367 .text:00000746 _Z12doesnt_throwv /tmp/ccJDTatA.s:1517 .text:00000812 main /tmp/ccJDTatA.s:2092 .gnu.linkonce.t._ZNSt11char_traitsIcE6lengthEPKc:00000000 _ZNSt11char_traitsIcE6lengthEPKc /tmp/ccJDTatA.s:1979 .gnu.linkonce.t._ZNSs6appendIPKcEERSsT_S3_:00000000 _ZNSs6appendIPKcEERSsT_S3_ /tmp/ccJDTatA.s:2033 .text:000009b6 _Z41__static_initialization_and_destruction_0ii /tmp/ccJDTatA.s:2192 .text:000009f4 __tcf_0 /tmp/ccJDTatA.s:2231 .gnu.linkonce.t._ZNSt9exceptionC2ERKS_:00000000 _ZNSt9exceptionC2ERKS_ /tmp/ccJDTatA.s:2225 .gnu.linkonce.r._ZTS11MyException:00000000 _ZTS11MyException /tmp/ccJDTatA.s:2251 .text:00000a0c _GLOBAL__I__ZN11MyExceptionC2ESs UNDEFINED SYMBOLS _Unwind_Resume _ZNSsC1ERKSs _ZNSt9exceptionD2Ev __cxa_call_unexpected _ZNSsD1Ev _ZdlPv _ZNKSs5c_strEv __cxa_allocate_exception __cxa_throw _ZNSaIcEC1Ev _ZNSsC1EPKcRKSaIcE _ZNSaIcED1Ev __cxa_begin_catch _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ _ZSt4cout _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E _ZNSolsEPFRSoS_E __cxa_rethrow __cxa_end_catch _ZNSsC1Ev _ZNKSs4sizeEv _ZNSs7reserveEj _ZNSs6appendERKSs _ZNSs6appendEPKc _ZNKSs7_M_iendEv _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_ GAS LISTING /tmp/ccJDTatA.s page 93 _ZNSt8ios_base4InitC1Ev __dso_handle __cxa_atexit _ZTVSt9exception strlen _ZNSt8ios_base4InitD1Ev _ZTVN10__cxxabiv120__si_class_type_infoE _ZTISt9exception __gxx_personality_v0