[libc++abi][AIX] Use reserved slot in stack to pass the address of exception object
authorXing Xue <xingxue@outlook.com>
Thu, 27 Oct 2022 19:11:06 +0000 (15:11 -0400)
committerXing Xue <xingxue@outlook.com>
Thu, 27 Oct 2022 19:11:06 +0000 (15:11 -0400)
Summary:
The existing implementation of the personality for legacy IBM xlclang++ compiler generated code passes the address of exception object in r14 for the landing pad to retrieve with a call to __xlc_exception_handle(). This clobbers the content of r14 in user code (and potentially, when running cleanup actions, the address of another exception object being passed). This patch changes to use the stack slot reserved for compilers to pass the address. It has been confirmed that xlclang++-generated code does not use this slot.

Reviewed by: hubert.reinterpretcast, cebowleratibm

libcxxabi/src/aix_state_tab_eh.inc
libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_32.pass.sh.s [new file with mode: 0644]
libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_64.pass.sh.s [new file with mode: 0644]

index 3876131..f5b229a 100644 (file)
 #include <stdio.h>
 #include <sys/debug.h>
 
+#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 @@ enum FSMMagic : uint32_t {
   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 @@ __xlcxx_personality_v0(int version, _Unwind_Action actions, uint64_t exceptionCl
   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<uintptr_t*>(_Unwind_GetGR(context, 1));
+      uintptr_t *callersSP = reinterpret_cast<uintptr_t*>(currentSP[0]);
+      callersSP[3] = reinterpret_cast<uintptr_t>(unwind_exception);
+      _LIBCXXABI_TRACE_STATETAB("Handshake: set unwind_exception=%p in stack=%p\n", reinterpret_cast<void*>(unwind_exception), reinterpret_cast<void*>(callersSP));
       // Jump to the handler.
-      _Unwind_SetGR(context, REG_EXCP_OBJ, reinterpret_cast<uintptr_t>(unwind_exception));
       _Unwind_SetIP(context, results.landingPad);
       return _URC_INSTALL_CONTEXT;
     }
@@ -633,12 +641,38 @@ _LIBCXXABI_FUNC_VIS void __xlc_throw_badexception() {
   __cxa_throw(newexception, const_cast<std::type_info*>(&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<uintptr_t*>(lastStack[0]);
+  // Get the SP of the caller of the caller.
+  uintptr_t *callerStack2 = reinterpret_cast<uintptr_t*>(callerStack[0]);
+  uintptr_t exceptionObject = callerStack2[3];
+  _LIBCXXABI_TRACE_STATETAB("Handshake: exceptionObject=%p from stack=%p\n", reinterpret_cast<void*>(exceptionObject), reinterpret_cast<void*>(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 (file)
index 0000000..ce90045
--- /dev/null
@@ -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 <cassert>
+#
+# 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 (file)
index 0000000..7b0afb9
--- /dev/null
@@ -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 <cassert>
+#
+# 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