[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Libunwind-devel] libunwind on x86-64 w/ C++ exceptions

From: Arun Sharma
Subject: Re: [Libunwind-devel] libunwind on x86-64 w/ C++ exceptions
Date: Wed, 27 Feb 2008 14:05:00 -0800

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/
+++ b/src/
@@ -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
+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
 --- a/
+++ b/
@@ -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


On Tue, Feb 26, 2008 at 10:41 PM, Mark Rabkin <address@hidden> 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" <address@hidden> wrote:

On Fri, Feb 15, 2008 at 4:25 PM, Mark Rabkin <address@hidden> wrote:
$ gdb unwind
Program received signal SIGABRT, Aborted.

#0  0x0000003bd882f3b0 in raise () from /lib64/
#1  0x0000003bd8830860 in abort () from /lib64/
#2  0x0000003bd95bb8c1 in __cxa_get_globals () from /usr/lib64/
#3  0x0000003bd95bb9b4 in __cxa_get_globals () from /usr/lib64/
#4  0x0000003bd95bbd07 in __gxx_personality_v0 ()
   from /usr/lib64/
#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?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]