__cxa_end_cleanup on arm is inline assembly in libsupc++/eh_arm.cc in one case when libstdc++ was compiled with -Os this inline assembly is emitted at the beginning and the section before that is a .debug section as a result this ends up in .debug section and the symbol goes missing in libstdc++ as seen below
000a7ff0 t ____cxa_end_cleanup_veneer 0009ce84 T __cxa_begin_cleanup 00382842 N __cxa_end_cleanup 0009f090 T __cxa_vec_cleanup -- Summary: __cxa_end_cleanup ends up in wrong section i.e. not in .text Product: gcc Version: 4.5.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: raj dot khem at gmail dot com GCC build triplet: x86_64-linux GCC host triplet: x86_64-linux GCC target triplet: arm-oe-linux-uclibceabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44461