diff --git a/libcxxabi/src/aix_state_tab_eh.inc b/libcxxabi/src/aix_state_tab_eh.inc --- a/libcxxabi/src/aix_state_tab_eh.inc +++ b/libcxxabi/src/aix_state_tab_eh.inc @@ -14,6 +14,10 @@ #include #include +#if !__has_cpp_attribute(clang::optnone) +#error This file requires clang::optnone attribute support +#endif + /* The legacy IBM xlC and xlclang++ compilers use the state table for EH instead of the range table. Destructors, or addresses of the possible catch @@ -183,10 +187,6 @@ number3 = 0x1cedbeef // State table generated by xlclang++ compiler. }; -constexpr uint32_t REG_EXCP_OBJ = 14; // Register to pass the address of the exception - // object from the personality to xlclang++ - // compiled code. - constexpr size_t dtorArgument = 0x02; // Flag to destructor indicating to free // virtual bases, don't delete object. @@ -555,8 +555,16 @@ if (actions & _UA_CLEANUP_PHASE) { // Phase 2 cleanup: if (results.reason == _URC_HANDLER_FOUND) { + // Store the address of unwind_exception in the stack field + // reserved for compilers (SP + 3 * sizeof(uintptr_t)) in the stack of + // the caller of the function containing the landing pad (within the link + // area for the call to the latter) for __xlc_exception_handle() + // to retrieve. + uintptr_t *currentSP = reinterpret_cast(_Unwind_GetGR(context, 1)); + uintptr_t *callersSP = reinterpret_cast(currentSP[0]); + callersSP[3] = reinterpret_cast(unwind_exception); + _LIBCXXABI_TRACE_STATETAB("Handshake: set unwind_exception=%p in stack=%p\n", reinterpret_cast(unwind_exception), reinterpret_cast(callersSP)); // Jump to the handler. - _Unwind_SetGR(context, REG_EXCP_OBJ, reinterpret_cast(unwind_exception)); _Unwind_SetIP(context, results.landingPad); return _URC_INSTALL_CONTEXT; } @@ -633,12 +641,38 @@ __cxa_throw(newexception, const_cast(&typeid(std::bad_exception)), 0); } +// force_a_stackframe +// This function is called by __xlc_exception_handle() to ensure a stack frame +// is created for __xlc_exception_handle(). +__attribute__((noinline, optnone)) +static void force_a_stackframe() {} + // __xlc_exception_handle // This function is for xlclang++. It returns the address of the exception -// object set in gpr14 by the personality routine for xlclang++ compiled code. +// object stored in the reserved field in the stack of the caller of the +// function that calls __xlc_exception_handle() (within the link area for the +// call to the latter). The address is stored by the personality routine for +// xlclang++ compiled code. The implementation of __xlc_exception_handle() +// assumes a stack frame is created for it. The following ensures this +// assumption holds true: 1) a call to force_a_stackframe() is made inside +// __xlc_exception_handle() to make it non-leaf; and 2) optimizations are +// disabled for this function with attribute 'optnone'. Note: this function +// may not work as expected if these are changed. +__attribute__((optnone)) _LIBCXXABI_FUNC_VIS uintptr_t __xlc_exception_handle() { - uintptr_t exceptionObject; - asm("mr %0, 14" : "=r"(exceptionObject)); + // Make a call to force_a_stackframe() so that the compiler creates a stack + // frame for this function. + force_a_stackframe(); + + // Get the SP of this function, i.e., __xlc_exception_handle(). + uintptr_t *lastStack; + asm("mr %0, 1" : "=r"(lastStack)); + // Get the SP of the caller of __xlc_exception_handle(). + uintptr_t *callerStack = reinterpret_cast(lastStack[0]); + // Get the SP of the caller of the caller. + uintptr_t *callerStack2 = reinterpret_cast(callerStack[0]); + uintptr_t exceptionObject = callerStack2[3]; + _LIBCXXABI_TRACE_STATETAB("Handshake: exceptionObject=%p from stack=%p\n", reinterpret_cast(exceptionObject), reinterpret_cast(callerStack2)); return exceptionObject; } diff --git a/libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_32.pass.sh.s b/libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_32.pass.sh.s new file mode 100644 --- /dev/null +++ b/libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_32.pass.sh.s @@ -0,0 +1,921 @@ +#===----------------------------------------------------------------------=== +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +# +#===----------------------------------------------------------------------=== + +# Test that a nested exception is thrown by a destructor inside a try-block +# when the code is generated by the legacy AIX xlclang compiler. + +# REQUIRES: target=powerpc-ibm-aix +# UNSUPPORTED: no-exceptions + +# RUN: %{cxx} %{flags} %s %{link_flags} \ +# RUN: -o %t_32.exe +# RUN: %{exec} %t_32.exe + +# This assembly file was generated by IBM legacy xlclang++ compiler from +# the following C++ source file for 32-bit mode. +# +# aix_xlclang_nested_excp.cpp: +# +# #include +# +# struct Scary { +# ~Scary() { +# try { +# throw 42; +# } catch (int e) { +# assert(e == 42); +# } +# } +# }; +# int main(void) { +# try { +# Scary s; +# throw 13; +# } catch (int e) { // Destructor for 'Scary' runs before +# // '__xlc_exception_handle()' is called. +# assert(e == 13); +# } +# } +# +.set r0,0; .set SP,1; .set RTOC,2; .set r3,3; .set r4,4 +.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 +.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 +.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19 +.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24 +.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29 +.set r30,30; .set r31,31 +.set fp0,0; .set fp1,1; .set fp2,2; .set fp3,3; .set fp4,4 +.set fp5,5; .set fp6,6; .set fp7,7; .set fp8,8; .set fp9,9 +.set fp10,10; .set fp11,11; .set fp12,12; .set fp13,13; .set fp14,14 +.set fp15,15; .set fp16,16; .set fp17,17; .set fp18,18; .set fp19,19 +.set fp20,20; .set fp21,21; .set fp22,22; .set fp23,23; .set fp24,24 +.set fp25,25; .set fp26,26; .set fp27,27; .set fp28,28; .set fp29,29 +.set fp30,30; .set fp31,31 +.set v0,0; .set v1,1; .set v2,2; .set v3,3; .set v4,4 +.set v5,5; .set v6,6; .set v7,7; .set v8,8; .set v9,9 +.set v10,10; .set v11,11; .set v12,12; .set v13,13; .set v14,14 +.set v15,15; .set v16,16; .set v17,17; .set v18,18; .set v19,19 +.set v20,20; .set v21,21; .set v22,22; .set v23,23; .set v24,24 +.set v25,25; .set v26,26; .set v27,27; .set v28,28; .set v29,29 +.set v30,30; .set v31,31 +.set x0,0; .set x1,1; .set x2,2; .set x3,3; .set x4,4 +.set x5,5; .set x6,6; .set x7,7; .set x8,8; .set x9,9 +.set x10,10; .set x11,11; .set x12,12; .set x13,13; .set x14,14 +.set x15,15; .set x16,16; .set x17,17; .set x18,18; .set x19,19 +.set x20,20; .set x21,21; .set x22,22; .set x23,23; .set x24,24 +.set x25,25; .set x26,26; .set x27,27; .set x28,28; .set x29,29 +.set x30,30; .set x31,31; .set x32,32; .set x33,33; .set x34,34 +.set x35,35; .set x36,36; .set x37,37; .set x38,38; .set x39,39 +.set x40,40; .set x41,41; .set x42,42; .set x43,43; .set x44,44 +.set x45,45; .set x46,46; .set x47,47; .set x48,48; .set x49,49 +.set x50,50; .set x51,51; .set x52,52; .set x53,53; .set x54,54 +.set x55,55; .set x56,56; .set x57,57; .set x58,58; .set x59,59 +.set x60,60; .set x61,61; .set x62,62; .set x63,63 +.set q0,0; .set q1,1; .set q2,2; .set q3,3; .set q4,4 +.set q5,5; .set q6,6; .set q7,7; .set q8,8; .set q9,9 +.set q10,10; .set q11,11; .set q12,12; .set q13,13; .set q14,14 +.set q15,15; .set q16,16; .set q17,17; .set q18,18; .set q19,19 +.set q20,20; .set q21,21; .set q22,22; .set q23,23; .set q24,24 +.set q25,25; .set q26,26; .set q27,27; .set q28,28; .set q29,29 +.set q30,30; .set q31,31 +.set MQ,0; .set XER,1; .set DSCR,3; .set FROM_RTCU,4; .set FROM_RTCL,5 +.set FROM_DEC,6; .set LR,8; .set CTR,9; .set AMR,13; .set TID,17; .set DSISR,18 +.set DAR,19; .set TO_RTCU,20; .set TO_RTCL,21; .set TO_DEC,22; .set SDR_0,24 +.set SDR_1,25; .set SRR_0,26; .set SRR_1,27 +.set BO_dCTR_NZERO_AND_NOT,0; .set BO_dCTR_NZERO_AND_NOT_1,1 +.set BO_dCTR_ZERO_AND_NOT,2; .set BO_dCTR_ZERO_AND_NOT_1,3 +.set BO_IF_NOT,4; .set BO_IF_NOT_1,5; .set BO_IF_NOT_2,6 +.set BO_IF_NOT_3,7; .set BO_dCTR_NZERO_AND,8; .set BO_dCTR_NZERO_AND_1,9 +.set BO_dCTR_ZERO_AND,10; .set BO_dCTR_ZERO_AND_1,11; .set BO_IF,12 +.set BO_IF_1,13; .set BO_IF_2,14; .set BO_IF_3,15; .set BO_dCTR_NZERO,16 +.set BO_dCTR_NZERO_1,17; .set BO_dCTR_ZERO,18; .set BO_dCTR_ZERO_1,19 +.set BO_ALWAYS,20; .set BO_ALWAYS_1,21; .set BO_ALWAYS_2,22 +.set BO_ALWAYS_3,23; .set BO_dCTR_NZERO_8,24; .set BO_dCTR_NZERO_9,25 +.set BO_dCTR_ZERO_8,26; .set BO_dCTR_ZERO_9,27; .set BO_ALWAYS_8,28 +.set BO_ALWAYS_9,29; .set BO_ALWAYS_10,30; .set BO_ALWAYS_11,31 +.set CR0_LT,0; .set CR0_GT,1; .set CR0_EQ,2; .set CR0_SO,3 +.set CR1_FX,4; .set CR1_FEX,5; .set CR1_VX,6; .set CR1_OX,7 +.set CR2_LT,8; .set CR2_GT,9; .set CR2_EQ,10; .set CR2_SO,11 +.set CR3_LT,12; .set CR3_GT,13; .set CR3_EQ,14; .set CR3_SO,15 +.set CR4_LT,16; .set CR4_GT,17; .set CR4_EQ,18; .set CR4_SO,19 +.set CR5_LT,20; .set CR5_GT,21; .set CR5_EQ,22; .set CR5_SO,23 +.set CR6_LT,24; .set CR6_GT,25; .set CR6_EQ,26; .set CR6_SO,27 +.set CR7_LT,28; .set CR7_GT,29; .set CR7_EQ,30; .set CR7_SO,31 +.set TO_LT,16; .set TO_GT,8; .set TO_EQ,4; .set TO_LLT,2; .set TO_LGT,1 + + .rename H.10.NO_SYMBOL{PR},"" + .rename H.16..__21,".__21" + .rename H.18..__26,".__26" + .rename H.20..__22,".__22" + .rename H.22..__30,".__30" + .rename H.24..__29,".__29" + .rename H.26..__3,".__3" + .rename H.28..__10,".__10" + .rename H.30..__7,".__7" + .rename H.32..__2,".__2" + .rename H.36.NO_SYMBOL{TC},"" + .rename H.38.NO_SYMBOL{RO},"" + .rename E.40.__STATIC{RW},"_$STATIC" + .rename H.42.__STATIC{TC},"_$STATIC" + .rename H.46.__22{TC},"__22" + .rename H.50.__30{TC},"__30" + .rename H.54.__29{TC},"__29" + .rename H.58.__26{TC},"__26" + .rename H.62.__21{TC},"__21" + .rename H.66.__3{TC},"__3" + .rename H.70.__10{TC},"__10" + .rename H.74.__7{TC},"__7" + .rename H.78.__2{TC},"__2" + .rename H.82._ZN5ScaryD2Ev{TC},"_ZN5ScaryD2Ev" + .rename H.86._ZTIi{TC},"_ZTIi" + .rename H.90.main{TC},"main" + + .lglobl H.10.NO_SYMBOL{PR} + .weak ._ZN5ScaryD2Ev + .globl .main + .lglobl H.16..__21 + .lglobl H.18..__26 + .lglobl H.20..__22 + .lglobl H.22..__30 + .lglobl H.24..__29 + .lglobl H.26..__3 + .lglobl H.28..__10 + .lglobl H.30..__7 + .lglobl H.32..__2 + .lglobl H.38.NO_SYMBOL{RO} + .lglobl E.40.__STATIC{RW} + .lglobl __22{DS} + .lglobl __30{DS} + .lglobl __29{DS} + .lglobl __26{DS} + .lglobl __21{DS} + .lglobl __3{DS} + .lglobl __10{DS} + .lglobl __7{DS} + .lglobl __2{DS} + .weak _ZN5ScaryD2Ev{DS} + .extern _ZTIi{UA} + .globl main{DS} + .extern .__cxa_allocate_exception{PR} + .extern .__cxa_throw{PR} + .extern .__xlc_exception_handle{PR} + .extern .__xlc_catch_matchv2{PR} + .extern .__cxa_begin_catch{PR} + .extern .__assert{PR} + .extern .__cxa_end_catch{PR} + .extern .__cxa_rethrow{PR} + .extern ._Unwind_Resume{PR} + .extern ._ZSt9terminatev{PR} + + +# .text section + .file "aix_xlclang_nested_excp.cpp","Thu Oct 20 13:21:16 2022 ","IBM XL C/C++ for AIX, Version 16.1.0.13" + + + + .csect H.10.NO_SYMBOL{PR}, 7 +._ZN5ScaryD2Ev: # 0x00000000 (H.10.NO_SYMBOL) + mfspr r0,LR + st r31,-4(SP) + st r30,-8(SP) + st r29,-12(SP) + st r0,8(SP) + stu SP,-128(SP) + oril r30,SP,0x0000 + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + st r3,152(r30) + cal r3,0(r0) + st r3,64(r30) + cal r4,88(r31) + st r4,68(r30) + l r4,152(r30) + st r4,72(r30) + st r3,76(r30) + cal r3,1(r0) + stb r3,67(r30) + cal r3,3(r0) + stb r3,67(r30) + cal r3,4(r0) + bl .__cxa_allocate_exception{PR} + oril r0,r0,0x0000 + oril r4,r3,0x0000 + st r4,80(r30) + cal r3,42(r0) + st r3,0(r4) + l r3,80(r30) + l r4,T.86._ZTIi(RTOC) + cal r5,0(r0) + bl .__cxa_throw{PR} + oril r0,r0,0x0000 + cal r3,1(r0) + stb r3,67(r30) + b __L14c +__L90: # 0x00000090 (H.10.NO_SYMBOL+0x90) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + cal r3,4(r0) + stb r3,67(r30) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,84(r30) + l r4,T.86._ZTIi(RTOC) + cal r5,88(r30) + bl .__xlc_catch_matchv2{PR} + oril r0,r0,0x0000 + cmpli 0,r3,0x0000 + bc BO_IF_NOT,CR0_EQ,__Lc8 + b __L128 +__Lc8: # 0x000000c8 (H.10.NO_SYMBOL+0xc8) + l r3,84(r30) + bl .__cxa_begin_catch{PR} + oril r0,r0,0x0000 + l r3,88(r30) + l r3,0(r3) + st r3,92(r30) + cmpi 0,r3,42 + bc BO_IF_NOT,CR0_EQ,__Lec + b __L100 +__Lec: # 0x000000ec (H.10.NO_SYMBOL+0xec) + oril r3,r29,0x0000 + cal r4,8(r29) + cal r5,16(r0) + bl .__assert{PR} + oril r0,r0,0x0000 +__L100: # 0x00000100 (H.10.NO_SYMBOL+0x100) + bl .__cxa_end_catch{PR} + oril r0,r0,0x0000 + cal r3,1(r0) + stb r3,67(r30) + b __L14c +__L114: # 0x00000114 (H.10.NO_SYMBOL+0x114) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + bl .__cxa_end_catch{PR} + oril r0,r0,0x0000 + b __L1a8 +__L128: # 0x00000128 (H.10.NO_SYMBOL+0x128) + cal r3,4(r0) + stb r3,67(r30) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,96(r30) + bl .__cxa_begin_catch{PR} + oril r0,r0,0x0000 + bl .__cxa_rethrow{PR} + oril r0,r0,0x0000 +__L14c: # 0x0000014c (H.10.NO_SYMBOL+0x14c) + b __L178 +__L150: # 0x00000150 (H.10.NO_SYMBOL+0x150) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,100(r30) + bl ._Unwind_Resume{PR} + oril r0,r0,0x0000 +__L164: # 0x00000164 (H.10.NO_SYMBOL+0x164) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + bl ._ZSt9terminatev{PR} + oril r0,r0,0x0000 + b __L150 +__L178: # 0x00000178 (H.10.NO_SYMBOL+0x178) + b __L1dc +__L17c: # 0x0000017c (H.10.NO_SYMBOL+0x17c) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + bl .__cxa_end_catch{PR} + oril r0,r0,0x0000 + cal r3,0(r0) + stb r3,67(r30) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,104(r30) + bl ._Unwind_Resume{PR} + oril r0,r0,0x0000 +__L1a8: # 0x000001a8 (H.10.NO_SYMBOL+0x1a8) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + cal r3,2(r0) + stb r3,67(r30) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,108(r30) + bl .__cxa_begin_catch{PR} + oril r0,r0,0x0000 + bl ._ZSt9terminatev{PR} + oril r0,r0,0x0000 + bl .__cxa_rethrow{PR} + oril r0,r0,0x0000 +__L1dc: # 0x000001dc (H.10.NO_SYMBOL+0x1dc) + l SP,0(SP) + l r29,-12(SP) + l r30,-8(SP) + l r31,-4(SP) + l r0,8(SP) + mtspr LR,r0 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x28 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=1,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x61 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=1,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=1 + .byte 0x80 # STORES_BC=1,FPR_SAVED=0 + .byte 0x03 # GPR_SAVED=3 + .byte 0x01 # FIXEDPARMS=1 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000000 # + .long 0x000001f8 # TB_OFFSET + .long 0x00000001 # NUM_CTL_INFO + .long 0x00000040 # ctl_info_disp[0] + .short 13 # NAME_LEN + .byte "_ZN5ScaryD2Ev" # NAME + + .byte 30 # ALLOCA_REG +# End of traceback table + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +.main: # 0x00000240 (H.10.NO_SYMBOL+0x240) + mfspr r0,LR + st r31,-4(SP) + st r30,-8(SP) + st r29,-12(SP) + st r0,8(SP) + stu SP,-128(SP) + oril r30,SP,0x0000 + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + cal r3,0(r0) + st r3,64(r30) + oril r4,r31,0x0000 + st r4,68(r30) + st r3,72(r30) + st r3,76(r30) + cal r3,1(r0) + stb r3,67(r30) + cal r3,3(r0) + stb r3,67(r30) + cal r3,4(r0) + bl .__cxa_allocate_exception{PR} + oril r0,r0,0x0000 + oril r4,r3,0x0000 + st r4,80(r30) + cal r3,13(r0) + st r3,0(r4) + l r3,80(r30) + l r4,T.86._ZTIi(RTOC) + cal r5,0(r0) + bl .__cxa_throw{PR} + oril r0,r0,0x0000 + cal r3,1(r0) + stb r3,67(r30) + cal r3,84(r30) + bl ._ZN5ScaryD2Ev + oril r0,r0,0x0000 + cal r3,0(r0) + stb r3,67(r30) + b __L3b0 +__L2dc: # 0x000002dc (H.10.NO_SYMBOL+0x2dc) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + cal r3,2(r0) + stb r3,67(r30) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,88(r30) + l r4,T.86._ZTIi(RTOC) + cal r5,92(r30) + bl .__xlc_catch_matchv2{PR} + oril r0,r0,0x0000 + cmpli 0,r3,0x0000 + bc BO_IF_NOT,CR0_EQ,__L314 + b __L38c +__L314: # 0x00000314 (H.10.NO_SYMBOL+0x314) + l r3,88(r30) + bl .__cxa_begin_catch{PR} + oril r0,r0,0x0000 + l r3,92(r30) + l r3,0(r3) + st r3,96(r30) + cmpi 0,r3,13 + bc BO_IF_NOT,CR0_EQ,__L338 + b __L34c +__L338: # 0x00000338 (H.10.NO_SYMBOL+0x338) + cal r3,36(r29) + cal r4,8(r29) + cal r5,26(r0) + bl .__assert{PR} + oril r0,r0,0x0000 +__L34c: # 0x0000034c (H.10.NO_SYMBOL+0x34c) + bl .__cxa_end_catch{PR} + oril r0,r0,0x0000 + cal r3,0(r0) + stb r3,67(r30) + b __L3b0 +__L360: # 0x00000360 (H.10.NO_SYMBOL+0x360) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + bl .__cxa_end_catch{PR} + oril r0,r0,0x0000 + cal r3,0(r0) + stb r3,67(r30) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,100(r30) + bl ._Unwind_Resume{PR} + oril r0,r0,0x0000 +__L38c: # 0x0000038c (H.10.NO_SYMBOL+0x38c) + cal r3,2(r0) + stb r3,67(r30) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,104(r30) + bl .__cxa_begin_catch{PR} + oril r0,r0,0x0000 + bl .__cxa_rethrow{PR} + oril r0,r0,0x0000 +__L3b0: # 0x000003b0 (H.10.NO_SYMBOL+0x3b0) + cal r3,0(r0) + b __L408 +__L3b8: # 0x000003b8 (H.10.NO_SYMBOL+0x3b8) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + cal r3,4(r0) + stb r3,67(r30) + cal r3,84(r30) + bl ._ZN5ScaryD2Ev + oril r0,r0,0x0000 + cal r3,1(r0) + stb r3,67(r30) + b __L2dc +__L3e0: # 0x000003e0 (H.10.NO_SYMBOL+0x3e0) + bl .__xlc_exception_handle{PR} + oril r0,r0,0x0000 + st r3,108(r30) + bl ._Unwind_Resume{PR} + oril r0,r0,0x0000 +__L3f4: # 0x000003f4 (H.10.NO_SYMBOL+0x3f4) + l r31,T.42.__STATIC(RTOC) + l r29,T.36.NO_SYMBOL(RTOC) + bl ._ZSt9terminatev{PR} + oril r0,r0,0x0000 + b __L3e0 +__L408: # 0x00000408 (H.10.NO_SYMBOL+0x408) + l SP,0(SP) + l r29,-12(SP) + l r30,-8(SP) + l r31,-4(SP) + l r0,8(SP) + mtspr LR,r0 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x28 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=1,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x61 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=1,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=1 + .byte 0x80 # STORES_BC=1,FPR_SAVED=0 + .byte 0x03 # GPR_SAVED=3 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x000001e4 # TB_OFFSET + .long 0x00000001 # NUM_CTL_INFO + .long 0x00000040 # ctl_info_disp[0] + .short 4 # NAME_LEN + .byte "main" # NAME + + .byte 30 # ALLOCA_REG + .byte 0 # padding +# End of traceback table + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +H.16..__21: # 0x00000460 (H.10.NO_SYMBOL+0x460) + b __L1a8 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__21" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.18..__26: # 0x00000480 (H.10.NO_SYMBOL+0x480) + b __L17c + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__26" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.20..__22: # 0x000004a0 (H.10.NO_SYMBOL+0x4a0) + b __L164 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__22" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.22..__30: # 0x000004c0 (H.10.NO_SYMBOL+0x4c0) + b __L114 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__30" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.24..__29: # 0x000004e0 (H.10.NO_SYMBOL+0x4e0) + b __L90 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__29" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.26..__3: # 0x00000500 (H.10.NO_SYMBOL+0x500) + b __L3f4 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 3 # NAME_LEN + .byte "__3" # NAME + + .byte 0 # padding + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.28..__10: # 0x00000520 (H.10.NO_SYMBOL+0x520) + b __L3b8 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__10" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.30..__7: # 0x00000540 (H.10.NO_SYMBOL+0x540) + b __L360 + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 3 # NAME_LEN + .byte "__7" # NAME + + .byte 0 # padding + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.32..__2: # 0x00000560 (H.10.NO_SYMBOL+0x560) + b __L2dc + bcr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 3 # NAME_LEN + .byte "__2" # NAME + + .byte 0 # padding + .byte 0 # padding + .byte 0 # padding +# End of traceback table +# End csect H.10.NO_SYMBOL{PR} + +# .data section + + + .toc # 0x00000580 +T.82._ZN5ScaryD2Ev: + .tc H.82._ZN5ScaryD2Ev{TC},_ZN5ScaryD2Ev{DS} +T.42.__STATIC: + .tc H.42.__STATIC{TC},E.40.__STATIC{RW} +T.36.NO_SYMBOL: + .tc H.36.NO_SYMBOL{TC},H.38.NO_SYMBOL{RO} +T.86._ZTIi: + .tc H.86._ZTIi{TC},_ZTIi{UA} +T.90.main: + .tc H.90.main{TC},main{DS} +T.62.__21: + .tc H.62.__21{TC},__21{DS} +T.58.__26: + .tc H.58.__26{TC},__26{DS} +T.46.__22: + .tc H.46.__22{TC},__22{DS} +T.50.__30: + .tc H.50.__30{TC},__30{DS} +T.54.__29: + .tc H.54.__29{TC},__29{DS} +T.66.__3: + .tc H.66.__3{TC},__3{DS} +T.70.__10: + .tc H.70.__10{TC},__10{DS} +T.74.__7: + .tc H.74.__7{TC},__7{DS} +T.78.__2: + .tc H.78.__2{TC},__2{DS} + + + .csect _ZN5ScaryD2Ev{DS} + .long ._ZN5ScaryD2Ev # "\0\0\0\0" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect _ZN5ScaryD2Ev{DS} + + + .csect main{DS} + .long .main # "\0\0\002@" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect main{DS} + + + .csect __21{DS} + .long H.16..__21 # "\0\0\004`" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __21{DS} + + + .csect __26{DS} + .long H.18..__26 # "\0\0\004\200" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __26{DS} + + + .csect __22{DS} + .long H.20..__22 # "\0\0\004\240" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __22{DS} + + + .csect __30{DS} + .long H.22..__30 # "\0\0\004\300" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __30{DS} + + + .csect __29{DS} + .long H.24..__29 # "\0\0\004\340" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __29{DS} + + + .csect __3{DS} + .long H.26..__3 # "\0\0\005\0" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __3{DS} + + + .csect __10{DS} + .long H.28..__10 # "\0\0\005 " + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __10{DS} + + + .csect __7{DS} + .long H.30..__7 # "\0\0\005@" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __7{DS} + + + .csect __2{DS} + .long H.32..__2 # "\0\0\005`" + .long TOC{TC0} # "\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" +# End csect __2{DS} + + + .csect E.40.__STATIC{RW}, 3 + .long 0x1cedbeef # "\034\355\276\357" + .long 0x00000004 # "\0\0\0\004" + .long 0x00000000 # "\0\0\0\0" + .long __2{DS} # "\0\0\0060" + .long 0xffffffff # "\377\377\377\377" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long __7{DS} # "\0\0\006$" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long __10{DS} # "\0\0\006\030" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000001 # "\0\0\0\001" + .long 0x00000000 # "\0\0\0\0" + .long __3{DS} # "\0\0\006\f" + .long 0xfffffffc # "\377\377\377\374" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x1cedbeef # "\034\355\276\357" + .long 0x00000005 # "\0\0\0\005" + .long 0x00000000 # "\0\0\0\0" + .long __21{DS} # "\0\0\005\320" + .long 0xffffffff # "\377\377\377\377" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long __26{DS} # "\0\0\005\334" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long __29{DS} # "\0\0\006\0" + .long 0xffffffff # "\377\377\377\377" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000001 # "\0\0\0\001" + .long 0x00000000 # "\0\0\0\0" + .long __30{DS} # "\0\0\005\364" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000001 # "\0\0\0\001" + .long 0x00000000 # "\0\0\0\0" + .long __22{DS} # "\0\0\005\350" + .long 0xfffffffc # "\377\377\377\374" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect E.40.__STATIC{RW} + + + .csect H.38.NO_SYMBOL{RO}, 3 + .long 0x65203d3d # "e ==" + .long 0x20343200 # " 42\0" + .long 0x6169785f # "aix_" + .long 0x786c636c # "xlcl" + .long 0x616e675f # "ang_" + .long 0x6e657374 # "nest" + .long 0x65645f65 # "ed_e" + .long 0x7863702e # "xcp." + .long 0x63707000 # "cpp\0" + .long 0x65203d3d # "e ==" + .long 0x20313300 # " 13\0" +# End csect H.38.NO_SYMBOL{RO} + + + +# .bss section + + +# dwarf sections + +# end dwarf sections diff --git a/libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_64.pass.sh.s b/libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_64.pass.sh.s new file mode 100644 --- /dev/null +++ b/libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_64.pass.sh.s @@ -0,0 +1,968 @@ +#===----------------------------------------------------------------------=== +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +#===----------------------------------------------------------------------=== + +# Test that a nested exception is thrown by a destructor inside a try-block +# when the code is generated by the legacy AIX xlclang compiler. + +# REQUIRES: target=powerpc64-ibm-aix +# UNSUPPORTED: no-exceptions + +# RUN: %{cxx} %{flags} %s %{link_flags} \ +# RUN: -o %t_64.exe +# RUN: %{exec} %t_64.exe + +# This assembly file is generated by IBM legacy xlclang++ compiler from +# the following C++ source file for 64-bit mode. +# +# aix_xlclang_nested_excp.cpp: +# +# #include +# +# struct Scary { +# ~Scary() { +# try { +# throw 42; +# } catch (int e) { +# assert(e == 42); +# } +# } +# }; +# int main(void) { +# try { +# Scary s; +# throw 13; +# } catch (int e) { // Destructor for 'Scary' runs before +# // '__xlc_exception_handle()' is called. +# assert(e == 13); +# } +# } +# +.set r0,0; .set SP,1; .set RTOC,2; .set r3,3; .set r4,4 +.set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 +.set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 +.set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19 +.set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24 +.set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29 +.set r30,30; .set r31,31 +.set fp0,0; .set fp1,1; .set fp2,2; .set fp3,3; .set fp4,4 +.set fp5,5; .set fp6,6; .set fp7,7; .set fp8,8; .set fp9,9 +.set fp10,10; .set fp11,11; .set fp12,12; .set fp13,13; .set fp14,14 +.set fp15,15; .set fp16,16; .set fp17,17; .set fp18,18; .set fp19,19 +.set fp20,20; .set fp21,21; .set fp22,22; .set fp23,23; .set fp24,24 +.set fp25,25; .set fp26,26; .set fp27,27; .set fp28,28; .set fp29,29 +.set fp30,30; .set fp31,31 +.set v0,0; .set v1,1; .set v2,2; .set v3,3; .set v4,4 +.set v5,5; .set v6,6; .set v7,7; .set v8,8; .set v9,9 +.set v10,10; .set v11,11; .set v12,12; .set v13,13; .set v14,14 +.set v15,15; .set v16,16; .set v17,17; .set v18,18; .set v19,19 +.set v20,20; .set v21,21; .set v22,22; .set v23,23; .set v24,24 +.set v25,25; .set v26,26; .set v27,27; .set v28,28; .set v29,29 +.set v30,30; .set v31,31 +.set x0,0; .set x1,1; .set x2,2; .set x3,3; .set x4,4 +.set x5,5; .set x6,6; .set x7,7; .set x8,8; .set x9,9 +.set x10,10; .set x11,11; .set x12,12; .set x13,13; .set x14,14 +.set x15,15; .set x16,16; .set x17,17; .set x18,18; .set x19,19 +.set x20,20; .set x21,21; .set x22,22; .set x23,23; .set x24,24 +.set x25,25; .set x26,26; .set x27,27; .set x28,28; .set x29,29 +.set x30,30; .set x31,31; .set x32,32; .set x33,33; .set x34,34 +.set x35,35; .set x36,36; .set x37,37; .set x38,38; .set x39,39 +.set x40,40; .set x41,41; .set x42,42; .set x43,43; .set x44,44 +.set x45,45; .set x46,46; .set x47,47; .set x48,48; .set x49,49 +.set x50,50; .set x51,51; .set x52,52; .set x53,53; .set x54,54 +.set x55,55; .set x56,56; .set x57,57; .set x58,58; .set x59,59 +.set x60,60; .set x61,61; .set x62,62; .set x63,63 +.set q0,0; .set q1,1; .set q2,2; .set q3,3; .set q4,4 +.set q5,5; .set q6,6; .set q7,7; .set q8,8; .set q9,9 +.set q10,10; .set q11,11; .set q12,12; .set q13,13; .set q14,14 +.set q15,15; .set q16,16; .set q17,17; .set q18,18; .set q19,19 +.set q20,20; .set q21,21; .set q22,22; .set q23,23; .set q24,24 +.set q25,25; .set q26,26; .set q27,27; .set q28,28; .set q29,29 +.set q30,30; .set q31,31 +.set MQ,0; .set XER,1; .set DSCR,3; .set FROM_RTCU,4; .set FROM_RTCL,5 +.set FROM_DEC,6; .set LR,8; .set CTR,9; .set AMR,13; .set TID,17; .set DSISR,18 +.set DAR,19; .set TO_RTCU,20; .set TO_RTCL,21; .set TO_DEC,22; .set SDR_0,24 +.set SDR_1,25; .set SRR_0,26; .set SRR_1,27 +.set BO_dCTR_NZERO_AND_NOT,0; .set BO_dCTR_NZERO_AND_NOT_1,1 +.set BO_dCTR_ZERO_AND_NOT,2; .set BO_dCTR_ZERO_AND_NOT_1,3 +.set BO_IF_NOT,4; .set BO_IF_NOT_1,5; .set BO_IF_NOT_2,6 +.set BO_IF_NOT_3,7; .set BO_dCTR_NZERO_AND,8; .set BO_dCTR_NZERO_AND_1,9 +.set BO_dCTR_ZERO_AND,10; .set BO_dCTR_ZERO_AND_1,11; .set BO_IF,12 +.set BO_IF_1,13; .set BO_IF_2,14; .set BO_IF_3,15; .set BO_dCTR_NZERO,16 +.set BO_dCTR_NZERO_1,17; .set BO_dCTR_ZERO,18; .set BO_dCTR_ZERO_1,19 +.set BO_ALWAYS,20; .set BO_ALWAYS_1,21; .set BO_ALWAYS_2,22 +.set BO_ALWAYS_3,23; .set BO_dCTR_NZERO_8,24; .set BO_dCTR_NZERO_9,25 +.set BO_dCTR_ZERO_8,26; .set BO_dCTR_ZERO_9,27; .set BO_ALWAYS_8,28 +.set BO_ALWAYS_9,29; .set BO_ALWAYS_10,30; .set BO_ALWAYS_11,31 +.set CR0_LT,0; .set CR0_GT,1; .set CR0_EQ,2; .set CR0_SO,3 +.set CR1_FX,4; .set CR1_FEX,5; .set CR1_VX,6; .set CR1_OX,7 +.set CR2_LT,8; .set CR2_GT,9; .set CR2_EQ,10; .set CR2_SO,11 +.set CR3_LT,12; .set CR3_GT,13; .set CR3_EQ,14; .set CR3_SO,15 +.set CR4_LT,16; .set CR4_GT,17; .set CR4_EQ,18; .set CR4_SO,19 +.set CR5_LT,20; .set CR5_GT,21; .set CR5_EQ,22; .set CR5_SO,23 +.set CR6_LT,24; .set CR6_GT,25; .set CR6_EQ,26; .set CR6_SO,27 +.set CR7_LT,28; .set CR7_GT,29; .set CR7_EQ,30; .set CR7_SO,31 +.set TO_LT,16; .set TO_GT,8; .set TO_EQ,4; .set TO_LLT,2; .set TO_LGT,1 + + .rename H.4.NO_SYMBOL{PR},"" + .rename H.10..__21,".__21" + .rename H.12..__26,".__26" + .rename H.14..__22,".__22" + .rename H.16..__30,".__30" + .rename H.18..__29,".__29" + .rename H.20..__3,".__3" + .rename H.22..__10,".__10" + .rename H.24..__7,".__7" + .rename H.26..__2,".__2" + .rename H.30.NO_SYMBOL{TC},"" + .rename H.32.NO_SYMBOL{RO},"" + .rename E.34.__STATIC{RW},"_$STATIC" + .rename H.36.__STATIC{TC},"_$STATIC" + .rename H.40.__22{TC},"__22" + .rename H.44.__30{TC},"__30" + .rename H.48.__29{TC},"__29" + .rename H.52.__26{TC},"__26" + .rename H.56.__21{TC},"__21" + .rename H.60.__3{TC},"__3" + .rename H.64.__10{TC},"__10" + .rename H.68.__7{TC},"__7" + .rename H.72.__2{TC},"__2" + .rename H.76._ZN5ScaryD2Ev{TC},"_ZN5ScaryD2Ev" + .rename H.80._ZTIi{TC},"_ZTIi" + .rename H.84.main{TC},"main" + + .lglobl H.4.NO_SYMBOL{PR} + .weak ._ZN5ScaryD2Ev + .globl .main + .lglobl H.10..__21 + .lglobl H.12..__26 + .lglobl H.14..__22 + .lglobl H.16..__30 + .lglobl H.18..__29 + .lglobl H.20..__3 + .lglobl H.22..__10 + .lglobl H.24..__7 + .lglobl H.26..__2 + .lglobl H.32.NO_SYMBOL{RO} + .lglobl E.34.__STATIC{RW} + .lglobl __22{DS} + .lglobl __30{DS} + .lglobl __29{DS} + .lglobl __26{DS} + .lglobl __21{DS} + .lglobl __3{DS} + .lglobl __10{DS} + .lglobl __7{DS} + .lglobl __2{DS} + .weak _ZN5ScaryD2Ev{DS} + .extern _ZTIi{UA} + .globl main{DS} + .extern .__cxa_allocate_exception{PR} + .extern .__cxa_throw{PR} + .extern .__xlc_exception_handle{PR} + .extern .__xlc_catch_matchv2{PR} + .extern .__cxa_begin_catch{PR} + .extern .__assert{PR} + .extern .__cxa_end_catch{PR} + .extern .__cxa_rethrow{PR} + .extern ._Unwind_Resume{PR} + .extern ._ZSt9terminatev{PR} + + +# .text section + .file "aix_xlclang_nested_excp.cpp","Thu Oct 20 13:21:30 2022 ","IBM XL C/C++ for AIX, Version 16.1.0.13" + .machine "ppc64" + + + .csect H.4.NO_SYMBOL{PR}, 7 +._ZN5ScaryD2Ev: # 0x0000000000000000 (H.4.NO_SYMBOL) + mfspr r0,LR + std r31,-8(SP) + std r30,-16(SP) + std r29,-24(SP) + std r0,16(SP) + stdu SP,-240(SP) + ori r30,SP,0x0000 + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + std r3,288(r30) + addi r3,r0,0 + stw r3,112(r30) + addi r4,r31,168 + std r4,120(r30) + ld r4,288(r30) + std r4,128(r30) + stw r3,136(r30) + addi r3,r0,1 + stb r3,115(r30) + addi r3,r0,3 + stb r3,115(r30) + addi r3,r0,4 + bl .__cxa_allocate_exception{PR} + ori r0,r0,0x0000 + ori r4,r3,0x0000 + std r4,144(r30) + addi r3,r0,42 + stw r3,0(r4) + ld r3,144(r30) + ld r4,T.80._ZTIi(RTOC) + addi r5,r0,0 + bl .__cxa_throw{PR} + ori r0,r0,0x0000 + addi r3,r0,1 + stb r3,115(r30) + b __L150 +__L90: # 0x0000000000000090 (H.4.NO_SYMBOL+0x090) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + addi r3,r0,4 + stb r3,115(r30) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,152(r30) + ld r4,T.80._ZTIi(RTOC) + addi r5,r30,160 + bl .__xlc_catch_matchv2{PR} + ori r0,r0,0x0000 + cmpli 0,0,r3,0x0000 + bc BO_IF_NOT,CR0_EQ,__Lc8 + b __L12c +__Lc8: # 0x00000000000000c8 (H.4.NO_SYMBOL+0x0c8) + ld r3,152(r30) + bl .__cxa_begin_catch{PR} + ori r0,r0,0x0000 + ld r3,160(r30) + lwa r3,0(r3) + stw r3,168(r30) + lwa r3,168(r30) + cmpi 0,0,r3,42 + bc BO_IF_NOT,CR0_EQ,__Lf0 + b __L104 +__Lf0: # 0x00000000000000f0 (H.4.NO_SYMBOL+0x0f0) + ori r3,r29,0x0000 + addi r4,r29,8 + addi r5,r0,16 + bl .__assert{PR} + ori r0,r0,0x0000 +__L104: # 0x0000000000000104 (H.4.NO_SYMBOL+0x0104) + bl .__cxa_end_catch{PR} + ori r0,r0,0x0000 + addi r3,r0,1 + stb r3,115(r30) + b __L150 +__L118: # 0x0000000000000118 (H.4.NO_SYMBOL+0x0118) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + bl .__cxa_end_catch{PR} + ori r0,r0,0x0000 + b __L1ac +__L12c: # 0x000000000000012c (H.4.NO_SYMBOL+0x012c) + addi r3,r0,4 + stb r3,115(r30) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,176(r30) + bl .__cxa_begin_catch{PR} + ori r0,r0,0x0000 + bl .__cxa_rethrow{PR} + ori r0,r0,0x0000 +__L150: # 0x0000000000000150 (H.4.NO_SYMBOL+0x0150) + b __L17c +__L154: # 0x0000000000000154 (H.4.NO_SYMBOL+0x0154) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,184(r30) + bl ._Unwind_Resume{PR} + ori r0,r0,0x0000 +__L168: # 0x0000000000000168 (H.4.NO_SYMBOL+0x0168) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + bl ._ZSt9terminatev{PR} + ori r0,r0,0x0000 + b __L154 +__L17c: # 0x000000000000017c (H.4.NO_SYMBOL+0x017c) + b __L1e0 +__L180: # 0x0000000000000180 (H.4.NO_SYMBOL+0x0180) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + bl .__cxa_end_catch{PR} + ori r0,r0,0x0000 + addi r3,r0,0 + stb r3,115(r30) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,192(r30) + bl ._Unwind_Resume{PR} + ori r0,r0,0x0000 +__L1ac: # 0x00000000000001ac (H.4.NO_SYMBOL+0x01ac) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + addi r3,r0,2 + stb r3,115(r30) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,200(r30) + bl .__cxa_begin_catch{PR} + ori r0,r0,0x0000 + bl ._ZSt9terminatev{PR} + ori r0,r0,0x0000 + bl .__cxa_rethrow{PR} + ori r0,r0,0x0000 +__L1e0: # 0x00000000000001e0 (H.4.NO_SYMBOL+0x01e0) + ld SP,0(SP) + ld r29,-24(SP) + ld r30,-16(SP) + ld r31,-8(SP) + ld r0,16(SP) + mtspr LR,r0 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x28 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=1,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x61 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=1,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=1 + .byte 0x80 # STORES_BC=1,FPR_SAVED=0 + .byte 0x03 # GPR_SAVED=3 + .byte 0x01 # FIXEDPARMS=1 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000000 # + .long 0x000001fc # TB_OFFSET + .long 0x00000001 # NUM_CTL_INFO + .long 0x00000070 # ctl_info_disp[0] + .short 13 # NAME_LEN + .byte "_ZN5ScaryD2Ev" # NAME + + .byte 30 # ALLOCA_REG +# End of traceback table + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +.main: # 0x0000000000000240 (H.4.NO_SYMBOL+0x0240) + mfspr r0,LR + std r31,-8(SP) + std r30,-16(SP) + std r29,-24(SP) + std r0,16(SP) + stdu SP,-240(SP) + ori r30,SP,0x0000 + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + addi r3,r0,0 + stw r3,112(r30) + ori r4,r31,0x0000 + std r4,120(r30) + std r3,128(r30) + stw r3,136(r30) + addi r3,r0,1 + stb r3,115(r30) + addi r3,r0,3 + stb r3,115(r30) + addi r3,r0,4 + bl .__cxa_allocate_exception{PR} + ori r0,r0,0x0000 + ori r4,r3,0x0000 + std r4,144(r30) + addi r3,r0,13 + stw r3,0(r4) + ld r3,144(r30) + ld r4,T.80._ZTIi(RTOC) + addi r5,r0,0 + bl .__cxa_throw{PR} + ori r0,r0,0x0000 + addi r3,r0,1 + stb r3,115(r30) + addi r3,r30,152 + bl ._ZN5ScaryD2Ev + ori r0,r0,0x0000 + addi r3,r0,0 + stb r3,115(r30) + b __L3b4 +__L2dc: # 0x00000000000002dc (H.4.NO_SYMBOL+0x02dc) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + addi r3,r0,2 + stb r3,115(r30) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,160(r30) + ld r4,T.80._ZTIi(RTOC) + addi r5,r30,168 + bl .__xlc_catch_matchv2{PR} + ori r0,r0,0x0000 + cmpli 0,0,r3,0x0000 + bc BO_IF_NOT,CR0_EQ,__L314 + b __L390 +__L314: # 0x0000000000000314 (H.4.NO_SYMBOL+0x0314) + ld r3,160(r30) + bl .__cxa_begin_catch{PR} + ori r0,r0,0x0000 + ld r3,168(r30) + lwa r3,0(r3) + stw r3,176(r30) + lwa r3,176(r30) + cmpi 0,0,r3,13 + bc BO_IF_NOT,CR0_EQ,__L33c + b __L350 +__L33c: # 0x000000000000033c (H.4.NO_SYMBOL+0x033c) + addi r3,r29,36 + addi r4,r29,8 + addi r5,r0,26 + bl .__assert{PR} + ori r0,r0,0x0000 +__L350: # 0x0000000000000350 (H.4.NO_SYMBOL+0x0350) + bl .__cxa_end_catch{PR} + ori r0,r0,0x0000 + addi r3,r0,0 + stb r3,115(r30) + b __L3b4 +__L364: # 0x0000000000000364 (H.4.NO_SYMBOL+0x0364) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + bl .__cxa_end_catch{PR} + ori r0,r0,0x0000 + addi r3,r0,0 + stb r3,115(r30) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,184(r30) + bl ._Unwind_Resume{PR} + ori r0,r0,0x0000 +__L390: # 0x0000000000000390 (H.4.NO_SYMBOL+0x0390) + addi r3,r0,2 + stb r3,115(r30) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,192(r30) + bl .__cxa_begin_catch{PR} + ori r0,r0,0x0000 + bl .__cxa_rethrow{PR} + ori r0,r0,0x0000 +__L3b4: # 0x00000000000003b4 (H.4.NO_SYMBOL+0x03b4) + addi r3,r0,0 + b __L40c +__L3bc: # 0x00000000000003bc (H.4.NO_SYMBOL+0x03bc) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + addi r3,r0,4 + stb r3,115(r30) + addi r3,r30,152 + bl ._ZN5ScaryD2Ev + ori r0,r0,0x0000 + addi r3,r0,1 + stb r3,115(r30) + b __L2dc +__L3e4: # 0x00000000000003e4 (H.4.NO_SYMBOL+0x03e4) + bl .__xlc_exception_handle{PR} + ori r0,r0,0x0000 + std r3,200(r30) + bl ._Unwind_Resume{PR} + ori r0,r0,0x0000 +__L3f8: # 0x00000000000003f8 (H.4.NO_SYMBOL+0x03f8) + ld r31,T.36.__STATIC(RTOC) + ld r29,T.30.NO_SYMBOL(RTOC) + bl ._ZSt9terminatev{PR} + ori r0,r0,0x0000 + b __L3e4 +__L40c: # 0x000000000000040c (H.4.NO_SYMBOL+0x040c) + ld SP,0(SP) + ld r29,-24(SP) + ld r30,-16(SP) + ld r31,-8(SP) + ld r0,16(SP) + mtspr LR,r0 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x28 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=1,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x61 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=1,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=1 + .byte 0x80 # STORES_BC=1,FPR_SAVED=0 + .byte 0x03 # GPR_SAVED=3 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x000001e8 # TB_OFFSET + .long 0x00000001 # NUM_CTL_INFO + .long 0x00000070 # ctl_info_disp[0] + .short 4 # NAME_LEN + .byte "main" # NAME + + .byte 30 # ALLOCA_REG + .byte 0 # padding +# End of traceback table + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +H.10..__21: # 0x0000000000000460 (H.4.NO_SYMBOL+0x0460) + b __L1ac + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__21" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.12..__26: # 0x0000000000000480 (H.4.NO_SYMBOL+0x0480) + b __L180 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__26" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.14..__22: # 0x00000000000004a0 (H.4.NO_SYMBOL+0x04a0) + b __L168 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__22" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.16..__30: # 0x00000000000004c0 (H.4.NO_SYMBOL+0x04c0) + b __L118 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__30" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.18..__29: # 0x00000000000004e0 (H.4.NO_SYMBOL+0x04e0) + b __L90 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__29" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.20..__3: # 0x0000000000000500 (H.4.NO_SYMBOL+0x0500) + b __L3f8 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 3 # NAME_LEN + .byte "__3" # NAME + + .byte 0 # padding + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.22..__10: # 0x0000000000000520 (H.4.NO_SYMBOL+0x0520) + b __L3bc + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 4 # NAME_LEN + .byte "__10" # NAME + + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.24..__7: # 0x0000000000000540 (H.4.NO_SYMBOL+0x0540) + b __L364 + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 3 # NAME_LEN + .byte "__7" # NAME + + .byte 0 # padding + .byte 0 # padding + .byte 0 # padding +# End of traceback table +H.26..__2: # 0x0000000000000560 (H.4.NO_SYMBOL+0x0560) + b __L2dc + bclr BO_ALWAYS,CR0_LT + .long 0x00000000 +# traceback table + .byte 0x00 # VERSION=0 + .byte 0x09 # LANG=TB_CPLUSPLUS + .byte 0x20 # IS_GL=0,IS_EPROL=0,HAS_TBOFF=1 + # INT_PROC=0,HAS_CTL=0,TOCLESS=0 + # FP_PRESENT=0,LOG_ABORT=0 + .byte 0x40 # INT_HNDL=0,NAME_PRESENT=1 + # USES_ALLOCA=0,CL_DIS_INV=WALK_ONCOND + # SAVES_CR=0,SAVES_LR=0 + .byte 0x00 # STORES_BC=0,FPR_SAVED=0 + .byte 0x00 # GPR_SAVED=0 + .byte 0x00 # FIXEDPARMS=0 + .byte 0x01 # FLOATPARMS=0,PARMSONSTK=1 + .long 0x00000008 # TB_OFFSET + .short 3 # NAME_LEN + .byte "__2" # NAME + + .byte 0 # padding + .byte 0 # padding + .byte 0 # padding +# End of traceback table +# End csect H.4.NO_SYMBOL{PR} + +# .data section + + + .toc # 0x0000000000000580 +T.76._ZN5ScaryD2Ev: + .tc H.76._ZN5ScaryD2Ev{TC},_ZN5ScaryD2Ev{DS} +T.36.__STATIC: + .tc H.36.__STATIC{TC},E.34.__STATIC{RW} +T.30.NO_SYMBOL: + .tc H.30.NO_SYMBOL{TC},H.32.NO_SYMBOL{RO} +T.80._ZTIi: + .tc H.80._ZTIi{TC},_ZTIi{UA} +T.84.main: + .tc H.84.main{TC},main{DS} +T.56.__21: + .tc H.56.__21{TC},__21{DS} +T.52.__26: + .tc H.52.__26{TC},__26{DS} +T.40.__22: + .tc H.40.__22{TC},__22{DS} +T.44.__30: + .tc H.44.__30{TC},__30{DS} +T.48.__29: + .tc H.48.__29{TC},__29{DS} +T.60.__3: + .tc H.60.__3{TC},__3{DS} +T.64.__10: + .tc H.64.__10{TC},__10{DS} +T.68.__7: + .tc H.68.__7{TC},__7{DS} +T.72.__2: + .tc H.72.__2{TC},__2{DS} + + + .csect _ZN5ScaryD2Ev{DS}, 3 + .llong ._ZN5ScaryD2Ev # "\0\0\0\0\0\0\0\0" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect _ZN5ScaryD2Ev{DS} + + + .csect main{DS}, 3 + .llong .main # "\0\0\0\0\0\0\002@" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect main{DS} + + + .csect __21{DS}, 3 + .llong H.10..__21 # "\0\0\0\0\0\0\004`" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __21{DS} + + + .csect __26{DS}, 3 + .llong H.12..__26 # "\0\0\0\0\0\0\004\200" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __26{DS} + + + .csect __22{DS}, 3 + .llong H.14..__22 # "\0\0\0\0\0\0\004\240" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __22{DS} + + + .csect __30{DS}, 3 + .llong H.16..__30 # "\0\0\0\0\0\0\004\300" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __30{DS} + + + .csect __29{DS}, 3 + .llong H.18..__29 # "\0\0\0\0\0\0\004\340" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __29{DS} + + + .csect __3{DS}, 3 + .llong H.20..__3 # "\0\0\0\0\0\0\005\0" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __3{DS} + + + .csect __10{DS}, 3 + .llong H.22..__10 # "\0\0\0\0\0\0\005 " + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __10{DS} + + + .csect __7{DS}, 3 + .llong H.24..__7 # "\0\0\0\0\0\0\005@" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __7{DS} + + + .csect __2{DS}, 3 + .llong H.26..__2 # "\0\0\0\0\0\0\005`" + .llong TOC{TC0} # "\0\0\0\0\0\0\005\200" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect __2{DS} + + + .csect E.34.__STATIC{RW}, 3 + .long 0x1cedbeef # "\034\355\276\357" + .long 0x00000004 # "\0\0\0\004" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __2{DS} # "\0\0\0\0\0\0\006\340" + .long 0xffffffff # "\377\377\377\377" + .long 0xffffffff # "\377\377\377\377" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __7{DS} # "\0\0\0\0\0\0\006\310" + .long 0xffffffff # "\377\377\377\377" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __10{DS} # "\0\0\0\0\0\0\006\260" + .long 0xffffffff # "\377\377\377\377" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000001 # "\0\0\0\001" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __3{DS} # "\0\0\0\0\0\0\006\230" + .long 0xffffffff # "\377\377\377\377" + .long 0xfffffffc # "\377\377\377\374" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x1cedbeef # "\034\355\276\357" + .long 0x00000005 # "\0\0\0\005" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __21{DS} # "\0\0\0\0\0\0\006 " + .long 0xffffffff # "\377\377\377\377" + .long 0xffffffff # "\377\377\377\377" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __26{DS} # "\0\0\0\0\0\0\0068" + .long 0xffffffff # "\377\377\377\377" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __29{DS} # "\0\0\0\0\0\0\006\200" + .long 0xffffffff # "\377\377\377\377" + .long 0xffffffff # "\377\377\377\377" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000001 # "\0\0\0\001" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __30{DS} # "\0\0\0\0\0\0\006h" + .long 0xffffffff # "\377\377\377\377" + .long 0xfffffffe # "\377\377\377\376" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000001 # "\0\0\0\001" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .llong __22{DS} # "\0\0\0\0\0\0\006P" + .long 0xffffffff # "\377\377\377\377" + .long 0xfffffffc # "\377\377\377\374" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" + .long 0x00000000 # "\0\0\0\0" +# End csect E.34.__STATIC{RW} + + + .csect H.32.NO_SYMBOL{RO}, 3 + .long 0x65203d3d # "e ==" + .long 0x20343200 # " 42\0" + .long 0x6169785f # "aix_" + .long 0x786c636c # "xlcl" + .long 0x616e675f # "ang_" + .long 0x6e657374 # "nest" + .long 0x65645f65 # "ed_e" + .long 0x7863702e # "xcp." + .long 0x63707000 # "cpp\0" + .long 0x65203d3d # "e ==" + .long 0x20313300 # " 13\0" +# End csect H.32.NO_SYMBOL{RO} + .long 0x00000000 # "\0\0\0\0" + + + +# .bss section + + +# dwarf sections + +# end dwarf sections