Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/llvm/llvm-project.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXing Xue <xingxue@outlook.com>2022-10-27 22:11:06 +0300
committerXing Xue <xingxue@outlook.com>2022-10-27 22:11:06 +0300
commita499051f10a2d0150b60c14493558476039f701a (patch)
tree74aa173c914a217a8a00554648bf8bc18c4dc727
parentc0095050dacff8a7b0e9066cfd1c37c684bc4fa3 (diff)
[libc++abi][AIX] Use reserved slot in stack to pass the address of exception object
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
-rw-r--r--libcxxabi/src/aix_state_tab_eh.inc50
-rw-r--r--libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_32.pass.sh.s921
-rw-r--r--libcxxabi/test/vendor/ibm/aix_xlclang_nested_excp_64.pass.sh.s968
3 files changed, 1931 insertions, 8 deletions
diff --git a/libcxxabi/src/aix_state_tab_eh.inc b/libcxxabi/src/aix_state_tab_eh.inc
index 387613104524..f5b229a9cab2 100644
--- a/libcxxabi/src/aix_state_tab_eh.inc
+++ b/libcxxabi/src/aix_state_tab_eh.inc
@@ -14,6 +14,10 @@
#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
index 000000000000..ce9004558608
--- /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 <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
index 000000000000..7b0afb9ebae3
--- /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 <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