Hi Mark,
As I said in the other mail, something along the lines of this completely
untested change may be what you and others who're having trouble with
_Unwind_*() APIs want:
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -70,7 +70,10 @@ libunwind_la_SOURCES_local
= \
mi/Lput_dynamic_unwind_info.c mi/Ldestroy_addr_space.c \
mi/Lget_reg.c mi/Lset_reg.c \
mi/Lget_fpreg.c mi/Lset_fpreg.c \
- mi/Lset_caching_policy.c \
+ mi/Lset_caching_policy.c
+
+if SUPPORT_CXX_EXCEPTIONS
+libunwind_la_SOURCES_local += \
unwind/Backtrace.c unwind/DeleteException.c \
unwind/FindEnclosingFunction.c unwind/ForcedUnwind.c \
unwind/GetBSP.c unwind/GetCFA.c unwind/GetDataRelBase.c \
@@ -78,6 +81,7 @@ libunwind_la_SOURCES_local
= \
unwind/GetRegionStart.c unwind/GetTextRelBase.c \
unwind/RaiseException.c unwind/Resume.c \
unwind/Resume_or_Rethrow.c unwind/SetGR.c unwind/SetIP.c
+endif
--- a/configure.in
+++ b/configure.in
@@ -94,6 +94,7 @@ AM_CONDITIONAL(ARCH_PPC32, test x$target_arch = xppc32)
AM_CONDITIONAL(ARCH_PPC64, test x$target_arch = xppc64)
AM_CONDITIONAL(OS_LINUX, expr x$target_os : xlinux >/dev/null)
AM_CONDITIONAL(OS_HPUX, expr x$target_os : xhpux >/dev/null)
+AM_CONDITIONAL(SUPPORT_CXX_EXCEPTIONS, test x$target_arch = xia64)
if test x$target_arch = xppc64; then
libdir='${exec_prefix}/lib64'
-Arun
On Tue, Feb 26, 2008 at 10:41 PM, Mark Rabkin <[EMAIL PROTECTED]> wrote:
> Hi Arun,
>
> My battle to get this working still continues :) Are you going to have
> time to take a look into the first crash (the one you can reproduce)?
>
> I made a patch to prevent that 2nd crashing bug below on the fldenv(), as
> I mentioned before, but now I'm seeing another strange behavior -- in my
> complicated program, I have exceptions that slip through a try-catch block
> uncaught (even though they should be), and result in a program termination
> due to uncaught exception. I'm struggling to get a smaller test case of that
> working so I can get verification of it.
>
> I'll send you my patch in the meantime to see if you think it's
> acceptable.
>
> - Mark
>
>
>
>
>
> On 2/15/08 4:58 PM, "Arun Sharma" <[EMAIL PROTECTED]> wrote:
>
> On Fri, Feb 15, 2008 at 4:25 PM, Mark Rabkin <[EMAIL PROTECTED]> wrote:
>
> $ gdb unwind
> Program received signal SIGABRT, Aborted.
>
> #0 0x0000003bd882f3b0 in raise () from /lib64/libc.so.6
> #1 0x0000003bd8830860 in abort () from /lib64/libc.so.6
> #2 0x0000003bd95bb8c1 in __cxa_get_globals () from
> /usr/lib64/libstdc++.so.6
> #3 0x0000003bd95bb9b4 in __cxa_get_globals () from
> /usr/lib64/libstdc++.so.6
> #4 0x0000003bd95bbd07 in __gxx_personality_v0 ()
> from /usr/lib64/libstdc++.so.6
> #5 0x000000000040100b in _Unwind_Resume (exception_object=0x517060)
> at unwind/unwind-internal.h:118
> #6 0x0000000000400e84 in throw_int () at unwind.cpp:7
> #7 0x0000000000400e98 in main (argc=1, argv=0x7ffffffcb818) at unwind.cpp
> :12
>
>
> I can reproduce this one.
>
>
>
> $ ./unwind-shared
>
> Program received signal SIGSEGV, Segmentation fault.
> _x86_64_setcontext () at x86_64/setcontext.S:34
> 34 fldenv (%r8)
>
>
>
> But not this one. Which version of gcc are you using?
>
> -Arun
>
>
>
_______________________________________________
Libunwind-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/libunwind-devel